4a4ad6bc5f
现状口径:/keil-build 与 /serial-boot-test 是 DSH 会话的技能调用名, 不是 shell 命令;「名 + 命令行参数」的命令形态改为可执行体 run_boot_test.py 的真实调用。 - AGENTS.md:别名说明重写为「技能调用名不是 shell 命令」,两条目改 「编译(/keil-build)」「串口回归(/serial-boot-test)」 - keil-build / serial-boot-test 两 skill 调用名与示例同步;task-worktree 方案文档去掉 @build/@test 惯例从句;@task 保留(不在点名范围) - 123 文件现状陈述全改;台架捕获、变更记录/时间线、rename 映射输入 等 41 行历史证据保留旧名 - gen_memory_svg.py 6 处措辞随改,3 张 SVG 产物同批重跑 - 顺手补并行方案同行漏网计数 51→52 钩子 验证:提交期快钩子对 123 文件实跑全 Passed;check_doc_links --all rc=0(3038 处、无法判定 0);check_mermaid --all rc=0;YAML 解析 52 钩子不变;skill-size rc=0;py_compile 全过;字节卫生零漂移。
3.3 KiB
3.3 KiB
回填链上的坑(实测)(自 SKILL.md 外置)
本文由 mem-budget 的 SKILL.md「回填链上的坑(实测)」一节逐字外置而来(渐进展开:主文件只留索引与指针)。步骤号沿用原文,未重编。
--write说「已是最新」而钩子还红 ≠ 钩子坏了,是落点找错了:tsv / 台账受管区 / 文档快照区 三处各归一个旗标。按上表对号,别把同一个旗标重跑三遍;手改台账数字更不行——下次--write直接覆盖你, 钩子仍按 .map 判漂移。- tsv 落后只 WARN、不拦:
--gate对「tsv 末行落后于当前 .map」只打印[WARN] …请跑 --update(ram_baseline.py:232),拦下来的是受管区漂移。所以"钩子绿"绝不等于"趋势行也补了",反之亦然,各查各的。 --gate无 .map → SKIP,而脚本自己写明「SKIP 不等于 PASS」(ram_baseline.py:177): 新开的 task-worktree 从没在这棵树上构建过时必然走到这里;同一状态下--write直接[FAIL] 找不到 .map 事实源,先 /keil-build(ram_baseline.py:250)——不是代码缺陷,是这棵树还没测过体积。 无需 Keil 的强制兜底是scripts/check_size_gate.py --local(=scripts/ci_local.py的体积门禁步)与 CI 的--ci。--map <path>只换读、不换写:LEDGER(ram_baseline.py:45)与TARGETS(check_mem_numbers.py:53-54) 都由REPO_ROOT = Path(__file__).resolve().parent.parent算出。拿主仓脚本配--map <另一棵树>/…map去--write, 等于用别的树的数字改写主仓的台账——比"半棵树混合数字"更糟,因为它落盘了。回填永远用本树自己的脚本。--scan的散句告警--write不替你改:正文里手抄的旧值("现 RW_IRAM1 62.6%" 这类散句)只告警, 脚本明确写着「--write不会自动改写正文」(check_mem_numbers.py:418)→ 人工按受管区改那一行 (Edit 精确替换;含中文的文档绝不整文件重写)。--update的盖戳排在索引后面:它顺带调check_size_gate.cmd_stamp()(ram_baseline.py:345), 而凭证指纹按 git 索引内容生成,有未 staged 的脏改动时拒盖,且这里只[WARN]、不改返回值 → 现象是 tsv 多了一行而凭证仍是旧的,要等ci_local的体积门禁步 / CI 体积门禁那一侧才报出来。 要么先git add再--update,要么补跑python scripts/check_size_gate.py --stamp。- 改写型钩子当场改文件是流程不是故障:
trailing-whitespace/end-of-file-fixer报files were modified by this hook(新建的 .c 最常触发)时,先读ci-artifacts/cui.log的真实报错确认是哪几条红,git add被改写的文件后重提。两条改写红 + 两条内存红混在同一次里时,别顺手把内存那条也当"钩子误报"绕过去。 mem-budget触发面很宽:files:覆盖App/Drivers/BSP/Src/Inc/Lib/lv_conf.htest/board/scripts/ram_baseline.docs/内存管理/.pre-commit-config.yaml,且 pre-commit 4.x 已无always: true—— 纯 UI / 纯文档提交照样被它拦:盘上 .map 与台账不同源就红,跟这笔提交碰没碰内存文件无关。