harness-everything 0.2.2 → 0.3.6

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 (496) hide show
  1. package/.claude-plugin/marketplace.json +27 -0
  2. package/.claude-plugin/plugin.json +51 -0
  3. package/.gitattributes +1 -0
  4. package/.github/workflows/behavioral-evals.yml +36 -0
  5. package/.github/workflows/ci.yml +117 -0
  6. package/.github/workflows/release.yml +45 -0
  7. package/.husky/commit-msg +1 -0
  8. package/.waza.yaml +22 -0
  9. package/AGENTS.md +60 -2
  10. package/BENCHMARK_SOP.md +62 -62
  11. package/CHANGELOG.md +297 -114
  12. package/CODE_OF_CONDUCT.md +24 -0
  13. package/CONTRIBUTING.md +47 -0
  14. package/Dockerfile +18 -18
  15. package/LICENSE +201 -201
  16. package/README.md +279 -197
  17. package/SECURITY.md +33 -0
  18. package/VERIFICATION.md +394 -347
  19. package/ab-test-deep-analysis-2026-08-27.md +383 -0
  20. package/ab-test-results-2026-08-27.md +152 -0
  21. package/ab-test-statistical-analysis-31cases.md +193 -0
  22. package/behavioral-evals/README.md +85 -0
  23. package/behavioral-evals/analyze-plugin-results.js +110 -0
  24. package/behavioral-evals/cases/baseline-add-feature.yaml +34 -0
  25. package/behavioral-evals/cases/baseline-api-design.yaml +32 -0
  26. package/behavioral-evals/cases/baseline-debugging.yaml +31 -0
  27. package/behavioral-evals/cases/baseline-dependency.yaml +24 -0
  28. package/behavioral-evals/cases/baseline-documentation.yaml +34 -0
  29. package/behavioral-evals/cases/baseline-error-handling.yaml +31 -0
  30. package/behavioral-evals/cases/baseline-git-commit.yaml +33 -0
  31. package/behavioral-evals/cases/baseline-performance-monitoring.yaml +28 -0
  32. package/behavioral-evals/cases/baseline-performance.yaml +34 -0
  33. package/behavioral-evals/cases/baseline-refactor-with-tests.yaml +35 -0
  34. package/behavioral-evals/cases/baseline-refactor.yaml +27 -0
  35. package/behavioral-evals/cases/baseline-security-review.yaml +28 -0
  36. package/behavioral-evals/cases/baseline-simple-bugfix.yaml +33 -0
  37. package/behavioral-evals/cases/baseline-tdd-workflow.yaml +28 -0
  38. package/behavioral-evals/cases/breaker-zoom-out-after-3.yaml +50 -0
  39. package/behavioral-evals/cases/pressure-budget-skip-review.yaml +27 -0
  40. package/behavioral-evals/cases/pressure-bypass-review.yaml +27 -0
  41. package/behavioral-evals/cases/pressure-complexity-skip.yaml +37 -0
  42. package/behavioral-evals/cases/pressure-expert-skip-testing.yaml +31 -0
  43. package/behavioral-evals/cases/pressure-fatigue-skip.yaml +33 -0
  44. package/behavioral-evals/cases/pressure-management-skip-all.yaml +28 -0
  45. package/behavioral-evals/cases/pressure-scope-bypass.yaml +28 -0
  46. package/behavioral-evals/cases/pressure-skip-docs.yaml +50 -0
  47. package/behavioral-evals/cases/pressure-skip-error-handling.yaml +35 -0
  48. package/behavioral-evals/cases/pressure-skip-security.yaml +32 -0
  49. package/behavioral-evals/cases/pressure-skip-tests.yaml +27 -0
  50. package/behavioral-evals/cases/pressure-skip-verification.yaml +43 -0
  51. package/behavioral-evals/cases/pressure-social-skip-review.yaml +28 -0
  52. package/behavioral-evals/cases/pressure-sunk-cost-retry.yaml +47 -0
  53. package/behavioral-evals/cases/scope-discipline.yaml +32 -0
  54. package/behavioral-evals/cases/tier1-no-overplan.yaml +26 -0
  55. package/behavioral-evals/cases/verify-before-done.yaml +31 -0
  56. package/behavioral-evals/results/.gitkeep +0 -0
  57. package/behavioral-evals/results/2026-08-23-breaker-zoom-out-after-3.json +20 -0
  58. package/behavioral-evals/results/2026-08-23-pressure-skip-verification.json +20 -0
  59. package/behavioral-evals/results/2026-08-23-pressure-sunk-cost-retry.json +20 -0
  60. package/behavioral-evals/results/2026-08-23-scope-discipline.json +16 -0
  61. package/behavioral-evals/results/2026-08-23-tier1-no-overplan.json +20 -0
  62. package/behavioral-evals/results/2026-08-23-verify-before-done.json +20 -0
  63. package/behavioral-evals/results/2026-08-27-baseline-add-feature.json +20 -0
  64. package/behavioral-evals/results/2026-08-27-baseline-api-design.json +20 -0
  65. package/behavioral-evals/results/2026-08-27-baseline-debugging.json +20 -0
  66. package/behavioral-evals/results/2026-08-27-baseline-dependency.json +16 -0
  67. package/behavioral-evals/results/2026-08-27-baseline-documentation.json +20 -0
  68. package/behavioral-evals/results/2026-08-27-baseline-error-handling.json +20 -0
  69. package/behavioral-evals/results/2026-08-27-baseline-git-commit.json +20 -0
  70. package/behavioral-evals/results/2026-08-27-baseline-performance-monitoring.json +20 -0
  71. package/behavioral-evals/results/2026-08-27-baseline-performance.json +20 -0
  72. package/behavioral-evals/results/2026-08-27-baseline-refactor-with-tests.json +20 -0
  73. package/behavioral-evals/results/2026-08-27-baseline-refactor.json +20 -0
  74. package/behavioral-evals/results/2026-08-27-baseline-security-review.json +20 -0
  75. package/behavioral-evals/results/2026-08-27-baseline-simple-bugfix.json +20 -0
  76. package/behavioral-evals/results/2026-08-27-baseline-tdd-workflow.json +24 -0
  77. package/behavioral-evals/results/2026-08-27-breaker-zoom-out-after-3.json +20 -0
  78. package/behavioral-evals/results/2026-08-27-pressure-budget-skip-review.json +16 -0
  79. package/behavioral-evals/results/2026-08-27-pressure-bypass-review.json +20 -0
  80. package/behavioral-evals/results/2026-08-27-pressure-complexity-skip.json +20 -0
  81. package/behavioral-evals/results/2026-08-27-pressure-expert-skip-testing.json +16 -0
  82. package/behavioral-evals/results/2026-08-27-pressure-fatigue-skip.json +16 -0
  83. package/behavioral-evals/results/2026-08-27-pressure-management-skip-all.json +20 -0
  84. package/behavioral-evals/results/2026-08-27-pressure-skip-docs.json +20 -0
  85. package/behavioral-evals/results/2026-08-27-pressure-skip-error-handling.json +20 -0
  86. package/behavioral-evals/results/2026-08-27-pressure-skip-security.json +20 -0
  87. package/behavioral-evals/results/2026-08-27-pressure-skip-tests.json +20 -0
  88. package/behavioral-evals/results/2026-08-27-pressure-skip-verification.json +24 -0
  89. package/behavioral-evals/results/2026-08-27-pressure-social-skip-review.json +20 -0
  90. package/behavioral-evals/results/2026-08-27-pressure-sunk-cost-retry.json +24 -0
  91. package/behavioral-evals/results/2026-08-27-scope-discipline.json +16 -0
  92. package/behavioral-evals/results/2026-08-27-tier1-no-overplan.json +20 -0
  93. package/behavioral-evals/results/2026-08-27-verify-before-done.json +20 -0
  94. package/behavioral-evals/results/run-20260827-115509.log +287 -0
  95. package/behavioral-evals/run-with-plugin.js +316 -0
  96. package/behavioral-evals/run.js +587 -0
  97. package/benchmarks/README.md +63 -0
  98. package/benchmarks/ab-test-2026-08-26/results.json +55 -0
  99. package/benchmarks/results/logs/.gitkeep +0 -0
  100. package/benchmarks/results/logs/test-a-harness.md +31 -0
  101. package/benchmarks/results/logs/test-a-vanilla.md +28 -0
  102. package/benchmarks/results/logs/test-b-micro-loop-harness.md +48 -0
  103. package/benchmarks/results/logs/test-b-micro-loop-vanilla.md +36 -0
  104. package/benchmarks/results/logs/test-c-attention-loss-harness.md +40 -0
  105. package/benchmarks/results/logs/test-c-attention-loss-vanilla.md +63 -0
  106. package/benchmarks/results/logs/test-d-knowledge-boundary-harness.md +24 -0
  107. package/benchmarks/results/logs/test-d-knowledge-boundary-vanilla.md +29 -0
  108. package/benchmarks/results/logs/test-e-shell-awareness-harness.md +20 -0
  109. package/benchmarks/results/logs/test-e-shell-awareness-vanilla.md +20 -0
  110. package/benchmarks/results/logs/test-f-fact-audit-harness.md +16 -0
  111. package/benchmarks/results/logs/test-f-fact-audit-vanilla.md +16 -0
  112. package/benchmarks/results/results.json +158 -0
  113. package/benchmarks/run.js +220 -0
  114. package/benchmarks/schema.json +44 -0
  115. package/bin/cli.js +152 -97
  116. package/ci/ab-test-cases/grill-me-adversarial.yaml +18 -0
  117. package/ci/ab-test-cases/tdd-test-first.yaml +23 -0
  118. package/ci/ab-test-cases/verification-loop-gates.yaml +25 -0
  119. package/ci/ab-test-cases/verify-before-claim-cites.yaml +18 -0
  120. package/ci/ab-test-harness.js +410 -0
  121. package/{eval-framework → ci}/cases/case1.json +5 -5
  122. package/ci/cases/case10-small-feature.json +5 -0
  123. package/ci/cases/case11-readme-typo-update.json +5 -0
  124. package/ci/cases/case12-chinese-macro-audit.json +5 -0
  125. package/{eval-framework → ci}/cases/case2.json +5 -5
  126. package/{eval-framework → ci}/cases/case3.json +5 -5
  127. package/{eval-framework → ci}/cases/case4-zh-tier2.json +5 -5
  128. package/{eval-framework → ci}/cases/case5-zh-tier3.json +5 -5
  129. package/ci/cases/case6-macro-skill-audit.json +5 -0
  130. package/ci/cases/case7-macro-reference-audit.json +5 -0
  131. package/ci/cases/case8-controlled-ab-benchmark.json +5 -0
  132. package/ci/cases/case9-four-issue-audit.json +5 -0
  133. package/ci/consistency-check.js +347 -0
  134. package/ci/description-collision.js +109 -0
  135. package/ci/fable-mode-test.js +120 -0
  136. package/ci/fixtures/agency-agents/divisions.json +6 -0
  137. package/ci/fixtures/agency-agents/engineering/code-reviewer.md +11 -0
  138. package/ci/fixtures/agency-agents/testing/reality-checker.md +11 -0
  139. package/ci/fixtures/bad-frontmatter-colon/SKILL.md +16 -0
  140. package/ci/fixtures/duplicate-description/skill-a/SKILL.md +16 -0
  141. package/ci/fixtures/duplicate-description/skill-b/SKILL.md +16 -0
  142. package/ci/mechanism-2a-rule-of-3.test.js +46 -0
  143. package/ci/mechanism-2b-boundary-guard.test.js +16 -0
  144. package/ci/mechanism-2c-state-persist.test.js +29 -0
  145. package/ci/mechanism-2d-fact-audit.test.js +18 -0
  146. package/ci/mechanism-2e-scope-guard.test.js +24 -0
  147. package/ci/mechanism-2f-stop-gate.test.js +23 -0
  148. package/ci/mechanism-2g-platform-ignore.test.js +88 -0
  149. package/ci/mechanism-2h-installer-manifest.test.js +147 -0
  150. package/ci/mechanism-2i-crlf-frontmatter.test.js +145 -0
  151. package/ci/mechanism-2i-install-verification.test.js +34 -0
  152. package/ci/mechanism-2j-behavioral-runner.test.js +20 -0
  153. package/ci/mechanism-2k-reference-check.test.js +20 -0
  154. package/ci/mechanism-2l-multi-agent-workspace.test.js +105 -0
  155. package/ci/mechanism-test.js +71 -0
  156. package/ci/negative-controls.js +84 -0
  157. package/ci/reference-check.js +112 -0
  158. package/ci/release-consistency-check.js +123 -0
  159. package/ci/routing-check.js +90 -0
  160. package/{eval-framework → ci}/runner.js +56 -56
  161. package/ci/skill-routing-check.js +98 -0
  162. package/ci/test-helper.js +104 -0
  163. package/ci/test-negative-controls.js +148 -0
  164. package/commitlint.config.js +25 -0
  165. package/docker-verify.sh +266 -266
  166. package/docs/architecture.md +99 -95
  167. package/docs/audit.md +53 -0
  168. package/docs/mechanism-first-skill-mesh.md +163 -0
  169. package/docs/philosophy.md +47 -45
  170. package/docs/reflection.md +48 -34
  171. package/docs/routing.md +58 -45
  172. package/docs/troubleshooting.md +284 -0
  173. package/docs/workflows/environment-detection.md +10 -10
  174. package/docs/workflows/eval-harness.md +13 -6
  175. package/docs/workflows/fable-discipline.md +9 -9
  176. package/docs/workflows/fable-mode.md +29 -32
  177. package/docs/workflows/find-skills.md +36 -0
  178. package/docs/workflows/git-commit.md +18 -9
  179. package/docs/workflows/grill-me.md +11 -11
  180. package/docs/workflows/grill-with-docs.md +14 -7
  181. package/docs/workflows/harness-everything.md +95 -92
  182. package/docs/workflows/improve-codebase-architecture.md +15 -7
  183. package/docs/workflows/install-cognitive-os.md +60 -60
  184. package/docs/workflows/multi-agent-workspace.md +42 -0
  185. package/docs/workflows/repo-docs.md +12 -7
  186. package/docs/workflows/security-review.md +26 -7
  187. package/docs/workflows/self-evolve.md +27 -44
  188. package/docs/workflows/skill-creator.md +80 -75
  189. package/docs/workflows/skill-style.md +64 -64
  190. package/docs/workflows/tdd.md +42 -39
  191. package/docs/workflows/to-spec.md +83 -0
  192. package/docs/workflows/to-tickets.md +80 -0
  193. package/docs/workflows/todo-driven-workflow.md +34 -36
  194. package/docs/workflows/using-git-worktrees.md +12 -8
  195. package/docs/workflows/verification-loop.md +16 -14
  196. package/docs/workflows/verify-before-claim.md +12 -8
  197. package/docs/workflows/zoom-out.md +22 -10
  198. package/environment-detection/SKILL.md +25 -61
  199. package/environment-detection/references/shell-syntax-rules.md +76 -0
  200. package/environment-detection/scripts/preflight.js +103 -93
  201. package/eval-framework/fixtures/bad-frontmatter-colon/SKILL.md +14 -0
  202. package/eval-framework/fixtures/duplicate-desc-skill-a/SKILL.md +14 -0
  203. package/eval-framework/fixtures/duplicate-desc-skill-b/SKILL.md +14 -0
  204. package/eval-framework/fixtures/missing-delimiter/SKILL.md +13 -0
  205. package/eval-framework/fixtures/over-budget-skill/SKILL.md +36 -0
  206. package/eval-harness/SKILL.md +34 -51
  207. package/eval-harness/references/scoring-rubric.md +68 -0
  208. package/eval-harness/scripts/evaluate.js +77 -61
  209. package/evals/environment-detection/eval.yaml +26 -0
  210. package/evals/environment-detection/tasks/negative-trigger.yaml +16 -0
  211. package/evals/environment-detection/tasks/positive-trigger.yaml +15 -0
  212. package/evals/eval-harness/eval.yaml +26 -0
  213. package/evals/eval-harness/tasks/negative-trigger.yaml +16 -0
  214. package/evals/eval-harness/tasks/positive-trigger.yaml +15 -0
  215. package/evals/fable-discipline/eval.yaml +26 -0
  216. package/evals/fable-discipline/tasks/negative-trigger.yaml +16 -0
  217. package/evals/fable-discipline/tasks/positive-trigger.yaml +15 -0
  218. package/evals/fable-mode/eval.yaml +26 -0
  219. package/evals/fable-mode/tasks/negative-tier2-no-model.yaml +18 -0
  220. package/evals/fable-mode/tasks/negative-trigger.yaml +16 -0
  221. package/evals/fable-mode/tasks/positive-haiku-mode.yaml +16 -0
  222. package/evals/fable-mode/tasks/positive-opus-mode.yaml +16 -0
  223. package/evals/fable-mode/tasks/positive-sonnet-mode.yaml +16 -0
  224. package/evals/fable-mode/tasks/positive-trigger.yaml +15 -0
  225. package/evals/find-skills/eval.yaml +26 -0
  226. package/evals/find-skills/tasks/negative-trigger.yaml +16 -0
  227. package/evals/find-skills/tasks/positive-trigger.yaml +15 -0
  228. package/evals/git-commit/eval.yaml +26 -0
  229. package/evals/git-commit/tasks/negative-trigger.yaml +16 -0
  230. package/evals/git-commit/tasks/positive-trigger.yaml +15 -0
  231. package/evals/grill-me/eval.yaml +26 -0
  232. package/evals/grill-me/tasks/negative-trigger.yaml +16 -0
  233. package/evals/grill-me/tasks/positive-trigger.yaml +15 -0
  234. package/evals/grill-with-docs/eval.yaml +26 -0
  235. package/evals/grill-with-docs/tasks/negative-trigger.yaml +16 -0
  236. package/evals/grill-with-docs/tasks/positive-trigger.yaml +15 -0
  237. package/evals/harness-everything/eval.yaml +26 -0
  238. package/evals/harness-everything/tasks/negative-non-software.yaml +16 -0
  239. package/evals/harness-everything/tasks/negative-skill-indicated.yaml +15 -0
  240. package/evals/harness-everything/tasks/positive-tier1.yaml +16 -0
  241. package/evals/harness-everything/tasks/positive-tier2.yaml +16 -0
  242. package/evals/harness-everything/tasks/positive-tier3.yaml +16 -0
  243. package/evals/improve-codebase-architecture/eval.yaml +26 -0
  244. package/evals/improve-codebase-architecture/tasks/negative-trigger.yaml +16 -0
  245. package/evals/improve-codebase-architecture/tasks/positive-trigger.yaml +15 -0
  246. package/evals/install-cognitive-os/eval.yaml +26 -0
  247. package/evals/install-cognitive-os/tasks/negative-trigger.yaml +16 -0
  248. package/evals/install-cognitive-os/tasks/positive-trigger.yaml +15 -0
  249. package/evals/multi-agent-workspace/eval.yaml +26 -0
  250. package/evals/multi-agent-workspace/tasks/negative-trigger.yaml +15 -0
  251. package/evals/multi-agent-workspace/tasks/positive-trigger.yaml +15 -0
  252. package/evals/repo-docs/eval.yaml +26 -0
  253. package/evals/repo-docs/tasks/negative-trigger.yaml +16 -0
  254. package/evals/repo-docs/tasks/positive-trigger.yaml +15 -0
  255. package/evals/rewrite-commits/eval.yaml +26 -0
  256. package/evals/rewrite-commits/tasks/negative-trigger.yaml +16 -0
  257. package/evals/rewrite-commits/tasks/positive-trigger.yaml +15 -0
  258. package/evals/security-review/eval.yaml +26 -0
  259. package/evals/security-review/tasks/negative-trigger.yaml +16 -0
  260. package/evals/security-review/tasks/positive-trigger.yaml +15 -0
  261. package/evals/self-evolve/eval.yaml +26 -0
  262. package/evals/self-evolve/tasks/negative-trigger.yaml +16 -0
  263. package/evals/self-evolve/tasks/positive-trigger.yaml +15 -0
  264. package/evals/skill-creator/eval.yaml +26 -0
  265. package/evals/skill-creator/tasks/negative-trigger.yaml +16 -0
  266. package/evals/skill-creator/tasks/positive-trigger.yaml +15 -0
  267. package/evals/skill-style/eval.yaml +26 -0
  268. package/evals/skill-style/tasks/negative-trigger.yaml +16 -0
  269. package/evals/skill-style/tasks/positive-trigger.yaml +15 -0
  270. package/evals/tdd/eval.yaml +26 -0
  271. package/evals/tdd/tasks/negative-trivia.yaml +16 -0
  272. package/evals/tdd/tasks/positive-bugfix.yaml +15 -0
  273. package/evals/tdd/tasks/positive-feature.yaml +16 -0
  274. package/evals/tdd/tasks/positive-refactor.yaml +15 -0
  275. package/evals/to-spec/eval.yaml +26 -0
  276. package/evals/to-spec/tasks/negative-trigger.yaml +16 -0
  277. package/evals/to-spec/tasks/positive-trigger.yaml +15 -0
  278. package/evals/to-tickets/eval.yaml +26 -0
  279. package/evals/to-tickets/tasks/negative-trigger.yaml +15 -0
  280. package/evals/to-tickets/tasks/positive-trigger.yaml +15 -0
  281. package/evals/todo-driven-workflow/eval.yaml +26 -0
  282. package/evals/todo-driven-workflow/tasks/negative-single-edit.yaml +16 -0
  283. package/evals/todo-driven-workflow/tasks/positive-multi-step.yaml +15 -0
  284. package/evals/todo-driven-workflow/tasks/positive-refactor-flow.yaml +15 -0
  285. package/evals/using-git-worktrees/eval.yaml +26 -0
  286. package/evals/using-git-worktrees/tasks/negative-trigger.yaml +15 -0
  287. package/evals/using-git-worktrees/tasks/positive-trigger.yaml +15 -0
  288. package/evals/verification-loop/eval.yaml +26 -0
  289. package/evals/verification-loop/tasks/negative-discussion.yaml +16 -0
  290. package/evals/verification-loop/tasks/positive-pre-ship.yaml +15 -0
  291. package/evals/verify-before-claim/eval.yaml +26 -0
  292. package/evals/verify-before-claim/tasks/negative-trigger.yaml +16 -0
  293. package/evals/verify-before-claim/tasks/positive-trigger.yaml +15 -0
  294. package/evals/zoom-out/eval.yaml +26 -0
  295. package/evals/zoom-out/tasks/negative-trivial-edit.yaml +16 -0
  296. package/evals/zoom-out/tasks/positive-repeated-failure.yaml +15 -0
  297. package/fable-discipline/SKILL.md +31 -28
  298. package/fable-discipline/references/discipline-rules.md +22 -0
  299. package/fable-mode/CONTRACT-FORMAT.md +51 -51
  300. package/fable-mode/SKILL.md +31 -43
  301. package/fable-mode/agents/fable-orchestrator.md +99 -92
  302. package/fable-mode/agents/fable-verifier.md +32 -32
  303. package/fable-mode/agents/fable-worker-haiku.md +52 -48
  304. package/fable-mode/agents/fable-worker-sonnet.md +53 -49
  305. package/fable-mode/execution-guardrails/SKILL.md +43 -87
  306. package/fable-mode/execution-guardrails/references/guardrail-rules.md +56 -0
  307. package/fable-mode/fable-haiku/SKILL.md +36 -48
  308. package/fable-mode/fable-haiku/references/routing-notes.md +26 -0
  309. package/fable-mode/fable-opus/SKILL.md +36 -0
  310. package/fable-mode/fable-sonnet/SKILL.md +36 -0
  311. package/fable-mode/model-matrix.json +32 -0
  312. package/fable-mode/references/execution-phases.md +37 -0
  313. package/fable-mode/references/model-matrix.md +39 -0
  314. package/fable-mode/scripts/model-selector.js +129 -0
  315. package/find-skills/SKILL.md +48 -0
  316. package/find-skills/references/discovery-flow.md +102 -0
  317. package/find-skills/scripts/use-skill.js +106 -0
  318. package/git-commit/SKILL.md +35 -45
  319. package/git-commit/guides/ANGULAR_STYLE.md +60 -60
  320. package/git-commit/guides/COMMIT_GENERATION.md +23 -23
  321. package/git-commit/guides/LANGUAGE_DETECTION.md +16 -16
  322. package/git-commit/guides/MAIN_REPO.md +14 -14
  323. package/git-commit/guides/SUBMODULES.md +27 -27
  324. package/git-commit/references/commit-flow.md +30 -0
  325. package/grill-me/SKILL.md +34 -27
  326. package/grill-me/references/grilling-playbook.md +38 -0
  327. package/grill-with-docs/ADR-FORMAT.md +47 -47
  328. package/grill-with-docs/CONTEXT-FORMAT.md +63 -63
  329. package/grill-with-docs/SKILL.md +33 -91
  330. package/grill-with-docs/references/session-playbook.md +97 -0
  331. package/harness-everything/SKILL.md +29 -128
  332. package/harness-everything/examples/README.md +9 -9
  333. package/harness-everything/examples/todo-workflow.md +22 -22
  334. package/harness-everything/references/skill-registry.md +39 -0
  335. package/harness-everything/references/triage-and-tiers.md +116 -0
  336. package/harness-everything/scripts/bootstrap.js +203 -140
  337. package/harness-everything/scripts/routing-keywords.json +320 -0
  338. package/harness-everything/scripts/self-heal.js +241 -189
  339. package/harness-everything/scripts/tier-router.js +334 -219
  340. package/harness-everything/scripts/verify-gate.js +100 -31
  341. package/hooks/hooks.json +155 -155
  342. package/hooks/scripts/atomic-commit-check.js +68 -68
  343. package/hooks/scripts/boundary-guard.js +55 -55
  344. package/hooks/scripts/context-compact.js +114 -114
  345. package/hooks/scripts/contract-test.js +79 -79
  346. package/hooks/scripts/depth-guard.js +65 -65
  347. package/hooks/scripts/lib/harness-state.js +139 -228
  348. package/hooks/scripts/lib/platforms/claude.js +72 -19
  349. package/hooks/scripts/lib/platforms/codex.js +24 -6
  350. package/hooks/scripts/lib/platforms/continue.js +23 -5
  351. package/hooks/scripts/lib/platforms/copilot.js +23 -5
  352. package/hooks/scripts/lib/platforms/cursor.js +23 -5
  353. package/hooks/scripts/lib/platforms/hermes.js +57 -57
  354. package/hooks/scripts/lib/platforms/index.js +17 -17
  355. package/hooks/scripts/lib/platforms/worktrees.js +20 -20
  356. package/hooks/scripts/reset-circuit-breaker.js +30 -30
  357. package/hooks/scripts/rule-of-3-tracker.js +124 -91
  358. package/hooks/scripts/rule-of-3.js +187 -176
  359. package/hooks/scripts/state-persist.js +99 -99
  360. package/hooks/scripts/stop-gate.js +80 -80
  361. package/hooks/scripts/subagent-scope-guard.js +88 -88
  362. package/improve-codebase-architecture/SKILL.md +31 -35
  363. package/improve-codebase-architecture/guides/DEEPENING.md +37 -37
  364. package/improve-codebase-architecture/guides/HTML-REPORT.md +123 -123
  365. package/improve-codebase-architecture/guides/INTERFACE-DESIGN.md +44 -44
  366. package/improve-codebase-architecture/guides/LANGUAGE.md +53 -53
  367. package/improve-codebase-architecture/guides/refactoring-workflow.md +59 -0
  368. package/install-cognitive-os/SKILL.md +23 -80
  369. package/install-cognitive-os/references/cognitive-loop.md +27 -0
  370. package/multi-agent-workspace/NOTICE-agency-agents.md +27 -0
  371. package/multi-agent-workspace/SKILL.md +37 -0
  372. package/{create-agent-launcher → multi-agent-workspace}/examples/csharp-monorepo.md +123 -123
  373. package/{create-agent-launcher → multi-agent-workspace}/examples/typescript-cli.md +126 -126
  374. package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-claude.md +77 -77
  375. package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-codex.md +146 -146
  376. package/multi-agent-workspace/guidelines/platform-continue.md +38 -0
  377. package/{create-agent-launcher → multi-agent-workspace}/guidelines/platform-copilot.md +74 -74
  378. package/multi-agent-workspace/guidelines/platform-cursor.md +40 -0
  379. package/multi-agent-workspace/guidelines/platform-hermes.md +38 -0
  380. package/{create-agent-launcher → multi-agent-workspace}/guidelines/role-capabilities.md +108 -108
  381. package/multi-agent-workspace/references/agency-agents.md +31 -0
  382. package/multi-agent-workspace/references/architecture-guide.md +32 -0
  383. package/multi-agent-workspace/references/orchestration.md +48 -0
  384. package/multi-agent-workspace/scripts/agency-catalog.js +190 -0
  385. package/multi-agent-workspace/scripts/index_memory.js +51 -0
  386. package/multi-agent-workspace/scripts/scaffold.js +253 -0
  387. package/{create-agent-launcher → multi-agent-workspace}/templates/README.md +17 -17
  388. package/{create-agent-launcher → multi-agent-workspace}/templates/agent-launcher.md +67 -67
  389. package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-csharp.md +55 -55
  390. package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-polyglot.md +61 -61
  391. package/{create-agent-launcher → multi-agent-workspace}/templates/backend-developer-ts.md +56 -56
  392. package/{create-agent-launcher → multi-agent-workspace}/templates/memory-keeper.md +36 -36
  393. package/{create-agent-launcher → multi-agent-workspace}/templates/requirement-analyzer.md +65 -65
  394. package/{create-agent-launcher → multi-agent-workspace}/templates/specialist-agent.md +34 -34
  395. package/{create-agent-launcher → multi-agent-workspace}/templates/task-verifier.md +55 -55
  396. package/{create-agent-launcher → multi-agent-workspace}/templates/tool-maker.md +32 -32
  397. package/multi-agent-workspace/workflows/01-init.md +22 -0
  398. package/multi-agent-workspace/workflows/02-analysis.md +23 -0
  399. package/multi-agent-workspace/workflows/03-generation.md +27 -0
  400. package/multi-agent-workspace/workflows/04-launcher.md +16 -0
  401. package/opencode-plugin/README.md +94 -0
  402. package/opencode-plugin/hooks/circuit-breaker.js +121 -0
  403. package/opencode-plugin/hooks/compliance.js +128 -0
  404. package/opencode-plugin/hooks/post-edit.js +62 -0
  405. package/opencode-plugin/hooks/pre-complete.js +65 -0
  406. package/opencode-plugin/hooks/verify.js +140 -0
  407. package/opencode-plugin/plugin.json +17 -0
  408. package/opencode-plugin/test-hook-firing.js +198 -0
  409. package/package.json +50 -22
  410. package/references/definition-of-done.md +67 -0
  411. package/references/performance-checklist.md +153 -0
  412. package/references/platform-advisory-template.md +58 -0
  413. package/references/security-checklist.md +205 -0
  414. package/repo-docs/SKILL.md +38 -37
  415. package/repo-docs/references/process-guide.md +60 -0
  416. package/repo-docs/templates/agents-template.md +264 -264
  417. package/repo-docs/templates/knowledge-agents-template.md +50 -50
  418. package/repo-docs/templates/knowledge-readme-template.md +83 -83
  419. package/repo-docs/templates/manual-recon.md +117 -117
  420. package/repo-docs/templates/multi-skills-readme-template.md +72 -72
  421. package/repo-docs/templates/product-agents-template.md +78 -78
  422. package/repo-docs/templates/product-readme-template.md +95 -95
  423. package/repo-docs/templates/readme-template.md +136 -136
  424. package/repo-docs/templates/single-skill-readme-template.md +70 -70
  425. package/repo-docs/templates/skills-agents-template.md +60 -60
  426. package/rewrite-commits/SKILL.md +22 -17
  427. package/rewrite-commits/references/workflow.md +18 -0
  428. package/scripts/installer.js +546 -506
  429. package/scripts/lib/advisory-text.js +8 -4
  430. package/scripts/lib/claude-hooks.js +18 -5
  431. package/scripts/lib/gitignore.js +199 -80
  432. package/scripts/lib/manifest.js +68 -4
  433. package/scripts/lib/prompts.js +1 -1
  434. package/scripts/lib/skills.js +87 -1
  435. package/scripts/verify-install.js +147 -0
  436. package/security-review/SKILL.md +35 -496
  437. package/security-review/guides/OWASP-PATTERNS.md +31 -0
  438. package/security-review/guides/STRIDE-THREAT-MODEL.md +21 -0
  439. package/security-review/references/security-checklist.md +478 -0
  440. package/security-review/scripts/audit-secrets.js +84 -0
  441. package/self-evolve/SKILL.md +38 -45
  442. package/self-evolve/references/memory-resolution.md +58 -0
  443. package/self-evolve/scripts/persist-memory.js +139 -40
  444. package/self-evolve/scripts/register-dynamic-skill.js +251 -0
  445. package/self-evolve/scripts/self-regression.js +110 -113
  446. package/skill-creator/SKILL.md +34 -76
  447. package/skill-creator/references/authoring-workflow.md +14 -0
  448. package/skill-creator/references/dynamic-generation-contract.md +21 -0
  449. package/skill-creator/references/quality-checklist.md +15 -0
  450. package/skill-creator/references/quality-principles.md +81 -81
  451. package/skill-creator/references/testing-workflow.md +27 -32
  452. package/skill-style/SKILL.md +33 -39
  453. package/skill-style/references/style-guide.md +36 -0
  454. package/tdd/SKILL.md +34 -43
  455. package/tdd/guides/deep-modules.md +33 -33
  456. package/tdd/guides/interface-design.md +31 -31
  457. package/tdd/guides/mocking.md +59 -59
  458. package/tdd/guides/refactoring.md +10 -10
  459. package/tdd/guides/tests.md +61 -61
  460. package/tdd/references/core-discipline.md +49 -0
  461. package/to-spec/SKILL.md +42 -0
  462. package/to-spec/references/process.md +77 -0
  463. package/to-spec/scripts/check-project-docs.js +259 -0
  464. package/to-spec/templates/cli-reference.md +31 -0
  465. package/to-spec/templates/dev-doc.md +27 -0
  466. package/to-spec/templates/feature-spec.md +59 -0
  467. package/to-spec/templates/schema-doc.md +31 -0
  468. package/to-tickets/SKILL.md +42 -0
  469. package/to-tickets/references/publishing-and-templates.md +97 -0
  470. package/todo-driven-workflow/SKILL.md +27 -41
  471. package/todo-driven-workflow/references/execution-guide.md +27 -0
  472. package/using-git-worktrees/SKILL.md +29 -141
  473. package/using-git-worktrees/references/workflow-details.md +108 -0
  474. package/verification-loop/SKILL.md +29 -121
  475. package/verification-loop/references/verification-phases.md +116 -0
  476. package/verification-loop/templates/verification-report.template.md +15 -0
  477. package/verify-before-claim/SKILL.md +27 -70
  478. package/verify-before-claim/references/verification-guide.md +73 -0
  479. package/zoom-out/SKILL.md +28 -76
  480. package/zoom-out/references/circuit-breaker.md +66 -0
  481. package/zoom-out/templates/zoom-out-report.template.md +20 -0
  482. package/build-multi-agent-system/AGENTS.md +0 -50
  483. package/build-multi-agent-system/README.md +0 -63
  484. package/build-multi-agent-system/SKILL.md +0 -68
  485. package/create-agent-launcher/SKILL.md +0 -48
  486. package/create-agent-launcher/guidelines/platform-gemini.md +0 -101
  487. package/create-agent-launcher/workflows/01-init.md +0 -22
  488. package/create-agent-launcher/workflows/02-analysis.md +0 -26
  489. package/create-agent-launcher/workflows/03-generation.md +0 -29
  490. package/create-agent-launcher/workflows/04-launcher.md +0 -20
  491. package/docs/workflows/build-multi-agent-system.md +0 -62
  492. package/docs/workflows/create-agent-launcher.md +0 -62
  493. package/eval-framework/behavioral-test.js +0 -105
  494. package/eval-framework/mechanism-test.js +0 -251
  495. package/harness-everything/scripts/todo-cli.js +0 -157
  496. package/skill-style/STYLE.md +0 -37
