Files
HologramAgent-DSH-Memory-Port/docs
jianf fc5fe11590 docs: 去掉 README 计数并在判据侧禁止它 + 变异判据方法论 dev-notes
1. README 计数去掉(不留守卫)
去掉「119 tests」与「10 checkpoints / 10/10 checkpoints passed」。
理由按裁定:一个没有守卫、被手改过五次的数字是负资产,
它给人的确定感是假的;加守卫要翻倍套件时间,不值。

守卫反过来断言「README 不得出现计数」:
  /\b\d+\s+tests\b/i
  /\b\d+\s+checkpoints\b/i
  /\b\d+\s*\/\s*\d+\s+checkpoints passed/i
三种写法实测都能抓住(120 tests / 12 checkpoints / 12/12 passed)。

顺带处理一处同类:原文「(6 tests)」是手抄的测试数,删;
「12 blocks × 15 queries = 45 cases」是 fixture 自身内容量,也删并改为
指向 fixture 文件 —— 由文件决定的东西不该在文档里再写一份。
(README 现在的口径:表格说「验什么」,`npm test` / `npm run check` 说「多少」。)

2. docs/dev-notes-mutation-criteria.md(新)
把三轮踩出来的方法论落成仓库文档,README 的 Verify 段加指针。
三类失效模式,每条都给「形态 / 实测证据 / 正确形态 / 自查问句」:

  ① 自测型假变异(犯四次:W11† / W11d†a / W11d†b / W12†)
     变异在 test/ 里自己拼替身,一行 lib/ 没碰 ⇒ 真回退下保持绿
     实测:M-a / M-b 下 W11d†a / W11d†b 均绿,只有 W11d 红

  ② 清单写死(W11f)
     手写 MODES 漏掉新 case;future_mode_a/b 测的是「掉进 default 的」,
     永远测不到「有人新写了一个 case」
     实测:植入 brand_new_mode(零命中时撒谎)→ 写死版全绿,扫描版红
     并记下边界:自动推导不能替代「提取本身也要被守卫」,
     所以还需要 declared.length >= 4 + W11f-a(guards the guard)

  ③ 变异共享状态并发撞车(我自己引入的)
     就地改写 lib/*.js,而 node --test 并行跑文件 ⇒ 别的文件读到中间态
     实测:约 1/30 偶发失败,症状像 flaky 断言;A1b / G2b / G5 这类
     读源码的判据会读到被改坏的中间态
     修法:在 lib/ 副本上变异(复制 lib + package.json + 软链 node_modules),
     finally 清理,锚点失配显式失败

文末给通用自查清单 9 条 + 一句话记住三条。

验证
- npm test 119/119、npm run check 10/10
- 连跑 6 次全量 0 失败
- 无 .orig / .rej / /tmp/mut-* 残留
- 未 amend / 未 force push,199553f 之后是新提交
2026-10-30 14:36:41 +08:00
..