agentic-flow-kit 1.7.0 → 1.7.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +81 -9
  2. package/modules/gates/README.md +1 -0
  3. package/modules/gates/test-protect/README.md +23 -0
  4. package/modules/gates/test-protect/check-test-protect.mjs +64 -0
  5. package/modules/gates/test-protect/local-pre-commit.line +1 -0
  6. package/modules/hosts/README.md +57 -0
  7. package/modules/hosts/claude/commands/wf-build.md +5 -24
  8. package/modules/hosts/claude/commands/wf-deploy.md +1 -0
  9. package/modules/hosts/claude/commands/wf-design.md +7 -6
  10. package/modules/hosts/claude/commands/wf-gate-checklist.md +1 -3
  11. package/modules/hosts/claude/commands/wf-new-task.md +42 -21
  12. package/modules/hosts/claude/commands/wf-plan.md +1 -1
  13. package/modules/hosts/claude/commands/wf-review.md +1 -1
  14. package/modules/hosts/claude/commands/wf-sync-hosts.md +8 -16
  15. package/modules/hosts/claude/commands/wf-test.md +5 -4
  16. package/modules/hosts/codex/commands/wf-build.md +5 -24
  17. package/modules/hosts/codex/commands/wf-deploy.md +1 -0
  18. package/modules/hosts/codex/commands/wf-design.md +7 -6
  19. package/modules/hosts/codex/commands/wf-gate-checklist.md +1 -3
  20. package/modules/hosts/codex/commands/wf-new-task.md +42 -21
  21. package/modules/hosts/codex/commands/wf-plan.md +1 -1
  22. package/modules/hosts/codex/commands/wf-review.md +1 -1
  23. package/modules/hosts/codex/commands/wf-sync-hosts.md +8 -16
  24. package/modules/hosts/codex/commands/wf-test.md +5 -4
  25. package/modules/hosts/cursor/commands/wf-build.md +5 -24
  26. package/modules/hosts/cursor/commands/wf-deploy.md +1 -0
  27. package/modules/hosts/cursor/commands/wf-design.md +7 -6
  28. package/modules/hosts/cursor/commands/wf-gate-checklist.md +1 -3
  29. package/modules/hosts/cursor/commands/wf-new-task.md +42 -21
  30. package/modules/hosts/cursor/commands/wf-plan.md +1 -1
  31. package/modules/hosts/cursor/commands/wf-review.md +1 -1
  32. package/modules/hosts/cursor/commands/wf-sync-hosts.md +8 -16
  33. package/modules/hosts/cursor/commands/wf-test.md +5 -4
  34. package/modules/hosts/opencode/commands/wf-build.md +5 -24
  35. package/modules/hosts/opencode/commands/wf-deploy.md +1 -0
  36. package/modules/hosts/opencode/commands/wf-design.md +7 -6
  37. package/modules/hosts/opencode/commands/wf-gate-checklist.md +1 -3
  38. package/modules/hosts/opencode/commands/wf-new-task.md +42 -21
  39. package/modules/hosts/opencode/commands/wf-plan.md +1 -1
  40. package/modules/hosts/opencode/commands/wf-review.md +1 -1
  41. package/modules/hosts/opencode/commands/wf-sync-hosts.md +8 -16
  42. package/modules/hosts/opencode/commands/wf-test.md +5 -4
  43. package/modules/hosts/trae/commands/wf-build.md +5 -24
  44. package/modules/hosts/trae/commands/wf-deploy.md +1 -0
  45. package/modules/hosts/trae/commands/wf-design.md +7 -6
  46. package/modules/hosts/trae/commands/wf-gate-checklist.md +1 -3
  47. package/modules/hosts/trae/commands/wf-new-task.md +42 -21
  48. package/modules/hosts/trae/commands/wf-plan.md +1 -1
  49. package/modules/hosts/trae/commands/wf-review.md +1 -1
  50. package/modules/hosts/trae/commands/wf-sync-hosts.md +8 -16
  51. package/modules/hosts/trae/commands/wf-test.md +5 -4
  52. package/package.json +2 -2
  53. package/src/add-gate.mjs +25 -1
  54. package/src/add-gate.test.mjs +103 -0
  55. package/src/cli.mjs +59 -5
  56. package/src/doctor.mjs +136 -12
  57. package/src/executor.mjs +245 -0
  58. package/src/executor.test.mjs +292 -0
  59. package/src/gates.test.mjs +17 -0
  60. package/src/init.mjs +14 -1
  61. package/src/init.test.mjs +19 -0
  62. package/src/instance-ref.test.mjs +62 -0
  63. package/src/jscpd-drift.test.mjs +144 -0
  64. package/src/profiles.mjs +3 -0
  65. package/src/render.mjs +6 -1
  66. package/src/rule-budget.test.mjs +103 -0
  67. package/src/sync-hosts.mjs +41 -45
  68. package/src/sync-hosts.test.mjs +67 -56
  69. package/src/trae-hooks.test.mjs +15 -3
  70. package/src/validate.mjs +72 -0
  71. package/src/validate.test.mjs +95 -0
  72. package/templates/.gitattributes +8 -0
  73. package/templates/AGENTS.md +2 -1
  74. package/templates/_agents/commands/build.md +5 -24
  75. package/templates/_agents/commands/deploy.md +1 -0
  76. package/templates/_agents/commands/design.md +7 -6
  77. package/templates/_agents/commands/gate-checklist.md +1 -3
  78. package/templates/_agents/commands/new-task.md +42 -21
  79. package/templates/_agents/commands/plan.md +1 -1
  80. package/templates/_agents/commands/review.md +1 -1
  81. package/templates/_agents/commands/sync-hosts.md +8 -16
  82. package/templates/_agents/commands/test.md +5 -4
  83. package/templates/_agents/control-surfaces.txt +53 -0
  84. package/templates/_agents/engine-lock.json +246 -0
  85. package/templates/_agents/lane-surfaces.txt +1 -1
  86. package/templates/_agents/level-hints.txt +30 -0
  87. package/templates/_agents/scripts/agg-delegations.cjs +51 -6
  88. package/templates/_agents/scripts/agg-delegations.test.mjs +84 -4
  89. package/templates/_agents/scripts/check-engine-integrity.mjs +217 -0
  90. package/templates/_agents/scripts/check-engine-integrity.test.mjs +215 -0
  91. package/templates/_agents/scripts/check-lane-surface.mjs +78 -24
  92. package/templates/_agents/scripts/check-lane-surface.test.mjs +66 -0
  93. package/templates/_agents/scripts/check-ledger-invariant.mjs +112 -14
  94. package/templates/_agents/scripts/check-ledger-invariant.test.mjs +5 -1
  95. package/templates/_agents/scripts/check-loop-rev.test.mjs +6 -4
  96. package/templates/_agents/scripts/check-loop.mjs +255 -45
  97. package/templates/_agents/scripts/check-loop.test.mjs +330 -15
  98. package/templates/_agents/scripts/check-metric-claims.mjs +4 -2
  99. package/templates/_agents/scripts/compact-ledgers.mjs +97 -0
  100. package/templates/_agents/scripts/compact-ledgers.test.mjs +162 -0
  101. package/templates/_agents/scripts/confirm-doc.mjs +54 -12
  102. package/templates/_agents/scripts/confirm-doc.test.mjs +59 -0
  103. package/templates/_agents/scripts/doctor.test.mjs +294 -1
  104. package/templates/_agents/scripts/draft-sediment.mjs +178 -0
  105. package/templates/_agents/scripts/draft-sediment.test.mjs +272 -0
  106. package/templates/_agents/scripts/edit-face-check.test.mjs +5 -4
  107. package/templates/_agents/scripts/fill-intent.mjs +2 -2
  108. package/templates/_agents/scripts/fixture-scripts.mjs +153 -0
  109. package/templates/_agents/scripts/fixture-scripts.test.mjs +107 -0
  110. package/templates/_agents/scripts/gate-checklist.mjs +6 -3
  111. package/templates/_agents/scripts/gate-checklist.test.mjs +2 -5
  112. package/templates/_agents/scripts/gen-wiki-board.mjs +61 -6
  113. package/templates/_agents/scripts/gen-wiki-board.test.mjs +74 -1
  114. package/templates/_agents/scripts/gen-workflow-dashboard.mjs +10 -13
  115. package/templates/_agents/scripts/gen-workflow-metrics.mjs +12 -30
  116. package/templates/_agents/scripts/git-merge-jsonl.mjs +63 -0
  117. package/templates/_agents/scripts/git-merge-jsonl.test.mjs +125 -0
  118. package/templates/_agents/scripts/kb-search.mjs +87 -12
  119. package/templates/_agents/scripts/kb-search.test.mjs +83 -0
  120. package/templates/_agents/scripts/ledger-doc-chain.test.mjs +166 -0
  121. package/templates/_agents/scripts/ledger-loader.mjs +108 -0
  122. package/templates/_agents/scripts/ledger-loader.test.mjs +131 -0
  123. package/templates/_agents/scripts/ledger-prune.mjs +96 -0
  124. package/templates/_agents/scripts/ledger-prune.test.mjs +120 -0
  125. package/templates/_agents/scripts/ledger-ts-monotonic.test.mjs +135 -0
  126. package/templates/_agents/scripts/level-criteria.mjs +232 -0
  127. package/templates/_agents/scripts/level-criteria.test.mjs +279 -0
  128. package/templates/_agents/scripts/pipeline-run.mjs +5 -3
  129. package/templates/_agents/scripts/policy.mjs +47 -0
  130. package/templates/_agents/scripts/solidify-task.mjs +1 -1
  131. package/templates/_agents/scripts/stage-gates.mjs +52 -10
  132. package/templates/_agents/scripts/stage-gates.test.mjs +105 -0
  133. package/templates/_agents/scripts/verify-wiki-consistency.mjs +34 -0
  134. package/templates/_agents/scripts/verify-wiki-consistency.test.mjs +44 -2
  135. package/templates/_agents/scripts/verify.mjs +1 -1
  136. package/templates/_agents/scripts/wf-journal.test.mjs +1 -1
  137. package/templates/_agents/scripts/wiki-search.test.mjs +5 -6
  138. package/templates/_agents/scripts/workflows-check.mjs +1 -1
  139. package/templates/_agents/scripts-test-exempt.txt +3 -1
  140. package/templates/_agents/skills/wiki/SKILL.md +5 -3
  141. package/templates/_agents/workflows/pipeline-closing.md +4 -5
  142. package/templates/_githooks/pre-commit +3 -34
  143. package/templates/_githooks/pre-push +3 -3
  144. package/templates/wiki/INDEX.md +44 -1
  145. package/templates/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +22 -1
  146. package/templates/workflow/README.md +11 -0
  147. package/templates/workflow/delegations.md +5 -4
  148. package/templates/workflow/incidents/_TEMPLATE.md +2 -0
  149. package/templates/workflow/intents/_TEMPLATE.md +3 -0
  150. package/templates/workflow/plans/_TEMPLATE.md +4 -0
  151. package/templates/workflow/specs/_TEMPLATE.md +23 -0
  152. package/modules/hosts/claude/commands/wf-source-sync-check.md +0 -91
  153. package/modules/hosts/codex/commands/wf-source-sync-check.md +0 -91
  154. package/modules/hosts/cursor/commands/wf-source-sync-check.md +0 -91
  155. package/modules/hosts/opencode/commands/wf-source-sync-check.md +0 -91
  156. package/modules/hosts/trae/commands/wf-source-sync-check.md +0 -92
  157. package/templates/_agents/commands/source-sync-check.md +0 -105
  158. package/templates/_agents/scripts/check-ledger.mjs +0 -109
  159. package/templates/_agents/scripts/check-ledger.test.mjs +0 -197
  160. package/templates/_agents/scripts/source-sync-check.mjs +0 -156
  161. package/templates/_agents/scripts/source-sync-check.test.mjs +0 -281
  162. package/templates/_agents/workflows/source-sync-repair.md +0 -30
