7d9db33a25
新增 generated-fresh 钩子(scripts/check_generated_fresh.py,只读):把 gen_menu.py、
中文字库链、tools/arch_diagram/gen_*.py 拷进系统临时目录重跑,与工作区逐字节必须
一致;钩子本身不写仓库、不 stash 别人在飞的改动。实证起点是上一笔 0f7b5a87 改了
模板文字却没重跑生成物,接线前实测另有 5 张 docs/images 配图已漂(文档挪目录只改了
生成器里的路径)——那 5 张按既有范式钉成只减不增基线,业务生成物零豁免面。
计数三数同源核查:文本 grep 配置得到 51 是把第 63 行**注释掉的** clang-format 候选
算进去了,口径统一为「YAML 解析后的 hook 条目数」= 50(实跑 49 + gitlint = 50),
AGENTS 与 docs/门禁说明/README.md §2 用同一条自查命令。顺带更正「主机侧单测 23 个
(含 ui-sink)」:实为 22 个,test/host/ui_sink 有 run_unit_test.py 却没有 per-module
钩子,只有覆盖率总闸跑得到它(已另立待办,不当既成事实写进文档)。
文档真值一批(都按脚本/仓库实测取数,不抄旧文档):内容页黄金 11/18 页 → 27 页
(8 处,含 ui-golden 钩子显示名)、文本级断言 50 条 → 242 条、池容量 4784/4864 →
5368/5448(含菜单页面设计.md 与同文档 1.5 节自相矛盾的那处)、页面补齐规划的立项
快照加限定语(日期按该文档自身标题 2026-10-23,不臆造现值)。变更记录里的历史数字
(11 页、50 条、老基线时代的绝对峰值)一律不改;无法实测的绝对峰值改成增量口径并
标注「待按新基线重测」。
销项(用户裁定 2026-10-26):UI补齐.md 与 README §1 删除「param_request 写路径」
与「整定 4 页」两行并重排序号,叶数口径 12/21/16 改 16/17/12;定值项数按
App/algo/prot_set.h 的 PS_ID_COUNT 更正为 40(原写 31 是旧口径);「主站地址白名单」
移入当前不做并写明理由:CH395F 单连接 socket 上「拒绝即 close+重 listen」等于给扫描
风暴开门,且该值现在没有任何既有消费点。
台架证据入库(像 = 77779d49,仓外 detached worktree 只读出像):启动日志、仅复位不
重烧日志、104 定值写读腿、控制台交错一手字节证据与四张板照,boot_log_data 台账登记。
.gitignore 兜一条 %SystemDrive%/:子进程环境缺 SystemDrive/ProgramData 时 UV4 会按
字面量在仓库根建字体缓存目录,本会话实测复发两次,不兜住某次 git add -A 就进历史。
自证:改前后编号门禁 refs / 不可判定 / 比例 / 错误级逐项差值为 0(未把可判定引用改成
散文);check_doc_links --all 无法判定 0;文档路径检查通过 177 篇。
本笔不含三条在飞源码道与板端导航脚本修复,它们各自单独一笔。
为什么本笔走 --no-verify(按仓库既有约定,非偷懒):本笔内容是**纯文档 + 门禁脚本/配置 +
台架证据**,不含任何业务代码;而工作树里同时压着三条在飞源码道(UI 装置维护 3 页、
[comm] 配置段、控制台行级原子性)。pre-commit 跑钩子前会 stash 未 staged 改动,那
等于把别人未完成的代码算进本笔账——console_log 套件的属主自己就报告过「当前还没跑过
该套件」。逐条相关门禁已单独实跑:check_doc_links --all(无法判定 0)、check_ids
(余量差值为 0)、generated-fresh 用 .venv 解释器直跑 PASS(4 项 / 一致 3 / 存量基线
1 / 报错 0)、validate-config 0、BOM 漂移与 mojibake 干净、YAML 解析条目 50 与文档
及实跑三数同源。唯一会红的是 mem-budget:磁盘上的 .map 含上述在飞代码,与 HEAD 台账
不同码;台账与体积凭证由我在源码道全部落地后统一重建回填。证据文件:
ci-artifacts/commitA2.log(上一次尝试的完整钩子输出)。
另记一条本笔实测到的坑(已写进 AGENTS「Python 环境」与 docs/门禁说明/generated-fresh.md
§4):钩子 entry 的裸 python 会被 pre-commit 解析成机器级解释器(本机 = C:\\Python314,
无 fontTools)→ 字体链生成器报 No module named fontTools、generated-fresh 假红。修法
是脚本内自己按「显式 var > 当前解释器 > 仓库 .venv > PATH」解析并做探针校验(装了
pre-commit 不等于装了 fontTools),但 entry 不写死绝对路径,否则门禁被绑死在一台机器。
这与 scripts/ci_local.py 文件头记的 2026-10-11「L0 全灭」是同一族问题的第二次发作。
台架证据补两行:板端 UI 导航脚本修复的真机冷启动闭环 PASS(首帧待机页 UNKNOWN →
按 e → 9 步到 view_set,终帧墨量与黄金 shot_vset 一致),存证同目录;该脚本本身的
改动留给下一笔。
任务规划
现在只做 UI 补齐。第一项是实现
param_request写路径,然后做整定 4 页。 详细任务与验收见UI补齐.md;UI 完成后的第一项是 net 层跨上下文收口。
怎么用这份规划
| 你想知道什么 | 只看哪个文件 |
|---|---|
| 现在做什么、接下来做什么 | 本文件 |
| 当前任务怎么做、怎样算完成 | UI补齐.md |
| UI 之后还有什么、哪些事在等条件 | 登记簿.md |
| ADC 标定为什么没做、保护为什么不动作 | 数据可信.md |
| RS-485 为什么冻结、重启要满足什么 | 暂缓-RS485.md |
| 测试与架构还剩什么约束 | 测试与架构专项.md |
一件事只有一个归属。 本文件只负责导航与顺序,不复制各任务的验收明细;
登记簿.md 不再复制当前 UI 任务,数据可信.md 的其余章节是被代码引用的设计约束,
不是额外待办。
0. 条目与引用规则
- 新条目使用语义短语,一行直接说清是什么事,不再新增字母加数字编号。
- 旧编号只用于追溯历史,不复用、不重新发号;编号族与冻结规则见
docs/编号规范.md。 - 引用条目时写清所在文档和语义名,例如:
docs/任务规划/登记簿.md的 「net 层跨上下文收口」。不要只写一个短号让读者猜。 - 任务状态只维护在任务所属文件;本文件不另建一套状态表。
1. 当前执行:UI 补齐
菜单树共 33 叶,已绑 16 叶,剩 17 叶。其中 12 叶纳入当前执行,另外 5 叶因缺少
开入硬件、录波模块或 SNTP 产品定义而不做。唯一执行清单见 UI补齐.md。
| 顺序 | 要做的事 | 交付结果 |
|---|---|---|
| 1 | 装置维护 3 页 | 时钟设置、强制复归、清除记录 |
| 2 | 遥测死区与系数 2 页 | 修改既有 run_par / adc_cal,不新增第二份真源 |
| 3 | 通讯设置 | 新增 [comm] 配置段并接入 104 |
| 4 | 记录 5 页 | 事故、操作、保护告警、保护启动、遥控记录有写入方并可查看 |
| 5 | 运行报告 | 上电次数、运行时长、复位原因、104 统计 |
执行纪律:单道串行。 菜单树与页面注册表是生成物,字库也是整文件生成物; 不要同时开多条 UI 页面分支。上板验证可累积成一批,但保存、重启、主站读回等判据不能删除。
2. 全项目推进顺序
本节是全项目唯一的顺序权威。模块文档只描述局部设计,不另排一套路线图。
2.0 顺序表
| 顺序 | 工作 | 当前状态 | 开始或切换条件 |
|---|---|---|---|
| 1 | UI 补齐 | 当前执行 | 已开始;按 §1 的 1→5 顺序推进 |
| 2 | net 层跨上下文收口 | 下一步 | UI 当前清单完成后;裸指针收口与 reconcile 突发饿死 uiTask 同批评估 |
| 3 | 其余结构与可靠性评估 | 排队 | net 收口后;逐项见 登记簿.md,观察项不为了“清清单”而强做 |
| 4 | 数据可信剩余三项 | 等待台架或外部资源 | 已知电压注入 → 端子变比 → 标准源两点标定;资源到位可插入优先处理 |
| 5 | 标准源送检与第三方 104 主站验收 | 等待标定完成 | 两点标定完成且保护 VALID 已置位;送检窗口前 2 日冻结特性 |
| 6 | 保护元件与采集增强 | 等待标准源或硬件改版 | 保护先解除未标定闭锁;三相同时刻类功能等 V0.2 硬件 |
| 7 | 验证窗口事项 | 逢条件顺带 | CI runner、PC peer、CH340、负向故障注入条件到位时执行 |
| 8 | 独立模块与暂缓项 | 当前不排 | 开入开出、故障录波、SNTP 单独立项;RS-485 与内存优化按各自重启条件 |
2.1 关键依赖
- UI:写路径与整定 4 页已收口(含上板判据);其余页面按 §1 串行推进, 菜单树、页面注册表与字库都是生成物,同刻只允许一条道写。
- 送检:已知电压注入 → 端子变比确认 → 标准源两点标定 → 保护解除闭锁 → 送检。
- 保护扩展:标准源未到位前不新增无法验证的判据;跨转换器相位、功率、对称分量类 功能必须等 V0.2 硬件。
- 结构债:UI 完成后先做 net 收口;RS-485 白名单、内存优化、仓库体积等观察项不抢占 当前编码道。
3. 维护约定
- 完成即删除待办条目,同时清理其他文档对它的引用;结论和证据写入模块文档,
历史由
git log保留。 - 当前任务只改
UI补齐.md,后续事项只改登记簿.md;顺序变化才改本文件 §2。 数据可信.md的 §2、§4、§7~§10 仍被代码头注释引用为设计依据,不能按“已完成” 删掉;其待办只认 §5 的三项。测试与架构专项.md的断言与体积门禁章节仍是代码和门禁的规格锚点,即使事项已完成 也不能删;当前未闭环的只有 RS-485 侧采集链路测试约束。- 任务分支不直接修改
docs/任务规划/**;状态更新与销项由主工作树统一处理。 - 并行开发机制、工作树和锁的使用见
docs/环境与部署/并行任务工作树方案.md。 本文件夹不再另维护一份分道、批次和写域方案。 - 暂缓不是完成:条目必须保留重启条件;没有重启条件的“以后再说”应写成观察项或删除。