agentic-flow-kit 1.8.7 → 2.1.0

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 (984) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +172 -138
  3. package/bin/flow-kit.mjs +7 -2
  4. package/locales/en/installer.json +110 -0
  5. package/locales/en/overrides/.agents/commands/deploy.md +52 -0
  6. package/locales/en/overrides/.agents/commands/maintain.md +76 -0
  7. package/locales/en/overrides/.agents/commands/new-task.md +89 -0
  8. package/locales/en/overrides/.agents/commands/pipeline-run.md +56 -0
  9. package/locales/en/overrides/.agents/commands/pr-review.md +30 -0
  10. package/locales/en/overrides/.agents/commands/review.md +93 -0
  11. package/locales/en/overrides/.agents/commands/stages.md +256 -0
  12. package/locales/en/overrides/.agents/notes/pr-review-cost-discipline.md +48 -0
  13. package/locales/en/overrides/.agents/notes/process-order-rule.md +21 -0
  14. package/locales/en/overrides/.agents/notes/runtime-env.local.example.md +21 -0
  15. package/locales/en/overrides/.agents/pipelines/_TEMPLATE.md +75 -0
  16. package/locales/en/overrides/.agents/pipelines/pipeline-closing.md +28 -0
  17. package/locales/en/overrides/.agents/roles/implementer.md +28 -0
  18. package/locales/en/overrides/.agents/roles/independent-reviewer.md +39 -0
  19. package/locales/en/overrides/.agents/roles/pr-adjudicator.md +27 -0
  20. package/locales/en/overrides/.agents/roles/pr-finder.md +51 -0
  21. package/locales/en/overrides/.agents/roles/pr-verifier.md +44 -0
  22. package/locales/en/overrides/.agents/roles/ui-verifier.md +22 -0
  23. package/locales/en/overrides/.agents/roles/wiki-compiler.md +47 -0
  24. package/locales/en/overrides/.agents/skills/arena/SKILL.md +50 -0
  25. package/locales/en/overrides/.agents/skills/autonomous-run/SKILL.md +45 -0
  26. package/locales/en/overrides/.agents/skills/blast-radius/SKILL.md +53 -0
  27. package/locales/en/overrides/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
  28. package/locales/en/overrides/.agents/skills/dev-tour/SKILL.md +98 -0
  29. package/locales/en/overrides/.agents/skills/dream/SKILL.md +63 -0
  30. package/locales/en/overrides/.agents/skills/eval/SKILL.md +42 -0
  31. package/locales/en/overrides/.agents/skills/interrogate/SKILL.md +49 -0
  32. package/locales/en/overrides/.agents/skills/number-vetting/SKILL.md +35 -0
  33. package/locales/en/overrides/.agents/skills/page-refactor/SKILL.md +192 -0
  34. package/locales/en/overrides/.agents/skills/papercut-fix/SKILL.md +92 -0
  35. package/locales/en/overrides/.agents/skills/pause-safely/SKILL.md +31 -0
  36. package/locales/en/overrides/.agents/skills/perf/SKILL.md +42 -0
  37. package/locales/en/overrides/.agents/skills/review-method/SKILL.md +92 -0
  38. package/locales/en/overrides/.agents/skills/session-resume/SKILL.md +69 -0
  39. package/locales/en/overrides/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
  40. package/locales/en/overrides/.agents/skills/show-me-your-work/SKILL.md +57 -0
  41. package/locales/en/overrides/.agents/skills/tfs-pr/SKILL.md +95 -0
  42. package/locales/en/overrides/.agents/skills/verify-ui/SKILL.md +116 -0
  43. package/locales/en/overrides/.agents/skills/visual-parity/SKILL.md +35 -0
  44. package/locales/en/overrides/.agents/skills/why/SKILL.md +56 -0
  45. package/locales/en/overrides/.agents/skills/wiki/SKILL.md +53 -0
  46. package/locales/en/overrides/.claude/agents/implementer.md +9 -0
  47. package/locales/en/overrides/.claude/agents/independent-reviewer.md +10 -0
  48. package/locales/en/overrides/.claude/agents/pr-adjudicator.md +10 -0
  49. package/locales/en/overrides/.claude/agents/pr-finder.md +10 -0
  50. package/locales/en/overrides/.claude/agents/pr-verifier.md +10 -0
  51. package/locales/en/overrides/.claude/agents/ui-verifier.md +10 -0
  52. package/locales/en/overrides/.claude/agents/wiki-compiler.md +10 -0
  53. package/locales/en/overrides/.claude/commands/wf-deploy.md +8 -0
  54. package/locales/en/overrides/.claude/commands/wf-maintain.md +8 -0
  55. package/locales/en/overrides/.claude/commands/wf-new-task.md +8 -0
  56. package/locales/en/overrides/.claude/commands/wf-pipeline-run.md +8 -0
  57. package/locales/en/overrides/.claude/commands/wf-pr-review.md +8 -0
  58. package/locales/en/overrides/.claude/commands/wf-review.md +8 -0
  59. package/locales/en/overrides/.claude/commands/wf-stages.md +8 -0
  60. package/locales/en/overrides/.cline/agents/implementer.yml +13 -0
  61. package/locales/en/overrides/.cline/agents/independent-reviewer.yml +11 -0
  62. package/locales/en/overrides/.cline/agents/pr-adjudicator.yml +11 -0
  63. package/locales/en/overrides/.cline/agents/pr-finder.yml +11 -0
  64. package/locales/en/overrides/.cline/agents/pr-verifier.yml +11 -0
  65. package/locales/en/overrides/.cline/agents/ui-verifier.yml +8 -0
  66. package/locales/en/overrides/.cline/agents/wiki-compiler.yml +14 -0
  67. package/locales/en/overrides/.cline/workflows/wf-deploy.md +8 -0
  68. package/locales/en/overrides/.cline/workflows/wf-maintain.md +8 -0
  69. package/locales/en/overrides/.cline/workflows/wf-new-task.md +8 -0
  70. package/locales/en/overrides/.cline/workflows/wf-pipeline-run.md +8 -0
  71. package/locales/en/overrides/.cline/workflows/wf-pr-review.md +8 -0
  72. package/locales/en/overrides/.cline/workflows/wf-review.md +8 -0
  73. package/locales/en/overrides/.cline/workflows/wf-stages.md +8 -0
  74. package/locales/en/overrides/.codebuddy/CODEBUDDY.md +7 -0
  75. package/locales/en/overrides/.codebuddy/agents/implementer.md +9 -0
  76. package/locales/en/overrides/.codebuddy/agents/independent-reviewer.md +10 -0
  77. package/locales/en/overrides/.codebuddy/agents/pr-adjudicator.md +10 -0
  78. package/locales/en/overrides/.codebuddy/agents/pr-finder.md +10 -0
  79. package/locales/en/overrides/.codebuddy/agents/pr-verifier.md +10 -0
  80. package/locales/en/overrides/.codebuddy/agents/ui-verifier.md +11 -0
  81. package/locales/en/overrides/.codebuddy/agents/wiki-compiler.md +10 -0
  82. package/locales/en/overrides/.codebuddy/commands/wf-deploy.md +8 -0
  83. package/locales/en/overrides/.codebuddy/commands/wf-maintain.md +8 -0
  84. package/locales/en/overrides/.codebuddy/commands/wf-new-task.md +8 -0
  85. package/locales/en/overrides/.codebuddy/commands/wf-pipeline-run.md +8 -0
  86. package/locales/en/overrides/.codebuddy/commands/wf-pr-review.md +8 -0
  87. package/locales/en/overrides/.codebuddy/commands/wf-review.md +8 -0
  88. package/locales/en/overrides/.codebuddy/commands/wf-stages.md +8 -0
  89. package/locales/en/overrides/.codebuddy/rules/backend-scope.md +5 -0
  90. package/locales/en/overrides/.codebuddy/rules/frontend-scope.md +5 -0
  91. package/locales/en/overrides/.codebuddy/skills/tfs-pr/SKILL.md +6 -0
  92. package/locales/en/overrides/.commandcode/agents/implementer.md +10 -0
  93. package/locales/en/overrides/.commandcode/agents/independent-reviewer.md +9 -0
  94. package/locales/en/overrides/.commandcode/agents/pr-adjudicator.md +9 -0
  95. package/locales/en/overrides/.commandcode/agents/pr-finder.md +9 -0
  96. package/locales/en/overrides/.commandcode/agents/pr-verifier.md +9 -0
  97. package/locales/en/overrides/.commandcode/agents/ui-verifier.md +10 -0
  98. package/locales/en/overrides/.commandcode/agents/wiki-compiler.md +10 -0
  99. package/locales/en/overrides/.commandcode/commands/wf-deploy.md +7 -0
  100. package/locales/en/overrides/.commandcode/commands/wf-maintain.md +7 -0
  101. package/locales/en/overrides/.commandcode/commands/wf-new-task.md +7 -0
  102. package/locales/en/overrides/.commandcode/commands/wf-pipeline-run.md +7 -0
  103. package/locales/en/overrides/.commandcode/commands/wf-pr-review.md +7 -0
  104. package/locales/en/overrides/.commandcode/commands/wf-review.md +7 -0
  105. package/locales/en/overrides/.commandcode/commands/wf-stages.md +7 -0
  106. package/locales/en/overrides/.opencode/agents/implementer.md +51 -0
  107. package/locales/en/overrides/.opencode/agents/independent-reviewer.md +18 -0
  108. package/locales/en/overrides/.opencode/agents/pr-adjudicator.md +18 -0
  109. package/locales/en/overrides/.opencode/agents/pr-finder.md +18 -0
  110. package/locales/en/overrides/.opencode/agents/pr-verifier.md +18 -0
  111. package/locales/en/overrides/.opencode/agents/ui-verifier.md +45 -0
  112. package/locales/en/overrides/.opencode/agents/wiki-compiler.md +51 -0
  113. package/locales/en/overrides/.opencode/commands/wf-deploy.md +7 -0
  114. package/locales/en/overrides/.opencode/commands/wf-maintain.md +7 -0
  115. package/locales/en/overrides/.opencode/commands/wf-new-task.md +7 -0
  116. package/locales/en/overrides/.opencode/commands/wf-pipeline-run.md +7 -0
  117. package/locales/en/overrides/.opencode/commands/wf-pr-review.md +7 -0
  118. package/locales/en/overrides/.opencode/commands/wf-review.md +7 -0
  119. package/locales/en/overrides/.opencode/commands/wf-stages.md +7 -0
  120. package/locales/en/overrides/.pi/agents/implementer.md +11 -0
  121. package/locales/en/overrides/.pi/agents/independent-reviewer.md +12 -0
  122. package/locales/en/overrides/.pi/agents/pr-adjudicator.md +12 -0
  123. package/locales/en/overrides/.pi/agents/pr-finder.md +11 -0
  124. package/locales/en/overrides/.pi/agents/pr-verifier.md +11 -0
  125. package/locales/en/overrides/.pi/agents/ui-verifier.md +11 -0
  126. package/locales/en/overrides/.pi/agents/wiki-compiler.md +11 -0
  127. package/locales/en/overrides/.qoder/agents/implementer.md +9 -0
  128. package/locales/en/overrides/.qoder/agents/independent-reviewer.md +10 -0
  129. package/locales/en/overrides/.qoder/agents/pr-adjudicator.md +10 -0
  130. package/locales/en/overrides/.qoder/agents/pr-finder.md +10 -0
  131. package/locales/en/overrides/.qoder/agents/pr-verifier.md +10 -0
  132. package/locales/en/overrides/.qoder/agents/ui-verifier.md +10 -0
  133. package/locales/en/overrides/.qoder/agents/wiki-compiler.md +10 -0
  134. package/locales/en/overrides/.qoder/commands/wf-deploy.md +8 -0
  135. package/locales/en/overrides/.qoder/commands/wf-maintain.md +8 -0
  136. package/locales/en/overrides/.qoder/commands/wf-new-task.md +8 -0
  137. package/locales/en/overrides/.qoder/commands/wf-pipeline-run.md +8 -0
  138. package/locales/en/overrides/.qoder/commands/wf-pr-review.md +8 -0
  139. package/locales/en/overrides/.qoder/commands/wf-review.md +8 -0
  140. package/locales/en/overrides/.qoder/commands/wf-stages.md +8 -0
  141. package/locales/en/overrides/.qwen/agents/implementer.md +10 -0
  142. package/locales/en/overrides/.qwen/agents/independent-reviewer.md +10 -0
  143. package/locales/en/overrides/.qwen/agents/pr-adjudicator.md +10 -0
  144. package/locales/en/overrides/.qwen/agents/pr-finder.md +10 -0
  145. package/locales/en/overrides/.qwen/agents/pr-verifier.md +10 -0
  146. package/locales/en/overrides/.qwen/agents/ui-verifier.md +10 -0
  147. package/locales/en/overrides/.qwen/agents/wiki-compiler.md +13 -0
  148. package/locales/en/overrides/.qwen/commands/wf-deploy.md +7 -0
  149. package/locales/en/overrides/.qwen/commands/wf-maintain.md +7 -0
  150. package/locales/en/overrides/.qwen/commands/wf-new-task.md +7 -0
  151. package/locales/en/overrides/.qwen/commands/wf-pipeline-run.md +7 -0
  152. package/locales/en/overrides/.qwen/commands/wf-pr-review.md +7 -0
  153. package/locales/en/overrides/.qwen/commands/wf-review.md +7 -0
  154. package/locales/en/overrides/.qwen/commands/wf-stages.md +7 -0
  155. package/locales/en/overrides/.trae/agents/implementer.md +9 -0
  156. package/locales/en/overrides/.trae/agents/independent-reviewer.md +10 -0
  157. package/locales/en/overrides/.trae/agents/pr-adjudicator.md +10 -0
  158. package/locales/en/overrides/.trae/agents/pr-finder.md +10 -0
  159. package/locales/en/overrides/.trae/agents/pr-verifier.md +10 -0
  160. package/locales/en/overrides/.trae/agents/ui-verifier.md +10 -0
  161. package/locales/en/overrides/.trae/agents/wiki-compiler.md +10 -0
  162. package/locales/en/overrides/.trae/commands/wf-deploy.md +8 -0
  163. package/locales/en/overrides/.trae/commands/wf-maintain.md +8 -0
  164. package/locales/en/overrides/.trae/commands/wf-new-task.md +8 -0
  165. package/locales/en/overrides/.trae/commands/wf-pipeline-run.md +8 -0
  166. package/locales/en/overrides/.trae/commands/wf-pr-review.md +8 -0
  167. package/locales/en/overrides/.trae/commands/wf-review.md +8 -0
  168. package/locales/en/overrides/.trae/commands/wf-stages.md +8 -0
  169. package/locales/en/overrides/.trae/rules/backend-scope.md +5 -0
  170. package/locales/en/overrides/.trae/rules/frontend-scope.md +5 -0
  171. package/locales/en/overrides/.zcode/agents/implementer.md +8 -0
  172. package/locales/en/overrides/.zcode/agents/independent-reviewer.md +8 -0
  173. package/locales/en/overrides/.zcode/agents/ui-verifier.md +8 -0
  174. package/locales/en/overrides/.zcode/agents/wiki-compiler.md +8 -0
  175. package/locales/en/overrides/AGENTS.md +52 -0
  176. package/locales/en/overrides/CLAUDE.md +20 -0
  177. package/locales/en/overrides/wiki/INDEX.md +33 -0
  178. package/locales/en/overrides/wiki/drafts-archive/README.md +6 -0
  179. package/locales/en/overrides/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
  180. package/locales/en/overrides/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
  181. package/locales/en/overrides/workflow/INDEX.md +13 -0
  182. package/locales/en/overrides/workflow/README.md +69 -0
  183. package/locales/en/overrides/workflow/archive/README.md +3 -0
  184. package/locales/en/overrides/workflow/delegations.md +4 -0
  185. package/locales/en/overrides/workflow/effective-policy.md +4 -0
  186. package/locales/en/overrides/workflow/gate-cost.md +4 -0
  187. package/locales/en/overrides/workflow/incidents/_TEMPLATE.md +49 -0
  188. package/locales/en/overrides/workflow/intents/_TEMPLATE.md +43 -0
  189. package/locales/en/overrides/workflow/metrics.md +4 -0
  190. package/locales/en/overrides/workflow/papercuts.md +3 -0
  191. package/locales/en/overrides/workflow/plans/_TEMPLATE.md +47 -0
  192. package/locales/en/overrides/workflow/regression-checklist.md +3 -0
  193. package/locales/en/overrides/workflow/specs/_TEMPLATE.md +86 -0
  194. package/locales/en/overrides/workflow/verify-evidence.md +4 -0
  195. package/locales/zh-CN/installer.json +110 -0
  196. package/package.json +23 -36
  197. package/schemas/install-manifest.schema.json +26 -0
  198. package/schemas/project-profile.schema.json +28 -0
  199. package/src/cli/args.mjs +43 -0
  200. package/src/cli/main.mjs +79 -0
  201. package/src/commands/add-host.mjs +29 -0
  202. package/src/commands/doctor.mjs +126 -0
  203. package/src/commands/install.mjs +296 -0
  204. package/src/commands/upgrade.mjs +30 -0
  205. package/src/git/config.mjs +61 -0
  206. package/src/hosts/registry.mjs +170 -0
  207. package/src/i18n.mjs +35 -0
  208. package/src/install/apply.mjs +138 -0
  209. package/src/install/frontmatter.mjs +84 -0
  210. package/src/install/manifest.mjs +40 -0
  211. package/src/install/plan.mjs +241 -0
  212. package/src/models/known.mjs +13 -0
  213. package/src/models/probe.mjs +163 -0
  214. package/src/models/resolve.mjs +312 -0
  215. package/src/render/tokens.mjs +105 -0
  216. package/src/tui/ansi.mjs +55 -0
  217. package/src/tui/flows.mjs +306 -0
  218. package/src/tui/prompts.mjs +139 -0
  219. package/src/tui/screen.mjs +217 -0
  220. package/src/tui/widgets.mjs +111 -0
  221. package/src/tui/wizard.mjs +68 -0
  222. package/templates/engine/.agents/board/dev-tour.html +1940 -0
  223. package/templates/engine/.agents/board/index.html +835 -0
  224. package/templates/engine/.agents/commands/deploy.md +52 -0
  225. package/templates/engine/.agents/commands/maintain.md +76 -0
  226. package/templates/engine/.agents/commands/new-task.md +89 -0
  227. package/templates/engine/.agents/commands/pipeline-run.md +60 -0
  228. package/templates/engine/.agents/commands/pr-review.md +30 -0
  229. package/templates/engine/.agents/commands/review.md +93 -0
  230. package/templates/engine/.agents/commands/stages.md +257 -0
  231. package/templates/engine/.agents/config/agent-eval.json +17 -0
  232. package/templates/engine/.agents/config/commit-msg-rules.json +7 -0
  233. package/templates/engine/.agents/config/engine.json +11 -0
  234. package/templates/engine/.agents/config/gate-budgets.json +5 -0
  235. package/templates/engine/.agents/config/mechanism-registry.md +63 -0
  236. package/templates/engine/.agents/config/memory-tiers.json +13 -0
  237. package/templates/engine/.agents/config/model-roles.json +26 -0
  238. package/templates/engine/.agents/config/model-roles.local.example.json +7 -0
  239. package/templates/engine/.agents/config/pipeline.json +36 -0
  240. package/templates/engine/.agents/config/pr-review.json +67 -0
  241. package/templates/engine/.agents/config/principles.md +32 -0
  242. package/templates/engine/.agents/config/steering.json +28 -0
  243. package/templates/engine/.agents/config/workflow-enums.txt +25 -0
  244. package/templates/engine/.agents/evals/README.md +49 -0
  245. package/templates/engine/.agents/evals/tasks.tsv +6 -0
  246. package/templates/engine/.agents/hooks/check-architecture.mjs +168 -0
  247. package/templates/engine/.agents/hooks/check-audit-fields.mjs +56 -0
  248. package/templates/engine/.agents/hooks/check-commit-plan-ref.mjs +84 -0
  249. package/templates/engine/.agents/hooks/check-confirm-order.mjs +281 -0
  250. package/templates/engine/.agents/hooks/check-delete-guard.mjs +63 -0
  251. package/templates/engine/.agents/hooks/check-notify-guard.mjs +55 -0
  252. package/templates/engine/.agents/hooks/commit-check.cjs +208 -0
  253. package/templates/engine/.agents/hooks/gates.json +33 -0
  254. package/templates/engine/.agents/hooks/local-pre-commit.mjs +27 -0
  255. package/templates/engine/.agents/hooks/pre-shell-check.cjs +361 -0
  256. package/templates/engine/.agents/hooks/pre-write-check.cjs +247 -0
  257. package/templates/engine/.agents/notes/gate-diet.md +75 -0
  258. package/templates/engine/.agents/notes/injected-memory.md +14 -0
  259. package/templates/engine/.agents/notes/pr-review-cost-discipline.md +48 -0
  260. package/templates/engine/.agents/notes/process-order-rule.md +21 -0
  261. package/templates/engine/.agents/notes/runtime-env.local.example.md +21 -0
  262. package/templates/engine/.agents/notes/steering-tiers.md +28 -0
  263. package/templates/engine/.agents/pipelines/_TEMPLATE.md +75 -0
  264. package/templates/engine/.agents/pipelines/pipeline-closing.md +28 -0
  265. package/templates/engine/.agents/pipelines//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +16 -0
  266. package/templates/engine/.agents/roles/implementer.md +28 -0
  267. package/templates/engine/.agents/roles/independent-reviewer.md +39 -0
  268. package/templates/engine/.agents/roles/pr-adjudicator.md +27 -0
  269. package/templates/engine/.agents/roles/pr-finder.md +51 -0
  270. package/templates/engine/.agents/roles/pr-verifier.md +44 -0
  271. package/templates/engine/.agents/roles/ui-verifier.md +22 -0
  272. package/templates/engine/.agents/roles/wiki-compiler.md +47 -0
  273. package/templates/engine/.agents/scripts/agent-eval.mjs +268 -0
  274. package/templates/engine/.agents/scripts/agg-delegations.mjs +439 -0
  275. package/templates/engine/.agents/scripts/agg-judgments.mjs +301 -0
  276. package/templates/engine/.agents/scripts/agg-kb-usage.mjs +196 -0
  277. package/templates/engine/.agents/scripts/append-compensation.mjs +109 -0
  278. package/templates/engine/.agents/scripts/archive-sweep.mjs +229 -0
  279. package/templates/engine/.agents/scripts/auto-tour.mjs +77 -0
  280. package/templates/engine/.agents/scripts/board-port.mjs +17 -0
  281. package/templates/engine/.agents/scripts/check-doc-body-drift.mjs +102 -0
  282. package/templates/engine/.agents/scripts/check-engine-artifacts.mjs +54 -0
  283. package/templates/engine/.agents/scripts/check-hook-wiring.mjs +75 -0
  284. package/templates/engine/.agents/scripts/check-lane-surface.mjs +393 -0
  285. package/templates/engine/.agents/scripts/check-ledger-doc-presence.mjs +71 -0
  286. package/templates/engine/.agents/scripts/check-ledger-invariant.mjs +873 -0
  287. package/templates/engine/.agents/scripts/check-local-gate-config.mjs +95 -0
  288. package/templates/engine/.agents/scripts/check-local-gates.mjs +248 -0
  289. package/templates/engine/.agents/scripts/check-loop-kit.mjs +550 -0
  290. package/templates/engine/.agents/scripts/check-loop-rev-semantics.mjs +59 -0
  291. package/templates/engine/.agents/scripts/check-loop-sections/s01-pairing.mjs +116 -0
  292. package/templates/engine/.agents/scripts/check-loop-sections/s03x-regr-evidence.mjs +38 -0
  293. package/templates/engine/.agents/scripts/check-loop-sections/s08-acceptance.mjs +130 -0
  294. package/templates/engine/.agents/scripts/check-loop-sections/s15-fingerprint.mjs +152 -0
  295. package/templates/engine/.agents/scripts/check-loop-sections/s23-convergence-audit.mjs +182 -0
  296. package/templates/engine/.agents/scripts/check-loop-sections/s29-regr-enforcer.mjs +69 -0
  297. package/templates/engine/.agents/scripts/check-loop.mjs +131 -0
  298. package/templates/engine/.agents/scripts/check-pipeline-state.mjs +85 -0
  299. package/templates/engine/.agents/scripts/check-regression-consistency.mjs +252 -0
  300. package/templates/engine/.agents/scripts/check-schema-residue.mjs +144 -0
  301. package/templates/engine/.agents/scripts/check-scope-range.mjs +156 -0
  302. package/templates/engine/.agents/scripts/check-scope.mjs +121 -0
  303. package/templates/engine/.agents/scripts/check-scripts-syntax.mjs +138 -0
  304. package/templates/engine/.agents/scripts/check-secrets-lite.mjs +239 -0
  305. package/templates/engine/.agents/scripts/check-secrets.mjs +104 -0
  306. package/templates/engine/.agents/scripts/check-test-impact-map.mjs +107 -0
  307. package/templates/engine/.agents/scripts/ci-assert-frontend-deps.mjs +42 -0
  308. package/templates/engine/.agents/scripts/ci-commit-hygiene.mjs +86 -0
  309. package/templates/engine/.agents/scripts/ci-install-gitleaks.mjs +75 -0
  310. package/templates/engine/.agents/scripts/ci-push-before.mjs +49 -0
  311. package/templates/engine/.agents/scripts/claims.mjs +166 -0
  312. package/templates/engine/.agents/scripts/closeout.mjs +127 -0
  313. package/templates/engine/.agents/scripts/compact-ledgers.mjs +70 -0
  314. package/templates/engine/.agents/scripts/confirm-doc.mjs +737 -0
  315. package/templates/engine/.agents/scripts/delegation-presence.mjs +38 -0
  316. package/templates/engine/.agents/scripts/dev-tour-model.mjs +1398 -0
  317. package/templates/engine/.agents/scripts/dream-run.mjs +358 -0
  318. package/templates/engine/.agents/scripts/ensure-board.mjs +187 -0
  319. package/templates/engine/.agents/scripts/failure-attribution.mjs +11 -0
  320. package/templates/engine/.agents/scripts/fill-intent.mjs +60 -0
  321. package/templates/engine/.agents/scripts/fill-plan.mjs +105 -0
  322. package/templates/engine/.agents/scripts/fill-spec.mjs +72 -0
  323. package/templates/engine/.agents/scripts/fix-task.mjs +77 -0
  324. package/templates/engine/.agents/scripts/gen-dev-tour.mjs +191 -0
  325. package/templates/engine/.agents/scripts/gen-effective-policy.mjs +113 -0
  326. package/templates/engine/.agents/scripts/gen-engine-map.mjs +292 -0
  327. package/templates/engine/.agents/scripts/gen-narrative-claims.mjs +275 -0
  328. package/templates/engine/.agents/scripts/gen-verify-evidence.mjs +115 -0
  329. package/templates/engine/.agents/scripts/gen-wiki-board.mjs +221 -0
  330. package/templates/engine/.agents/scripts/gen-workflow-index.mjs +201 -0
  331. package/templates/engine/.agents/scripts/gen-workflow-metrics.mjs +692 -0
  332. package/templates/engine/.agents/scripts/git-merge-jsonl.mjs +62 -0
  333. package/templates/engine/.agents/scripts/judgment-ledger.mjs +68 -0
  334. package/templates/engine/.agents/scripts/kb-cache-evict.mjs +50 -0
  335. package/templates/engine/.agents/scripts/kb-search.mjs +423 -0
  336. package/templates/engine/.agents/scripts/lane-surface-audit.mjs +145 -0
  337. package/templates/engine/.agents/scripts/ledger-loader.mjs +77 -0
  338. package/templates/engine/.agents/scripts/ledger-shards.mjs +346 -0
  339. package/templates/engine/.agents/scripts/memory-tier.mjs +196 -0
  340. package/templates/engine/.agents/scripts/memory-wiki.mjs +296 -0
  341. package/templates/engine/.agents/scripts/metrics-core.mjs +131 -0
  342. package/templates/engine/.agents/scripts/outcome-metrics.mjs +195 -0
  343. package/templates/engine/.agents/scripts/path-lease.mjs +177 -0
  344. package/templates/engine/.agents/scripts/pipeline-run.mjs +964 -0
  345. package/templates/engine/.agents/scripts/policy.mjs +250 -0
  346. package/templates/engine/.agents/scripts/pr-create.mjs +54 -0
  347. package/templates/engine/.agents/scripts/pr-review.mjs +1551 -0
  348. package/templates/engine/.agents/scripts/quote-grounding.mjs +233 -0
  349. package/templates/engine/.agents/scripts/regen-ledgers.mjs +59 -0
  350. package/templates/engine/.agents/scripts/rewrite-file.mjs +135 -0
  351. package/templates/engine/.agents/scripts/rule-budget.mjs +246 -0
  352. package/templates/engine/.agents/scripts/session-log.mjs +157 -0
  353. package/templates/engine/.agents/scripts/stage-gates.mjs +812 -0
  354. package/templates/engine/.agents/scripts/steering.mjs +75 -0
  355. package/templates/engine/.agents/scripts/test-impact-lib.mjs +451 -0
  356. package/templates/engine/.agents/scripts/test-impact.mjs +105 -0
  357. package/templates/engine/.agents/scripts/trust-mode.mjs +130 -0
  358. package/templates/engine/.agents/scripts/verify-scope.mjs +163 -0
  359. package/templates/engine/.agents/scripts/verify-wiki-consistency.mjs +264 -0
  360. package/templates/engine/.agents/scripts/verify.mjs +858 -0
  361. package/templates/engine/.agents/scripts/warn-format.mjs +57 -0
  362. package/templates/engine/.agents/scripts/wf-journal.mjs +230 -0
  363. package/templates/engine/.agents/scripts/workflow-board-server.mjs +696 -0
  364. package/templates/engine/.agents/scripts/workflow-enums.mjs +70 -0
  365. package/templates/engine/.agents/scripts/workflows-check.mjs +260 -0
  366. package/templates/engine/.agents/settings.json +33 -0
  367. package/templates/engine/.agents/skills/arena/SKILL.md +54 -0
  368. package/templates/engine/.agents/skills/autonomous-run/SKILL.md +45 -0
  369. package/templates/engine/.agents/skills/blast-radius/SKILL.md +53 -0
  370. package/templates/engine/.agents/skills/csharp-quality-gates/SKILL.md +109 -0
  371. package/templates/engine/.agents/skills/csharp-quality-gates/scripts/quality-gates.mjs +430 -0
  372. package/templates/engine/.agents/skills/dev-tour/SKILL.md +98 -0
  373. package/templates/engine/.agents/skills/dream/SKILL.md +82 -0
  374. package/templates/engine/.agents/skills/eval/SKILL.md +58 -0
  375. package/templates/engine/.agents/skills/eval/scripts/eval-score.mjs +59 -0
  376. package/templates/engine/.agents/skills/interrogate/SKILL.md +49 -0
  377. package/templates/engine/.agents/skills/interrogate/scripts/interrogate-plan.mjs +72 -0
  378. package/templates/engine/.agents/skills/model-upgrade/SKILL.md +41 -0
  379. package/templates/engine/.agents/skills/number-vetting/SKILL.md +35 -0
  380. package/templates/engine/.agents/skills/page-refactor/SKILL.md +192 -0
  381. package/templates/engine/.agents/skills/page-refactor/references/templates.md +989 -0
  382. package/templates/engine/.agents/skills/papercut-fix/SKILL.md +92 -0
  383. package/templates/engine/.agents/skills/papercut-fix/references/response-template.md +81 -0
  384. package/templates/engine/.agents/skills/pause-safely/SKILL.md +31 -0
  385. package/templates/engine/.agents/skills/perf/SKILL.md +42 -0
  386. package/templates/engine/.agents/skills/review-method/SKILL.md +92 -0
  387. package/templates/engine/.agents/skills/review-method/golden-set.md +61 -0
  388. package/templates/engine/.agents/skills/session-resume/SKILL.md +76 -0
  389. package/templates/engine/.agents/skills/session-resume/scripts/worktree-audit.mjs +110 -0
  390. package/templates/engine/.agents/skills/shipyard-workflow-closeout/SKILL.md +109 -0
  391. package/templates/engine/.agents/skills/show-me-your-work/SKILL.md +71 -0
  392. package/templates/engine/.agents/skills/show-me-your-work/references/decision-log-template.tsv +1 -0
  393. package/templates/engine/.agents/skills/show-me-your-work/scripts/decision-log.mjs +24 -0
  394. package/templates/engine/.agents/skills/tfs-pr/SKILL.md +95 -0
  395. package/templates/engine/.agents/skills/tfs-pr/scripts/tfs-pr.mjs +947 -0
  396. package/templates/engine/.agents/skills/verify-ui/SKILL.md +116 -0
  397. package/templates/engine/.agents/skills/verify-ui/features/.gitkeep +0 -0
  398. package/templates/engine/.agents/skills/verify-ui/scripts/gen-verify-feature.mjs +114 -0
  399. package/templates/engine/.agents/skills/visual-parity/SKILL.md +35 -0
  400. package/templates/engine/.agents/skills/why/SKILL.md +56 -0
  401. package/templates/engine/.agents/skills/why/scripts/why-evidence.mjs +74 -0
  402. package/templates/engine/.agents/skills/wiki/SKILL.md +56 -0
  403. package/templates/engine/.agents/tests/auto-tour.test.mjs +82 -0
  404. package/templates/engine/.agents/tests/dev-tour-model.test.mjs +452 -0
  405. package/templates/engine/.agents/tests/fill-plan-lite.test.mjs +46 -0
  406. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.md +14 -0
  407. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-bare-mid-path.model.json +179 -0
  408. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.md +21 -0
  409. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-fake-path-guard.model.json +194 -0
  410. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.md +20 -0
  411. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-h3-batches.model.json +207 -0
  412. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.md +24 -0
  413. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-issues.model.json +225 -0
  414. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.md +15 -0
  415. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-l1-single-file.model.json +160 -0
  416. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.md +29 -0
  417. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layer-word-unique.model.json +266 -0
  418. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.md +17 -0
  419. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-layers-fallback.model.json +207 -0
  420. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.md +39 -0
  421. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-numbered-steps.model.json +359 -0
  422. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.md +16 -0
  423. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-path-guess.model.json +131 -0
  424. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.md +29 -0
  425. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-table-rows.model.json +190 -0
  426. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.md +39 -0
  427. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-task-checkboxes.model.json +362 -0
  428. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.md +24 -0
  429. package/templates/engine/.agents/tests/fixtures/dev-tour/plan-union-label.model.json +224 -0
  430. package/templates/engine/.agents/tests/tools/gen-synthetic-plan.mjs +108 -0
  431. package/templates/git/.gitattributes +23 -0
  432. package/templates/git/.githooks/commit-msg +72 -0
  433. package/templates/git/.githooks/package.json +3 -0
  434. package/templates/git/.githooks/post-commit +62 -0
  435. package/templates/git/.githooks/pre-commit +197 -0
  436. package/templates/git/.githooks/pre-merge-commit +28 -0
  437. package/templates/git/.githooks/pre-push +201 -0
  438. package/templates/git/.github/workflows/ci.yml +32 -0
  439. package/templates/git/.gitignore.engine +11 -0
  440. package/templates/git/azure-pipelines.yml +46 -0
  441. package/templates/host-meta/SKILLS.md +3 -0
  442. package/templates/host-meta/claude/skill-pointer.md +6 -0
  443. package/templates/host-meta/cline/skill-index.md +6 -0
  444. package/templates/host-meta/codebuddy/skill-pointer.md +6 -0
  445. package/templates/host-meta/commandcode/skill-index.md +5 -0
  446. package/templates/host-meta/opencode/skill-pointer.md +6 -0
  447. package/templates/host-meta/qoder/skill-index.md +5 -0
  448. package/templates/host-meta/qwen/skill-index.md +5 -0
  449. package/templates/host-meta/trae/skill-index.md +6 -0
  450. package/templates/hosts/claude/CLAUDE.md +55 -0
  451. package/templates/hosts/claude/agents/implementer.md +7 -0
  452. package/templates/hosts/claude/agents/independent-reviewer.md +8 -0
  453. package/templates/hosts/claude/agents/pr-adjudicator.md +8 -0
  454. package/templates/hosts/claude/agents/pr-finder.md +8 -0
  455. package/templates/hosts/claude/agents/pr-verifier.md +8 -0
  456. package/templates/hosts/claude/agents/ui-verifier.md +8 -0
  457. package/templates/hosts/claude/agents/wiki-compiler.md +8 -0
  458. package/templates/hosts/claude/commands/wf-deploy.md +10 -0
  459. package/templates/hosts/claude/commands/wf-maintain.md +10 -0
  460. package/templates/hosts/claude/commands/wf-new-task.md +10 -0
  461. package/templates/hosts/claude/commands/wf-pipeline-run.md +10 -0
  462. package/templates/hosts/claude/commands/wf-pr-review.md +10 -0
  463. package/templates/hosts/claude/commands/wf-review.md +10 -0
  464. package/templates/hosts/claude/commands/wf-stages.md +10 -0
  465. package/templates/hosts/claude/settings.hardened.json +94 -0
  466. package/templates/hosts/claude/settings.json +55 -0
  467. package/templates/hosts/cline/agents/implementer.yml +15 -0
  468. package/templates/hosts/cline/agents/independent-reviewer.yml +20 -0
  469. package/templates/hosts/cline/agents/pr-adjudicator.yml +18 -0
  470. package/templates/hosts/cline/agents/pr-finder.yml +19 -0
  471. package/templates/hosts/cline/agents/pr-verifier.yml +18 -0
  472. package/templates/hosts/cline/agents/ui-verifier.yml +17 -0
  473. package/templates/hosts/cline/agents/wiki-compiler.yml +20 -0
  474. package/templates/hosts/cline/hooks/PreToolUse.cjs +260 -0
  475. package/templates/hosts/cline/workflows/wf-deploy.md +8 -0
  476. package/templates/hosts/cline/workflows/wf-maintain.md +8 -0
  477. package/templates/hosts/cline/workflows/wf-new-task.md +8 -0
  478. package/templates/hosts/cline/workflows/wf-pipeline-run.md +8 -0
  479. package/templates/hosts/cline/workflows/wf-pr-review.md +8 -0
  480. package/templates/hosts/cline/workflows/wf-review.md +8 -0
  481. package/templates/hosts/cline/workflows/wf-stages.md +8 -0
  482. package/templates/hosts/codebuddy/CODEBUDDY.md +7 -0
  483. package/templates/hosts/codebuddy/agents/implementer.md +9 -0
  484. package/templates/hosts/codebuddy/agents/independent-reviewer.md +10 -0
  485. package/templates/hosts/codebuddy/agents/pr-adjudicator.md +10 -0
  486. package/templates/hosts/codebuddy/agents/pr-finder.md +10 -0
  487. package/templates/hosts/codebuddy/agents/pr-verifier.md +10 -0
  488. package/templates/hosts/codebuddy/agents/ui-verifier.md +11 -0
  489. package/templates/hosts/codebuddy/agents/wiki-compiler.md +10 -0
  490. package/templates/hosts/codebuddy/commands/wf-deploy.md +10 -0
  491. package/templates/hosts/codebuddy/commands/wf-maintain.md +10 -0
  492. package/templates/hosts/codebuddy/commands/wf-new-task.md +10 -0
  493. package/templates/hosts/codebuddy/commands/wf-pipeline-run.md +10 -0
  494. package/templates/hosts/codebuddy/commands/wf-pr-review.md +10 -0
  495. package/templates/hosts/codebuddy/commands/wf-review.md +10 -0
  496. package/templates/hosts/codebuddy/commands/wf-stages.md +10 -0
  497. package/templates/hosts/codebuddy/rules/backend-scope.md +5 -0
  498. package/templates/hosts/codebuddy/rules/frontend-scope.md +5 -0
  499. package/templates/hosts/codebuddy/settings.json +31 -0
  500. package/templates/hosts/codebuddy/skills/tfs-pr/SKILL.md +6 -0
  501. package/templates/hosts/commandcode/agents/implementer.md +10 -0
  502. package/templates/hosts/commandcode/agents/independent-reviewer.md +9 -0
  503. package/templates/hosts/commandcode/agents/pr-adjudicator.md +9 -0
  504. package/templates/hosts/commandcode/agents/pr-finder.md +9 -0
  505. package/templates/hosts/commandcode/agents/pr-verifier.md +9 -0
  506. package/templates/hosts/commandcode/agents/ui-verifier.md +11 -0
  507. package/templates/hosts/commandcode/agents/wiki-compiler.md +10 -0
  508. package/templates/hosts/commandcode/commands/wf-deploy.md +9 -0
  509. package/templates/hosts/commandcode/commands/wf-maintain.md +9 -0
  510. package/templates/hosts/commandcode/commands/wf-new-task.md +9 -0
  511. package/templates/hosts/commandcode/commands/wf-pipeline-run.md +9 -0
  512. package/templates/hosts/commandcode/commands/wf-pr-review.md +9 -0
  513. package/templates/hosts/commandcode/commands/wf-review.md +9 -0
  514. package/templates/hosts/commandcode/commands/wf-stages.md +9 -0
  515. package/templates/hosts/commandcode/settings.json +57 -0
  516. package/templates/hosts/opencode/agents/implementer.md +51 -0
  517. package/templates/hosts/opencode/agents/independent-reviewer.md +18 -0
  518. package/templates/hosts/opencode/agents/pr-adjudicator.md +18 -0
  519. package/templates/hosts/opencode/agents/pr-finder.md +18 -0
  520. package/templates/hosts/opencode/agents/pr-verifier.md +18 -0
  521. package/templates/hosts/opencode/agents/ui-verifier.md +45 -0
  522. package/templates/hosts/opencode/agents/wiki-compiler.md +51 -0
  523. package/templates/hosts/opencode/commands/wf-deploy.md +7 -0
  524. package/templates/hosts/opencode/commands/wf-maintain.md +7 -0
  525. package/templates/hosts/opencode/commands/wf-new-task.md +7 -0
  526. package/templates/hosts/opencode/commands/wf-pipeline-run.md +7 -0
  527. package/templates/hosts/opencode/commands/wf-pr-review.md +7 -0
  528. package/templates/hosts/opencode/commands/wf-review.md +7 -0
  529. package/templates/hosts/opencode/commands/wf-stages.md +7 -0
  530. package/templates/hosts/pi/agents/implementer.md +10 -0
  531. package/templates/hosts/pi/agents/independent-reviewer.md +11 -0
  532. package/templates/hosts/pi/agents/pr-adjudicator.md +11 -0
  533. package/templates/hosts/pi/agents/pr-finder.md +10 -0
  534. package/templates/hosts/pi/agents/pr-verifier.md +10 -0
  535. package/templates/hosts/pi/agents/ui-verifier.md +10 -0
  536. package/templates/hosts/pi/agents/wiki-compiler.md +10 -0
  537. package/templates/hosts/pi/extensions/lib/gates-core.cjs +196 -0
  538. package/templates/hosts/pi/extensions/shipyard-gates.ts +95 -0
  539. package/templates/hosts/pi/settings.json +5 -0
  540. package/templates/hosts/qoder/agents/implementer.md +9 -0
  541. package/templates/hosts/qoder/agents/independent-reviewer.md +10 -0
  542. package/templates/hosts/qoder/agents/pr-adjudicator.md +10 -0
  543. package/templates/hosts/qoder/agents/pr-finder.md +10 -0
  544. package/templates/hosts/qoder/agents/pr-verifier.md +10 -0
  545. package/templates/hosts/qoder/agents/ui-verifier.md +10 -0
  546. package/templates/hosts/qoder/agents/wiki-compiler.md +10 -0
  547. package/templates/hosts/qoder/commands/wf-deploy.md +8 -0
  548. package/templates/hosts/qoder/commands/wf-maintain.md +8 -0
  549. package/templates/hosts/qoder/commands/wf-new-task.md +8 -0
  550. package/templates/hosts/qoder/commands/wf-pipeline-run.md +8 -0
  551. package/templates/hosts/qoder/commands/wf-pr-review.md +8 -0
  552. package/templates/hosts/qoder/commands/wf-review.md +8 -0
  553. package/templates/hosts/qoder/commands/wf-stages.md +8 -0
  554. package/templates/hosts/qoder/settings.json +61 -0
  555. package/templates/hosts/qwen/agents/implementer.md +8 -0
  556. package/templates/hosts/qwen/agents/independent-reviewer.md +8 -0
  557. package/templates/hosts/qwen/agents/pr-adjudicator.md +8 -0
  558. package/templates/hosts/qwen/agents/pr-finder.md +8 -0
  559. package/templates/hosts/qwen/agents/pr-verifier.md +8 -0
  560. package/templates/hosts/qwen/agents/ui-verifier.md +8 -0
  561. package/templates/hosts/qwen/agents/wiki-compiler.md +11 -0
  562. package/templates/hosts/qwen/commands/wf-deploy.md +9 -0
  563. package/templates/hosts/qwen/commands/wf-maintain.md +9 -0
  564. package/templates/hosts/qwen/commands/wf-new-task.md +9 -0
  565. package/templates/hosts/qwen/commands/wf-pipeline-run.md +9 -0
  566. package/templates/hosts/qwen/commands/wf-pr-review.md +9 -0
  567. package/templates/hosts/qwen/commands/wf-review.md +9 -0
  568. package/templates/hosts/qwen/commands/wf-stages.md +9 -0
  569. package/templates/hosts/qwen/settings.json +57 -0
  570. package/templates/hosts/trae/agents/implementer.md +9 -0
  571. package/templates/hosts/trae/agents/independent-reviewer.md +10 -0
  572. package/templates/hosts/trae/agents/pr-adjudicator.md +10 -0
  573. package/templates/hosts/trae/agents/pr-finder.md +10 -0
  574. package/templates/hosts/trae/agents/pr-verifier.md +10 -0
  575. package/templates/hosts/trae/agents/ui-verifier.md +10 -0
  576. package/templates/hosts/trae/agents/wiki-compiler.md +10 -0
  577. package/templates/hosts/trae/commands/wf-deploy.md +8 -0
  578. package/templates/hosts/trae/commands/wf-maintain.md +8 -0
  579. package/templates/hosts/trae/commands/wf-new-task.md +8 -0
  580. package/templates/hosts/trae/commands/wf-pipeline-run.md +8 -0
  581. package/templates/hosts/trae/commands/wf-pr-review.md +8 -0
  582. package/templates/hosts/trae/commands/wf-review.md +8 -0
  583. package/templates/hosts/trae/commands/wf-stages.md +8 -0
  584. package/templates/hosts/trae/hooks.json +17 -0
  585. package/templates/hosts/trae/rules/backend-scope.md +5 -0
  586. package/templates/hosts/trae/rules/frontend-scope.md +5 -0
  587. package/templates/hosts/zcode/agents/implementer.md +8 -0
  588. package/templates/hosts/zcode/agents/independent-reviewer.md +8 -0
  589. package/templates/hosts/zcode/agents/ui-verifier.md +8 -0
  590. package/templates/hosts/zcode/agents/wiki-compiler.md +8 -0
  591. package/templates/hosts/zcode/config.json +31 -0
  592. package/templates/hosts/zcode/workflows/code-review.dwf.ts +428 -0
  593. package/templates/hosts/zcode/workflows/fullchain-flow-test.dwf.ts +898 -0
  594. package/templates/profiles/dotnet/.agents/config/lane-surfaces.txt +33 -0
  595. package/templates/profiles/dotnet/.agents/config/rule-budgets.txt +84 -0
  596. package/templates/profiles/dotnet/.agents/config/test-impact-map.json +590 -0
  597. package/templates/profiles/dotnet/.agents/config/workflow-modules.txt +18 -0
  598. package/templates/profiles/dotnet/.agents/hooks/commit-check.config.json +18 -0
  599. package/templates/profiles/dotnet/.agents/hooks/delete-guard-allowlist.txt +28 -0
  600. package/templates/profiles/dotnet/.agents/notes/runtime-env.md +178 -0
  601. package/templates/profiles/dotnet/AGENTS.md +52 -0
  602. package/templates/profiles/empty/.agents/config/lane-surfaces.txt +12 -0
  603. package/templates/profiles/empty/.agents/config/rule-budgets.txt +3 -0
  604. package/templates/profiles/empty/.agents/config/test-impact-map.json +8 -0
  605. package/templates/profiles/empty/.agents/config/workflow-modules.txt +2 -0
  606. package/templates/profiles/empty/.agents/hooks/commit-check.config.json +5 -0
  607. package/templates/profiles/empty/.agents/hooks/delete-guard-allowlist.txt +2 -0
  608. package/templates/profiles/empty/.agents/notes/runtime-env.md +44 -0
  609. package/templates/profiles/empty/AGENTS.md +52 -0
  610. package/templates/profiles/go/AGENTS.md +52 -0
  611. package/templates/profiles/java/AGENTS.md +52 -0
  612. package/templates/profiles/node/.agents/config/lane-surfaces.txt +12 -0
  613. package/templates/profiles/node/.agents/config/rule-budgets.txt +3 -0
  614. package/templates/profiles/node/.agents/config/test-impact-map.json +8 -0
  615. package/templates/profiles/node/.agents/config/workflow-modules.txt +2 -0
  616. package/templates/profiles/node/.agents/hooks/commit-check.config.json +5 -0
  617. package/templates/profiles/node/.agents/hooks/delete-guard-allowlist.txt +2 -0
  618. package/templates/profiles/node/.agents/notes/runtime-env.md +44 -0
  619. package/templates/profiles/node/AGENTS.md +52 -0
  620. package/templates/profiles/rust/AGENTS.md +52 -0
  621. package/templates/profiles/typescript/AGENTS.md +52 -0
  622. package/templates/scaffold/wiki/INDEX.md +33 -0
  623. package/templates/scaffold/wiki/drafts-archive/README.md +7 -0
  624. package/templates/scaffold/wiki//344/272/247/345/223/201/351/234/200/346/261/202/.gitkeep +0 -0
  625. package/templates/scaffold/wiki//345/274/200/345/217/221/346/226/271/346/241/210/.gitkeep +0 -0
  626. package/templates/scaffold/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +22 -0
  627. package/templates/scaffold/wiki//346/265/213/350/257/225/346/212/245/345/221/212/.gitkeep +0 -0
  628. package/templates/scaffold/wiki//347/224/250/346/210/267/345/212/237/350/203/275/.gitkeep +0 -0
  629. package/templates/scaffold/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +230 -0
  630. package/templates/scaffold/wiki//351/241/271/347/233/256/350/247/204/350/214/203/.gitkeep +0 -0
  631. package/templates/scaffold/workflow/INDEX.md +29 -0
  632. package/templates/scaffold/workflow/README.md +69 -0
  633. package/templates/scaffold/workflow/archive/README.md +3 -0
  634. package/templates/scaffold/workflow/artifact-sources.md +25 -0
  635. package/templates/scaffold/workflow/delegations.d/.gitkeep +0 -0
  636. package/templates/scaffold/workflow/delegations.md +4 -0
  637. package/templates/scaffold/workflow/effective-policy.md +4 -0
  638. package/templates/scaffold/workflow/evidence/.gitkeep +0 -0
  639. package/templates/scaffold/workflow/gate-cost.md +4 -0
  640. package/templates/scaffold/workflow/gate-metrics.d/.gitkeep +0 -0
  641. package/templates/scaffold/workflow/incidents/_TEMPLATE.md +49 -0
  642. package/templates/scaffold/workflow/intents/_TEMPLATE.md +43 -0
  643. package/templates/scaffold/workflow/metrics.md +4 -0
  644. package/templates/scaffold/workflow/non-engineer-intent.md +51 -0
  645. package/templates/scaffold/workflow/papercuts.d/.gitkeep +0 -0
  646. package/templates/scaffold/workflow/papercuts.md +3 -0
  647. package/templates/scaffold/workflow/plans/_TEMPLATE.md +47 -0
  648. package/templates/scaffold/workflow/regression-checklist.d/.gitkeep +0 -0
  649. package/templates/scaffold/workflow/regression-checklist.md +3 -0
  650. package/templates/scaffold/workflow/research/.gitkeep +0 -0
  651. package/templates/scaffold/workflow/reviews.d/.gitkeep +0 -0
  652. package/templates/scaffold/workflow/specs/_TEMPLATE.md +87 -0
  653. package/templates/scaffold/workflow/verify-evidence/.gitkeep +0 -0
  654. package/templates/scaffold/workflow/verify-evidence.md +4 -0
  655. package/modules/gates/README.md +0 -25
  656. package/modules/gates/dotnet-ca/README.md +0 -24
  657. package/modules/gates/dotnet-ca/check-architecture.sh +0 -150
  658. package/modules/gates/dotnet-ca/local-pre-commit.line +0 -1
  659. package/modules/gates/generated-readonly/README.md +0 -13
  660. package/modules/gates/generated-readonly/check-generated.mjs +0 -61
  661. package/modules/gates/generated-readonly/local-pre-commit.line +0 -1
  662. package/modules/gates/node-layer/README.md +0 -9
  663. package/modules/gates/node-layer/check-node-layer.mjs +0 -29
  664. package/modules/gates/node-layer/local-pre-commit.line +0 -1
  665. package/modules/gates/py-import/README.md +0 -9
  666. package/modules/gates/py-import/check-py-import.mjs +0 -30
  667. package/modules/gates/py-import/local-pre-commit.line +0 -1
  668. package/modules/gates/test-protect/README.md +0 -23
  669. package/modules/gates/test-protect/check-test-protect.mjs +0 -64
  670. package/modules/gates/test-protect/local-pre-commit.line +0 -1
  671. package/modules/hosts/README.md +0 -57
  672. package/modules/hosts/claude/agents/implementer.md +0 -51
  673. package/modules/hosts/claude/agents/independent-reviewer.md +0 -49
  674. package/modules/hosts/claude/agents/ui-verifier.md +0 -48
  675. package/modules/hosts/claude/commands/wf-build.md +0 -69
  676. package/modules/hosts/claude/commands/wf-deploy.md +0 -58
  677. package/modules/hosts/claude/commands/wf-design.md +0 -49
  678. package/modules/hosts/claude/commands/wf-gate-checklist.md +0 -77
  679. package/modules/hosts/claude/commands/wf-maintain.md +0 -76
  680. package/modules/hosts/claude/commands/wf-new-task.md +0 -102
  681. package/modules/hosts/claude/commands/wf-pipeline-run.md +0 -35
  682. package/modules/hosts/claude/commands/wf-plan.md +0 -40
  683. package/modules/hosts/claude/commands/wf-review.md +0 -49
  684. package/modules/hosts/claude/commands/wf-sync-hosts.md +0 -64
  685. package/modules/hosts/claude/commands/wf-test.md +0 -68
  686. package/modules/hosts/codex/agents/implementer.md +0 -51
  687. package/modules/hosts/codex/agents/independent-reviewer.md +0 -49
  688. package/modules/hosts/codex/agents/ui-verifier.md +0 -48
  689. package/modules/hosts/codex/commands/wf-build.md +0 -69
  690. package/modules/hosts/codex/commands/wf-deploy.md +0 -58
  691. package/modules/hosts/codex/commands/wf-design.md +0 -49
  692. package/modules/hosts/codex/commands/wf-gate-checklist.md +0 -77
  693. package/modules/hosts/codex/commands/wf-maintain.md +0 -76
  694. package/modules/hosts/codex/commands/wf-new-task.md +0 -102
  695. package/modules/hosts/codex/commands/wf-pipeline-run.md +0 -35
  696. package/modules/hosts/codex/commands/wf-plan.md +0 -40
  697. package/modules/hosts/codex/commands/wf-review.md +0 -49
  698. package/modules/hosts/codex/commands/wf-sync-hosts.md +0 -64
  699. package/modules/hosts/codex/commands/wf-test.md +0 -68
  700. package/modules/hosts/codex/skills/flow-kit/SKILL.md +0 -14
  701. package/modules/hosts/cursor/agents/implementer.md +0 -51
  702. package/modules/hosts/cursor/agents/independent-reviewer.md +0 -49
  703. package/modules/hosts/cursor/agents/ui-verifier.md +0 -48
  704. package/modules/hosts/cursor/commands/wf-build.md +0 -69
  705. package/modules/hosts/cursor/commands/wf-deploy.md +0 -58
  706. package/modules/hosts/cursor/commands/wf-design.md +0 -49
  707. package/modules/hosts/cursor/commands/wf-gate-checklist.md +0 -77
  708. package/modules/hosts/cursor/commands/wf-maintain.md +0 -76
  709. package/modules/hosts/cursor/commands/wf-new-task.md +0 -102
  710. package/modules/hosts/cursor/commands/wf-pipeline-run.md +0 -35
  711. package/modules/hosts/cursor/commands/wf-plan.md +0 -40
  712. package/modules/hosts/cursor/commands/wf-review.md +0 -49
  713. package/modules/hosts/cursor/commands/wf-sync-hosts.md +0 -64
  714. package/modules/hosts/cursor/commands/wf-test.md +0 -68
  715. package/modules/hosts/omp/agents/implementer.md +0 -52
  716. package/modules/hosts/omp/agents/independent-reviewer.md +0 -50
  717. package/modules/hosts/omp/agents/ui-verifier.md +0 -49
  718. package/modules/hosts/opencode/agents/implementer.md +0 -59
  719. package/modules/hosts/opencode/agents/independent-reviewer.md +0 -53
  720. package/modules/hosts/opencode/agents/ui-verifier.md +0 -52
  721. package/modules/hosts/opencode/commands/wf-build.md +0 -69
  722. package/modules/hosts/opencode/commands/wf-deploy.md +0 -58
  723. package/modules/hosts/opencode/commands/wf-design.md +0 -49
  724. package/modules/hosts/opencode/commands/wf-gate-checklist.md +0 -77
  725. package/modules/hosts/opencode/commands/wf-maintain.md +0 -76
  726. package/modules/hosts/opencode/commands/wf-new-task.md +0 -102
  727. package/modules/hosts/opencode/commands/wf-pipeline-run.md +0 -35
  728. package/modules/hosts/opencode/commands/wf-plan.md +0 -40
  729. package/modules/hosts/opencode/commands/wf-review.md +0 -49
  730. package/modules/hosts/opencode/commands/wf-sync-hosts.md +0 -64
  731. package/modules/hosts/opencode/commands/wf-test.md +0 -68
  732. package/modules/hosts/trae/agents/implementer.md +0 -52
  733. package/modules/hosts/trae/agents/independent-reviewer.md +0 -51
  734. package/modules/hosts/trae/agents/ui-verifier.md +0 -50
  735. package/modules/hosts/trae/commands/wf-build.md +0 -70
  736. package/modules/hosts/trae/commands/wf-deploy.md +0 -59
  737. package/modules/hosts/trae/commands/wf-design.md +0 -50
  738. package/modules/hosts/trae/commands/wf-gate-checklist.md +0 -78
  739. package/modules/hosts/trae/commands/wf-maintain.md +0 -77
  740. package/modules/hosts/trae/commands/wf-new-task.md +0 -103
  741. package/modules/hosts/trae/commands/wf-pipeline-run.md +0 -36
  742. package/modules/hosts/trae/commands/wf-plan.md +0 -41
  743. package/modules/hosts/trae/commands/wf-review.md +0 -50
  744. package/modules/hosts/trae/commands/wf-sync-hosts.md +0 -65
  745. package/modules/hosts/trae/commands/wf-test.md +0 -69
  746. package/modules/hosts/trae/hooks/post-edit-check.cjs +0 -98
  747. package/modules/hosts/trae/hooks/pre-shell-check.cjs +0 -192
  748. package/modules/hosts/trae/hooks/resolve-shell.cjs +0 -30
  749. package/modules/hosts/trae/hooks.json +0 -29
  750. package/modules/hosts/trae/rules/beautify-input-chinese.md +0 -6
  751. package/modules/hosts/trae/rules/git-commit-message.md +0 -10
  752. package/modules/hosts/trae/rules/project-workflow.md +0 -14
  753. package/modules/hosts/zcode/agents/implementer.md +0 -51
  754. package/modules/hosts/zcode/agents/independent-reviewer.md +0 -49
  755. package/modules/hosts/zcode/agents/ui-verifier.md +0 -48
  756. package/src/add-gate.mjs +0 -116
  757. package/src/add-gate.test.mjs +0 -103
  758. package/src/add-host.mjs +0 -68
  759. package/src/cli.mjs +0 -169
  760. package/src/doctor.mjs +0 -629
  761. package/src/executor.mjs +0 -262
  762. package/src/executor.test.mjs +0 -295
  763. package/src/fresh-init.test.mjs +0 -64
  764. package/src/gate-dotnet-ca.test.mjs +0 -124
  765. package/src/gates.test.mjs +0 -143
  766. package/src/init.mjs +0 -382
  767. package/src/init.test.mjs +0 -163
  768. package/src/instance-ref.test.mjs +0 -62
  769. package/src/jscpd-drift.test.mjs +0 -145
  770. package/src/pack.test.mjs +0 -24
  771. package/src/profiles.mjs +0 -183
  772. package/src/render.mjs +0 -132
  773. package/src/rule-budget.test.mjs +0 -103
  774. package/src/run-tests.mjs +0 -56
  775. package/src/stack-profile.test.mjs +0 -95
  776. package/src/sync-hosts.mjs +0 -257
  777. package/src/sync-hosts.test.mjs +0 -291
  778. package/src/sync.mjs +0 -228
  779. package/src/sync.test.mjs +0 -452
  780. package/src/trae-hooks.test.mjs +0 -127
  781. package/src/validate.mjs +0 -77
  782. package/src/validate.test.mjs +0 -95
  783. package/templates/.gitattributes +0 -17
  784. package/templates/AGENTS.md +0 -58
  785. package/templates/_agents/board/index.html +0 -676
  786. package/templates/_agents/commands/build.md +0 -84
  787. package/templates/_agents/commands/deploy.md +0 -66
  788. package/templates/_agents/commands/design.md +0 -63
  789. package/templates/_agents/commands/gate-checklist.md +0 -91
  790. package/templates/_agents/commands/maintain.md +0 -90
  791. package/templates/_agents/commands/new-task.md +0 -110
  792. package/templates/_agents/commands/pipeline-run.md +0 -43
  793. package/templates/_agents/commands/plan.md +0 -48
  794. package/templates/_agents/commands/review.md +0 -62
  795. package/templates/_agents/commands/sync-hosts.md +0 -77
  796. package/templates/_agents/commands/test.md +0 -87
  797. package/templates/_agents/control-surfaces.txt +0 -53
  798. package/templates/_agents/engine-lock.json +0 -342
  799. package/templates/_agents/hooks/check-index-incremental.mjs +0 -48
  800. package/templates/_agents/hooks/check-pairing-incremental.mjs +0 -66
  801. package/templates/_agents/hooks/check-wiki-ledger.mjs +0 -30
  802. package/templates/_agents/hooks/commit-check.cjs +0 -193
  803. package/templates/_agents/hooks/local-pre-commit +0 -6
  804. package/templates/_agents/lane-surfaces.txt +0 -17
  805. package/templates/_agents/level-hints.txt +0 -30
  806. package/templates/_agents/loop/papercut-debt/DESIGN.md +0 -112
  807. package/templates/_agents/mechanism-registry.md +0 -35
  808. package/templates/_agents/metric-claims.txt +0 -81
  809. package/templates/_agents/notes/engine-internals.md +0 -17
  810. package/templates/_agents/notes/runtime-env.md +0 -18
  811. package/templates/_agents/roles/implementer.md +0 -47
  812. package/templates/_agents/roles/independent-reviewer.md +0 -45
  813. package/templates/_agents/roles/ui-verifier.md +0 -44
  814. package/templates/_agents/rule-budgets.txt +0 -20
  815. package/templates/_agents/scripts/agg-delegations.cjs +0 -302
  816. package/templates/_agents/scripts/agg-delegations.test.mjs +0 -282
  817. package/templates/_agents/scripts/agg-gate-stats.mjs +0 -113
  818. package/templates/_agents/scripts/agg-gate-stats.test.mjs +0 -95
  819. package/templates/_agents/scripts/agg-judgments.mjs +0 -156
  820. package/templates/_agents/scripts/agg-judgments.test.mjs +0 -93
  821. package/templates/_agents/scripts/archive-sweep.mjs +0 -235
  822. package/templates/_agents/scripts/archive-sweep.test.mjs +0 -129
  823. package/templates/_agents/scripts/check-attribution.mjs +0 -37
  824. package/templates/_agents/scripts/check-convergence.mjs +0 -124
  825. package/templates/_agents/scripts/check-engine-integrity.mjs +0 -220
  826. package/templates/_agents/scripts/check-engine-integrity.test.mjs +0 -215
  827. package/templates/_agents/scripts/check-funnel.mjs +0 -56
  828. package/templates/_agents/scripts/check-hygiene.mjs +0 -167
  829. package/templates/_agents/scripts/check-hygiene.test.mjs +0 -182
  830. package/templates/_agents/scripts/check-index-incremental.test.mjs +0 -73
  831. package/templates/_agents/scripts/check-lane-surface.mjs +0 -238
  832. package/templates/_agents/scripts/check-lane-surface.test.mjs +0 -302
  833. package/templates/_agents/scripts/check-ledger-invariant.mjs +0 -586
  834. package/templates/_agents/scripts/check-ledger-invariant.test.mjs +0 -639
  835. package/templates/_agents/scripts/check-loop-rev.test.mjs +0 -336
  836. package/templates/_agents/scripts/check-loop-unit.test.mjs +0 -103
  837. package/templates/_agents/scripts/check-loop.mjs +0 -1987
  838. package/templates/_agents/scripts/check-loop.sh +0 -6
  839. package/templates/_agents/scripts/check-loop.test.mjs +0 -3912
  840. package/templates/_agents/scripts/check-metric-claims.mjs +0 -277
  841. package/templates/_agents/scripts/check-prejudgment.mjs +0 -64
  842. package/templates/_agents/scripts/check-registry.mjs +0 -45
  843. package/templates/_agents/scripts/check-scope.mjs +0 -96
  844. package/templates/_agents/scripts/check-scope.test.mjs +0 -99
  845. package/templates/_agents/scripts/check-scripts-syntax.mjs +0 -84
  846. package/templates/_agents/scripts/check-scripts-syntax.test.mjs +0 -72
  847. package/templates/_agents/scripts/check-spec-verif.mjs +0 -47
  848. package/templates/_agents/scripts/check-stage-index.mjs +0 -40
  849. package/templates/_agents/scripts/check-stage-index.test.mjs +0 -77
  850. package/templates/_agents/scripts/closeout-l1.mjs +0 -217
  851. package/templates/_agents/scripts/closeout-l1.test.mjs +0 -105
  852. package/templates/_agents/scripts/commit-check-trigger.test.mjs +0 -205
  853. package/templates/_agents/scripts/compact-ledgers.mjs +0 -97
  854. package/templates/_agents/scripts/compact-ledgers.test.mjs +0 -162
  855. package/templates/_agents/scripts/confirm-doc.mjs +0 -610
  856. package/templates/_agents/scripts/confirm-doc.test.mjs +0 -1119
  857. package/templates/_agents/scripts/doctor.test.mjs +0 -770
  858. package/templates/_agents/scripts/draft-sediment.mjs +0 -178
  859. package/templates/_agents/scripts/draft-sediment.test.mjs +0 -272
  860. package/templates/_agents/scripts/edit-face-check.mjs +0 -109
  861. package/templates/_agents/scripts/edit-face-check.test.mjs +0 -99
  862. package/templates/_agents/scripts/ensure-board.mjs +0 -185
  863. package/templates/_agents/scripts/fill-intent.mjs +0 -91
  864. package/templates/_agents/scripts/fill-intent.test.mjs +0 -113
  865. package/templates/_agents/scripts/fill-plan.mjs +0 -79
  866. package/templates/_agents/scripts/fill-plan.test.mjs +0 -224
  867. package/templates/_agents/scripts/fill-spec.mjs +0 -70
  868. package/templates/_agents/scripts/fill-spec.test.mjs +0 -266
  869. package/templates/_agents/scripts/fixture-scripts.mjs +0 -153
  870. package/templates/_agents/scripts/fixture-scripts.test.mjs +0 -112
  871. package/templates/_agents/scripts/gate-checklist.mjs +0 -209
  872. package/templates/_agents/scripts/gate-checklist.test.mjs +0 -201
  873. package/templates/_agents/scripts/gate-seg.mjs +0 -54
  874. package/templates/_agents/scripts/gate-seg.test.mjs +0 -112
  875. package/templates/_agents/scripts/gen-effective-policy.mjs +0 -107
  876. package/templates/_agents/scripts/gen-effective-policy.test.mjs +0 -100
  877. package/templates/_agents/scripts/gen-verify-evidence.mjs +0 -107
  878. package/templates/_agents/scripts/gen-verify-evidence.test.mjs +0 -84
  879. package/templates/_agents/scripts/gen-wiki-board.mjs +0 -276
  880. package/templates/_agents/scripts/gen-wiki-board.test.mjs +0 -249
  881. package/templates/_agents/scripts/gen-workflow-dashboard.mjs +0 -251
  882. package/templates/_agents/scripts/gen-workflow-dashboard.test.mjs +0 -188
  883. package/templates/_agents/scripts/gen-workflow-index.mjs +0 -201
  884. package/templates/_agents/scripts/gen-workflow-index.test.mjs +0 -152
  885. package/templates/_agents/scripts/gen-workflow-metrics.mjs +0 -466
  886. package/templates/_agents/scripts/gen-workflow-metrics.test.mjs +0 -343
  887. package/templates/_agents/scripts/git-merge-jsonl.mjs +0 -63
  888. package/templates/_agents/scripts/git-merge-jsonl.test.mjs +0 -125
  889. package/templates/_agents/scripts/judgment-ledger.mjs +0 -65
  890. package/templates/_agents/scripts/judgment-ledger.test.mjs +0 -129
  891. package/templates/_agents/scripts/kb-cache-evict.mjs +0 -50
  892. package/templates/_agents/scripts/kb-cache-evict.test.mjs +0 -104
  893. package/templates/_agents/scripts/kb-search.mjs +0 -413
  894. package/templates/_agents/scripts/kb-search.test.mjs +0 -299
  895. package/templates/_agents/scripts/lane-surface-audit.mjs +0 -143
  896. package/templates/_agents/scripts/lane-surface-audit.test.mjs +0 -93
  897. package/templates/_agents/scripts/ledger-doc-chain.test.mjs +0 -166
  898. package/templates/_agents/scripts/ledger-loader.mjs +0 -108
  899. package/templates/_agents/scripts/ledger-loader.test.mjs +0 -131
  900. package/templates/_agents/scripts/ledger-prune.mjs +0 -96
  901. package/templates/_agents/scripts/ledger-prune.test.mjs +0 -120
  902. package/templates/_agents/scripts/ledger-shards.mjs +0 -344
  903. package/templates/_agents/scripts/ledger-shards.test.mjs +0 -356
  904. package/templates/_agents/scripts/ledger-ts-monotonic.test.mjs +0 -135
  905. package/templates/_agents/scripts/level-criteria.mjs +0 -231
  906. package/templates/_agents/scripts/level-criteria.test.mjs +0 -281
  907. package/templates/_agents/scripts/mechanism-retire-watch.mjs +0 -183
  908. package/templates/_agents/scripts/mechanism-retire-watch.test.mjs +0 -114
  909. package/templates/_agents/scripts/papercut-debt-controller.mjs +0 -141
  910. package/templates/_agents/scripts/papercut-debt-controller.test.mjs +0 -127
  911. package/templates/_agents/scripts/papercut-debt-sensor.mjs +0 -170
  912. package/templates/_agents/scripts/papercut-debt-sensor.test.mjs +0 -146
  913. package/templates/_agents/scripts/pipeline-run-docs.mjs +0 -76
  914. package/templates/_agents/scripts/pipeline-run-run.mjs +0 -63
  915. package/templates/_agents/scripts/pipeline-run.mjs +0 -867
  916. package/templates/_agents/scripts/pipeline-run.test.mjs +0 -517
  917. package/templates/_agents/scripts/policy.mjs +0 -281
  918. package/templates/_agents/scripts/pre-push.test.mjs +0 -105
  919. package/templates/_agents/scripts/resolve-merge-conflicts.mjs +0 -110
  920. package/templates/_agents/scripts/resolve-merge-conflicts.test.mjs +0 -87
  921. package/templates/_agents/scripts/rewrite-file.mjs +0 -133
  922. package/templates/_agents/scripts/rewrite-file.test.mjs +0 -148
  923. package/templates/_agents/scripts/rule-budget.mjs +0 -96
  924. package/templates/_agents/scripts/rule-budget.test.mjs +0 -118
  925. package/templates/_agents/scripts/run-tests.mjs +0 -99
  926. package/templates/_agents/scripts/run-tests.test.mjs +0 -105
  927. package/templates/_agents/scripts/solidify-task.mjs +0 -109
  928. package/templates/_agents/scripts/solidify-task.test.mjs +0 -129
  929. package/templates/_agents/scripts/stage-gates.mjs +0 -343
  930. package/templates/_agents/scripts/stage-gates.test.mjs +0 -105
  931. package/templates/_agents/scripts/trust-mode.mjs +0 -67
  932. package/templates/_agents/scripts/trust-mode.test.mjs +0 -110
  933. package/templates/_agents/scripts/verify-wiki-consistency.mjs +0 -253
  934. package/templates/_agents/scripts/verify-wiki-consistency.test.mjs +0 -123
  935. package/templates/_agents/scripts/verify.mjs +0 -345
  936. package/templates/_agents/scripts/verify.test.mjs +0 -373
  937. package/templates/_agents/scripts/wf-journal.mjs +0 -231
  938. package/templates/_agents/scripts/wf-journal.test.mjs +0 -216
  939. package/templates/_agents/scripts/wiki-search.mjs +0 -19
  940. package/templates/_agents/scripts/wiki-search.test.mjs +0 -57
  941. package/templates/_agents/scripts/workflow-board-server.mjs +0 -393
  942. package/templates/_agents/scripts/workflow-board-server.test.mjs +0 -201
  943. package/templates/_agents/scripts/workflow-enums.mjs +0 -70
  944. package/templates/_agents/scripts/workflow-enums.test.mjs +0 -118
  945. package/templates/_agents/scripts/workflows-check.mjs +0 -260
  946. package/templates/_agents/scripts/workflows-check.test.mjs +0 -278
  947. package/templates/_agents/scripts-test-exempt.txt +0 -16
  948. package/templates/_agents/skills/papercut-fix/SKILL.md +0 -60
  949. package/templates/_agents/skills/papercut-fix/references/response-template.md +0 -81
  950. package/templates/_agents/skills/review-method/SKILL.md +0 -58
  951. package/templates/_agents/skills/verify-ui/SKILL.md +0 -61
  952. package/templates/_agents/skills/wiki/SKILL.md +0 -106
  953. package/templates/_agents/workflow-enums.txt +0 -26
  954. package/templates/_agents/workflow-modules.txt +0 -11
  955. package/templates/_agents/workflows/_TEMPLATE.md +0 -75
  956. package/templates/_agents/workflows/pipeline-closing.md +0 -28
  957. package/templates/_agents/workflows//347/244/272/344/276/213-/345/271/266/350/241/214/345/256/236/347/216/260/350/257/204/345/256/241.md +0 -16
  958. package/templates/_githooks/commit-msg +0 -17
  959. package/templates/_githooks/post-commit +0 -10
  960. package/templates/_githooks/pre-commit +0 -126
  961. package/templates/_githooks/pre-merge-commit +0 -29
  962. package/templates/_githooks/pre-push +0 -136
  963. package/templates/_github/workflows/kit-ci.yml +0 -49
  964. package/templates/wiki/INDEX.md +0 -73
  965. package/templates/wiki/drafts-archive/README.md +0 -3
  966. package/templates/wiki//344/272/247/345/223/201/351/234/200/346/261/202/README.md +0 -3
  967. package/templates/wiki//345/274/200/345/217/221/346/226/271/346/241/210/README.md +0 -3
  968. package/templates/wiki//346/225/260/346/215/256/347/273/264/346/212/244/README.md +0 -3
  969. package/templates/wiki//346/265/213/350/257/225/346/212/245/345/221/212/README.md +0 -3
  970. package/templates/wiki//347/224/250/346/210/267/345/212/237/350/203/275/README.md +0 -3
  971. package/templates/wiki//347/237/245/350/257/206/346/262/211/346/267/200/346/200/273/350/247/210.html +0 -77
  972. package/templates/wiki//351/241/271/347/233/256/350/247/204/350/214/203/README.md +0 -3
  973. package/templates/wiki//351/241/271/347/233/256/350/256/241/345/210/222/README.md +0 -3
  974. package/templates/workflow/README.md +0 -91
  975. package/templates/workflow/delegations.md +0 -29
  976. package/templates/workflow/incidents/_TEMPLATE.md +0 -51
  977. package/templates/workflow/intents/_TEMPLATE.md +0 -51
  978. package/templates/workflow/papercuts.md +0 -9
  979. package/templates/workflow/plans/_TEMPLATE.md +0 -47
  980. package/templates/workflow/regression-checklist.md +0 -23
  981. package/templates/workflow/specs/_TEMPLATE.md +0 -80
  982. /package/templates/{_agents → engine/.agents}/board/marked.min.js +0 -0
  983. /package/templates/{_agents/workflows → engine/.agents/pipelines}/steps//347/244/272/344/276/213-/351/203/250/347/275/262/351/252/214/350/257/201.md" +0 -0
  984. /package/templates/{_agents → engine/.agents}/scripts/git-core.mjs +0 -0