@@ -4,3 +4,11 @@
4
4
  .githooks/* text eol=lf
5
5
  .agents/hooks/local-pre-commit text eol=lf
6
6
  *.ps1 text eol=crlf
7
+
8
+ # 台账并集合并(2026-10-12 ledger-merge-driver):确认台账是「尾部追加 + 多人/多 worktree 并行」形态,
9
+ # 默认三方合并会把它当文本冲突,人工解的常见错法是「整取一侧」——静默丢掉另一侧的确认行,
10
+ # 门禁事后无从发现。本 driver 把合并降级为确定性并集去重:两侧行全保留,无冲突可解。
11
+ # 需配 driver(flow-kit init 自动配):git config merge.jsonl-union.driver "node .agents/scripts/git-merge-jsonl.mjs %O %A %B"
12
+ # **故意不加 text eol=lf**:给既有 .jsonl 加 text 规则会让下次提交时 git 重新规范化换行 → 台账 blob 字节变化
13
+ # → check-ledger-invariant 的 append-only 前缀不变量判为「台账重写」而硬拦。台账换行归一由 driver 自身负责。
14
+ .agents/*.jsonl merge=jsonl-union
@@ -23,7 +23,7 @@
23
23
 
24
24
  ### 门禁与提交
25
25
 
26
- - `.githooks/`(经 `core.hooksPath` 挂载,本地 clone 后执行 `git config core.hooksPath .githooks`):pre-commit(闭环配对 / 泳道完整性 / wiki 台账 / 规则面预算 / 双源一致性 / managed 台账快检 / 敏感信息扫描与条件构建)、pre-push(闭环断档扫描)、commit-msg、post-commit、pre-merge-commit。
26
+ - `.githooks/`(经 `core.hooksPath` 挂载,本地 clone 后执行 `git config core.hooksPath .githooks`):pre-commit(闭环配对 / 泳道完整性 / wiki 台账 / 规则面预算 / 确认台账不变量 / 敏感信息扫描与条件构建)、pre-push(闭环断档扫描)、commit-msg、post-commit、pre-merge-commit。
27
27
  - **CI 远端门(2026-10-07 起)**:`.github/workflows/kit-ci.yml`(owned)在 GitHub runner 复跑 `node .agents/scripts/verify.mjs`(云端兜底本地钩子);非 GitHub 装户可删,等价门 = 同入口命令 + 服务端分支策略(人工一次性配置,机器不校验)。
28
28
  - **`git commit` / `git merge` / `git push` 三处一律禁 `--no-verify`**——被拦说明产出不合规,按提示修完原路重试。
29
29
  - 项目专属门禁挂 `.agents/hooks/local-pre-commit`。装户五条硬规则(配对、验收、确认留痕、敏感信息、双源台账)与 `audit` 档见 `workflow/README.md`「硬规则」。
@@ -46,6 +46,7 @@
46
46
  `wiki/` 是项目知识沉淀,按主题目录归位;原始 / 一次性文档归档 `wiki/drafts-archive/<日期-主题>/`(只读不增量)。
47
47
 
48
48
  - 人工只维护两样:**磁盘文件本身 + `wiki/INDEX.md` 速览表「用途」列**;计数 / 映射表 / 看板 DATA 均为生成区,勿手改——`node .agents/scripts/gen-wiki-board.mjs` 重生成,`node .agents/scripts/verify-wiki-consistency.mjs` 三方一致性验证(触及 `wiki/` 的提交会被 pre-commit 台账门禁校验)。
49
+ - **沉淀与血缘(2026-10-10 起)**:关单时 `node .agents/scripts/draft-sediment.mjs workflow/<intents|incidents>/<本单>.md` 自动把高价值节抽成 `drafts-archive/` 草稿(`--dry-run` 预览;全占位拒抽);草稿是中间态,人工归类到 `wiki/<主题>/` 后跑生成器 + 验证。沉淀关系用 frontmatter 双向链接:wiki 文件 `来源: workflow/…`、workflow 文件 `沉淀: wiki/…`(不沉淀写 `沉淀: 无`)——两向字段的存在性由 verify-wiki-consistency 与 check-loop 校验,改名 / 移动时须同步。
49
50
  - wiki 看板:`wiki/知识沉淀总览.html`。
50
51
 
51
52
  ## 项目适配区(项目自填)
@@ -27,7 +27,7 @@ next: .agents/commands/test.md
27
27
 
28
28
  起草 intent / spec / plan 任一件后,**在输出草稿全文前先给三件要点总览**(各一件:目标 / 关键取舍 /
29
29
  验收判据 diff,合计 ≤12 行)——用户一次看整体再逐件拍板,省三次盲确认的上下文切换。
30
- 确认纪律不变:逐件过目全文 + 逐件 `confirm-doc` 代录(禁并录、禁复用同句)。本阶段总览侧重:plan 任务拆解与两道确认门位置。
30
+ 确认纪律不变:逐件过目全文 + 逐件 `confirm-doc` 代录(禁并录;摘要可复用——分辨力由 scope+指纹承担,2026-10-09 起)。本阶段总览侧重:plan 任务拆解与两道确认门位置。
31
31
 
32
32
  ## 1. 执行
33
33
 
@@ -38,7 +38,7 @@ next: .agents/commands/test.md
38
38
  - 复制 `workflow/plans/_TEMPLATE.md` → `workflow/plans/YYYY-MM-DD-<主题>.md`(与入口文档同名)
39
39
  - L2/L3 按 4 节填写:改动方案 / 任务拆解(每个任务有判据) / 执行顺序 / 验证计划(与 fill-plan.mjs 单源一致)
40
40
  - L1 使用 Quick-Plan 极简三节:改动方案 / 约束与风险(原 Spec 核心) / 验证计划;多文件多步骤时可补任务拆解/执行顺序
41
- 3. 停下,输出 plan 草稿全文给用户过目,一句"可以"即确认。**逐件确认**:入口文档 / spec / plan 各自的确认点不得并作一次,plan 草稿须全文过目(不接受摘要代替)。**逐件配逐件原话**:`--delegated` 每次传当次实际放行的措辞,不复用同句——复用同句使台账 quote 失去分辨力(事后对质看不出放行的是哪一件);原因与根治见 workflow/papercuts.md 2026-09-28。
41
+ 3. 停下,输出 plan 草稿全文给用户过目,一句"可以"即确认。**逐件确认**:入口文档 / spec / plan 各自的确认点不得并作一次,plan 草稿须全文过目(不接受摘要代替)。**逐件代录**:`--delegated "<授权摘要>"` 每件单独一次——摘要为人类可读留痕,复用同句不削弱判据(分辨力由落账自动记录的改动面 `scope{files,sha256}` 与文档指纹承担,2026-10-09 起)。
42
42
  **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(draft→approved / approved→done;TTY 两形态 / 一次一份多份并录被拒 / 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
43
43
  4. 确认后 → plan 状态 draft → approved,并在 plan 内补「确认与复核」节(确认结果 + 日期)。确认环节须在文档留痕:`approved` 是确认的机器可见态,`done` 只在关单出现,禁从 `draft` 直跳 `done`;确认后立即 `docs(workflow)` 单独提交留痕(根 `AGENTS.md` 提交约定;check-loop 检查 14 口径)。
44
44
 
@@ -48,7 +48,7 @@ next: .agents/commands/test.md
48
48
  - **先拉同模块历史坑**:按入口文档 `模块:` 跑 `node .agents/scripts/kb-search.mjs --scope workflow --module <token> "<关键词>"`——命中 incident 的根因 / 防复发条目列入改动自查
49
49
  - 列改动文件清单(读后改 vs 新建)
50
50
  - 列步骤(改 X 文件做 Y → 改 Z 文件做 W)
51
- - **owned 文件同步**:kit.owned 列表文件(AGENTS.md / workflow 模板等)sync 不动,须列「手动同步装副本」步骤(见 incidents/2026-09-25-wf-runtime 复盘)
51
+ - **owned 文件同步**:kit.owned 列表文件(AGENTS.md / workflow 模板等)sync 不动,须列「手动同步装副本」步骤(仅包源/dogfood 双形态仓适用;纯装户仓 owned 即项目自有文件,无此步)
52
52
  - 标注触达红线(对照根 `AGENTS.md` 红线/约束相关节(如「项目适配区」「门禁与提交」)+ 改动域目录级 `AGENTS.md`(如有))
53
53
  6. 停下,等用户确认改动清单。
54
54
 
@@ -71,32 +71,13 @@ next: .agents/commands/test.md
71
71
 
72
72
  - 红线(架构 / 数据 / 安全等)正文与豁免见根与目录级 `AGENTS.md`(如有)——已由 pre-commit 机器门强制的部分以钩子为准,写代码前先过一遍目录级 AGENTS
73
73
 
74
- ## 4. 改权威源后必跑(薄适配同步防漏)
75
-
76
- - 改 `templates/_agents/{commands,roles}/*.md` 正文后跑 `node bin/flow-kit.mjs sync-hosts --diff` → 拍板 → `--apply` 单向同步(只动正文段,frontmatter 不动);口径与边界详见 `.agents/commands/sync-hosts.md`
77
- - 改根 `AGENTS.md`(owned 常驻面)后跑 `node .agents/scripts/edit-face-check.mjs`——工作树面快检(阶段索引/引用/预算 advisory),别等提交门才发觉砍坏(2026-10-09 B2)
78
-
79
- ## 5. 改 doctor / check-loop 后必跑(三处口径对账)
80
-
81
- - 改 `src/doctor.mjs` 加新 § 检查项 → 跑 `node .agents/scripts/gate-checklist.mjs --diff` 看 doctor ↔ check-loop 对照表
82
- - 改 `.agents/scripts/check-loop.sh` 加新 § 检查项 → 同上
83
- - 任一处有而另一边无 → 工具报"缺点",由用户拍板是否补齐(不自动同步,B-b 决策);详见 `.agents/commands/gate-checklist.md`
84
-
85
- ## 6. 改包源后必跑(装户面同步一致性)
86
-
87
- - 改 `templates/_agents/*` 包源后 → 跑 `node .agents/scripts/source-sync-check.mjs --diff` 看装副本 `.agents/` 是否同步(缺失 / 孤儿 / 漂移三类差异)
88
- - 漂移说明包源改了装副本未跟;缺失说明新增文件 init 未执行;孤儿说明装副本独有(可能是装户配置,不删)
89
- - **新增 managed 类文件须经 init/sync 登记,禁手动双写绕过台账**——手工同时写 `templates/_agents/` 与 `.agents/` 会绕过台账登记,使该文件永远不被 sync 升级(`doctor` 台账覆盖率检查会拦;见 incidents/2026-09-26-managed-ledger-adopt 复盘)
90
- - 门禁边界(pre-commit 双源一致性):比较工作树非暂存区——两侧改好、分两笔提交不拦(最终一致即可);包源删除文件退化为「孤儿」只报告不拦,删包源须手动清理装副本残件(复核 P2-2 声明,2026-09-27 gate-hardening-p2-batch)
91
- - B-b 决策「只报告不修复」;详见 `.agents/commands/source-sync-check.md`
92
-
93
- ## 7. 子代理调用约定
74
+ ## 4. 子代理调用约定
94
75
 
95
76
  - plan 起草、风险判断、改动清单与两道确认门由主智能体负责;仅两道确认后范围明确的工作包可委派 `implementer`,公共接口 / Schema / 依赖 / 安全 / 权限 / 破坏性操作不得委派。
96
77
  - 多工作包并行 / 链式推进:编排机制(声明随 plan 草稿一并确认;确认后读 `.agents/workflows/` 按机制文档执行,`steps/` 为项目自定义步骤扩展点);详见 `.agents/workflows/_TEMPLATE.md`。
97
78
  - 子智能体返回后,主智能体须检查 diff 与授权文件范围、确认未覆盖既有修改并重跑相关验证;不支持子智能体时 `fallback: main`,验收标准不变。
98
79
 
99
- ## 8. 确认后
80
+ ## 5. 确认后
100
81
 
101
82
  - plan 状态 → done(实现完成;intent / spec 关单在 test)
102
83
  - commit:L1+ 入口文档 / spec / plan 随代码同一提交(Conventional Commits 中文 feat/fix/refactor/perf);docs 豁免与 bootstrap 可单独 `docs(*)`
@@ -49,6 +49,7 @@ next: .agents/commands/maintain.md(仅事故时)
49
49
  ## 6. 上线后观察(用户观察,Maintain 阶段接手)
50
50
 
51
51
  - 观察期:上线后 24h;由用户观察错误率 / 延迟 / 关键业务流(无监控时人工看)
52
+ - 异常判据(观察期退出规则):项目口径填 `workflow/regression-checklist.md`——无监控时的最低判据:错误日志 / 异常告警 / 关键业务流失败**任一出现即触发 §5 回滚预案,不等 24h**;无异常满 24h 方可闭环
52
53
  - 闭环宣告:用户确认无异常后才算闭环;AI 不得自行宣告
53
54
  - 异常回落:超阈值 → 生成 `workflow/incidents/YYYY-MM-DD-<主题>.md`,进 `maintain.md`(止血方案用户拍板,见 maintain.md §0)
54
55
  - 事故响应:单用途账号 + 最小权限;不得跨智能体协作推送修复(参考 Anthropic 教训)
@@ -24,15 +24,16 @@ next: .agents/commands/build.md
24
24
 
25
25
  起草 intent / spec / plan 任一件后,**在输出草稿全文前先给三件要点总览**(各一件:目标 / 关键取舍 /
26
26
  验收判据 diff,合计 ≤12 行)——用户一次看整体再逐件拍板,省三次盲确认的上下文切换。
27
- 确认纪律不变:逐件过目全文 + 逐件 `confirm-doc` 代录(禁并录、禁复用同句)。本阶段总览侧重:spec 方案取舍与 L3 复核安排。
27
+ 确认纪律不变:逐件过目全文 + 逐件 `confirm-doc` 代录(禁并录;摘要可复用——分辨力由 scope+指纹承担,2026-10-09 起)。本阶段总览侧重:spec 方案取舍与 L3 复核安排。
28
28
 
29
29
  ## 1. 执行
30
30
 
31
31
  1. 确认同名入口文档已批准:新需求为 approved intent,修复为已确认的 incident 草稿;否则拒绝,分别回 `plan.md` / `maintain.md`(2026-09-30 起机器强制:fill-spec / confirm-doc 对前置未过直接拒绝 exit 2、不落盘不记账)。
32
- 2. 级别判断(对照 AGENTS.md 第 3 条):
33
- - **L1**(实现级改动,未命中 L2/L3)→ 走快车道,省略 spec,直接跳 `next: build.md` 起草 Quick-Plan
34
- - **L2**(改规则 / 契约:编码权威 / 共享契约 / 既有接口语义 / 全局横切口径,闭集见 `new-task.md` §级别判断)→ 必须有 spec
35
- - **L3**(数据与运行时结构:schema / 迁移 SQL / DI 链 / 认证与中间件管线)→ 必须有 spec + **新会话独立复核**
32
+ 2. 级别判断(对照 AGENTS.md 第 3 条;判据单源 = `.agents/scripts/level-criteria.mjs`,**本文件只承载流程映射,不复述判据闭集**):
33
+ - **L1**(未命中 L2/L3)→ 快车道:省略 spec,直接跳 `next: build.md` 起草 Quick-Plan
34
+ - **L2**(触达面闭集见单源 `L2_SURFACES`)→ 必须有 spec
35
+ - **L3**(结构面闭集见单源 `L3_SURFACES`)→ 必须有 spec + **新会话独立复核**
36
+ - 判哪一档:逐条对照单源的 `L2_SURFACES` / `L3_SURFACES` / `L1_NEGATIVES`,不要凭记忆——判据只读单源一处
36
37
  3. 起草 spec:
37
38
  - **填空工具先跑**:`node .agents/scripts/fill-spec.mjs --level <L1|L2|L3> --topic <主题> --output workflow/specs/<date>-<主题>.md`——输出含 frontmatter 5 字段 + 5 节正文(功能行为/数据流/系统改动/约束遵守映射/风险评估)的草稿;AI 据此填实
38
39
  - 复制 `workflow/specs/_TEMPLATE.md` → `workflow/specs/YYYY-MM-DD-<主题>.md`(与入口文档同名)
@@ -57,6 +58,6 @@ next: .agents/commands/build.md
57
58
  ## 4. 确认后
58
59
 
59
60
  - spec 状态 draft → approved
60
- - **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(draft→approved / approved→done;TTY 两形态 / 逐件调用+逐件原话 / 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
61
+ - **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(draft→approved / approved→done;TTY 两形态 / 逐件代录(摘要可复用——分辨力由 scope+指纹承担)/ 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
61
62
  - 立即 `docs(workflow)` 单独提交留痕(根 `AGENTS.md` 提交约定;check-loop 检查 14 口径)
62
63
  - 进 `next: .agents/commands/build.md`
@@ -88,6 +88,4 @@ npm test # 含 gate-checklist 套件
88
88
 
89
89
  ## 6. 相关留痕
90
90
 
91
- - intent(登记表重写):`workflow/intents/2026-09-25-gate-checklist-registry.md`
92
- - intent(工具首建):`workflow/intents/2026-09-25-gate-checklist.md`
93
- - 父 incident:`workflow/incidents/2026-09-25-wf-runtime.md`(owned 漂移未对账,催生本工具)
91
+ - 立法出处:2026-09-25(登记表重写 + 工具首建;父事件 = owned 漂移未对账,催生本工具)——留痕在包源仓 git 历史与 CHANGELOG,装户径不引实例路径
@@ -28,7 +28,21 @@ next: 按阶段路由
28
28
 
29
29
  ## 2. 风险定级(第 0 步,先定级再路由)
30
30
 
31
- 动工前先按下表定风险级 L0-L3(就高不就低;判据细则见下节「级别判断」),级别即风险级,决定走哪条泳道——确认放事前,还是审计补事后:
31
+ **第 0 步先取机器面下界(必跑,不是可选提示)**:
32
+
33
+ ```bash
34
+ flow-kit route --files <预计改动面…> --kind require|fix|verify|review|deploy
35
+ ```
36
+
37
+ - **不给 `--files` 就拿不到路径下限**——机器面此时只能按 L1 起步并在降级栏点名,等于白跑;
38
+ 故定级前先把**预计改动面**列出来(不必精确到最终 diff,给到目录/文件前缀即可)。
39
+ - 跑完**再**按 §4 逐条语义判级:机器只给「就高不就低 + 路径下限」,「一处定义、多处消费」仍要你判。
40
+ - **确实跳过**时必须写明理由(入口文档备注或当场告知用户)——判低的后果由两道门兜:
41
+ 起草面 `check-lane-surface` 命中路径下限无合格入口即拦,提交面同门再拦一次。
42
+ **诚实边界**:机器**无法**发现你没跑 route——定级发生在改动面确定之前,没有可比对的记录面,
43
+ 详见 [ARCHITECTURE §5](../ARCHITECTURE.md) 与 CHANGELOG 1.7.16 B3 条。
44
+
45
+ 动工前按下表定风险级 L0-L3(就高不就低;判据细则见下节「级别判断」),级别即风险级,决定走哪条泳道——确认放事前,还是审计补事后:
32
46
 
33
47
  | 泳道 | 级别 | 确认与审计口径 |
34
48
  |------|------|---------------|
@@ -41,6 +55,10 @@ next: 按阶段路由
41
55
 
42
56
  ## 3. 路由判断
43
57
 
58
+ <!-- route-kinds: require=plan.md | fix=maintain.md | verify=test.md | review=review.md | deploy=deploy.md -->
59
+ <!-- ↑ 本行是 kind→入口指令的**机器单源**:`flow-kit route` 读它得出「该读哪个 md」,不再在包内自带一份映射。
60
+ 增删 kind 或改入口文件名只改这一行(判据单源 level-criteria.mjs 的纪律同源)。 -->
61
+
44
62
  - **自动化驱动(并列入口,可选)**:一句话全程走 [pipeline-run.md](pipeline-run.md)——状态机驱动+工单协议+原话代录,与下述手动路由二选一,同一任务不混用
45
63
  - **新需求 / 功能**:从 `plan.md` 进,立 **intent**(`workflow/intents/`)
46
64
  - **修复类任务 / 事故**:从 `maintain.md` 进,立 **incident**(`workflow/incidents/`);incident 在 L1+ 即 **intent 等价物**(check-loop 认 incident≡intent),不必另立 intent。先检索同类历史(`node .agents/scripts/kb-search.mjs "<关键词>" --scope workflow --type incidents,plans`),有同类先读其历史三件套;再按级别走:
@@ -53,28 +71,31 @@ next: 按阶段路由
53
71
 
54
72
  ## 4. 级别判断(AGENTS.md 第 3 条)
55
73
 
56
- | 级别 | 改什么 | 流程 |
57
- |------|--------|------|
58
- | L0 | 文档/样式微调(无行为影响) | 直接 commit,豁免 intent |
59
- | L1 | **实现级改动**(未命中 L2/L3) | 快车道:液态草稿(.zcode/drafts) → 实现 → 固化(`solidify-task.mjs`)——用户确认后带 `--delegated "<原话>"` 执行;无确认来源只迁移不落账 |
60
- | L2 | **规则 / 契约**(一处改、多处依赖) | 入口文档(intent / incident) + spec + plan 三件套 |
61
- | L3 | **数据与运行时结构**(schema / 迁移 SQL / DI 链 / 认证与中间件管线) | 同 L2 + spec 新会话独立复核 |
62
-
63
- > 级别判定同上表"改什么"列;混合改动按最高档定级。
64
-
65
- **L2 触达面**(闭集,命中任一即 L2;本体不改但改其输入域 / 调用点校验同样命中):
66
-
67
- 1. **编码权威**:项目内「一处生成、多处消费」的编码 / 命名 / 取号规则(编码模板、序列发生器、命名空间与去重约束——具体清单按项目 AGENTS.md)
68
- 2. **共享契约**:跨模块共享的基类 / DTO 形状、跨模块公共接口签名
69
- 3. **既有接口语义**:既有参数或端点的行为变化(由失效变生效、默认值或钳制口径改变)
70
- 4. **全局横切口径**:错误响应出口、分页与校验口径、聚合投影键
74
+ > **判据单源 = [`.agents/scripts/level-criteria.mjs`](../scripts/level-criteria.mjs)**,本节**不复述判据**。
75
+ > 要看判据全文,或要机器可判的部分(路径下限 / 就高不就低 / 混档取高),直接:
76
+ >
77
+ > ```bash
78
+ > flow-kit route --files <改动文件…> # 定级 + 下一阶段 + 该读哪个 md
79
+ > ```
80
+ >
81
+ > 单源导出:`LEVELS` `LEVEL_MEANING`(档位语义) / `L2_SURFACES`(四类触达面闭集) / `L3_SURFACES`(结构面) /
82
+ > `L1_NEGATIVES`(判低红线) / `SELF_CHECK`(自查句) / `assessLevel` `hintLevelFor` `parseLevelHints` `routeAdvice`。
83
+ >
84
+ > 路径下限清单(装户 owned,默认空):`.agents/level-hints.txt`,每行 `L2 <ERE>` / `L3 <ERE>`,登记「哪些路径一碰就至少是此档」。
71
85
 
72
- > **负例(落 L1)**:纯页面表现 / 文案 / 布局 / 交互实现;纯新增端点或参数且既有行为不变;单模块内部重构且无对外契约变化。
73
- > **自查句**:能否列出 ≥2 个受影响的消费方(模块 / 端点 / 页面)?能 → L2。
74
- > 先例:本仓 `workflow/specs/`、`workflow/intents/` 下同类历史(kb 检索主题词)。
86
+ **本表只承载流程**(「改什么」判据以单源为准,别在本表增删判据):
75
87
 
76
- > **L1 是默认档**:红线全不勾即 L1,无需正列举——判级只回答「是否命中 L2 四类或 L3 结构面」。
77
- > **L3 的「DI 链」按组合根与运行时管线理解**:DI 注册、中间件/认证管线、服务构造器依赖变更(先例:本仓 workflow/ 留痕中无 schema 变更仍定 L3 的同类历史)。
88
+ | 级别 | 单源语义(摘要) | 流程 |
89
+ |------|-----------------|------|
90
+ | L0 | 文档/样式微调(无行为影响) | 直接 commit,豁免 intent |
91
+ | L1 | 实现级改动(未命中 L2/L3) | 快车道:液态草稿(.zcode/drafts) → 实现 → 固化(`solidify-task.mjs`)——用户确认后带 `--delegated "<原话>"` 执行;无确认来源只迁移不落账 |
92
+ | L2 | 规则 / 契约(一处改、多处依赖) | 入口文档(intent / incident) + spec + plan 三件套 |
93
+ | L3 | 数据与运行时结构(结构面闭集见单源 `L3_SURFACES`) | 同 L2 + spec 新会话独立复核 |
94
+
95
+ > 混合改动按最高档定级(就高不就低);**L1 是默认档**——判级只回答「是否命中单源 `L2_SURFACES` 或
96
+ > `L3_SURFACES`」,负例(`L1_NEGATIVES`)命中即不得升档;自查句:`SELF_CHECK`。
97
+ > 机器兜得住的只有「就高不就低」与路径下限;「一处定义、多处消费」是**语义**判定,由你按单源逐条判,
98
+ > 漏判由 lane-surface 触达面门在提交面兜。先例:`workflow/specs/`、`workflow/intents/` 下同类历史(kb 检索主题词)。
78
99
 
79
100
  ## 5. intent 豁免(避免小改动也走完整闭环)
80
101
 
@@ -28,7 +28,7 @@ next: L1 → .agents/commands/build.md (起草 Quick-Plan) ;L2/L3 → .agents/
28
28
  - 红线勾选对照根 `AGENTS.md` 红线/约束相关节(如「项目适配区」「门禁与提交」)+ 改动域目录级 `AGENTS.md`(如有);**没触及就全不勾**,不要硬填
29
29
  3. 写不出可测试判据 = 还没想清楚 → 反问澄清,不要硬填。
30
30
  4. 起草后停下,输出草稿全文给用户过目,一句"可以"即确认。
31
- **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(draft→approved / approved→done;TTY 两形态 / 逐件调用+逐件原话 / 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
31
+ **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(draft→approved / approved→done;TTY 两形态 / 逐件代录(摘要可复用——分辨力由 scope+指纹承担)/ 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
32
32
 
33
33
  ## 2. 技能辅助(可选,宿主级 skills)
34
34
 
@@ -45,7 +45,7 @@ next: .agents/commands/build.md(仅 P0 / P1 未清时;清零后经用户确
45
45
  - **Create/Update 校验同口径**:Create 已有校验 Update 必须同口径;被引用的标识符字段禁改
46
46
  - **查询分页与状态语义**:分页参数范围校验 + 服务层钳制;非法状态与不存在分离(按项目统一错误口径,如 400 / 404)
47
47
  - **spec 承诺的断言落地**:spec §测试列出的用例 / 断言须真落到测试或验证脚本;「写进 spec」不等于「跑得起来」,且常驻断言禁写成随时间增长的行数常量
48
- - **跨宿主薄适配正文漂移**:改 `templates/_agents/{commands,roles}/*.md` 后必须跑 `flow-kit sync-hosts --apply` 单向同步注册表内全部宿主薄适配(`modules/hosts/<h>/{agents,commands}/*.md`);装户视角由 `flow-kit doctor` §6.7 检查(包源环境 §6.7 skipped)
48
+ - **跨宿主薄适配正文漂移**:包源仓改 `templates/_agents/{commands,roles}/*.md` 后跑 `flow-kit sync-hosts --apply`,单向同步 `modules/hosts/<h>/{agents,commands}/*.md`。装户由 `flow-kit doctor` §6.7 检查(包源环境跳过);装户刷新宿主文件用 `flow-kit add-host <宿主> --force`(`sync` 不更新宿主适配,`sync-hosts` 不在装户根运行)
49
49
 
50
50
  ## 3. P2 建议(提醒,不拦合入)
51
51
 
@@ -19,27 +19,22 @@ next: .agents/commands/build.md(漂移属 build 改权威源未同步导致的
19
19
 
20
20
  # Sync-Hosts · 跨宿主适配层正文段同步
21
21
 
22
- > 改权威源(`templates/_agents/{commands,roles}/*.md`)后薄适配(`modules/hosts/<h>/{agents,commands}/*.md`)要同步——薄适配正文 = 权威源正文,frontmatter 各自保留宿主特化(commands 层文件名 = 宿主命令名,opencode / trae 同用 `wf-` 前缀,单源见 `src/profiles.mjs#HOSTS.commandPrefix`;trae 另有 `name: wf-X`,zcode/omp 各自原描述)。
23
- > 装户视角:`flow-kit doctor` §7.x 跑同名检查(仅装户,包源环境跳过——包源下永远是 drift);**修漂移用同一条命令**
24
- > `flow-kit sync-hosts --apply`——2026-10-07 起按**目标根**自动判布局(含 `templates/_agents` + `modules/hosts` → 包源:
25
- > 比 `templates/_agents` ↔ `modules/hosts/<宿主键>/`;含 `.agents` → 装户:比 `.agents` ↔ 项目根下 `<宿主点目录>/`),
26
- > 目标根取 `--dir <目录>` > 当前目录。
22
+ > 本命令只在包源仓运行(需要 `templates/_agents` 与 `modules/hosts`)。改权威源(`templates/_agents/{commands,roles}/*.md`)后薄适配(`modules/hosts/<h>/{agents,commands}/*.md`)要同步——薄适配正文 = 权威源正文,frontmatter 各自保留宿主特化(commands 层文件名 = 宿主命令名,opencode / trae 同用 `wf-` 前缀,单源见 `src/profiles.mjs#HOSTS.commandPrefix`;trae 另有 `name: wf-X`,zcode/omp 各自原描述)。
23
+ > 装户的宿主文件由 `init` / `add-host` 写入。装户漂移由 `flow-kit doctor` §6.7 报告(包源环境跳过);刷新用 `flow-kit add-host <宿主> --force`。`flow-kit sync` 不更新宿主适配。
27
24
 
28
25
  ## 1. 何时跑
29
26
 
30
27
  - 改 `templates/_agents/commands/*.md` 正文后(11 个 commands 文件)
31
28
  - 改 `templates/_agents/roles/*.md` 正文后(3 个 roles 文件)
32
- - 装户跑 `flow-kit doctor` 报"跨宿主薄适配正文漂移 N 对" WARN 时
33
- - 不跑:仅改 frontmatter;改 trae 钩子/规则;改包源其他文件
29
+ - 不跑:装户仓(本命令会拒绝);仅改 frontmatter;改 trae 钩子/规则;改包源其他文件
34
30
 
35
31
  ## 2. 怎么跑
36
32
 
37
33
  ### 2.1 默认 `--diff`(仅报告)
38
34
 
39
35
  ```
40
- node bin/flow-kit.mjs sync-hosts --diff # 包源仓(在包源根跑)
36
+ node bin/flow-kit.mjs sync-hosts --diff # 包源仓(在包源根跑,或 --dir <包源根>)
41
37
  node bin/flow-kit.mjs sync-hosts --json # 机器可读
42
- flow-kit sync-hosts --diff # 装户仓(在装户根跑;或用 --dir <项目根> 指定)
43
38
  ```
44
39
 
45
40
  输出三类:
@@ -59,9 +54,8 @@ node bin/flow-kit.mjs sync-hosts --apply
59
54
  ### 2.3 自验
60
55
 
61
56
  ```
62
- npm test # 含 sync-hosts.test.mjs 8 场景
63
- node bin/flow-kit.mjs doctor # 装户跑 §7.x PASS;包源跑 §7.x skipped
64
- sh .agents/scripts/check-loop.sh # Windows 无 sh 时 doctor 已探测分流
57
+ npm test # 含 sync-hosts.test.mjs
58
+ node bin/flow-kit.mjs doctor # 包源环境 §6.7 skipped
65
59
  ```
66
60
 
67
61
  ## 3. 边界(不要做)
@@ -76,10 +70,8 @@ sh .agents/scripts/check-loop.sh # Windows 无 sh 时 doctor 已
76
70
 
77
71
  - trae 钩子(`modules/hosts/trae/hooks/*.cjs`)— 独立演进的工程件
78
72
  - trae 规则(`modules/hosts/trae/rules/*.md`)— 同上
79
- - 包源 .agents/scripts/*.cjs(pre-commit 等钩子)— 同步由 `flow-kit sync` 走 managed 台账负责
73
+ - 门禁脚本与钩子(`templates/_agents/scripts`、`templates/_githooks`)— 由 `flow-kit sync` 按 managed 台账下发,不走 sync-hosts
80
74
 
81
75
  ## 5. 相关留痕
82
76
 
83
- - intent:`workflow/intents/2026-09-25-cross-host-sync.md`
84
- - plan:`workflow/plans/2026-09-25-cross-host-sync.md`(含 B-b 方案拍板)
85
- - incident:`workflow/incidents/2026-09-25-wf-runtime.md`(双源纪律教训,规范 §7.x 包源环境跳过)
77
+ - 立法出处:2026-09-25 cross-host-sync(intent/plan,含 B-b 方案拍板;父事件 = wf-runtime 双源纪律教训,规范 §7.x 包源环境跳过)——留痕在包源仓 git 历史与 CHANGELOG,装户径不引实例路径
@@ -35,7 +35,7 @@ next: L1 关单结束 ;L2/L3 上 prod 时 → .agents/commands/deploy.md
35
35
  项目测试命令 # 自动化测试
36
36
  项目类型检查命令 # 前端类型检查/构建(涉及前端时跑)
37
37
  node .agents/scripts/verify-wiki-consistency.mjs # 触及 wiki/ 时跑(exit 1 即先修台账再继续:跑 gen-wiki-board.mjs 补索引/看板;pre-commit 已按增量自动拦,此行用于改完即验)
38
- node bin/flow-kit.mjs doctor # §6.5 delegations + §6.6 owned 漂移 + §6.7 跨宿主薄适配正文漂移(装户环境;包源环境 §6.7 skipped)
38
+ npx agentic-flow-kit doctor # §6.5 delegations + §6.6 owned 漂移 + §6.7 跨宿主薄适配正文漂移(装户环境;漂移用 add-host <宿主> --force 刷新。包源环境 §6.7 skipped)
39
39
  ```
40
40
 
41
41
  > **环境注记**:本地服务占用构建产物导致编译失败、多会话并行时「谁跑静态门 / 提交谁先停服务」等约定——如有,见项目注记 `.agents/notes/runtime-env.md` §2,跑静态门前先过一眼。
@@ -74,11 +74,12 @@ node bin/flow-kit.mjs doctor # §6.5 delegations + §6.6 o
74
74
 
75
75
  - 输出测试报告(通过项 / 失败项);失败项已修复并复测通过。
76
76
  - **关单**(日常闭环点,不依赖是否上 prod):
77
- - 关单前一键过门:`node .agents/scripts/verify.mjs --doc workflow/intents/<本单>.md`(npm test + check-loop 固定编排,任一失败非零退出,非绿不关单);**`--doc` 把测试绿凭证绑到本单**——不带它落下的绿行不给任何单背书,confirm-doc 前置与检查 8 对账只认带本单 `--doc` 的绿行(仅 v6+ 生效);**装户仓**(根目录无 `package.json`,工程在子目录)默认 `npm test` 不可跑 → 脚本**显式跳过步骤 1 且不落测试绿凭证**(防假绿)并提示;此时按项目口径手工跑测试,或带 `--test-cmd "<项目测试命令>"` 指定(2026-10-07 papercut)
77
+ - 关单前一键过门:`node .agents/scripts/verify.mjs --doc workflow/intents/<本单>.md`(npm test + check-loop 固定编排,任一失败非零退出,非绿不关单);**`--doc` 把测试绿凭证绑到本单**——不带它落下的绿行不给任何单背书,confirm-doc 前置与检查 8 对账只认带本单 `--doc` 的绿行(仅 v6+ 生效);**装户仓**(根目录无 `package.json`,工程在子目录)默认 `npm test` 不可跑 → 脚本**显式跳过步骤 1 且不落测试绿凭证**(防假绿)并提示;此时按项目口径手工跑测试,或带 `--test-cmd "<项目测试命令>"` 指定
78
78
  - 新需求:逐条勾验入口 intent「验收标准」,每条补「证据:」(例如:粘贴 CI 运行结果、UI 截图路径、或具体的 commit SHA),intent → done;同名 spec/Quick-Plan(若有)仍 approved → done。**注意:勾选但缺证据会被 check-loop 拦截(hard-block)**
79
- - **approved 留痕提交**(2026-09-30 起):done 确认前确认**本次关单文档**的 approved 态已进 git 历史(越早越好——approved 后即应提交;若尚未,先补提交再 done;门为逐份校验,三件套均关单时逐份各自满足)——confirm-doc 的 done 前置门硬校验(历史未出现「状态: approved」→ 拒绝落账);done 后再提交 done 态与其余改动
80
- - **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(两形态 / 逐件+逐件原话 / done 内容绑定(关单编辑先于 done 确认、confirm-doc 是最后一次写入)/ 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
79
+ - **approved 留痕提交**:done 确认前确认**本次关单文档**的 approved 态已进 git 历史(越早越好——approved 后即应提交;若尚未,先补提交再 done;门为逐份校验,三件套均关单时逐份各自满足)——confirm-doc 的 done 前置门硬校验(历史未出现「状态: approved」→ 拒绝落账);done 后再提交 done 态与其余改动
80
+ - **确认落态**:唯一入口 `node .agents/scripts/confirm-doc.mjs <path>`(两形态 / 逐件代录(摘要可复用——分辨力由 scope+指纹承担)/ done 内容绑定(关单编辑先于 done 确认、confirm-doc 是最后一次写入)/ 台账对质全口径见根 `AGENTS.md` §1.3 确认门)。
81
81
  - 修复:防复发验证已落地,incident → closed(经确认门 confirm-doc:open→fixed / fixed→closed 两跳、无单跳;2026-09-28 起 check-loop 15 对账——关单编辑先于 closed 确认,口径同 done 内容绑定)
82
+ - **沉淀草稿**:intent done / incident closed 后跑 `node .agents/scripts/draft-sediment.mjs workflow/<intents|incidents>/<本单>.md`——自动抽高价值节(intent:影响面/触达红线;incident:影响面/根因/为什么之前没拦住/复盘三件套)落 `wiki/drafts-archive/<日期-主题>/` 草稿、回写源文件 `沉淀` 字段、重跑 gen-wiki-board(归档计数随动,否则 verify-wiki-consistency 拦提交)。全占位单拒抽(正常,无沉淀价值)。`--dry-run` 先预览。草稿是**中间态**:人工读一遍归类到 `wiki/<主题>/`(补主题与用途、保留 `来源` 字段)后跑 gen-wiki-board + verify-wiki-consistency。沉淀是人工判断——机器只代抽与登记,值不值得入库由人定;不沉淀写 `沉淀: 无` 显式豁免(check-loop 的 `[WARN 未沉淀]` 随之消除)
82
83
  - **同族收尾**:入口置终态时,同名 plan 一并置 `done`(spec 见上条),不留 `approved` 孤儿(口径同看板「入口已 done,本 plan 未终态」告警)
83
84
  - 主智能体自做的 L1+ 新需求在 `workflow/delegations.md`「自做任务结果表」记一行(修复类不重复记)
84
85
  - **委派快照回写**:关单后若 `workflow/delegations.md` §月度聚合快照缺当月行或 doctor §6.5 报陈旧 → 跑 `node .agents/scripts/agg-delegations.cjs` 并回贴当月快照行
@@ -0,0 +1,53 @@
1
+ # 控制面清单(单源:本文件——check-lane-surface.mjs 检查 C 共读,pre-commit「泳道完整性」门禁)
2
+ # 格式:每行一条 ERE(grep -E 兼容),匹配暂存文件的仓库相对路径(/ 分隔)。
3
+ # # 注释与空行忽略;本文件缺失或清单为空 = 检查 C 跳过(装户无感升级,同 lane-surfaces.txt 口径)。
4
+ # 正则语法错误行 → 门禁 fail-closed 阻断(防静默空洞)。
5
+ #
6
+ # 语义(与 lane-surfaces.txt 的「触达面」不同一档):命中本清单 = **改动门禁/授权/权限系统本身**。
7
+ # 此时必须有活跃(draft/approved / open/fixed)L2/L3 入口罩着,**否则 hard 拦**——
8
+ # 与检查 A 的唯一区别是「无任何活跃入口」这一档:检查 A 出 advisory(docs/bootstrap 豁免的合法形态),
9
+ # 检查 C 出 BLOCK。理由(2026-10-09 P0-A):此前 `.agents/` 脚本与 commands 属 new-task.md §5
10
+ # 「docs 级豁免 → 直接 commit」,而检查 A 在无活跃入口时只 advisory,两条各自合理的规则**组合起来**
11
+ # 等于「改 check-loop.mjs 削弱某条检查 → 不需要入口文档 → 不触发同步确认门 → 提交通过」;
12
+ # CI 侧又跑被测分支自己的 check-loop(自指裁判)。本清单把这条通路从「advisory」抬到「必过同步确认门」。
13
+ # 边界(诚实声明):仍是本地信任边界内的**归因**机制——整文件删清单即可摘掉本门(该文件本身在清单内,
14
+ # 删它同样要过门,但门是可以被 `--no-verify` / 不挂 hooksPath 绕过的);堵的是「顺手改弱」,
15
+ # 不宣称关闭「刻意绕过」。事后对质面 = 台账 + git 历史 + check-engine-integrity 的基线比对。
16
+ #
17
+ # 覆盖哪些面(为什么各条目都在控制面上):
18
+ # 引擎判据本体(同一份清单随模板下发:包源仓命中 templates/ 前缀,装户仓命中 .agents/ 前缀)
19
+ ^templates/_agents/scripts/
20
+ ^\.agents/scripts/
21
+ # git 钩子面(本地唯一机器门的编排)与钩子内的门禁实现件
22
+ ^templates/_githooks/
23
+ ^\.githooks/
24
+ ^templates/_agents/hooks/
25
+ ^\.agents/hooks/
26
+ # CI 远端门定义(GitHub 面;owned 件,删一行等于摘一道门)
27
+ ^templates/_github/
28
+ ^\.github/
29
+ # 权限与门禁配置本体(deny 表 / 自治信任 / 触达面与豁免清单 / 引擎基线 / 检查豁免登记)
30
+ # .json 件为装户安装时生成、无包源双生子;.txt 单源件包源与装副本两面都列
31
+ ^\.agents/settings\.json$
32
+ ^\.agents/trust-mode\.json$
33
+ ^\.agents/kit\.json$
34
+ ^\.agents/lane-surfaces\.txt$
35
+ ^templates/_agents/lane-surfaces\.txt$
36
+ ^\.agents/control-surfaces\.txt$
37
+ ^templates/_agents/control-surfaces\.txt$
38
+ ^\.agents/engine-lock\.json$
39
+ ^templates/_agents/engine-lock\.json$
40
+ ^\.agents/scripts-test-exempt\.txt$
41
+ ^templates/_agents/scripts-test-exempt\.txt$
42
+ ^\.agents/workflow-enums\.txt$
43
+ ^templates/_agents/workflow-enums\.txt$
44
+ ^\.agents/ledger-line-exempt\.json$
45
+ ^\.agents/rule-budgets\.txt$
46
+ ^templates/_agents/rule-budgets\.txt$
47
+ ^\.agents/metric-claims\.txt$
48
+ ^templates/_agents/metric-claims\.txt$
49
+ # 常驻规则面(AI 行为契约本体——改 prompt 面与改判据面同档;体积预算只约束「多大」不约束「改了什么」)
50
+ ^AGENTS\.md$
51
+ ^templates/AGENTS\.md$
52
+ # 可装门禁模块(红线守卫的判据)
53
+ ^modules/gates/