docs(ui/nav): 台架复核落地——收列键语义、回根按 depth、限度取证结论(#69)
台架实机会话 2026-11-02(bench 档 fw 22:25:12 / 产品档 22:29:56,均经 /serial-boot-test 闭环:身份戳匹配 + 回读 no-difference): - 复核② 收列键语义:菜单态按 s 与按 l 同走 menu_back、均收 一级且父列选中留在原地(depth 1→0、sel 不变)——旧断言 「菜单态按 s 不收列」是把待机态 s 无效(task-24 实证)误 读成菜单行为。to_root() 据此在 STATUS depth>0 时按 s 逐级 收(弹框被屏裁时像素 n_cols 漏计、固件 depth 不漏),老固 件像素路径保留 l 兜底仪式。§7.2 纪律与 board-ui-nav skill 恢复配方同步改写。 - 复核① 被裁弹框两叶:菜单步进依旧吃不到(枚举落同胞页, 落点由 STATUS 如实报出、不再谎称到达);GOTO 直开两叶到 达且完整渲染(自检记录 ink 4073 / 运行记录 ink 3559)→ KNOWN_UNREACHABLE 对 --to 保留,绕行路径 --goto。§7.4 改写。 - 产品档(未加宏)实测:STATUS 照常应答(不设闸)、GOTO 回 status=4——生产/bench 行为差异真机钉死;§7.6 增实机验证记 录段。回归:--selftest-quick 66/66+闸 7/7;--selftest 闭环 失败集与 master 基线逐项一致(6 存量像素 + 2 执行类拒绝)。
This commit is contained in:
+19
-4
@@ -835,10 +835,13 @@ class Navigator(object):
|
||||
def to_root(self, limit=14):
|
||||
"""回到"只有一列打开"的根菜单。
|
||||
|
||||
两条实测纪律写在这里:
|
||||
两条实测纪律写在这里(第二条已于 2026-11-02 台架复核改写,#69):
|
||||
· 页面态用 s 退(s = 退出页);
|
||||
· **级联列只能用 l 收**,菜单态按 s 不收列(Lead 大窗实测)——沿用盲走脚本
|
||||
的 ssssssss 回根法,正是深页错位的来源之一。
|
||||
· **级联列收级看回读**:有 STATUS 时按 depth 收——菜单态 s 与 l 同走
|
||||
menu_back、都收一级且父列选中留在原地(台架实测 depth 1→0、sel 不变);
|
||||
旧断言"菜单态按 s 不收列(Lead 大窗实测)"是把待机态 s 无效(task-24)
|
||||
误读成了菜单行为。盲按 ssssssss 回根依旧禁止:不可信的是"不看回读连按",
|
||||
不是键本身。老固件无 STATUS 时仍用 l 收(下方像素分支保留原路)。
|
||||
"""
|
||||
unk = 0
|
||||
unk_e = 0 # 本次 to_root() 已投出去的 ENTER 次数(见 BACKOFF_MAX_E)
|
||||
@@ -854,6 +857,14 @@ class Navigator(object):
|
||||
# 以前它被像素判成 BLANK 走"s 关页"分支——在待机页上按 s 是空转。
|
||||
self._step("e", "待机态(STATUS)→ e 唤醒进菜单")
|
||||
continue
|
||||
if s and s["kind"] == "MENU" and s.get("depth", 0) > 0:
|
||||
# 有固件身份回读时按 depth 收级(2026-11-02 台架复核,#69):菜单态
|
||||
# s = menu_back,收一级且父列选中留在原地。子列弹框被屏裁时像素
|
||||
# n_cols 会漏数、固件 depth 不漏——这正替掉了旧"补按 l 兜底"仪式要
|
||||
# 防的那类漏计。s 在根列上无效但无害(台架同轮实测 depth0 按 s 原地)。
|
||||
self._step("s", "STATUS depth=%d 级联 → s 收一级(台架复核 2026-11-02)"
|
||||
% s["depth"])
|
||||
continue
|
||||
if st["kind"] == "MENU" and self.n_cols(st) == 1:
|
||||
# "只有一列"不等于"在根":子列弹框被屏幕裁掉时它的选带根本不在可扫窗口
|
||||
# 里,n_cols 会漏数它——于是上一轮留在弹框里的选中项还在,直接按 e 就
|
||||
@@ -1050,7 +1061,11 @@ class Navigator(object):
|
||||
# 理由;把它写成断言而不是评论,是因为下次改 UI 后这条结论也要能被重新检查。
|
||||
# 已声明的导航限度(不是"允许失败",是**记账**):这两页落在根列最后两行,其子菜单
|
||||
# 弹框会被屏幕裁掉、选带不在可扫窗口内,"枚举 + 验终点"目前吃不到它们。
|
||||
# 依据与现场帧见 docs/UI设计/UI_自动化测试流程.md §7.4;真机上弹框画在哪要等台架取证。
|
||||
# 依据与现场帧见 docs/UI设计/UI_自动化测试流程.md §7.4。台架复核 2026-11-02(#69,
|
||||
# bench 固件 + STATUS):菜单步进**依旧**吃不到这两叶(末列枚举落到同胞页 alarm /
|
||||
# selftest,落点由 STATUS 如实报出、不再谎称到达);但 GOTO 直开两叶都能到达并完整
|
||||
# 渲染(自检记录 ink=4073 / 运行记录 ink=3559,证据在 PR #70 台架段)。本限度对 --to
|
||||
# 步进继续有效,解法是 --goto 绕开被裁弹框,不是继续修枚举。
|
||||
# ⚠ 对称设计:这两页哪天真走到了,本表就是**过期**——脚本会当成失败报出来,逼着同步删
|
||||
# 条目与文档限度,免得限度清单变成永久遮羞布。
|
||||
KNOWN_UNREACHABLE = {
|
||||
|
||||
Reference in New Issue
Block a user