feat(ui/nav): 7003 STATUS 身份回读 + 台架 GOTO 直开 + 排帧流落地(#69 五项实施) #70

Merged
wandering1 merged 4 commits from agent-nav-research-34ef765e6757 into master 2026-11-02 23:06:47 +08:00

4 Commits

Author SHA1 Message Date
super_agent_bot be16669564 docs(ui/nav): 台架复核落地——收列键语义、回根按 depth、限度取证结论(#69)
CI / 静态门禁 (pre-commit) (push) Failing after 4m56s
CI / 主机侧单测 (MSVC) (push) Successful in 47s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 4m4s
CI / 主机侧单测 (MSVC) (pull_request) Failing after 42s
台架实机会话 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 执行类拒绝)。
2026-11-02 22:39:48 +08:00
super_agent_bot bbfb47ebd0 docs(ui): 新增 board-ui-nav 唯一入口技能并在 AGENTS 布防(#69)
CI / 静态门禁 (pre-commit) (pull_request) Failing after 6m26s
CI / 主机侧单测 (MSVC) (pull_request) Failing after 43s
板端交互看图/注键/开页一律走 scripts/board_ui_nav.py,禁止另写
一次性注键脚本:#38 调试中因临时脚本盲注 d*9 走错页复犯(#69),
盲走事故当时已立"不猜步数"铁律但入口没布防。技能写明 --where/
--to/--goto/--selftest-quick 用法、STATUS/GOTO 语义与拒绝码、
恢复配方、台架锁边界与 GOTO 权限边界。

UI_自动化测试流程.md:§7.1 记 #69 复犯案例与像素路径存量误判基线
(记录查询 6 叶在 selftest 闭环里恒红是存量,勿当 #69 回归);
§7.3 补 --where/--goto;§7.4 记 #69 收口(剪贴弹窗依赖已由
STATUS depth 顶掉,KNOWN_UNREACHABLE 销项待台架复核);
新增 §7.6 STATUS/GOTO 契约、判稳改造与门控说明。
2026-11-02 22:22:15 +08:00
super_agent_bot aaf75f7992 feat(scripts): board_ui_nav 接入 STATUS/GOTO 并落实排帧流规则①(#69)
- 每键后先读 KEY 回执,再等帧流静默 ≥900ms、双帧一致才判稳取帧:
  docstring 规则①此前代码只 sleep 300ms 单帧,本次补实(#38 调试
  复盘的主错源之一);判稳超上限记 unstable,禁止再基于此盲补键
- STATUS 客户端(字节契约以 ui_net_sink.h 为唯一真源,解析做防御):
  --where 固件身份 + 像素双口径报"现在在哪";--to 到位判定固件身份
  为主、像素为佐,不一致只记账不盲补(不一致=判据或固件有问题,
  先 dump 现场);UNKNOWN 恢复先问 STATUS 定分支——菜单态关列用 l
  不用 s(菜单不响应 s 的历史判据存疑,待台架复核后收口);
  STATUS depth=0 直接判回根,剪贴弹窗不再挡 to_root
- --goto 直达页(仅台架/模拟器固件,产品恒拒),主机侧同步拒绝
  执行类页 id;旧固件(无 STATUS 应答)自动退回纯像素路径,
  向后兼容
- WALK_DIR 与 --walk 默认目录并一(原 ci-artifacts/uiwalk 使
  BOARD_TRUTH 复核看不到新 walk 帧,10-31 记过)

无板端到端:窗口态 lvgl_sim(UI_REMO_ALLOW_GOTO)11 步全绿,含
待机→e 唤醒重开最近页的实锤复现。--selftest-quick 66/66、门 7/7。
2026-11-02 22:22:10 +08:00
super_agent_bot 493fa6ba0e feat(ui/remo): 7003 总线新增 STATUS 身份查询与 GOTO 直达页(#69)
STATUS(命令 4)一帧回答"现在在哪个画面":kind(MENU/PAGE/STANDBY)
+ 菜单路径/选中 + 页 id,布局契约与字节序见 ui_net_sink.h。由 uiTask
轮询驱动,同上下文读静态导航状态:零画面副作用、免锁、不发日志。
新增只读接口 ui_menu_get_nav_state / ui_content_page_current_desc。

GOTO(命令 5)按页 id 查生成表直开内容页,以 VIEW 权限进入(与
"已过查看密码"同档,不代输任何密码)。编译期门控
DTU_BENCH || UI_REMO_ALLOW_GOTO:产品构建恒拒(status=4),模拟器
构建默认开启便于无板验证;执行类页(clear/reset)固件侧同样拒绝
(status=2,与主机 EXEC_PAGE_IDS 同一事实源);待机中拒绝(status=5),
由主机按键唤醒后再来。成功应答带回目标叶节点下标便于对账。

ui_sink 主机单测补导航侧链接假件 + 最小 lvgl 桩(仅本测试目录)。
产品构建 Keil 0 Error 0 Warning;ui_sink 单测 17/17。
2026-11-02 22:19:58 +08:00