围栏腐坏是真 bug:@T3@ 是被误提交进仓的代码围栏占位符,Markdown 渲染出 来就是一行 @T3@ 加裸命令。git log -S 定位:842d711e(2026-10-28) SKILL.md 还有 18 个真三反引号围栏行、0 个占位符;21c68521(2026-10-29 插件桥接那笔)起变 0 围栏 / 34 个占位符。全仓只有本技能 6 个文件有此 病,draw-diagram / keil-build / ui-verify 等都用真围栏。本轮七个文件 占位符清零、围栏全部成对。 信息密度:SKILL.md 28,139 → 23,087 B(−18%,占插件写侧上限 65536 的 35%,给自进化留头量)。同一句外置理由在 C2/D/E/F/G/陷阱/验证 重复 7 次 → 0;frontmatter 与 F 节写了两遍的插件桥接说明收进 F 节;「这不是免费 的」「挡给你看的保护」这类修辞删掉。删掉的细节全部落进对应 reference 篇——skill-size 钩子会校验指针不悬空:现 26 处链接 / 8 篇目标 / 悬空 0, 每篇都有入口。 锚点未重排:节号 A–G/C2、各节步骤号、铁律编号被 reference/ 反向引用 (铁律 3/5/7/9 与 A 第 1、5 步,C 第 5~7 步,E 第 1~6 步均结构性存在)。 只在 SKILL.md 出现的 PIPESTATUS 教训保留(reference/ 里没有,删了就丢)。 门禁:check_skill_size.py rc=0(17 个 SKILL.md 全在写侧上限内、无悬空 指针);七文件均无 BOM / CR / U+FFFD、单个尾换行。
5.1 KiB
D. 门禁指标异常增长 → 逐文件归因(把净室工作树当测量仪,主树全程只读)
场景(2026-10-27 实测):id-check 突然 FAIL「不可判定 1,178 > 上限 1,166」——比上一轮量到的 1,162 又涨了 +16,
而主工作树里同时压着 4 条在飞任务道的未提交改动。不许 stash / checkout / reset(那是搬动甚至丢弃别人未提交的工作,
项目级 Never;git status 一乱,整条道的现场就没了),不许改门禁脚本本身(它就是那把尺子,改了数字就不可信),
也别在脏主树里跑门禁(那测的是 4 条道 + 未跟踪文件的混合体,永远分不出谁)。正解:在仓库之外另起一棵
detached HEAD 的干净工作树当净室,一次只往里注入一份在飞文件,与基线差分即得每个文件的独立贡献。两步:
净室建树 → 单文件注入测量。
- 建净室 + 先落基线数(路径必须在仓库目录之外;铁律 7 对临时树同样成立——放仓内就污染
git status/pre-commit --all-files/ 全库搜索):
MAIN="D:/Code/DTU Code/STM32F4-Base" # 主工作树绝对路径(含空格 → 变量整体加引号)
WT="$MAIN/../_wt/und-attr" # 仓外同级 _wt/ 下;一次测量固定用同一个名字
rm -rf "$WT" 2>/dev/null
git -C "$MAIN" worktree add --detach "$WT" HEAD >/dev/null 2>&1 || { echo WT_FAIL; exit 9; }
git -C "$WT" status --porcelain # 应为空
"$PY" "$WT/scripts/archive/id_gate/check_ids.py" 2>&1 | tail -25 # ← 口径:id-check 钩子已于 2026-10-28 退役(脚本移入 scripts/archive/id_gate/),按该脚本自身默认参数跑;基线与注入用**同一条命令**
--detach(不要-b):净室没有分支、不写_wt/.state/<ID>.json台账 → 不占MAX_CONCURRENT = 8名额、不出现在$TW list,也没人会被误指去对它跑done(建与拆都不走$TW new/$TW done)。- 能这么量的前提:该门禁只读仓库内文本。依赖本树构建产物的门禁(
mem-numbers/mem-budget要.map) 在净室里必然报「找不到 .map 事实源」(见陷阱「新建工作树从未构建过」)——那类指标不能这么归因。 git status --porcelain非空 = 有别人的未跟踪文件被带进净室 → 先git clean -xdn干扫(别去n) 看清会删什么,只挪走多出来的那些再测;语料被污染出来的数字与 CI 不可比。
- 一次只注入一份在飞文件 → 跑同一个扫描器 → 与基线差分(得到的是每个文件的独立贡献,不是合计):
for f in "App/log/sys_log_mcu.c" "test/host/sys_log_mcu/sys_log_mcu_test.c" "docs/子系统设计/运行与自检记录设计说明.md"; do
mkdir -p "$WT/$(dirname "$f")"
cp "$MAIN/$f" "$WT/$f" # 拷进净室;主树那份只读、一字节不动
echo "== $f =="; "$PY" "$WT/scripts/archive/id_gate/check_ids.py" 2>&1 | tail -25 # ← 与第 1 步同一条命令
git -C "$WT" checkout -- "$f" # 只还原净室里自己刚拷进来的那份
done
实测:run_par.c / board_ui_nav.py / check_nested_comment.py / keil SKILL.md 各 +0,
而 log 道那三个文件 +6 / +8 / +2,合计正好 +16。Σ(逐文件增量) ≠ 观察到的涨幅 → 还有没被注入的
在飞文件,或存在文件间交互项,不许就此交卷。
3. 定性增量是哪一类字面量(只有「谁」没有「为什么」= 给不出可执行的改法):同一计数器在 HEAD 版与
在飞版各数一遍,差值才是新增行带来的(存量的不算这条道的账);再对新增行直接 grep。本次 16 处全是
裸形 「字母 T 累进数字 4」(T 在 scripts/archive/id_gate/id_registry.json 的 bare_check_letters 里,规范形态是连字符形),
全部落进 skip_bare_unmanaged —— 到这一步结论才配发给属主。
4. 闭合 + 复验主树一个字节没被污染:
git -C "$MAIN" worktree remove --force "$WT" # 净室里只有自己的拷贝、没有原件,--force 安全
git -C "$MAIN" worktree list # 不该再有 und-attr
git -C "$MAIN" status --porcelain | sort # 与测量前**逐行一致**(测量前先存一份基线清单)
⚠ 上面第一行的前提是有条件的:树里混进了别人的在飞 / 未跟踪内容时「只有自己的拷贝」就不成立了,
--force 直接拆等于替别人把唯一版本删掉 → 先走 E 节(全景 → 逐文件分桶 → 联接预扫 → 唯一残留先备份),
再回来执行本步;复验按 E 第 5 步做(拆前/拆后主树 status --porcelain -uall 行数必须相同)。
同一棵净室树的第二种用法:按指定 commit 只读构建出像 / 烧录验收——不搬动任何在飞改动,也不为台架
提前抢发一笔提交;构建与烧录都在这棵树里做(不在主树),仍受 bench / build 锁串行(铁律 3)。