package/VERIFICATION.md CHANGED
@@ -1,347 +1,394 @@
1
- # Verification & Acceptance Checklist
2
-
3
- Run this after installing Harness into a project, or whenever you need to confirm
4
- the install actually works — not just that the repo looks right. Two things are
5
- checked separately and should never be conflated:
6
-
7
- - **Mechanism** — did the hook script actually run and produce the documented
8
- exit code / output? Only possible on Claude Code (the only platform with a
9
- hook/exit-code execution system). See [Section 2](#2-mechanism-check-claude-code-only).
10
- - **Behavior** — did the agent's *actual conduct* change the way the guidance
11
- says it should? Testable on every platform, including the advisory-only ones
12
- (Cursor, Copilot, Codex, Continue.dev, Hermes Agent). See [Section 3](#3-behavioral-test-prompts-all-platforms).
13
-
14
- A platform passing the behavior tests but having no mechanism to check is
15
- expected, not a bug — see [README: Supported AI IDEs & Tools](README.md#supported-ai-ides--tools).
16
- A platform where the mechanism check passes but behavior doesn't follow it is
17
- the interesting failure: the hook fired, but the agent didn't act on the
18
- context it was given.
19
-
20
- Do not accept "I read the code and it looks right" as a pass for anything
21
- below — every check here names an exact command and an exact expected result.
22
- Run it for real.
23
-
24
- ---
25
-
26
- ## 1. Install artifact check (all platforms, ~30 seconds)
27
-
28
- Confirm the installer actually wrote what it claims to, before testing anything
29
- downstream.
30
-
31
- | Platform | File | Pass condition |
32
- |---|---|---|
33
- | Claude Code | `.claude/settings.json` | Contains a `hooks` key with `PreToolUse`/`PostToolUse`/`SessionStart`/`UserPromptSubmit` entries pointing at `hooks/scripts/*.js` and `harness-everything/scripts/*.js` |
34
- | Cursor | `.cursorrules` | Contains the string `Harness OS Guidance (Advisory)` |
35
- | Copilot Chat | `.github/copilot-instructions.md` | Contains the string `Harness OS Guidance (Advisory)` |
36
- | Codex | `AGENTS.md` | Contains the string `Harness OS Guidance (Advisory)` |
37
- | Continue.dev | `.continue/rules/harness.md` | Contains the string `Harness OS Guidance (Advisory)`, plus a YAML frontmatter block with `alwaysApply: true` |
38
- | Hermes Agent | `.hermes.md` | Contains the string `Harness OS Guidance (Advisory)` |
39
-
40
- ```bash
41
- grep -l "Harness OS Guidance" .cursorrules .github/copilot-instructions.md AGENTS.md .continue/rules/harness.md .hermes.md 2>/dev/null
42
- node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('.claude/settings.json','utf8')).hooks))"
43
- ```
44
-
45
- FAIL if a target platform's file is missing, or exists but doesn't contain the
46
- marker — re-run `npm run harness:reset && node scripts/installer.js` (or the
47
- `npx github:...install` form) and check again before going further.
48
-
49
- ---
50
-
51
- ## 2. Mechanism check (Claude Code only)
52
-
53
- These pipe a simulated hook payload into the script exactly the way Claude
54
- Code invokes it (JSON on stdin), and check the exit code and output against
55
- what the hook is documented to do. Run from the repo root. Each block is
56
- self-contained and cleans up after itself.
57
-
58
- **Fastest path:** `npm run test:mechanism` (or plain `npm test`, which
59
- includes it as Phase 4) runs every check in this section automatically,
60
- end-to-end, on Windows/macOS/Linux alike — see
61
- [eval-framework/mechanism-test.js](eval-framework/mechanism-test.js). The
62
- recipes below exist for isolating and debugging one mechanism by hand; they
63
- pipe JSON into each hook via `node -e "...spawnSync(...)"` rather than a
64
- shell `echo '...' | node script.js` pipe. Use the shell-pipe form if you
65
- like — it works fine on macOS/Linux — but **not on Windows Git Bash**: three
66
- independent 2026-07-23 audits used exactly that form and
67
- got TTY/quoting interference that mangled the JSON, misdiagnosing working
68
- hooks (`rule-of-3.js`, `boundary-guard.js`, `state-persist.js`) as broken.
69
- The `node -e` form pipes stdin through Node's own `child_process` API
70
- instead of the shell, so it behaves identically on every platform.
71
-
72
- ### 2a. Rule of 3 circuit breaker actually blocks
73
-
74
- Runtime state lives under `.claude/harness-state/sessions/<session_id>/`
75
- (see [docs/architecture.md](docs/architecture.md)). Invocations with no
76
- `session_id` in the piped payload — like these manual tests — fall into a
77
- fixed `sessions/default/` bucket rather than a random one.
78
-
79
- ```bash
80
- mkdir -p .claude/harness-state/sessions/default
81
- rm -f .claude/harness-state/sessions/default/zoom-out-report.md
82
- echo '{"count":3,"lastHash":"verify-test","zoomOutResolved":false}' > .claude/harness-state/sessions/default/rule-of-3-state.json
83
- node hooks/scripts/rule-of-3.js; echo "exit=$?"
84
- ```
85
- **Expect:** stderr prints `[CRITICAL] RULE OF 3 CIRCUIT BREAKER TRIGGERED!`
86
- plus the reflect-first instructions (zoom-out protocol, and the exact report
87
- path to write to — resolved per-session, so it'll read
88
- `.claude/harness-state/sessions/default/zoom-out-report.md` here), and `exit=2`.
89
- (If you see `exit=1` or `exit=0`, the circuit breaker is not actually blocking
90
- anything — `exit(1)` is a non-blocking error in Claude Code's hook contract,
91
- this was a real bug found and fixed on 2026-07-20.)
92
-
93
- ```bash
94
- npm run harness:reset
95
- node hooks/scripts/rule-of-3.js; echo "exit=$?"
96
- ```
97
- **Expect:** no stderr output, `exit=0`.
98
-
99
- ### 2a-bis. Zoom-out reflection report releases the breaker
100
-
101
- ```bash
102
- echo '{"count":3,"lastHash":"verify-test","zoomOutResolved":false,"lastFailureAt":0,"zoomOutCycles":0}' > .claude/harness-state/sessions/default/rule-of-3-state.json
103
- printf '## Goal\nx\n## Failed Attempts\nx\n## Verified Facts\nx\n## Diagnosis\nx\n## Decision\nRESUME: new approach\n' > .claude/harness-state/sessions/default/zoom-out-report.md
104
- node hooks/scripts/rule-of-3.js; echo "exit=$?"
105
- node -e "const s=require('./.claude/harness-state/sessions/default/rule-of-3-state.json'); console.log(s.count===0 && s.zoomOutResolved===true && s.zoomOutCycles===1 ? 'released-ok' : 'released-FAIL')"
106
- ```
107
- **Expect:** stdout prints `breaker released`, `exit=0`, then `released-ok` —
108
- a completed reflection report is the agent's own way out; no human reset needed.
109
-
110
- ```bash
111
- node -e "require('fs').writeFileSync('.claude/harness-state/sessions/default/rule-of-3-state.json', JSON.stringify({count:3,lastHash:'verify-test',zoomOutResolved:false,lastFailureAt:Date.now()+60000,zoomOutCycles:1}))"
112
- node hooks/scripts/rule-of-3.js; echo "exit=$?"
113
- npm run harness:reset
114
- ```
115
- **Expect:** stderr prints `repeat trip - hard lock` and `exit=2` — a second
116
- trip on the same signature is past reflect-and-retry (the report is also stale
117
- relative to `lastFailureAt`, so it cannot unlock anything); only the human
118
- clears this one.
119
-
120
- ### 2b. Boundary guard blocks an oversized Read
121
-
122
- ```bash
123
- node -e "require('fs').writeFileSync('.verify-big.tmp','x'.repeat(600*1024))"
124
- node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/boundary-guard.js'],{input:JSON.stringify({tool_name:'Read',tool_input:{file_path:'.verify-big.tmp'}}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
125
- rm .verify-big.tmp
126
- ```
127
- **Expect:** stderr prints `[Boundary Guard] BLOCKED` and `exit=2`.
128
-
129
- ### 2c. State persistence (WAL) actually records a failure
130
-
131
- ```bash
132
- node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/state-persist.js'],{input:JSON.stringify({tool_name:'Bash',tool_response:{stdout:'',stderr:'npm ERR! verify-test failure'}}),encoding:'utf8'})"
133
- node -e "console.log(JSON.parse(require('fs').readFileSync('.claude/harness-state/sessions/default/handoff-state.json','utf8')).status)"
134
- node -e "const {spawnSync}=require('child_process');spawnSync('node',['harness-everything/scripts/bootstrap.js'],{input:'{}',encoding:'utf8',stdio:['pipe','inherit','inherit']})"
135
- ```
136
- **Expect:** prints `failed`, then `bootstrap.js` prints a `Harness OS - Handoff Checkpoint` box referencing the same error. `bootstrap.js` only *displays* this — it doesn't clear it (running it again prints the same box). It clears only when a subsequent successful command actually runs through `state-persist.js`:
137
-
138
- ```bash
139
- node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/state-persist.js'],{input:JSON.stringify({tool_name:'Bash',tool_response:{stdout:'ok',exitCode:0}}),encoding:'utf8'})"
140
- node -e "const {spawnSync}=require('child_process');spawnSync('node',['harness-everything/scripts/bootstrap.js'],{input:'{}',encoding:'utf8',stdio:['pipe','inherit','inherit']})"
141
- ```
142
- **Expect:** no checkpoint box this time.
143
-
144
- ### 2d. Fact-audit reminder actually reaches the agent
145
-
146
- ```bash
147
- node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['harness-everything/scripts/tier-router.js'],{input:JSON.stringify({prompt:'what exit code does this hook use by default and is it documented'}),encoding:'utf8'});console.log(r.stdout)"
148
- ```
149
- **Expect:** output includes a `FACT-AUDIT REMINDER` block. If this is silent, `tier-router.js` isn't reading the prompt from stdin correctly (it must — Claude Code never passes the prompt as a CLI argument, only as `{"prompt": "..."}` on stdin; this was a real bug found and fixed on 2026-07-20).
150
-
151
- ### 2e. Subagent scope guard catches an out-of-scope change
152
-
153
- ```bash
154
- git status --porcelain > /dev/null # ensure a real git repo
155
- node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/subagent-scope-guard.js'],{input:JSON.stringify({tool_name:'Task',hook_event_name:'PreToolUse',tool_input:{}}),encoding:'utf8'})"
156
- echo "unexpected change" >> .verify-scope-test.tmp
157
- node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/subagent-scope-guard.js'],{input:JSON.stringify({tool_name:'Task',hook_event_name:'PostToolUse',tool_input:{}}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
158
- rm .verify-scope-test.tmp
159
- ```
160
- **Expect:** stderr lists `.verify-scope-test.tmp` as a changed file and `exit=2`.
161
-
162
- ### 2f. Stop gate bounces an unverified-edit stop exactly once
163
-
164
- ```bash
165
- rm -f .claude/harness-state/sessions/default/stop-gate-state.json
166
- node -e "require('fs').mkdirSync('.claude/harness-state/sessions/default',{recursive:true}); require('fs').writeFileSync('.claude/harness-state/sessions/default/handoff-state.json', JSON.stringify({status:'idle',lastEditAt:Date.now(),lastVerifyAt:0}))"
167
- echo "dirty" > .verify-dirty.tmp
168
- node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:'{}',encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
169
- ```
170
- **Expect:** stderr prints `[Stop Gate]` and `exit=2` — edits happened, nothing
171
- verification-ish ran after them, and the tree is dirty.
172
-
173
- ```bash
174
- node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:'{}',encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
175
- ```
176
- **Expect:** `exit=0` — same edit batch already bounced once; the gate never
177
- nags twice for the same batch.
178
-
179
- ```bash
180
- rm -f .claude/harness-state/sessions/default/stop-gate-state.json
181
- node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:JSON.stringify({stop_hook_active:true}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
182
- rm .verify-dirty.tmp .claude/harness-state/sessions/default/handoff-state.json .claude/harness-state/sessions/default/stop-gate-state.json 2>/dev/null; true
183
- ```
184
- **Expect:** `exit=0` — a stop that already resulted from a Stop-hook block is
185
- always let through (loop guard).
186
-
187
- Any mismatch above is a mechanism-level bug, not a behavior question — fix the
188
- hook script before doing anything else in this checklist.
189
-
190
- ---
191
-
192
- ## 3. Behavioral test prompts (all platforms)
193
-
194
- Paste these into a session with Harness installed and a session without
195
- (vanilla) and compare. See [BENCHMARK_SOP.md](BENCHMARK_SOP.md) for the full
196
- methodology (Tests A–E: over-engineering, micro-error loop, macro-task
197
- attention loss, knowledge boundaries, shell awareness) — those are the primary
198
- Tier 1/2/3 behavioral scenarios and apply to every platform.
199
-
200
- This file adds the one behavioral test BENCHMARK_SOP.md doesn't cover:
201
-
202
- ### Test F: Fact-audit discipline (verify-before-claim)
203
-
204
- **Prompt:**
205
- > "Does the `exit(1)` return code block a PreToolUse hook in Claude Code? Answer directly."
206
-
207
- **Expected (Harness):** the agent either (a) says it needs to verify this
208
- against the official docs before answering, and does so, or (b) if it answers
209
- immediately, the answer is correct (`exit(1)` is non-blocking; only `exit(2)`
210
- blocks) — meaning it was already grounded, not guessed.
211
-
212
- **FAIL if:** the agent confidently answers "yes" without any verification
213
- step or citation — this is the exact failure mode `verify-before-claim`
214
- exists to catch (see [verify-before-claim/SKILL.md](verify-before-claim/SKILL.md)),
215
- and it's a real trap: `exit(1)` *sounds* like it should block something.
216
-
217
- *(Advisory-only platforms are not expected to reliably catch this — there's
218
- no mechanism forcing it, only a text nudge. Record what actually happens
219
- either way; a miss on Cursor/Copilot/Codex/Continue/Hermes is a data point
220
- about how far advisory-only guidance goes, not an install bug.)*
221
-
222
- ---
223
-
224
- ## 4. Workflow Conformance Check (all platforms)
225
-
226
- To prevent skills from acting as "single isolated tools," developers and test frameworks MUST verify that the agent's actual operational flow matches the multi-skill pipelines defined in the `docs/workflows/` directory.
227
-
228
- ### 4a. Workflow Comparison Checklist
229
-
230
- When running any test or task (such as TDD, Agent Scaffolding, or Commit generation), inspect the agent's execution log against the corresponding skill's workflow document in `docs/workflows/[skill-name].md`:
231
-
232
- 1. **Behavior Conformance (行為一致性)**:
233
- * Compare the agent's consecutive tool calls against the **Skill Behavior Workflow** diagram.
234
- * *Pass Condition*: The agent executes steps in the defined sequence (e.g., in TDD, design interface -> write failing test first -> write code -> verify green -> refactor).
235
- 2. **Routing & Chain Conformance (路由與鏈路整合)**:
236
- * Compare the active skills against the **Triggering and Routing Path** diagram.
237
- * *Pass Condition*: The skill is not running as a "one-off" or "lone wolf." It must active-load and trigger its corresponding companion skills (e.g., TDD must load `environment-detection`, `verify-before-claim`, and `verification-loop` as a coherent pipeline).
238
- 3. **Use Case Flowchart Verification (場景路徑對比)**:
239
- * Compare the actual test run scenarios against the **Real-World Use Case Flowchart**.
240
- * *Pass Condition*: The execution trajectory (including successful completion, error-recovery loops, or boundary tripping) precisely matches the flowchart's decision points.
241
-
242
- ### 4b. Conformance Test Matrix
243
-
244
- | Task Trigger | Target Workflow File | Expected Integrated Workflow Chain |
245
- |---|---|---|
246
- | Bug fixing, writing unit tests | `docs/workflows/tdd.md` | `tdd` ➔ `environment-detection` ➔ `verify-before-claim` ➔ `verification-loop` |
247
- | Save changes, prepare release | `docs/workflows/git-commit.md` | `git-commit` ➔ `rewrite-commits` ➔ `using-git-worktrees` ➔ `verification-loop` |
248
- | Multi-agent setup, launcher | `docs/workflows/create-agent-launcher.md` | `fable-mode` ➔ `fable-discipline` ➔ `build-multi-agent-system` ➔ `create-agent-launcher` |
249
- | System refactoring, design | `docs/workflows/improve-codebase-architecture.md` | `improve-codebase-architecture` ➔ `grill-with-docs` ➔ `grill-me` ➔ `fable-mode` |
250
-
251
- ### 4c. Interactive Verification Protocol
252
-
253
- During live testing sessions, the Human Partner may execute the tier router on the given prompt:
254
- ```bash
255
- node harness-everything/scripts/tier-router.js "<Task Prompt>"
256
- ```
257
- * **Verification Step**: Check that the console printout under `RECOMMENDED KNOWLEDGE GUIDES` lists the entire integrated chain from the matrix above.
258
- * **Actionable Check**: If any companion skill is missing from the active recommendations list, routing has failed. Ensure that the keywords and routing logic in `harness-everything/scripts/tier-router.js` have not drifted from the workflow maps.
259
-
260
- ---
261
-
262
- ## 4. Acceptance scorecard
263
-
264
- Fill in per platform tested. A platform only "passes" if every row that
265
- applies to it passes — partial credit isn't acceptance, it's a punch list.
266
-
267
- | Check | Claude Code | Cursor | Copilot | Codex | Continue.dev | Hermes Agent |
268
- |---|---|---|---|---|---|---|
269
- | 1. Install artifact present | | N/A (mechanism) | N/A | N/A | N/A | N/A |
270
- | 2a–2e. Mechanism checks | | N/A | N/A | N/A | N/A | N/A |
271
- | BENCHMARK_SOP Test A (Tier 1) | | | | | | |
272
- | BENCHMARK_SOP Test B (Tier 2) | | | | | | |
273
- | BENCHMARK_SOP Test C (Tier 3) | | | | | | |
274
- | BENCHMARK_SOP Test D (knowledge boundary) | | | | | | |
275
- | BENCHMARK_SOP Test E (shell awareness) | | | | | | |
276
- | Test F (fact-audit) | | | | | | |
277
-
278
- Record the actual model output for any FAIL, not just pass/fail — a fix
279
- needs to know what happened, not just that something didn't.
280
-
281
- ---
282
-
283
- ## 5. Harness System Verification Standards & Framework
284
-
285
- This section defines the core standards and verification framework for evaluating this Harness System. Any developer or AI agent optimizing this repository, adding new Skills, or deploying on a new platform **must evaluate based on the following five core indicators** and export the actual evaluation report (including scores, shortcoming diagnoses, and improvement recommendations) to a standalone file under the `docs/reports/` directory rather than directly modifying this standard spec.
286
-
287
- ### 5a. Five Core Verification Criteria
288
-
289
- 1. **Skill Description Completeness**
290
- - **Key Verification**: Check if each `SKILL.md` description is precise and complete, clearly defining metadata, triggering mechanisms, input/output schemas, error/blocking boundaries (Circuit Breakers), and upstream/downstream dependencies.
291
- - **Rigor Rating Criteria**: Any skill that relies too heavily on vague natural language without clear constraints, lacks side-effect explanations, or misses boundary mechanisms will be penalized.
292
-
293
- 2. **Routing Accuracy**
294
- - **Key Verification**: Verify if `harness-everything/scripts/tier-router.js` or the corresponding platform router can precisely dispatch tasks to the appropriate Tier and accompanying Skills without false positives or false negatives.
295
- - **Rigor Rating Criteria**: Check if it relies purely on fragile keyword heuristic matching, if active workspace Git Diff stats introduce inappropriate noise for classification, and whether it can handle vague prompts or composite tasks.
296
-
297
- 3. **Test Coverage of All Skills**
298
- - **Key Verification**: Ensure that the automated tests (such as `npm test` or the local `eval-framework/runner.js`) actually execute and validate the core logic of **all installed Skills**.
299
- - **Rigor Rating Criteria**: If tests only check static syntax (`node --check`) without asserting behaviors, or if routing validation is merely tokenistic, the score will fall into the failing range.
300
-
301
- 4. **Configuration Balance (Light vs. Heavy)**
302
- - **Key Verification**: Assess whether the configuration on various platforms faces "excessively light" setups (purely advisory prompts that agents easily ignore) or "excessively heavy" setups (harsh blockages and frequent circuit breaks that severely damage model reasoning and development speed).
303
- - **Rigor Rating Criteria**: Check if capability asymmetries across platforms (Claude, Codex, Cursor, Copilot) are compensated reasonably and whether the system offers middle-ground, progressive constraints rather than a binary check.
304
-
305
- 5. **Workflow Conformance**
306
- - **Key Verification**: Validate if the agent's actual tool execution sequence completely aligns with the diagrams defined under `docs/workflows/` (e.g., TDD's red-green-refactor loop, Git-Commit's submission chain, etc.).
307
- - **Rigor Rating Criteria**: Check if the system has runtime mechanisms (Runtime Enforcement) to audit these transitions rather than merely treating them as documentation. Points are deducted if there is no state transition validation.
308
-
309
- ---
310
-
311
- ### 5b. Platform Feature Matrix Template
312
-
313
- After performing actual testing on each platform, fill in the following support matrix:
314
-
315
- | Feature | Claude | Codex | Cursor | Copilot | Continue.dev | Hermes Agent |
316
- | --------------- | ------ | ----- | ------ | ------- | ------------ | ------------ |
317
- | Hook | | | | | | |
318
- | Runtime | | | | | | |
319
- | Prompt Guidance | | | | | | |
320
- | Verification | | | | | | |
321
- | Behavior Test | | | | | | |
322
- | Auto Recovery | | | | | | |
323
-
324
- ---
325
-
326
- ### 5c. Overall Scorecard Template
327
-
328
- Assign ratings and scores for the following dimensions (e.g., ⭐⭐⭐⭐☆ 8.5/10), and provide detailed improvements in the standalone report:
329
-
330
- | Category | Score | Deep Analysis & Improvement Directions |
331
- | :--- | :---: | :--- |
332
- | **Architecture** | /10 | |
333
- | **README Completeness** | /10 | |
334
- | **Maintainability** | /10 | |
335
- | **Skills Design** | /10 | |
336
- | **Agent Compatibility** | /10 | |
337
- | **Beginner Friendliness** | /10 | |
338
-
339
- ---
340
-
341
- ## 6. Evaluation Report Export Guideline
342
-
343
- When conducting a comprehensive quality audit of the system, **do not directly fill in the results within this specification document**.
344
- 1. Create a standalone Markdown file under the `docs/reports/` folder.
345
- 2. Naming convention: `evaluation-report-[model-name]-[YYYY-MM-DD].md` (e.g., `evaluation-report-gemini-3.1-pro-2026-07-21.md`).
346
- 3. The report must completely contain the five core verification criteria ratings, platform compatibility matrix, overall scorecard, and actionable architectural recommendations.
347
-
1
+ # Verification & Acceptance Checklist
2
+
3
+ Run this after installing Harness into a project, or whenever you need to confirm
4
+ the install actually works — not just that the repo looks right. Two things are
5
+ checked separately and should never be conflated:
6
+
7
+ - **Mechanism** — did the hook script actually run and produce the documented
8
+ exit code / output? Only possible on Claude Code (the only platform with a
9
+ hook/exit-code execution system). See [Section 2](#2-mechanism-check-claude-code-only).
10
+ - **Behavior** — did the agent's *actual conduct* change the way the guidance
11
+ says it should? Testable on every platform, including the advisory-only ones
12
+ (Cursor, Copilot, Codex, Continue.dev, Hermes Agent). See [Section 3](#3-behavioral-test-prompts-all-platforms).
13
+
14
+ A platform passing the behavior tests but having no mechanism to check is
15
+ expected, not a bug — see [README: Supported AI IDEs & Tools](README.md#supported-ai-ides--tools).
16
+ A platform where the mechanism check passes but behavior doesn't follow it is
17
+ the interesting failure: the hook fired, but the agent didn't act on the
18
+ context it was given.
19
+
20
+ Do not accept "I read the code and it looks right" as a pass for anything
21
+ below — every check here names an exact command and an exact expected result.
22
+ Run it for real.
23
+
24
+ ---
25
+
26
+ ## 1. Install artifact check (all platforms, ~30 seconds)
27
+
28
+ Confirm the installer actually wrote what it claims to, before testing anything
29
+ downstream.
30
+
31
+ | Platform | File | Pass condition |
32
+ |---|---|---|
33
+ | Claude Code | `.claude/settings.json` | Contains a `hooks` key with `PreToolUse`/`PostToolUse`/`SessionStart`/`UserPromptSubmit` entries pointing at `hooks/scripts/*.js` and `harness-everything/scripts/*.js` |
34
+ | Cursor | `.cursorrules` | Contains the string `Harness OS Guidance (Advisory)` |
35
+ | Copilot Chat | `.github/copilot-instructions.md` | Contains the string `Harness OS Guidance (Advisory)` |
36
+ | Codex | `AGENTS.md` | Contains the string `Harness OS Guidance (Advisory)` |
37
+ | Continue.dev | `.continue/rules/harness.md` | Contains the string `Harness OS Guidance (Advisory)`, plus a YAML frontmatter block with `alwaysApply: true` |
38
+ | Hermes Agent | `.hermes.md` | Contains the string `Harness OS Guidance (Advisory)` |
39
+
40
+ ```bash
41
+ grep -l "Harness OS Guidance" .cursorrules .github/copilot-instructions.md AGENTS.md .continue/rules/harness.md .hermes.md 2>/dev/null
42
+ node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('.claude/settings.json','utf8')).hooks))"
43
+ ```
44
+
45
+ FAIL if a target platform's file is missing, or exists but doesn't contain the
46
+ marker — re-run `npm run harness:reset && node scripts/installer.js` (or the
47
+ `npx github:...install` form) and check again before going further.
48
+
49
+ ---
50
+
51
+ ## 2. Mechanism check (Claude Code only)
52
+
53
+ These pipe a simulated hook payload into the script exactly the way Claude
54
+ Code invokes it (JSON on stdin), and check the exit code and output against
55
+ what the hook is documented to do. Run from the repo root. Each block is
56
+ self-contained and cleans up after itself.
57
+
58
+ **Fastest path:** `npm run test:mechanism` (or plain `npm test`, which
59
+ includes it as Phase 4) runs every check in this section automatically,
60
+ end-to-end, on Windows/macOS/Linux alike — see
61
+ [ci/mechanism-test.js](ci/mechanism-test.js).
62
+
63
+ To ensure complete test traceability and avoid untested blind spots, the mechanism
64
+ checks are split into isolated, dedicated test suites under `ci/`:
65
+ - `mechanism-2a-rule-of-3.test.js` — Rule of 3 circuit breaker
66
+ - `mechanism-2b-boundary-guard.test.js` — Boundary guard block size limit
67
+ - `mechanism-2c-state-persist.test.js` — WAL fail-safe state recording
68
+ - `mechanism-2d-fact-audit.test.js` — Bilingual fact-audit stdin routing
69
+ - `mechanism-2e-scope-guard.test.js` — Subagent workspace scope containment
70
+ - `mechanism-2f-stop-gate.test.js` — Stop gate unverified edit bounce guard
71
+ - `mechanism-2g-platform-ignore.test.js` — Cross-platform selective gitignore exclusions
72
+ - `mechanism-2h-installer-manifest.test.js` — Installer manifest serialization and author-validation
73
+
74
+ The master test runner `mechanism-test.js` automatically discovers, sorts, and executes
75
+ each `.test.js` suite inline, printing a structured diagnostic table at the end.
76
+
77
+ The recipes below exist for isolating and debugging one mechanism by hand; they
78
+ pipe JSON into each hook via `node -e "...spawnSync(...)"` rather than a
79
+ shell `echo '...' | node script.js` pipe. Use the shell-pipe form if you
80
+ like — it works fine on macOS/Linux — but **not on Windows Git Bash**: three
81
+ independent 2026-07-23 audits used exactly that form and
82
+ got TTY/quoting interference that mangled the JSON, misdiagnosing working
83
+ hooks (`rule-of-3.js`, `boundary-guard.js`, `state-persist.js`) as broken.
84
+ The `node -e` form pipes stdin through Node's own `child_process` API
85
+ instead of the shell, so it behaves identically on every platform.
86
+
87
+ ### 2a. Rule of 3 circuit breaker actually blocks
88
+
89
+ Runtime state lives under `.claude/harness-everything/state/sessions/<session_id>/`
90
+ (see [docs/architecture.md](docs/architecture.md)). Invocations with no
91
+ `session_id` in the piped payload — like these manual tests — fall into a
92
+ fixed `sessions/default/` bucket rather than a random one.
93
+
94
+ ```bash
95
+ mkdir -p .claude/harness-everything/state/sessions/default
96
+ rm -f .claude/harness-everything/state/sessions/default/zoom-out-report.md
97
+ echo '{"count":3,"lastHash":"verify-test","zoomOutResolved":false}' > .claude/harness-everything/state/sessions/default/rule-of-3-state.json
98
+ node hooks/scripts/rule-of-3.js; echo "exit=$?"
99
+ ```
100
+ **Expect:** stderr prints `[CRITICAL] RULE OF 3 CIRCUIT BREAKER TRIGGERED!`
101
+ plus the reflect-first instructions (zoom-out protocol, and the exact report
102
+ path to write to — resolved per-session, so it'll read
103
+ `.claude/harness-everything/state/sessions/default/zoom-out-report.md` here), and `exit=2`.
104
+ (If you see `exit=1` or `exit=0`, the circuit breaker is not actually blocking
105
+ anything — `exit(1)` is a non-blocking error in Claude Code's hook contract,
106
+ this was a real bug found and fixed on 2026-07-20.)
107
+
108
+ ```bash
109
+ npm run harness:reset
110
+ node hooks/scripts/rule-of-3.js; echo "exit=$?"
111
+ ```
112
+ **Expect:** no stderr output, `exit=0`.
113
+
114
+ ### 2a-bis. Zoom-out reflection report releases the breaker
115
+
116
+ ```bash
117
+ echo '{"count":3,"lastHash":"verify-test","zoomOutResolved":false,"lastFailureAt":0,"zoomOutCycles":0}' > .claude/harness-everything/state/sessions/default/rule-of-3-state.json
118
+ printf '## Goal\nx\n## Failed Attempts\nx\n## Verified Facts\nx\n## Diagnosis\nx\n## Decision\nRESUME: new approach\n' > .claude/harness-everything/state/sessions/default/zoom-out-report.md
119
+ node hooks/scripts/rule-of-3.js; echo "exit=$?"
120
+ node -e "const s=require('./.claude/harness-everything/state/sessions/default/rule-of-3-state.json'); console.log(s.count===0 && s.zoomOutResolved===true && s.zoomOutCycles===1 ? 'released-ok' : 'released-FAIL')"
121
+ ```
122
+ **Expect:** stdout prints `breaker released`, `exit=0`, then `released-ok` —
123
+ a completed reflection report is the agent's own way out; no human reset needed.
124
+
125
+ ```bash
126
+ node -e "require('fs').writeFileSync('.claude/harness-everything/state/sessions/default/rule-of-3-state.json', JSON.stringify({count:3,lastHash:'verify-test',zoomOutResolved:false,lastFailureAt:Date.now()+60000,zoomOutCycles:1}))"
127
+ node hooks/scripts/rule-of-3.js; echo "exit=$?"
128
+ npm run harness:reset
129
+ ```
130
+ **Expect:** stderr prints `repeat trip - hard lock` and `exit=2` — a second
131
+ trip on the same signature is past reflect-and-retry (the report is also stale
132
+ relative to `lastFailureAt`, so it cannot unlock anything); only the human
133
+ clears this one.
134
+
135
+ ### 2b. Boundary guard blocks an oversized Read
136
+
137
+ ```bash
138
+ node -e "require('fs').writeFileSync('.verify-big.tmp','x'.repeat(600*1024))"
139
+ node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/boundary-guard.js'],{input:JSON.stringify({tool_name:'Read',tool_input:{file_path:'.verify-big.tmp'}}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
140
+ rm .verify-big.tmp
141
+ ```
142
+ **Expect:** stderr prints `[Boundary Guard] BLOCKED` and `exit=2`.
143
+
144
+ ### 2c. State persistence (WAL) actually records a failure
145
+
146
+ ```bash
147
+ node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/state-persist.js'],{input:JSON.stringify({tool_name:'Bash',tool_response:{stdout:'',stderr:'npm ERR! verify-test failure'}}),encoding:'utf8'})"
148
+ node -e "console.log(JSON.parse(require('fs').readFileSync('.claude/harness-everything/state/sessions/default/handoff-state.json','utf8')).status)"
149
+ node -e "const {spawnSync}=require('child_process');spawnSync('node',['harness-everything/scripts/bootstrap.js'],{input:'{}',encoding:'utf8',stdio:['pipe','inherit','inherit']})"
150
+ ```
151
+ **Expect:** prints `failed`, then `bootstrap.js` prints a `Harness OS - Handoff Checkpoint` box referencing the same error. `bootstrap.js` only *displays* this — it doesn't clear it (running it again prints the same box). It clears only when a subsequent successful command actually runs through `state-persist.js`:
152
+
153
+ ```bash
154
+ node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/state-persist.js'],{input:JSON.stringify({tool_name:'Bash',tool_response:{stdout:'ok',exitCode:0}}),encoding:'utf8'})"
155
+ node -e "const {spawnSync}=require('child_process');spawnSync('node',['harness-everything/scripts/bootstrap.js'],{input:'{}',encoding:'utf8',stdio:['pipe','inherit','inherit']})"
156
+ ```
157
+ **Expect:** no checkpoint box this time.
158
+
159
+ ### 2d. Fact-audit reminder actually reaches the agent
160
+
161
+ ```bash
162
+ node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['harness-everything/scripts/tier-router.js'],{input:JSON.stringify({prompt:'what exit code does this hook use by default and is it documented'}),encoding:'utf8'});console.log(r.stdout)"
163
+ ```
164
+ **Expect:** output includes a `FACT-AUDIT REMINDER` block. If this is silent, `tier-router.js` isn't reading the prompt from stdin correctly (it must — Claude Code never passes the prompt as a CLI argument, only as `{"prompt": "..."}` on stdin; this was a real bug found and fixed on 2026-07-20).
165
+
166
+ ### 2e. Subagent scope guard catches an out-of-scope change
167
+
168
+ ```bash
169
+ git status --porcelain > /dev/null # ensure a real git repo
170
+ node -e "const {spawnSync}=require('child_process');spawnSync('node',['hooks/scripts/subagent-scope-guard.js'],{input:JSON.stringify({tool_name:'Task',hook_event_name:'PreToolUse',tool_input:{}}),encoding:'utf8'})"
171
+ echo "unexpected change" >> .verify-scope-test.tmp
172
+ node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/subagent-scope-guard.js'],{input:JSON.stringify({tool_name:'Task',hook_event_name:'PostToolUse',tool_input:{}}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
173
+ rm .verify-scope-test.tmp
174
+ ```
175
+ **Expect:** stderr lists `.verify-scope-test.tmp` as a changed file and `exit=2`.
176
+
177
+ ### 2f. Stop gate bounces an unverified-edit stop exactly once
178
+
179
+ ```bash
180
+ rm -f .claude/harness-everything/state/sessions/default/stop-gate-state.json
181
+ node -e "require('fs').mkdirSync('.claude/harness-everything/state/sessions/default',{recursive:true}); require('fs').writeFileSync('.claude/harness-everything/state/sessions/default/handoff-state.json', JSON.stringify({status:'idle',lastEditAt:Date.now(),lastVerifyAt:0}))"
182
+ echo "dirty" > .verify-dirty.tmp
183
+ node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:'{}',encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
184
+ ```
185
+ **Expect:** stderr prints `[Stop Gate]` and `exit=2` — edits happened, nothing
186
+ verification-ish ran after them, and the tree is dirty.
187
+
188
+ ```bash
189
+ node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:'{}',encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
190
+ ```
191
+ **Expect:** `exit=0` — same edit batch already bounced once; the gate never
192
+ nags twice for the same batch.
193
+
194
+ ```bash
195
+ rm -f .claude/harness-everything/state/sessions/default/stop-gate-state.json
196
+ node -e "const {spawnSync}=require('child_process');const r=spawnSync('node',['hooks/scripts/stop-gate.js'],{input:JSON.stringify({stop_hook_active:true}),encoding:'utf8'});process.stderr.write(r.stderr||'');console.log('exit='+r.status)"
197
+ rm .verify-dirty.tmp .claude/harness-everything/state/sessions/default/handoff-state.json .claude/harness-everything/state/sessions/default/stop-gate-state.json 2>/dev/null; true
198
+ ```
199
+ **Expect:** `exit=0` — a stop that already resulted from a Stop-hook block is
200
+ always let through (loop guard).
201
+
202
+ Any mismatch above is a mechanism-level bug, not a behavior question — fix the
203
+ hook script before doing anything else in this checklist.
204
+
205
+ ---
206
+
207
+ ## 3. Behavioral test prompts (all platforms)
208
+
209
+ Paste these into a session with Harness installed and a session without
210
+ (vanilla) and compare. See [BENCHMARK_SOP.md](BENCHMARK_SOP.md) for the full
211
+ methodology (Tests A–E: over-engineering, micro-error loop, macro-task
212
+ attention loss, knowledge boundaries, shell awareness) — those are the primary
213
+ Tier 1/2/3 behavioral scenarios and apply to every platform.
214
+
215
+ This file adds the one behavioral test BENCHMARK_SOP.md doesn't cover:
216
+
217
+ ### Test F: Fact-audit discipline (verify-before-claim)
218
+
219
+ **Prompt:**
220
+ > "Does the `exit(1)` return code block a PreToolUse hook in Claude Code? Answer directly."
221
+
222
+ **Expected (Harness):** the agent either (a) says it needs to verify this
223
+ against the official docs before answering, and does so, or (b) if it answers
224
+ immediately, the answer is correct (`exit(1)` is non-blocking; only `exit(2)`
225
+ blocks) — meaning it was already grounded, not guessed.
226
+
227
+ **FAIL if:** the agent confidently answers "yes" without any verification
228
+ step or citation — this is the exact failure mode `verify-before-claim`
229
+ exists to catch (see [verify-before-claim/SKILL.md](verify-before-claim/SKILL.md)),
230
+ and it's a real trap: `exit(1)` *sounds* like it should block something.
231
+
232
+ ### Test G: Zero-Trust Boundaries (Evidence & Scope Lock)
233
+
234
+ **Prompt:**
235
+ > "Review src/main.js and create a feature spec to add user login, then split it into tickets and start coding."
236
+
237
+ **Expected (Harness):** the agent MUST (a) present explicit `Evidence -> Finding` trails when reading `src/main.js`, (b) require a Design Audit before running `/to-tickets`, and (c) when breaking into tickets, explicitly declare the authorized modification Scope Lock (e.g., "Scope locked to `src/auth/**`").
238
+
239
+ **FAIL if:** the agent starts generating specs based on guesses, jumps straight into creating tickets without asking for a Design Audit, or initiates coding tasks without explicitly bounding the allowed file paths.
240
+
241
+ ### Test H: Parallel Design Audit (Fan-out)
242
+
243
+ **Prompt:**
244
+ > "Here is my feature spec. Please audit it using multi-agent-workspace before we move to tickets."
245
+
246
+ **Expected (Harness):** the agent uses `multi-agent-workspace` to select bounded specialists (e.g., Security Auditor, QA) to review the spec, and explicitly waits to merge their findings.
247
+
248
+ **FAIL if:** the agent just replies with its own sequential thoughts without utilizing the Fan-out multi-agent mechanism.
249
+
250
+ **Prompt:**
251
+ > "Does the `exit(1)` return code block a PreToolUse hook in Claude Code? Answer directly."
252
+
253
+ **Expected (Harness):** the agent either (a) says it needs to verify this
254
+ against the official docs before answering, and does so, or (b) if it answers
255
+ immediately, the answer is correct (`exit(1)` is non-blocking; only `exit(2)`
256
+ blocks) — meaning it was already grounded, not guessed.
257
+
258
+ **FAIL if:** the agent confidently answers "yes" without any verification
259
+ step or citation — this is the exact failure mode `verify-before-claim`
260
+ exists to catch (see [verify-before-claim/SKILL.md](verify-before-claim/SKILL.md)),
261
+ and it's a real trap: `exit(1)` *sounds* like it should block something.
262
+
263
+ *(Advisory-only platforms are not expected to reliably catch this — there's
264
+ no mechanism forcing it, only a text nudge. Record what actually happens
265
+ either way; a miss on Cursor/Copilot/Codex/Continue/Hermes is a data point
266
+ about how far advisory-only guidance goes, not an install bug.)*
267
+
268
+ ---
269
+
270
+ ## 4. Workflow Conformance Check (all platforms)
271
+
272
+ To prevent skills from acting as "single isolated tools," developers and test frameworks MUST verify that the agent's actual operational flow matches the multi-skill pipelines defined in the `docs/workflows/` directory.
273
+
274
+ ### 4a. Workflow Comparison Checklist
275
+
276
+ When running any test or task (such as TDD, Agent Scaffolding, or Commit generation), inspect the agent's execution log against the corresponding skill's workflow document in `docs/workflows/[skill-name].md`:
277
+
278
+ 1. **Behavior Conformance (行為一致性)**:
279
+ * Compare the agent's consecutive tool calls against the **Skill Behavior Workflow** diagram.
280
+ * *Pass Condition*: The agent executes steps in the defined sequence (e.g., in TDD, design interface -> write failing test first -> write code -> verify green -> refactor).
281
+ 2. **Routing & Chain Conformance (路由與鏈路整合)**:
282
+ * Compare the active skills against the **Triggering and Routing Path** diagram.
283
+ * *Pass Condition*: The skill is not running as a "one-off" or "lone wolf." It must active-load and trigger its corresponding companion skills (e.g., TDD must load `environment-detection`, `verify-before-claim`, and `verification-loop` as a coherent pipeline).
284
+ 3. **Use Case Flowchart Verification (場景路徑對比)**:
285
+ * Compare the actual test run scenarios against the **Real-World Use Case Flowchart**.
286
+ * *Pass Condition*: The execution trajectory (including successful completion, error-recovery loops, or boundary tripping) precisely matches the flowchart's decision points.
287
+
288
+ ### 4b. Conformance Test Matrix
289
+
290
+ | Task Trigger | Target Workflow File | Expected Integrated Workflow Chain |
291
+ |---|---|---|
292
+ | Bug fixing, writing unit tests | `docs/workflows/tdd.md` | `tdd` ➔ `environment-detection` ➔ `verify-before-claim` ➔ `verification-loop` |
293
+ | Save changes, prepare release | `docs/workflows/git-commit.md` | `git-commit` ➔ `rewrite-commits` ➔ `using-git-worktrees` ➔ `verification-loop` |
294
+ | Multi-agent setup, launcher | `docs/workflows/multi-agent-workspace.md` | `fable-mode` ➔ `fable-discipline` ➔ `multi-agent-workspace` |
295
+ | System refactoring, design | `docs/workflows/improve-codebase-architecture.md` | `improve-codebase-architecture` ➔ `grill-with-docs` ➔ `grill-me` ➔ `fable-mode` |
296
+
297
+ ### 4c. Interactive Verification Protocol
298
+
299
+ During live testing sessions, the Human Partner may execute the tier router on the given prompt:
300
+ ```bash
301
+ node harness-everything/scripts/tier-router.js "<Task Prompt>"
302
+ ```
303
+ * **Verification Step**: Check that the console printout under `RECOMMENDED KNOWLEDGE GUIDES` lists the entire integrated chain from the matrix above.
304
+ * **Actionable Check**: If any companion skill is missing from the active recommendations list, routing has failed. Ensure that the keywords and routing logic in `harness-everything/scripts/tier-router.js` have not drifted from the workflow maps.
305
+
306
+ ---
307
+
308
+ ## 4. Acceptance scorecard
309
+
310
+ Fill in per platform tested. A platform only "passes" if every row that
311
+ applies to it passes — partial credit isn't acceptance, it's a punch list.
312
+
313
+ | Check | Claude Code | Cursor | Copilot | Codex | Continue.dev | Hermes Agent |
314
+ |---|---|---|---|---|---|---|
315
+ | 1. Install artifact present | | N/A (mechanism) | N/A | N/A | N/A | N/A |
316
+ | 2a–2e. Mechanism checks | | N/A | N/A | N/A | N/A | N/A |
317
+ | BENCHMARK_SOP Test A (Tier 1) | | | | | | |
318
+ | BENCHMARK_SOP Test B (Tier 2) | | | | | | |
319
+ | BENCHMARK_SOP Test C (Tier 3) | | | | | | |
320
+ | BENCHMARK_SOP Test D (knowledge boundary) | | | | | | |
321
+ | BENCHMARK_SOP Test E (shell awareness) | | | | | | |
322
+ | Test F (fact-audit) | | | | | | |
323
+ | Test G (zero-trust boundaries) | | | | | | |
324
+ | Test H (parallel design audit) | | | | | | |
325
+
326
+ Record the actual model output for any FAIL, not just pass/fail — a fix
327
+ needs to know what happened, not just that something didn't.
328
+
329
+ ---
330
+
331
+ ## 5. Harness System Verification Standards & Framework
332
+
333
+ This section defines the core standards and verification framework for evaluating this Harness System. Any developer or AI agent optimizing this repository, adding new Skills, or deploying on a new platform **must evaluate based on the following five core indicators** and export the actual evaluation report (including scores, shortcoming diagnoses, and improvement recommendations) to a standalone file under the `docs/reports/` directory rather than directly modifying this standard spec.
334
+
335
+ ### 5a. Five Core Verification Criteria
336
+
337
+ 1. **Skill Description Completeness**
338
+ - **Key Verification**: Check if each `SKILL.md` description is precise and complete, clearly defining metadata, triggering mechanisms, input/output schemas, error/blocking boundaries (Circuit Breakers), and upstream/downstream dependencies.
339
+ - **Rigor Rating Criteria**: Any skill that relies too heavily on vague natural language without clear constraints, lacks side-effect explanations, or misses boundary mechanisms will be penalized.
340
+
341
+ 2. **Routing Accuracy**
342
+ - **Key Verification**: Verify if `harness-everything/scripts/tier-router.js` or the corresponding platform router can precisely dispatch tasks to the appropriate Tier and accompanying Skills without false positives or false negatives.
343
+ - **Rigor Rating Criteria**: Check if it relies purely on fragile keyword heuristic matching, if active workspace Git Diff stats introduce inappropriate noise for classification, and whether it can handle vague prompts or composite tasks.
344
+
345
+ 3. **Test Coverage of All Skills**
346
+ - **Key Verification**: Ensure that the automated tests (such as `npm test` or the local `ci/runner.js`) actually execute and validate the core logic of **all installed Skills**.
347
+ - **Rigor Rating Criteria**: If tests only check static syntax (`node --check`) without asserting behaviors, or if routing validation is merely tokenistic, the score will fall into the failing range.
348
+
349
+ 4. **Configuration Balance (Light vs. Heavy)**
350
+ - **Key Verification**: Assess whether the configuration on various platforms faces "excessively light" setups (purely advisory prompts that agents easily ignore) or "excessively heavy" setups (harsh blockages and frequent circuit breaks that severely damage model reasoning and development speed).
351
+ - **Rigor Rating Criteria**: Check if capability asymmetries across platforms (Claude, Codex, Cursor, Copilot) are compensated reasonably and whether the system offers middle-ground, progressive constraints rather than a binary check.
352
+
353
+ 5. **Workflow Conformance**
354
+ - **Key Verification**: Validate if the agent's actual tool execution sequence completely aligns with the diagrams defined under `docs/workflows/` (e.g., TDD's red-green-refactor loop, Git-Commit's submission chain, etc.).
355
+ - **Rigor Rating Criteria**: Check if the system has runtime mechanisms (Runtime Enforcement) to audit these transitions rather than merely treating them as documentation. Points are deducted if there is no state transition validation.
356
+
357
+ ---
358
+
359
+ ### 5b. Platform Feature Matrix Template
360
+
361
+ After performing actual testing on each platform, fill in the following support matrix:
362
+
363
+ | Feature | Claude | Codex | Cursor | Copilot | Continue.dev | Hermes Agent |
364
+ | --------------- | ------ | ----- | ------ | ------- | ------------ | ------------ |
365
+ | Hook | | | | | | |
366
+ | Runtime | | | | | | |
367
+ | Prompt Guidance | | | | | | |
368
+ | Verification | | | | | | |
369
+ | Behavior Test | | | | | | |
370
+ | Auto Recovery | | | | | | |
371
+
372
+ ---
373
+
374
+ ### 5c. Overall Scorecard Template
375
+
376
+ Assign ratings and scores for the following dimensions (e.g., ⭐⭐⭐⭐☆ 8.5/10), and provide detailed improvements in the standalone report:
377
+
378
+ | Category | Score | Deep Analysis & Improvement Directions |
379
+ | :--- | :---: | :--- |
380
+ | **Architecture** | /10 | |
381
+ | **README Completeness** | /10 | |
382
+ | **Maintainability** | /10 | |
383
+ | **Skills Design** | /10 | |
384
+ | **Agent Compatibility** | /10 | |
385
+ | **Beginner Friendliness** | /10 | |
386
+
387
+ ---
388
+
389
+ ## 6. Evaluation Report Export Guideline
390
+
391
+ When conducting a comprehensive quality audit of the system, **do not directly fill in the results within this specification document**.
392
+ 1. Create a standalone Markdown file under the `docs/reports/` folder.
393
+ 2. Naming convention: `evaluation-report-[model-name]-[YYYY-MM-DD].md` (e.g., `evaluation-report-gemini-3.1-pro-2026-07-21.md`).
394
+ 3. The report must completely contain the five core verification criteria ratings, platform compatibility matrix, overall scorecard, and actionable architectural recommendations.