@@ -1,277 +0,0 @@
1
- #!/usr/bin/env node
2
- // check-metric-claims — 检查 16「量化断言指标签名对账」实现(2026-09-28 claim-exceeds-fix 引入;
3
- // 2026-09-28 check16-inline-debt 自 check-loop.mjs 原内联块迁出为独立模块——检查 16 自带三层子结构
4
- // (登记表解析 / 装户取数器载入 / 签名扫描),内联时与检查 1-15 的主扫描流搅在同一文件;
5
- // 迁出后 check-loop 只留判据摘要 + ctx 组装 + 调用,判据语义 / 消息文案 / exit 语义零变化)。
6
- // 判据(与 check-loop.mjs 头部检查项清单 16 同源):
7
- // 活跃态文档(draft/approved/open)中的 `{{指标名}}`(小写点分)签名须替换为实时值,留签名=未回填=warning;
8
- // 只查显式签名、不全文扫数字(历史叙述假阳性恒 0);未登记签名 / 取数器缺失 → fail-loud 出账;
9
- // 登记表缺失 → 静默跳过(未启用该检查的装户零噪声);装户自有指标走 .agents/metric-derivers.cjs(CJS 契约,内置优先)。
10
- // 契约:runCheck16(ctx) 由 check-loop.mjs 调用(调用位置在检查 15 之后——warnings 按插入序输出,
11
- // 位置变化会改变输出行序);ctx 显式携带本检查引用的外层符号(以代码实际引用集为准):
12
- // ROOT / ENUMS / docFiles / fmGet / inSet / isTracked / linesOf / readdirOrNull / warnings。
13
- // 不隐式读 check-loop 闭包——迁出前后行为逐字节一致(check-loop 全量输出 diff 基线验证)。
14
- // docFiles / isTracked 使扫描面与取数面和检查 1-15 同口径(tracked 过滤链单源定义于 check-loop.mjs docFiles)。
15
- // 本文件只 import node:* 内置模块(无同目录依赖;先例:check-loop.mjs import 同目录 workflow-enums.mjs)。
16
- // 测试:node templates/_agents/scripts/check-loop.test.mjs(黑盒跑整脚本,场景组「检查 16」)
17
- import fs from 'node:fs';
18
- import path from 'node:path';
19
- import { createRequire } from 'node:module';
20
- import { readLedgerLines } from './ledger-loader.mjs';
21
-
22
- export function runCheck16(ctx) {
23
- const { ROOT, ENUMS, docFiles, fmGet, inSet, isTracked, linesOf, readdirOrNull, warnings } = ctx;
24
- const mcFile = path.join(ROOT, '.agents', 'metric-claims.txt');
25
- if (fs.existsSync(mcFile)) {
26
- const ledgerLines = () => {
27
- // 读法收敛 ledger-loader(2026-10-12 ledger-loader-p1):本指标按**原始文本行**计数
28
- // (total / 含 "batch" 字段的行数),故用 lines 视图而非 rows 视图。
29
- const ls = readLedgerLines(ROOT);
30
- return { total: ls.length, withBatch: ls.filter((l) => /"batch"/.test(l)).length };
31
- };
32
- // 内置取数器:全部本地确定性、零网络。**装户零配置即用**(不依赖任何装户文件)。
33
- // **取数与扫描面同口径(复核 P2;2026-09-28 check16-inline-debt 起单源化)**:文档扫描与取数统计
34
- // 统一走 ctx.docFiles()——过滤链(.md ∧ 数字前缀 ∧ tracked)全仓唯一定义于 check-loop.mjs 的
35
- // docFiles,本文件不再自持 countDocs 复刻。首版独立 readdir 数盘面曾把并行会话的**未跟踪**新档
36
- // 算进取数(盘面 60 / HEAD 59),令「签名填对了」却是别的读者复现不出的数;单源后
37
- // 「扫描看得到的文档集 == 取数统计的文档集」由构造保证,口径漂移在编译期即不可能。
38
- const derivers = {
39
- 'ledger.lines': () => ledgerLines().total,
40
- 'ledger.linesWithBatch': () => ledgerLines().withBatch,
41
- 'ledger.linesWithoutBatch': () => ledgerLines().total - ledgerLines().withBatch,
42
- 'docs.count.intents': () => docFiles('intents').length,
43
- 'docs.count.specs': () => docFiles('specs').length,
44
- 'docs.count.plans': () => docFiles('plans').length,
45
- 'docs.count.incidents': () => docFiles('incidents').length,
46
- 'docs.count.all': () => docFiles('intents').length + docFiles('specs').length + docFiles('plans').length + docFiles('incidents').length,
47
- };
48
- // ---- 装户侧取数器(2026-09-28 adopter-derivers;修「owned 登记表配 managed 取数器」P1)----
49
- // 背景:登记表是 owned(装户自增指标),取数器却曾硬编码在本文件(managed)——装户一新增指标
50
- // 就报「无取数器」,唯一出路是改本文件,而那是 managed:sync 永久报「本地已改」+ doctor WARN
51
- // + 本脚本因供应链防线**跳过执行**(门禁静默停摆)。故改为分层:
52
- // ① 内置优先(行为与今完全一致,装户零配置可用);② 未命中则查装户模块 `.agents/metric-derivers.cjs`
53
- // **必须是 CJS(`.cjs` + module.exports)**(2026-09-28 跨版本实测修正):
54
- // 首版约定 `.mjs` 并用 `createRequire` 载入,在 Node v24.12 上实测可用(**故本机没暴露问题**);
55
- // 但跨版本实测(真下 18.20.5 / 20.18.0 / 22.11.0 二进制跑)**三者全部 `ERR_REQUIRE_ESM`**——
56
- // `require(esm)` 只在 Node ≥20.19 / ≥22.12 默认可用,Node 18 从未支持。而本仓 engines 写
57
- // `>=18.0.0`、CI 矩阵跑 18/22 → **装户取数功能在 CI 目标版本上完全不可用**(fail-loud 正常、
58
- // 不崩,但功能不工作)。故改用 CJS:`createRequire` 载入 `.cjs` 在 18/20/22/24 全线可用,
59
- // 且**仍是同步**(无须把本脚本改成 async 主线)。契约要求同步函数也与本检查「零网络、
60
- // 本地确定性」的前提一致(异步的唯一真实收益是网络/并发 IO,此处都不允许)。
61
- // **失败一律响亮、绝不静默降级**(沿 claim-exceeds-fix「假绿比红危险」与本检查自身语法错教训):
62
- // 若载入失败就「只用内置指标」,装户会看到「引用了 my.metric → 未登记」,看起来像**自己忘了登记**,
63
- // 而真因是模块坏了——他会去 registry 反复核对,问题永远查不到。故载入/调用失败均出明确 WARN。
64
- const adopterModRel = '.agents/metric-derivers.cjs';
65
- // 旧路径(首版 .mjs):若存在则**明确提示已改用 .cjs**,避免装户对着「无取数器」查不出所以然
66
- const adopterLegacyRel = '.agents/metric-derivers.mjs';
67
- let adopterState = null; // { ok:true, derivers } | { ok:false, errors:[...] } —— 懒载入 + 单次运行内缓存
68
- const loadAdopterDerivers = () => {
69
- if (adopterState) return adopterState;
70
- const abs = path.join(ROOT, adopterModRel);
71
- if (!fs.existsSync(abs)) {
72
- // 常见误写:仍用首版的 .mjs 路径 → 给出可操作的迁移指引(而非任其对着「无取数器」猜)
73
- if (fs.existsSync(path.join(ROOT, adopterLegacyRel))) {
74
- adopterState = {
75
- ok: false,
76
- errors: [`${adopterModRel} 不存在,但发现旧版路径 ${adopterLegacyRel}——该路径已于 2026-09-28 弃用(\`require(esm)\` 在 Node 18/22 不可用,实测 ERR_REQUIRE_ESM)。请改名为 ${adopterModRel} 并把写法改为 CommonJS:\`module.exports = { derivers: { ... } }\``],
77
- };
78
- return adopterState;
79
- }
80
- adopterState = { ok: true, derivers: {} }; // 缺失=正常态,零告警
81
- return adopterState;
82
- }
83
- try {
84
- const req = createRequire(import.meta.url);
85
- const mod = req(abs);
86
- // CJS / ESM 双兼容取导出:CJS 走 module.exports.derivers;若装户误用了 ESM 语法而环境恰好
87
- // 支持(新 Node 的 require(esm)),default 里也可能挂 derivers——两处都认,避免假阴性。
88
- const d = (mod && mod.derivers) || (mod && mod.default && mod.default.derivers);
89
- if (!d || typeof d !== 'object' || Array.isArray(d)) {
90
- adopterState = { ok: false, errors: [`${adopterModRel} 未导出 \`derivers\` 对象(实际导出形态:${d === undefined ? '无 derivers 键' : Array.isArray(d) ? 'array' : typeof d})——载入失败不降级,请用 \`module.exports = { derivers: { ... } }\``] };
91
- return adopterState;
92
- }
93
- adopterState = { ok: true, derivers: d };
94
- } catch (e) {
95
- const hint = /ERR_REQUIRE_ESM/.test(String(e && e.code)) ? `(该错误表示模块被当成了 ESM——本契约要求 CommonJS:文件后缀 .cjs 且用 \`module.exports = { derivers: {...} }\`)` : '';
96
- adopterState = { ok: false, errors: [`${adopterModRel} 载入失败:${String(e && e.message ? e.message : e).split('\n')[0]}${hint}——载入失败不降级(静默降级会让你误以为「忘了登记」而非「模块坏了」)`] };
97
- }
98
- return adopterState;
99
- };
100
- // deriverCtx:注入给装户取数器的同步辅助(免其重复造轮子;2026-09-28 check16-inline-debt 迁出时
101
- // 自 `ctx` 改名——runCheck16 的参数 ctx 已被外层符号注入契约占用,避免遮蔽混淆)
102
- // **glob 逐字符转义**(自查修正):首版用「先整体转义特殊字符、再 replace 星号」的写法,
103
- // 实测 `src/**/*.ts` 匹配不到 `src/a/b/c.ts`、「**/*.md」匹配不到 `a/b/c.md`——因为 `**/`
104
- // 在被替换前已被字符类转义破坏。改为逐字符状态机,语义明确:
105
- // `**/` → 任意层级(含零层);`**` → 任意(可跨 /);`*` → 段内任意(不跨 /);`?` → 段内单字符
106
- // 其余一律字面转义(故 `a.b.sql` 的点是字面点、`[`/`{` 也按字面处理——本 helper 不承诺
107
- // 字符类 / 花括号展开,避免装户误以为支持完整 glob 语法;不支持即按字面匹配,行为可预测)
108
- const globToRegExp = (p) => {
109
- const s = String(p);
110
- let re = '';
111
- for (let i = 0; i < s.length; i++) {
112
- const c = s[i];
113
- if (c === '*' && s[i + 1] === '*') {
114
- if (s[i + 2] === '/') { re += '(?:.*/)?'; i += 2; } // `**/` 含零层
115
- else { re += '.*'; i += 1; } // `**` 跨段
116
- } else if (c === '*') re += '[^/]*';
117
- else if (c === '?') re += '[^/]';
118
- else re += c.replace(/[.+^${}()|[\]\\]/, '\\$&');
119
- }
120
- return new RegExp('^' + re + '$');
121
- };
122
- // 遍历时**跳过重目录 + 防环**(自查 + 复核 P2 修正):
123
- // · 剪枝 node_modules / .git / cache——无剪枝时 `deriverCtx.glob('**/*')` 会走进依赖树,既慢又会把
124
- // 依赖文件算进取数(对「我项目有多少个 X」是错的数)。
125
- // · **visited 集合防环**:复核实测软链接/junction 成环时递归到 depth 128、同一文件重复 64 份
126
- // 才被 statSync 的 ELOOP 拦下;POSIX 无 MAX_PATH 时该递归无界。故按**真实路径**去重。
127
- const WALK_SKIP = new Set(['node_modules', '.git', 'cache']);
128
- const walkFiles = (dir, out = [], rel = '', visited = new Set()) => {
129
- let real = dir;
130
- try { real = fs.realpathSync(dir); } catch { /* 不可解析则按原路径处理 */ }
131
- if (visited.has(real)) return out; // 环 → 剪枝
132
- visited.add(real);
133
- for (const e of readdirOrNull(dir) || []) {
134
- if (WALK_SKIP.has(e)) continue;
135
- const abs = path.join(dir, e);
136
- const r = rel ? `${rel}/${e}` : e;
137
- let st = null;
138
- try { st = fs.statSync(abs); } catch { continue; }
139
- if (st.isDirectory()) walkFiles(abs, out, r, visited);
140
- else out.push(r);
141
- }
142
- return out;
143
- };
144
- const deriverCtx = {
145
- root: ROOT,
146
- read: (rel) => { try { return fs.readFileSync(path.join(ROOT, rel), 'utf8').replace(/\r\n/g, '\n'); } catch { return ''; } },
147
- glob: (pattern) => { const re = globToRegExp(pattern); return walkFiles(ROOT).filter((r) => re.test(r)); },
148
- countFiles: (dir, pred) => walkFiles(path.join(ROOT, dir)).filter((r) => (typeof pred === 'function' ? pred(r) : true)).length,
149
- };
150
- // resolveDeriver(name) → { fn } | { error }(**绝不抛出**:引擎不因装户代码崩溃)
151
- const resolveDeriver = (name) => {
152
- if (derivers[name]) return { fn: derivers[name], builtin: true };
153
- const st = loadAdopterDerivers();
154
- if (!st.ok) return { error: st.errors.join(';') };
155
- const fn = st.derivers[name];
156
- if (typeof fn !== 'function') {
157
- if (fn !== undefined) return { error: `${adopterModRel} 的「${name}」不是函数(实际类型:${typeof fn})` };
158
- return { error: `无对应取数器——内置 8 个指标均不含该名,${adopterModRel} 亦未定义(登记了却没实现=其实没查)` };
159
- }
160
- return { fn, builtin: false };
161
- };
162
- // 装户模块载入失败:**独立成条**(2026-09-28 adopter-derivers)。
163
- // 关键设计(真绿 vs 假绿的分界):载入失败若只表现为「该指标无取数器」,装户会看到
164
- // 「引用了 my.metric → 未登记」,看起来像**自己忘了登记**,而真因是模块坏了——他会去 registry
165
- // 反复核对,永远查不到。故此处单独出一条,明示文件与错误,与「真的没登记」可区分。
166
- //
167
- // **仅在真的需要装户指标时才报**(复核 P2 更正):首版在解析登记表前无条件出账——若登记表只有
168
- // 内置指标、而装户留了个半成品模块(或模块坏掉但没人用),会平白多一条不可消除的 advisory。
169
- // 沿本仓红线「无判定依据的行不产出噪声」:先看登记表是否真的有**非内置**指标,再决定报不报。
170
- const mcLines = (linesOf(mcFile) || []).map((l) => l.trim()).filter((l) => l && !l.startsWith('#'));
171
- const hasAdopterMetric = mcLines.some((l) => {
172
- const mm = /^([A-Za-z][\w.]*)\s*=\s*([A-Za-z][\w.]*)$/.exec(l);
173
- return mm && !derivers[mm[1]];
174
- });
175
- const adopterLoad = loadAdopterDerivers();
176
- if (!adopterLoad.ok && hasAdopterMetric) {
177
- for (const e of adopterLoad.errors) warnings.push(`- [WARN 装户取数器载入失败] ${e}`);
178
- }
179
- // 解析登记表:`<指标名> = <取数表达式>`(表达式须与指标名同形,二者不一致即登记笔误)
180
- const declared = new Map();
181
- const precedenceWarned = new Set(); // 同名 advisory 按指标去重(复核 P2 更正:首版按行重复出账)
182
- for (const line of mcLines) {
183
- const m = /^([A-Za-z][\w.]*)\s*=\s*([A-Za-z][\w.]*)$/.exec(line);
184
- if (!m) { warnings.push(`- [WARN 指标登记] .agents/metric-claims.txt 行格式非法(应为 \`指标名 = 取数表达式\`):${line}`); continue; }
185
- if (m[1] !== m[2]) { warnings.push(`- [WARN 指标登记] 登记名与取数表达式不一致:${m[1]} ≠ ${m[2]}`); continue; }
186
- const r = resolveDeriver(m[1]);
187
- if (r.error) {
188
- // 无取数器(内置无 + 装户模块无同名)或装户模块载入失败 → 明示可操作方向
189
- const hint = adopterLoad.ok
190
- ? `若为项目自有指标,请在 ${adopterModRel} 的 derivers 中实现(契约见 .agents/metric-claims.txt 头部)`
191
- : `且 ${adopterModRel} 载入失败(见上方「装户取数器载入失败」条目——**这不是「忘了登记」**)`;
192
- warnings.push(`- [WARN 指标登记] 指标「${m[1]}」无对应取数器(fail-loud:登记了却没实现=其实没查)——内置 8 指标不含该名,${hint}`);
193
- // **不 continue**:该指标在 registry 里确实登记过,故仍计入 declared——
194
- // 否则引用它的文档会被误报为「未登记」(把「模块坏了」伪装成「忘了登记」,正是本单要防的假绿)。
195
- // 取数失败在扫描阶段以「指标取数失败」单独出账,两条信息不互相掩盖。
196
- } else if (r.builtin && adopterLoad.ok && typeof adopterLoad.derivers[m[1]] === 'function' && !precedenceWarned.has(m[1])) {
197
- // 内置与装户同名:内置优先(保持本仓/存量行为稳定),并明示装户定义被忽略(**按指标去重**)
198
- precedenceWarned.add(m[1]);
199
- warnings.push(`- [WARN 指标登记] 指标「${m[1]}」由引擎内置提供,${adopterModRel} 中的同名定义**被忽略**(内置优先)——如需改用自有实现,请换一个指标名`);
200
- }
201
- declared.set(m[1], true);
202
- }
203
- // 扫活跃态文档(沿检查 4 现有尺度:终态件的历史数字是历史叙述,不扫)。
204
- // tracked-only 口径(2026-09-28 check16-inline-debt T2,与检查 1-15 统一):
205
- // 子目录走 ctx.docFiles(sub)——过滤链(.md ∧ 数字前缀 ∧ tracked)全仓唯一处定义,首版独立
206
- // readdir 扫描不含 tracked 过滤,会把并行会话的**未跟踪**半成品也拖进对账面(别人的草稿不该
207
- // 拦我的 push——沿仓库模式「只扫已提交(HEAD)内容」总口径);
208
- // 根级 workflow/*.md 滤 .md ∧ tracked(无数字前缀约束——README/INDEX/delegations 等本无前缀,
209
- // 维持现状;根级本无 _TEMPLATE,无需显式排除)。
210
- const activeSet16 = (sub) => (sub === 'incidents' ? ENUMS['incident.status.active'] : ENUMS['doc.status.active']);
211
- const scanFiles16 = [];
212
- for (const sub of ['intents', 'specs', 'plans', 'incidents']) {
213
- for (const abs of docFiles(sub)) {
214
- if (!inSet(fmGet(abs, '状态'), activeSet16(sub))) continue;
215
- scanFiles16.push({ rel: path.relative(ROOT, abs).split(path.sep).join('/'), abs });
216
- }
217
- }
218
- for (const f of readdirOrNull(path.join(ROOT, 'workflow')) || []) {
219
- const abs = path.join(ROOT, 'workflow', f);
220
- if (f.endsWith('.md') && isTracked(abs)) scanFiles16.push({ rel: `workflow/${f}`, abs });
221
- }
222
- for (const { rel, abs } of scanFiles16) {
223
- const ls = linesOf(abs) || [];
224
- ls.forEach((line, i) => {
225
- // 签名形态收窄为**小写点分**(如 `{{ledger.lines}}`):装户模板占位符是全大写 SCREAMING_CASE
226
- // (构建命令 / 看板端口 / 项目名三类,由 init 渲染替换,非本检查对象)
227
- // ——不收窄会对这些合法的模板占位符产生大量假阳性(实测:本仓 plans 内 11 处)。
228
- // **转义(2026-09-28,本检查在自己的文档上抓到该需求)**:讲语法 / 举例 / 引用告警原文的
229
- // 文档在签名前加反斜杠(`\{{ledger.lines}}`)表示「此处是示意、非断言」——否则本检查
230
- // 会把「文档在教怎么用签名」误判为「作者忘了回填」。选显式转义而非「同句含『如/例』等标记词
231
- // 即豁免」的启发式:后者会按措辞松紧漂移,且作者能无意中触发豁免而漏过真断言。
232
- // **转义按「逐个出现」生效、不按整行**(复核自查 P1 更正):首版实现是「行内出现任一 `\{{`
233
- // 即整行跳过」,实测可被这样藏住真断言——`… \{{a.b}} 示意… {{ledger.lines}} 未回填` 整行静默
234
- // 放过。故改为用带后顾的否匹配排除转义位,同行的真签名照常出账。
235
- for (const m of line.matchAll(/(?<!\\)\{\{([a-z][a-z0-9]*(?:\.[a-z0-9]+)+)\}\}/g)) {
236
- const name = m[1];
237
- if (!declared.has(name)) {
238
- warnings.push(`- [WARN 指标未登记] ${rel}:${i + 1} 引用 {{${name}}} 但 .agents/metric-claims.txt 未登记该指标(未登记=无从对账)`);
239
- continue;
240
- }
241
- const r = resolveDeriver(name);
242
- if (r.error) {
243
- // 取数器不可用(含装户模块载入失败 / 无该名 / 定义非法)——**响亮出账,绝不静默跳过**
244
- warnings.push(`- [WARN 指标取数失败] ${rel}:${i + 1} {{${name}}} 无法取数:${r.error}`);
245
- continue;
246
- }
247
- let real;
248
- try {
249
- real = r.fn(deriverCtx);
250
- } catch (e) {
251
- warnings.push(`- [WARN 指标取数失败] ${rel}:${i + 1} {{${name}}} 取数器抛异常:${String(e && e.message ? e.message : e).split('\n')[0]}`);
252
- continue;
253
- }
254
- // 返回值必须是有限数字:Promise(误写 async)/ NaN / 字符串 / undefined 一律拦下并明示类型
255
- if (typeof real !== 'number' || !Number.isFinite(real)) {
256
- const kind = real && typeof real.then === 'function' ? 'Promise(本检查要求**同步**函数,请去掉 async/await)' : `${typeof real}${typeof real === 'number' ? `(${real})` : ''}`;
257
- warnings.push(`- [WARN 指标取数失败] ${rel}:${i + 1} {{${name}}} 取数器返回值不是有限数字:${kind}`);
258
- continue;
259
- }
260
- // 判据:签名**必须**被替换为实时值——留有 `{{...}}` 即视为未回填(写作期占位,关单前须落实)
261
- warnings.push(`- [WARN 指标待回填] ${rel}:${i + 1} {{${name}}} 实时值 = ${real}——请把签名替换为该数字(留签名=未回填)`);
262
- }
263
- // **形态不符的签名也不静默放过(复核 P2 更正)**:首版只认严格小写点分形态,于是
264
- // `{{Ledger.Lines}}` / `{{ ledger.lines }}`(含空格)这类**明显本意是签名**的写法
265
- // 既不匹配、也不出账——静默漏过,且绕开了「未登记」的 fail-loud。此处补一道:
266
- // 非转义的 `{{...}}` 中,凡**不是**严格形态、且**不是**装户模板占位符(全大写 SCREAMING_CASE)
267
- // 的,一律提示形态不符(作者才能立刻发现笔误)。
268
- for (const m of line.matchAll(/(?<!\\)\{\{([^{}]+)\}\}/g)) {
269
- const raw = m[1];
270
- if (/^[a-z][a-z0-9]*(?:\.[a-z0-9]+)+$/.test(raw)) continue; // 严格形态,上面已处理
271
- if (/^[A-Z][A-Z0-9_]*$/.test(raw)) continue; // 装户模板占位符(init 渲染对象,非本检查面)
272
- warnings.push(`- [WARN 指标形态] ${rel}:${i + 1} \`{{${raw}}}\` 不是合法签名形态(应为小写点分,如 {{ledger.lines}})——若本意是量化断言,请改正形态;若只是举例,请加反斜杠转义`);
273
- }
274
- });
275
- }
276
- }
277
- }
@@ -1,64 +0,0 @@
1
- // check-prejudgment.mjs — 检查 25:路由预判一致性 [warning](2026-10-13 B6b-2 自 Shipyard.Material
2
- // check-loop-sections/s25-prejudgment.mjs 回灌;段体判据逐字对齐,出处沿革留痕在包源仓 git 历史与
3
- // CHANGELOG——装户径不引实例路径)
4
- // 背景(prejudgment-ledger):类型误路由(修复被当新需求 → 跳过 incident 立项与 kb-search 历史检索)
5
- // 是路由自动识别的静默盲区;级别判低已有「红线判低」hard 与泳道门兜底,但「入口预判 vs 实际落位」的
6
- // 偏离本身不可见。本段只做 advisory 比对:frontmatter「预判: kind=<kind> level=<L1|L2|L3>」在场才检——
7
- // kind 与入口类型不符 / level 与「级别」字段不符 / 词表非法 → WARN,不阻断。
8
- // kind 语义源 = pipeline-run.mjs KINDS(require/fix/verify/review/deploy);类型只对 intents(≡require)/
9
- // incidents(≡fix) 执法——plans/specs 是两道共用件不判类型、只比对级别。
10
- // 缺字段零告警(存量宽容不回填,不做强制前置)——灰度数据经 judgments.jsonl(WARN 预判* 计数)
11
- // 月度对账后再议升格,退役/升格阈值由 mechanism-registry §25 行承载。
12
- // kit 适配(源仓→kit 逐条):无判据改动。kind 词表沿源仓 s25 等价落——pipeline-run.mjs 的 KINDS 为
13
- // 模块内常量、无导出(两侧同状),故本文件按源仓同款内联声明 + 注释互引(改任一侧须同步,见下)。
14
- import path from 'node:path';
15
-
16
- export function run(ctx) {
17
- const { ROOT, WF, DOC_DIRS, ENUMS, inSet, fmGet, isTracked, readdirOrNull, warnings } = ctx;
18
- // --- 25. 路由预判一致性 [warning] ---
19
- // kind 词表单源 = pipeline-run.mjs KINDS(该处为模块内常量、未导出——源仓 s25 同款内联等价落);
20
- // 两侧各一份靠本注释互引,改词表须同步(pipeline-run 校验文案 `kind 须为 …` 同步)。
21
- const KINDS = ['require', 'fix', 'verify', 'review', 'deploy'];
22
- const rankOf = (lv) => Number(String(lv).replace(/^L/, '')) || 0;
23
- for (const sub of DOC_DIRS) {
24
- const dir = path.join(ROOT, WF, sub);
25
- for (const f of readdirOrNull(dir) || []) {
26
- if (!f.endsWith('.md') || f === '_TEMPLATE.md') continue;
27
- const abs = path.join(dir, f);
28
- if (!isTracked(abs)) continue;
29
- const pj = fmGet(abs, '预判');
30
- if (!pj) continue;
31
- const rel = `${WF}/${sub}/${f}`;
32
- // 终态文档(2026-10-15):形态/词表类告警跳过——终态受检查 15 内容绑定不可修订,此类 WARN 永不可
33
- // 消(「不可消除噪声」红线);类型/级别比对保留——那是路由审计的本体信号,灰度对账照常采集。
34
- // (终态并集 = doc 终态 done/superseded/cancelled + incident 终态 fixed/closed——两侧枚举无单一键
35
- // 覆盖该并集,故与源仓 s25 同款内联声明。)
36
- const terminalDoc = ['done', 'superseded', 'cancelled', 'fixed', 'closed'].includes(fmGet(abs, '状态'));
37
- const kv = {};
38
- for (const m of pj.matchAll(/(kind|level)=([^\s]+)/g)) kv[m[1]] = m[2];
39
- if (!Object.keys(kv).length) {
40
- if (!terminalDoc) warnings.push(`- [WARN 预判字段不可解析] 须形如「预判: kind=<kind> level=<L1|L2|L3>」:${rel}`);
41
- continue;
42
- }
43
- if (kv.kind && !KINDS.includes(kv.kind) && !terminalDoc) {
44
- warnings.push(`- [WARN 预判字段不可解析] kind=${kv.kind} 不在词表(${KINDS.join('/')}):${rel}`);
45
- }
46
- if (kv.level && !inSet(kv.level, ENUMS['level.all']) && !terminalDoc) {
47
- warnings.push(`- [WARN 预判字段不可解析] level=${kv.level} 不在枚举 level.all:${rel}`);
48
- }
49
- // 类型比对:intents ≡ require、incidents ≡ fix(plans/specs 两道共用,不判类型)
50
- const actualKind = sub === 'incidents' ? 'fix' : sub === 'intents' ? 'require' : null;
51
- if (kv.kind && actualKind && kv.kind !== actualKind) {
52
- warnings.push(`- [WARN 预判类型不符] 预判 kind=${kv.kind} 但落位 ${sub}(实际 kind=${actualKind})——类型误路由会跳过对应道的检索与立档,确认是否有意:${rel}`);
53
- }
54
- // 级别比对:与 frontmatter「级别」字段
55
- if (kv.level) {
56
- const lv = fmGet(abs, '级别');
57
- if (lv && lv !== kv.level) {
58
- const hint = rankOf(lv) < rankOf(kv.level) ? '(判低信号——落位低于预判,复核两问判据)' : '(判高——流程偏重,无害)';
59
- warnings.push(`- [WARN 预判级别不符] 预判 ${kv.level} 落位 ${lv}${hint}:${rel}`);
60
- }
61
- }
62
- }
63
- }
64
- }
@@ -1,45 +0,0 @@
1
- // check-registry.mjs — 检查 22:机制使用量台账 [warning](2026-10-13 B6b-2 自 Shipyard.Material
2
- // check-loop-sections/s22-registry.mjs 回灌;段体判据逐字对齐,出处沿革留痕在包源仓 git 历史与
3
- // CHANGELOG——装户径不引实例路径)
4
- // 背景:门禁只增不减(每道门都有事故背书,但无退役机制)——本检查给「低频机制退役」装强制处置环。
5
- // .agents/mechanism-registry.md 在场才启用(历史 clone / 装户缺文件 = 跳过,沿 lane-surfaces.txt
6
- // 「缺失即跳过」惯例,不制造一次性噪声)。表格式 markdown 管道表,列序固定:
7
- // | 机制 | 门禁位置 | 触发统计口径 | 退役阈值 | 最近触发 | 状态 | 处置期限 |
8
- // 判据:状态 ∈ {现役,待退役,已退役};「待退役」必须填处置期限(日期或批次号)——台账的目的不是记录
9
- // 而是强制处置:没有时间表的退役意向等于永不变退役。触发计数本身半自动(口径列写明统计方法),
10
- // 不进机器门——先有账,再谈自动化。纯 WARN advisory,永不 hard(机制未登记/只有示例行都只出账不拦)。
11
- // kit 适配(源仓→kit 逐条):台账路径平铺 .agents/config/ → .agents/(kit 装户布局无 config/ 层)。
12
- import fs from 'node:fs';
13
- import path from 'node:path';
14
-
15
- export function run(ctx) {
16
- const { ROOT, linesOf, warnings } = ctx;
17
- // --- 22. 机制使用量台账(mechanism-registry;复杂度棘轮的出口)---
18
- {
19
- const regPath = path.join(ROOT, '.agents', 'mechanism-registry.md');
20
- if (fs.existsSync(regPath)) {
21
- const dataRows = (linesOf(regPath) || [])
22
- .filter((l) => /^\|/.test(l))
23
- .filter((l) => !/^\|[\s:|-]+\|?\s*$/.test(l)) // 分隔行
24
- .filter((l) => (l.split('|')[1] || '').trim() !== '机制'); // 表头行
25
- if (!dataRows.length) {
26
- warnings.push('- [WARN 机制台账] 无数据行——表格式:| 机制 | 门禁位置 | 触发统计口径 | 退役阈值 | 最近触发 | 状态 | 处置期限 |');
27
- }
28
- for (const l of dataRows) {
29
- const cells = l.split('|').slice(1, -1).map((c) => c.trim());
30
- if (cells.length !== 7) {
31
- warnings.push(`- [WARN 机制台账] 行列数 ${cells.length} ≠ 7(机制|门禁位置|触发统计口径|退役阈值|最近触发|状态|处置期限):${cells[0] || l.slice(0, 30)}`);
32
- continue;
33
- }
34
- const [name, , , , , status, deadline] = cells;
35
- if (!['现役', '待退役', '已退役'].includes(status)) {
36
- warnings.push(`- [WARN 机制台账] 「${name}」状态非法(须 现役/待退役/已退役):${status}`);
37
- continue;
38
- }
39
- if (status === '待退役' && !deadline) {
40
- warnings.push(`- [WARN 机制台账] 「${name}」待退役但缺处置期限——补时间表,或改回现役并在阈值列写保留理由`);
41
- }
42
- }
43
- }
44
- }
45
- }
@@ -1,96 +0,0 @@
1
- #!/usr/bin/env node
2
- // check-scope.mjs — plan 改动面 ↔ git 变更双向对账(advisory 工具;2026-10-13 自 Shipyard.Material
3
- // 参考实现回灌,源仓沿革留痕在包源仓 git 历史与 CHANGELOG——装户径不引实例路径)
4
- // 用途:解析 plan「改动面 / 任务拆解 / 改动方案」节声明的文件清单,与 git 变更集对账——
5
- // 越界件(改了未声明)= 范围蔓延信号;未落件(声明未改)= plan 滞后或改名信号。check-loop 检查 8
6
- // 的证据对账只做单向交集(提交须触及至少一个声明文件),夹带 plan 外文件不报——本件补越界方向。
7
- // 语义与红线:只读裁决(判红绿,不改任何状态——命名规约 check- 前缀);默认 advisory(exit 0 出报告),
8
- // --strict 时越界件非空 exit 1(供门禁化调用方使用);plan 不可读 exit 2(fail-loud,不静默放行)。
9
- // 文件匹配沿 check-loop 检查 8 宽松规则(f===df / 后缀 / 双向 includes)——声明粒度粗(写目录或部分路径)
10
- // 不误报越界;白名单豁免:workflow/ 台账(intents/specs/plans/incidents/INDEX)、.agents/confirmations.jsonl、
11
- // .agents/confirmations.d/ 分片、package-lock.json——闭环随行件不算越界。
12
- // 测试:node .agents/scripts/check-scope.test.mjs(tmp git 仓 fixture:越界 / 未落 / 白名单 / strict / 无 plan)
13
- // 用法:node .agents/scripts/check-scope.mjs workflow/plans/<name>.md [--base <sha>|--staged] [--strict] [--root <dir>]
14
- // 默认比对工作区(含未跟踪,git status --porcelain 口径);--base <sha> 比对 sha..HEAD 已提交变更;
15
- // --staged 仅比对暂存区。
16
- import fs from 'node:fs';
17
- import path from 'node:path';
18
- import { spawnSync } from 'node:child_process';
19
-
20
- const args = process.argv.slice(2);
21
- let planRel = '', base = '', staged = false, strict = false, rootArg = '';
22
- for (let i = 0; i < args.length; i++) {
23
- const a = args[i];
24
- if (a === '--base') base = args[++i] || '';
25
- else if (a === '--staged') staged = true;
26
- else if (a === '--strict') strict = true;
27
- else if (a === '--root') rootArg = args[++i] || '';
28
- else if (!planRel && !a.startsWith('--')) planRel = a;
29
- }
30
- const ROOT = path.resolve(rootArg || process.cwd());
31
- if (!planRel) { console.error('用法: node .agents/scripts/check-scope.mjs workflow/plans/<name>.md [--base <sha>|--staged] [--strict] [--root <dir>]'); process.exit(2); }
32
- const planAbs = path.isAbsolute(planRel) ? planRel : path.join(ROOT, planRel);
33
- if (!fs.existsSync(planAbs)) { console.error(`plan 不可读: ${planRel}`); process.exit(2); }
34
-
35
- // 声明文件提取——与 check-loop 检查 8 同节同正则(改动面|任务拆解|改动方案),另加扩展名白名单
36
- // (过滤 v1.2.2 之类版本号伪 token:无目录且扩展名不在清单内则弃)
37
- const KNOWN_EXT = new Set(['.md', '.mjs', '.js', '.ts', '.json', '.txt', '.cs', '.csproj', '.sln', '.vue', '.ps1', '.sh', '.yml', '.yaml', '.sql', '.cjs']);
38
- const declared = [];
39
- {
40
- const lines = fs.readFileSync(planAbs, 'utf8').split(/\r?\n/);
41
- let inSec = false;
42
- for (const line of lines) {
43
- if (/^##\s+(改动面|任务拆解|改动方案)/.test(line)) { inSec = true; continue; }
44
- if (inSec && /^##\s+/.test(line)) { inSec = false; continue; }
45
- if (!inSec) continue;
46
- const m = line.match(/([a-zA-Z0-9._/-]+\.[a-zA-Z0-9]+)/);
47
- if (!m) continue;
48
- const tok = m[1].replace(/\\/g, '/');
49
- const ext = tok.slice(tok.lastIndexOf('.'));
50
- if (tok.includes('/') || KNOWN_EXT.has(ext.toLowerCase())) declared.push(tok);
51
- }
52
- }
53
-
54
- const git = (gitArgs, opts = {}) => spawnSync('git', gitArgs, { cwd: ROOT, encoding: 'utf8', maxBuffer: 16 * 1024 * 1024, ...opts });
55
- let changed = [];
56
- if (base) {
57
- const r = git(['diff', '--name-only', `${base}..HEAD`]);
58
- if (r.status !== 0) { console.error(`git diff 失败: ${r.stderr}`); process.exit(2); }
59
- changed = r.stdout.split(/\r?\n/).filter(Boolean);
60
- } else if (staged) {
61
- const r = git(['diff', '--name-only', '--cached']);
62
- if (r.status !== 0) { console.error(`git diff 失败: ${r.stderr}`); process.exit(2); }
63
- changed = r.stdout.split(/\r?\n/).filter(Boolean);
64
- } else {
65
- // 工作区口径:status --porcelain -uall(含未跟踪且逐文件展开——默认折叠成 `?? dir/` 会把整个新目录误判越界)
66
- const r = git(['status', '--porcelain', '-uall']);
67
- if (r.status !== 0) { console.error(`git status 失败: ${r.stderr}`); process.exit(2); }
68
- changed = r.stdout.split(/\r?\n/).filter(Boolean).map((l) => {
69
- const body = l.slice(3);
70
- const ren = body.match(/.* -> (.*)$/); // 重命名取新路径
71
- return (ren ? ren[1] : body).trim().replace(/^"(.*)"$/, '$1');
72
- });
73
- }
74
-
75
- const WHITELIST_RE = /^(?:workflow\/(?:intents|specs|plans|incidents)\/|workflow\/INDEX\.md$|\.agents\/confirmations\.jsonl$|\.agents\/confirmations\.d\/|package-lock\.json$)/;
76
- const norm = (p) => p.replace(/\\/g, '/');
77
- const matches = (f, df) => f === df || f.endsWith(`/${df}`) || f.includes(df) || df.includes(f);
78
-
79
- const outOfScope = changed.filter((f) => !WHITELIST_RE.test(norm(f)) && !declared.some((df) => matches(norm(f), df)));
80
- const notLanded = declared.filter((df) => !changed.some((f) => matches(norm(f), df)));
81
-
82
- console.log(`▶ check-scope(plan 改动面 ↔ git 变更对账): ${planRel}`);
83
- console.log(` 声明 ${declared.length} | 变更 ${changed.length}${base ? `(${base}..HEAD)` : staged ? '(staged)' : '(工作区)'}`);
84
- if (outOfScope.length) {
85
- console.log(' 越界件(改了未声明):');
86
- outOfScope.forEach((f) => console.log(` - ${f}`));
87
- }
88
- if (notLanded.length) {
89
- console.log(' 未落件(声明未变更):');
90
- notLanded.forEach((f) => console.log(` - ${f}`));
91
- }
92
- if (!outOfScope.length && !notLanded.length) console.log(' 双向对齐 ✅');
93
- else if (!strict) console.log(' (advisory 报告——--strict 时越界件即 fail)');
94
-
95
- if (strict && outOfScope.length) process.exit(1);
96
- process.exit(0);
@@ -1,99 +0,0 @@
1
- // check-scope.test.mjs — tmp git 仓 fixture(2026-10-13 自 Shipyard.Material 参考实现回灌)
2
- // 覆盖:越界检出 / 未落检出 / 白名单豁免 / --strict 退出码 / 无 plan exit 2 / 版本号 token 过滤
3
- import fs from 'node:fs';
4
- import os from 'node:os';
5
- import path from 'node:path';
6
- import { spawnSync } from 'node:child_process';
7
- import { fileURLToPath } from 'node:url';
8
-
9
- // fileURLToPath 而非手搓 pathname 解码(源仓 fdded128):URL pathname 对非 ASCII 路径百分号编码,
10
- // Windows 中文 worktree 路径下子进程「Cannot find module」静默红。
11
- const CLI = path.join(path.dirname(fileURLToPath(import.meta.url)), 'check-scope.mjs');
12
- let pass = 0, fail = 0;
13
- const check = (name, cond, detail = '') => {
14
- if (cond) { pass++; console.log(`PASS ${name}`); }
15
- else { fail++; console.log(`FAIL ${name}${detail ? ` —— ${detail}` : ''}`); }
16
- };
17
-
18
- function mkRepo() {
19
- const root = fs.mkdtempSync(path.join(os.tmpdir(), 'check-scope-'));
20
- const g = (...a) => spawnSync('git', a, { cwd: root, encoding: 'utf8' });
21
- g('init', '-q');
22
- g('config', 'user.email', 't@t');
23
- g('config', 'user.name', 't');
24
- fs.writeFileSync(path.join(root, 'src-a.md'), '# A\n');
25
- g('add', '.');
26
- g('commit', '-qm', 'init');
27
- return { root, g };
28
- }
29
-
30
- const run = (root, planArgs = []) => spawnSync(process.execPath, [CLI, ...planArgs, '--root', root], { cwd: root, encoding: 'utf8' });
31
-
32
- // S1 越界检出(工作区默认口径,含未跟踪)
33
- {
34
- const { root } = mkRepo();
35
- fs.mkdirSync(path.join(root, 'workflow', 'plans'), { recursive: true });
36
- fs.writeFileSync(path.join(root, 'workflow', 'plans', 'p1.md'), '## 改动面\n- src-a.md:改\n- src-new.md:新建\n');
37
- fs.writeFileSync(path.join(root, 'src-b.md'), '# B 越界\n'); // 未跟踪新文件,未声明
38
- const r = run(root, ['workflow/plans/p1.md']);
39
- check('S1 越界件检出(未跟踪 src-b.md)', r.status === 0 && /越界件/.test(r.stdout) && /src-b\.md/.test(r.stdout), JSON.stringify({ status: r.status, out: r.stdout.slice(0, 300) }));
40
- fs.rmSync(root, { recursive: true, force: true });
41
- }
42
-
43
- // S2 未落检出(声明未变更)
44
- {
45
- const { root } = mkRepo();
46
- fs.mkdirSync(path.join(root, 'workflow', 'plans'), { recursive: true });
47
- fs.writeFileSync(path.join(root, 'workflow', 'plans', 'p2.md'), '## 改动面\n- src-ghost.md:计划改但没改\n');
48
- const r = run(root, ['workflow/plans/p2.md']);
49
- check('S2 未落件检出(src-ghost.md)', r.status === 0 && /未落件/.test(r.stdout) && /src-ghost\.md/.test(r.stdout), JSON.stringify({ status: r.status, out: r.stdout.slice(0, 300) }));
50
- fs.rmSync(root, { recursive: true, force: true });
51
- }
52
-
53
- // S3 白名单豁免(workflow 台账随行件不算越界)
54
- {
55
- const { root } = mkRepo();
56
- fs.mkdirSync(path.join(root, 'workflow', 'intents'), { recursive: true });
57
- fs.mkdirSync(path.join(root, 'workflow', 'plans'), { recursive: true });
58
- fs.writeFileSync(path.join(root, 'workflow', 'plans', 'p3.md'), '## 改动面\n- src-a.md:改\n');
59
- fs.writeFileSync(path.join(root, 'src-a.md'), '# A2\n');
60
- fs.writeFileSync(path.join(root, 'workflow', 'intents', '2026-10-09-x.md'), '---\n状态: draft\n---\n');
61
- const r = run(root, ['workflow/plans/p3.md']);
62
- check('S3 台账随行件豁免(workflow/intents 不算越界)', r.status === 0 && !/workflow[\\/]intents/.test(r.stdout.split('未落件')[0]), JSON.stringify({ status: r.status, out: r.stdout.slice(0, 300) }));
63
- fs.rmSync(root, { recursive: true, force: true });
64
- }
65
-
66
- // S4 --strict 越界 exit 1;无越界 exit 0
67
- {
68
- const { root } = mkRepo();
69
- fs.mkdirSync(path.join(root, 'workflow', 'plans'), { recursive: true });
70
- fs.writeFileSync(path.join(root, 'workflow', 'plans', 'p4.md'), '## 改动面\n- src-a.md:改\n');
71
- fs.writeFileSync(path.join(root, 'src-a.md'), '# A2\n');
72
- check('S4a 无越界 --strict exit 0', run(root, ['workflow/plans/p4.md', '--strict']).status === 0);
73
- fs.writeFileSync(path.join(root, 'src-rogue.md'), '# rogue\n');
74
- check('S4b 越界 --strict exit 1', run(root, ['workflow/plans/p4.md', '--strict']).status === 1);
75
- check('S4c 越界无 --strict exit 0(advisory)', run(root, ['workflow/plans/p4.md']).status === 0);
76
- fs.rmSync(root, { recursive: true, force: true });
77
- }
78
-
79
- // S5 无 plan exit 2(fail-loud)
80
- {
81
- const { root } = mkRepo();
82
- const r = run(root, ['workflow/plans/nope.md']);
83
- check('S5 plan 不存在 exit 2', r.status === 2, JSON.stringify({ status: r.status }));
84
- fs.rmSync(root, { recursive: true, force: true });
85
- }
86
-
87
- // S6 版本号伪 token 过滤(v1.2.2 不入声明清单)
88
- {
89
- const { root } = mkRepo();
90
- fs.mkdirSync(path.join(root, 'workflow', 'plans'), { recursive: true });
91
- fs.writeFileSync(path.join(root, 'workflow', 'plans', 'p6.md'), '## 改动面\n- src-a.md:升级到 v1.2.2\n');
92
- fs.writeFileSync(path.join(root, 'src-a.md'), '# A2\n');
93
- const r = run(root, ['workflow/plans/p6.md']);
94
- check('S6 版本号 token 不产生未落噪声', r.status === 0 && !/1\.2\.2/.test(r.stdout), JSON.stringify({ out: r.stdout.slice(0, 300) }));
95
- fs.rmSync(root, { recursive: true, force: true });
96
- }
97
-
98
- console.log(`\n合计: PASS ${pass} / FAIL ${fail}`);
99
- process.exit(fail ? 1 : 0);