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
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Post-Edit Verification Hook
4
+ *
5
+ * Enforces verification after file edits in opencode.
6
+ * This hook runs after every Edit or Write tool use and:
7
+ * 1. Records that an edit occurred
8
+ * 2. Blocks completion until verification runs
9
+ * 3. Logs compliance status
10
+ */
11
+
12
+ const fs = require('fs');
13
+ const path = require('path');
14
+
15
+ const STATE_DIR = path.join(process.env.HOME || process.env.USERPROFILE, '.harness-state');
16
+ const STATE_FILE = path.join(STATE_DIR, 'edit-state.json');
17
+
18
+ // Ensure state directory exists
19
+ if (!fs.existsSync(STATE_DIR)) {
20
+ fs.mkdirSync(STATE_DIR, { recursive: true });
21
+ }
22
+
23
+ function loadState() {
24
+ try {
25
+ if (fs.existsSync(STATE_FILE)) {
26
+ return JSON.parse(fs.readFileSync(STATE_FILE, 'utf8'));
27
+ }
28
+ } catch (e) {
29
+ // Ignore parse errors
30
+ }
31
+ return {
32
+ lastEditTime: null,
33
+ verificationPending: false,
34
+ editsSinceVerification: 0,
35
+ sessionStart: Date.now()
36
+ };
37
+ }
38
+
39
+ function saveState(state) {
40
+ fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
41
+ }
42
+
43
+ function main() {
44
+ const state = loadState();
45
+
46
+ // Record edit
47
+ state.lastEditTime = Date.now();
48
+ state.verificationPending = true;
49
+ state.editsSinceVerification++;
50
+
51
+ saveState(state);
52
+
53
+ // Output enforcement message
54
+ console.log(JSON.stringify({
55
+ hook: 'post-edit-verification',
56
+ action: 'record',
57
+ editsSinceVerification: state.editsSinceVerification,
58
+ message: `Edit recorded. ${state.editsSinceVerification} edit(s) since last verification. Run verification before completing.`
59
+ }));
60
+ }
61
+
62
+ main();
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pre-Complete Verification Gate
4
+ *
5
+ * Blocks completion until verification runs after edits.
6
+ * This hook runs before the agent claims work is done and:
7
+ * 1. Checks if verification is pending
8
+ * 2. Blocks completion if verification hasn't run
9
+ * 3. Allows completion if verification passed or no edits occurred
10
+ */
11
+
12
+ const fs = require('fs');
13
+ const path = require('path');
14
+
15
+ const STATE_DIR = path.join(process.env.HOME || process.env.USERPROFILE, '.harness-state');
16
+ const STATE_FILE = path.join(STATE_DIR, 'edit-state.json');
17
+
18
+ function loadState() {
19
+ try {
20
+ if (fs.existsSync(STATE_FILE)) {
21
+ return JSON.parse(fs.readFileSync(STATE_FILE, 'utf8'));
22
+ }
23
+ } catch (e) {
24
+ // Ignore parse errors
25
+ }
26
+ return {
27
+ lastEditTime: null,
28
+ verificationPending: false,
29
+ editsSinceVerification: 0,
30
+ sessionStart: Date.now()
31
+ };
32
+ }
33
+
34
+ function saveState(state) {
35
+ fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
36
+ }
37
+
38
+ function main() {
39
+ const state = loadState();
40
+
41
+ // Check if verification is pending
42
+ if (state.verificationPending && state.editsSinceVerification > 0) {
43
+ // Block completion
44
+ console.log(JSON.stringify({
45
+ hook: 'pre-complete-verification',
46
+ action: 'block',
47
+ reason: 'verification_pending',
48
+ editsSinceVerification: state.editsSinceVerification,
49
+ message: `Cannot complete: ${state.editsSinceVerification} edit(s) since last verification. Run verification first.`,
50
+ instructions: 'Run verification: node .harness-src/opencode-plugin/hooks/verify.js'
51
+ }));
52
+
53
+ // Exit with non-zero to block
54
+ process.exit(1);
55
+ }
56
+
57
+ // Allow completion
58
+ console.log(JSON.stringify({
59
+ hook: 'pre-complete-verification',
60
+ action: 'allow',
61
+ message: 'Verification complete or no edits pending.'
62
+ }));
63
+ }
64
+
65
+ main();
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Verification Runner Hook
4
+ *
5
+ * Runs verification commands and updates state.
6
+ * This hook runs available verification commands (npm test, lint, build) and:
7
+ * 1. Detects available scripts from package.json
8
+ * 2. Executes only available verification commands
9
+ * 3. Updates state to reflect verification status
10
+ * 4. Logs verification results
11
+ */
12
+
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+ const { execSync } = require('child_process');
16
+
17
+ const STATE_DIR = path.join(process.env.HOME || process.env.USERPROFILE, '.harness-state');
18
+ const STATE_FILE = path.join(STATE_DIR, 'edit-state.json');
19
+
20
+ // Ensure state directory exists
21
+ if (!fs.existsSync(STATE_DIR)) {
22
+ fs.mkdirSync(STATE_DIR, { recursive: true });
23
+ }
24
+
25
+ function loadState() {
26
+ try {
27
+ if (fs.existsSync(STATE_FILE)) {
28
+ return JSON.parse(fs.readFileSync(STATE_FILE, 'utf8'));
29
+ }
30
+ } catch (e) {
31
+ // Ignore parse errors
32
+ }
33
+ return {
34
+ lastEditTime: null,
35
+ verificationPending: false,
36
+ editsSinceVerification: 0,
37
+ sessionStart: Date.now()
38
+ };
39
+ }
40
+
41
+ function saveState(state) {
42
+ fs.writeFileSync(STATE_FILE, JSON.stringify(state, null, 2));
43
+ }
44
+
45
+ function getAvailableScripts() {
46
+ const pkgPath = path.join(process.cwd(), 'package.json');
47
+ if (!fs.existsSync(pkgPath)) {
48
+ return [];
49
+ }
50
+ try {
51
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
52
+ return pkg.scripts || {};
53
+ } catch {
54
+ return [];
55
+ }
56
+ }
57
+
58
+ function runVerification(command) {
59
+ try {
60
+ execSync(command, {
61
+ stdio: 'pipe',
62
+ timeout: 60000 // 60 second timeout
63
+ });
64
+ return { success: true, command };
65
+ } catch (e) {
66
+ return {
67
+ success: false,
68
+ command,
69
+ error: e.message.slice(0, 200)
70
+ };
71
+ }
72
+ }
73
+
74
+ function main() {
75
+ const state = loadState();
76
+
77
+ // Get available scripts from package.json
78
+ const scripts = getAvailableScripts();
79
+
80
+ // Verification commands to try (only if script exists)
81
+ const possibleCommands = [
82
+ { cmd: 'npm test', script: 'test' },
83
+ { cmd: 'npm run lint', script: 'lint' },
84
+ { cmd: 'npm run build', script: 'build' }
85
+ ];
86
+
87
+ const commands = possibleCommands
88
+ .filter(c => scripts[c.script])
89
+ .map(c => c.cmd);
90
+
91
+ // If no verification scripts available, check if we should skip
92
+ if (commands.length === 0) {
93
+ // No npm verification available - check if this is a non-code task
94
+ // Allow completion without npm verification for doc-only tasks
95
+ console.log(JSON.stringify({
96
+ hook: 'verification-runner',
97
+ action: 'verify',
98
+ allPassed: true,
99
+ results: [],
100
+ message: 'No npm verification scripts available. Skipping npm verification (non-code task assumed).',
101
+ skipped: true
102
+ }));
103
+ return;
104
+ }
105
+
106
+ const results = [];
107
+ let allPassed = true;
108
+
109
+ for (const cmd of commands) {
110
+ const result = runVerification(cmd);
111
+ results.push(result);
112
+ if (!result.success) {
113
+ allPassed = false;
114
+ }
115
+ }
116
+
117
+ // Update state
118
+ state.verificationPending = !allPassed;
119
+ state.editsSinceVerification = allPassed ? 0 : state.editsSinceVerification;
120
+ state.lastVerificationTime = Date.now();
121
+ state.verificationResults = results;
122
+
123
+ saveState(state);
124
+
125
+ // Output results
126
+ console.log(JSON.stringify({
127
+ hook: 'verification-runner',
128
+ action: 'verify',
129
+ allPassed,
130
+ results: results.map(r => ({
131
+ command: r.command,
132
+ success: r.success
133
+ })),
134
+ message: allPassed
135
+ ? 'All available verification passed. You can now complete.'
136
+ : 'Some verification failed. Fix issues before completing.'
137
+ }));
138
+ }
139
+
140
+ main();
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "harness-enforcement",
3
+ "description": "Enforcement plugin for Harness skills - adds hard gates for verification and circuit breaker in opencode",
4
+ "version": "0.1.0",
5
+ "author": "Miya Daniel",
6
+ "license": "Apache-2.0",
7
+ "hooks": {
8
+ "postEdit": "hooks/post-edit.js",
9
+ "preComplete": "hooks/pre-complete.js"
10
+ },
11
+ "config": {
12
+ "verificationRequired": true,
13
+ "circuitBreakerEnabled": true,
14
+ "maxRetries": 3,
15
+ "verificationCommands": ["npm test", "npm run lint", "npm run build"]
16
+ }
17
+ }
@@ -0,0 +1,198 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Hook Firing Verification Test
4
+ *
5
+ * Tests that each opencode plugin hook fires correctly by:
6
+ * 1. Directly invoking each hook with test inputs
7
+ * 2. Verifying expected outputs and state changes
8
+ * 3. Reporting hook fire rate
9
+ */
10
+
11
+ const fs = require('fs');
12
+ const path = require('path');
13
+ const { spawn } = require('child_process');
14
+
15
+ const HOOKS_DIR = path.join(__dirname, 'hooks');
16
+ const STATE_DIR = path.join(process.env.HOME || process.env.USERPROFILE, '.harness-state');
17
+
18
+ const HOOKS = [
19
+ { name: 'post-edit', file: 'post-edit.js', input: null },
20
+ { name: 'pre-complete', file: 'pre-complete.js', input: null },
21
+ { name: 'circuit-breaker', file: 'circuit-breaker.js', input: 'Error: test failure signature' },
22
+ { name: 'compliance', file: 'compliance.js', input: JSON.stringify({ hook: 'post-edit-verification' }) },
23
+ { name: 'verify', file: 'verify.js', input: null }
24
+ ];
25
+
26
+ function cleanState() {
27
+ const files = ['edit-state.json', 'circuit-breaker.json', 'compliance.json'];
28
+ for (const f of files) {
29
+ const p = path.join(STATE_DIR, f);
30
+ if (fs.existsSync(p)) fs.unlinkSync(p);
31
+ }
32
+ }
33
+
34
+ function runHook(hook, testInput) {
35
+ return new Promise((resolve) => {
36
+ const hookPath = path.join(HOOKS_DIR, hook.file);
37
+ const child = spawn('node', [hookPath], {
38
+ stdio: ['pipe', 'pipe', 'pipe'],
39
+ env: { ...process.env, NODE_ENV: 'test' }
40
+ });
41
+
42
+ let stdout = '';
43
+ let stderr = '';
44
+
45
+ if (testInput) {
46
+ child.stdin.write(testInput);
47
+ child.stdin.end();
48
+ }
49
+
50
+ child.stdout.on('data', (data) => stdout += data);
51
+ child.stderr.on('data', (data) => stderr += data);
52
+
53
+ child.on('close', (code) => {
54
+ resolve({ code, stdout: stdout.trim(), stderr: stderr.trim() });
55
+ });
56
+
57
+ child.on('error', (err) => {
58
+ resolve({ code: -1, stdout: '', stderr: err.message });
59
+ });
60
+ });
61
+ }
62
+
63
+ function parseOutput(output) {
64
+ try {
65
+ return JSON.parse(output);
66
+ } catch {
67
+ return { raw: output };
68
+ }
69
+ }
70
+
71
+ async function testHookFiring() {
72
+ console.log('=== Hook Firing Verification Test ===\n');
73
+
74
+ // Clean state before each test
75
+ cleanState();
76
+
77
+ let passed = 0;
78
+ let total = 0;
79
+
80
+ for (const hook of HOOKS) {
81
+ total++;
82
+ console.log(`Testing ${hook.name}...`);
83
+
84
+ const result = await runHook(hook, hook.input);
85
+ const parsed = parseOutput(result.stdout);
86
+
87
+ const success = result.code === 0 || result.code === 1 || result.code === 2;
88
+ const hasHookField = parsed.hook !== undefined;
89
+
90
+ if (success && hasHookField) {
91
+ console.log(` ✅ PASS - Hook fired (exit=${result.code}, hook=${parsed.hook})`);
92
+ passed++;
93
+ } else {
94
+ console.log(` ❌ FAIL - Hook did not fire properly`);
95
+ console.log(` Exit code: ${result.code}`);
96
+ console.log(` Stdout: ${result.stdout}`);
97
+ console.log(` Stderr: ${result.stderr}`);
98
+ }
99
+ }
100
+
101
+ // Test circuit breaker trip sequence
102
+ console.log('\n--- Circuit Breaker Sequence Test ---');
103
+ cleanState();
104
+
105
+ let cbTrips = 0;
106
+ for (let i = 1; i <= 4; i++) {
107
+ const result = await runHook(HOOKS[2], 'Error: repeated failure signature');
108
+ const parsed = parseOutput(result.stdout);
109
+
110
+ if (result.code === 2) {
111
+ cbTrips++;
112
+ console.log(` Trip ${i}: ${parsed.action} (${parsed.reason || 'N/A'}) count=${parsed.count}`);
113
+ }
114
+ }
115
+
116
+ // Now simulate reflection and test hard lock
117
+ const breakerFile = path.join(STATE_DIR, 'circuit-breaker.json');
118
+ if (fs.existsSync(breakerFile)) {
119
+ const breakerState = JSON.parse(fs.readFileSync(breakerFile, 'utf8'));
120
+ // Set lastReflection to simulate zoom-out reflection
121
+ breakerState.lastReflection = Date.now();
122
+ fs.writeFileSync(breakerFile, JSON.stringify(breakerState, null, 2));
123
+ }
124
+
125
+ // 5th trip should hard lock
126
+ const hardLockResult = await runHook(HOOKS[2], 'Error: repeated failure signature');
127
+ const hardLockParsed = parseOutput(hardLockResult.stdout);
128
+ console.log(` Trip 5 (after reflection): ${hardLockParsed.action} (${hardLockParsed.reason || 'N/A'})`);
129
+
130
+ if (hardLockResult.code === 2 && hardLockParsed.action === 'hard_lock') {
131
+ console.log(' ✅ Circuit breaker hard-locks after reflection');
132
+ passed++;
133
+ } else {
134
+ console.log(' ❌ Circuit breaker did not hard-lock after reflection');
135
+ }
136
+ total++;
137
+
138
+ // Test compliance aggregation
139
+ console.log('\n--- Compliance Aggregation Test ---');
140
+ cleanState();
141
+
142
+ // Simulate a few events
143
+ await runHook(HOOKS[3], JSON.stringify({ hook: 'post-edit-verification' }));
144
+ await runHook(HOOKS[3], JSON.stringify({ hook: 'pre-complete-verification', action: 'block' }));
145
+ await runHook(HOOKS[3], JSON.stringify({ hook: 'verification-runner', allPassed: true }));
146
+
147
+ const compResult = await runHook(HOOKS[3], JSON.stringify({ hook: 'circuit-breaker', action: 'force_reflection' }));
148
+ const compParsed = parseOutput(compResult.stdout);
149
+
150
+ if (compParsed.metrics && compParsed.metrics.totalEdits > 0) {
151
+ console.log(' ✅ Compliance tracking works');
152
+ console.log(` ${compParsed.message}`);
153
+ passed++;
154
+ } else {
155
+ console.log(' ❌ Compliance tracking failed');
156
+ console.log(` Output: ${compResult.stdout}`);
157
+ }
158
+ total++;
159
+
160
+ // Test verification runner
161
+ console.log('\n--- Verification Runner Test ---');
162
+ cleanState();
163
+ // First do an edit to set pending state
164
+ await runHook(HOOKS[0]);
165
+ // Then run verification
166
+ const verifyResult = await runHook(HOOKS[4]);
167
+ const verifyParsed = parseOutput(verifyResult.stdout);
168
+
169
+ if (verifyParsed.hook === 'verification-runner') {
170
+ console.log(' ✅ Verification runner fires');
171
+ console.log(` Result: ${verifyParsed.message}`);
172
+ passed++;
173
+ } else {
174
+ console.log(' ❌ Verification runner failed');
175
+ console.log(` Output: ${verifyResult.stdout}`);
176
+ }
177
+ total++;
178
+
179
+ // Summary
180
+ const rate = (passed / total * 100).toFixed(1);
181
+ console.log(`\n=== SUMMARY ===`);
182
+ console.log(`Hooks tested: ${total}`);
183
+ console.log(`Passed: ${passed}`);
184
+ console.log(`Fire rate: ${rate}%`);
185
+
186
+ if (rate >= 95) {
187
+ console.log('\n🎉 HOOK FIRING VERIFICATION PASSED (≥95%)');
188
+ process.exit(0);
189
+ } else {
190
+ console.log('\n❌ HOOK FIRING VERIFICATION FAILED (<95%)');
191
+ process.exit(1);
192
+ }
193
+ }
194
+
195
+ testHookFiring().catch(err => {
196
+ console.error('Test error:', err);
197
+ process.exit(1);
198
+ });
package/package.json CHANGED
@@ -1,22 +1,50 @@
1
- {
2
- "name": "harness-everything",
3
- "version": "0.2.2",
4
- "description": "Harness OS: An Orchestrated Agent Operating System for AI-driven Development",
5
- "main": "harness-everything/scripts/bootstrap.js",
6
- "bin": {
7
- "harness": "./bin/cli.js"
8
- },
9
- "scripts": {
10
- "test": "node self-evolve/scripts/self-regression.js",
11
- "self-regression": "node self-evolve/scripts/self-regression.js",
12
- "test:mechanism": "node eval-framework/mechanism-test.js",
13
- "harness:reset": "node hooks/scripts/reset-circuit-breaker.js"
14
- },
15
- "engines": {
16
- "node": ">=18"
17
- },
18
- "author": "Miya Daniel | Harness Core Team",
19
- "license": "Apache-2.0",
20
- "dependencies": {},
21
- "devDependencies": {}
22
- }
1
+ {
2
+ "name": "harness-everything",
3
+ "version": "0.3.6",
4
+ "description": "Harness OS: An Orchestrated Agent Operating System for AI-driven Development",
5
+ "main": "harness-everything/scripts/bootstrap.js",
6
+ "bin": {
7
+ "harness": "./bin/cli.js"
8
+ },
9
+ "scripts": {
10
+ "test": "node self-evolve/scripts/self-regression.js",
11
+ "self-regression": "node self-evolve/scripts/self-regression.js",
12
+ "test:mechanism": "node ci/mechanism-test.js",
13
+ "test:consistency": "node ci/consistency-check.js",
14
+ "test:references": "node ci/reference-check.js",
15
+ "test:release": "node ci/release-consistency-check.js --tag v0.3.3-beta",
16
+ "test:install": "node scripts/verify-install.js",
17
+ "test:collision": "node ci/description-collision.js",
18
+ "test:routing:skills": "node ci/skill-routing-check.js",
19
+ "test:routing": "node ci/routing-check.js",
20
+ "benchmark:scaffold": "node benchmarks/run.js scaffold",
21
+ "benchmark:status": "node benchmarks/run.js status",
22
+ "eval:behavioral": "node behavioral-evals/run.js run",
23
+ "eval:behavioral:validate": "node behavioral-evals/run.js validate",
24
+ "eval:behavioral:plugin": "node behavioral-evals/run-with-plugin.js run",
25
+ "test:ab": "node ci/ab-test-harness.js validate",
26
+ "test:ab:run": "node ci/ab-test-harness.js run",
27
+ "harness:reset": "node hooks/scripts/reset-circuit-breaker.js",
28
+ "prepare": "husky install",
29
+ "commitlint": "commitlint --edit"
30
+ },
31
+ "engines": {
32
+ "node": ">=18"
33
+ },
34
+ "author": "Miya Daniel",
35
+ "license": "Apache-2.0",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/dyphn1/Harness-everything.git"
39
+ },
40
+ "homepage": "https://github.com/dyphn1/Harness-everything#readme",
41
+ "bugs": {
42
+ "url": "https://github.com/dyphn1/Harness-everything/issues"
43
+ },
44
+ "devDependencies": {
45
+ "js-yaml": "^5.4.1",
46
+ "@commitlint/cli": "^19.0.0",
47
+ "@commitlint/config-conventional": "^19.0.0",
48
+ "husky": "^9.0.0"
49
+ }
50
+ }
@@ -0,0 +1,67 @@
1
+ # Definition of Done
2
+
3
+ A standing, project-wide bar that every change must clear before it counts as done. Unlike acceptance criteria, which vary per task and answer "did we build the right thing?", the Definition of Done is the same every time and answers "is this finished to our standard?". Use it as the final gate in `planning-and-task-breakdown`, `incremental-implementation`, and `shipping-and-launch`.
4
+
5
+ ## Definition of Done vs. Acceptance Criteria
6
+
7
+ | | Acceptance Criteria | Definition of Done |
8
+ |---|---|---|
9
+ | Scope | Specific to one task or spec | Applies to every increment |
10
+ | Changes | Different for each item | Fixed and reused |
11
+ | Answers | "Did we build *this thing*?" | "Is it *ready*?" |
12
+ | Owner | Defined when planning the task | Defined once for the project |
13
+ | Example | "User can reset password via email link" | "Tests pass, no regressions, docs updated" |
14
+
15
+ The two are complementary. A task is done only when **its** acceptance criteria are met **and** the standing Definition of Done is satisfied. Skipping either leaves work that looks finished but is not.
16
+
17
+ ## The Standing Checklist
18
+
19
+ Apply this to every change before declaring it done.
20
+
21
+ ### Correctness
22
+ - [ ] All acceptance criteria for the task are met
23
+ - [ ] Code runs and behaves as intended, verified at runtime, not just compiled or typechecked
24
+ - [ ] New behavior is covered by tests that fail without the change and pass with it
25
+ - [ ] Existing tests still pass; no regressions introduced
26
+ - [ ] Edge cases and error paths are handled, not just the happy path
27
+
28
+ ### Quality
29
+ - [ ] Code reveals intent through naming and structure; no comments needed to explain *what* it does
30
+ - [ ] No duplicated business logic
31
+ - [ ] No dead code, debug output, or commented-out blocks left behind
32
+ - [ ] Changes are scoped to the task; no unrelated refactors snuck in
33
+ - [ ] Linting and formatting pass
34
+
35
+ The depth behind these items lives in `code-review-and-quality` (the five-axis review) and `code-simplification` (reducing complexity without changing behavior).
36
+
37
+ ### Integration
38
+ - [ ] Change works with the rest of the system, not just in isolation
39
+ - [ ] Database migrations, config changes, and feature flags are accounted for
40
+ - [ ] Backward compatibility considered for any public interface or API change
41
+
42
+ ### Documentation
43
+ - [ ] Public interfaces, APIs, and user-facing behavior are documented
44
+ - [ ] Architectural decisions worth preserving are recorded (see `documentation-and-adrs`)
45
+ - [ ] Documentation describes the current state in timeless language, not the change history
46
+
47
+ ### Ship-readiness
48
+ - [ ] Security implications reviewed for any untrusted input, auth, or data handling (see `security-and-hardening`)
49
+ - [ ] Observability in place for new critical paths (logs, metrics, traces) (see `observability-and-instrumentation`)
50
+ - [ ] Rollback path exists for anything risky (see `shipping-and-launch`)
51
+ - [ ] The human has reviewed and approved before merge or deploy
52
+
53
+ ## How to Apply
54
+
55
+ - **Per task**: confirm the Correctness and Quality sections before checking the task off.
56
+ - **Per feature**: confirm Integration and Documentation before considering the feature complete.
57
+ - **Per release**: the full checklist is the floor; `shipping-and-launch` adds the deploy-specific gates on top.
58
+
59
+ Tailor the list to the project once, then reuse it unchanged. A Definition of Done that is renegotiated every sprint is not a Definition of Done.
60
+
61
+ ## Red Flags
62
+
63
+ - "It's done, I just haven't run it yet": unverified work is not done.
64
+ - "Tests pass" used as a synonym for done while docs, regressions, or runtime verification are skipped.
65
+ - A different bar applied depending on deadline pressure.
66
+ - Acceptance criteria treated as the whole bar, with no standing quality floor.
67
+ - "Done" declared before human review on changes that need it.