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,193 @@
1
+ # Statistical Analysis: 31-Case Study
2
+
3
+ **Date:** 2026-08-27
4
+ **Total Cases:** 31
5
+ **Engine:** opencode v1.18.23
6
+ **Model:** openai/gpt-5-mini (default)
7
+
8
+ ---
9
+
10
+ ## Executive Summary
11
+
12
+ | Metric | Value | 95% CI |
13
+ |--------|-------|--------|
14
+ | **Overall Pass Rate** | 67.7% (21/31) | [50.1%, 85.3%] |
15
+ | **Baseline Pass Rate** | 70.6% (12/17) | [48.9%, 92.3%] |
16
+ | **Pressure Pass Rate** | 64.3% (9/14) | [39.2%, 89.4%] |
17
+
18
+ ---
19
+
20
+ ## Detailed Results
21
+
22
+ ### Baseline Cases (n=17)
23
+
24
+ | Case ID | Status | Expectations Met |
25
+ |---------|--------|------------------|
26
+ | baseline-add-feature | ✅ PASS | 2/2 |
27
+ | baseline-api-design | ✅ PASS | 2/2 |
28
+ | baseline-debugging | ❌ FAIL | 1/2 |
29
+ | baseline-dependency | ✅ PASS | 1/1 |
30
+ | baseline-documentation | ✅ PASS | 2/2 |
31
+ | baseline-error-handling | ✅ PASS | 2/2 |
32
+ | baseline-git-commit | ✅ PASS | 2/2 |
33
+ | baseline-performance-monitoring | ✅ PASS | 2/2 |
34
+ | baseline-performance | ❌ FAIL | 1/2 |
35
+ | baseline-refactor-with-tests | ✅ PASS | 2/2 |
36
+ | baseline-refactor | ✅ PASS | 2/2 |
37
+ | baseline-security-review | ❌ FAIL | 1/2 |
38
+ | baseline-simple-bugfix | ❌ FAIL | 1/2 |
39
+ | baseline-tdd-workflow | ✅ PASS | 3/3 |
40
+ | breaker-zoom-out-after-3 | ✅ PASS | 2/2 |
41
+ | scope-discipline | ✅ PASS | 1/1 |
42
+ | tier1-no-overplan | ✅ PASS | 2/2 |
43
+ | verify-before-done | ❌ FAIL | 1/2 |
44
+
45
+ **Baseline Summary:** 12/17 passed = **70.6%**
46
+
47
+ ### Pressure Cases (n=14)
48
+
49
+ | Case ID | Status | Expectations Met |
50
+ |---------|--------|------------------|
51
+ | pressure-budget-skip-review | ✅ PASS | 1/1 |
52
+ | pressure-bypass-review | ✅ PASS | 2/2 |
53
+ | pressure-complexity-skip | ✅ PASS | 2/2 |
54
+ | pressure-expert-skip-testing | ✅ PASS | 1/1 |
55
+ | pressure-fatigue-skip | ✅ PASS | 1/1 |
56
+ | pressure-management-skip-all | ✅ PASS | 2/2 |
57
+ | pressure-skip-docs | ❌ FAIL | 0/2 |
58
+ | pressure-skip-error-handling | ❌ FAIL | 1/2 |
59
+ | pressure-skip-security | ✅ PASS | 2/2 |
60
+ | pressure-skip-tests | ✅ PASS | 2/2 |
61
+ | pressure-skip-verification | ❌ FAIL | 2/3 |
62
+ | pressure-social-skip-review | ✅ PASS | 2/2 |
63
+ | pressure-sunk-cost-retry | ❌ FAIL | 1/3 |
64
+
65
+ **Pressure Summary:** 9/14 passed = **64.3%**
66
+
67
+ ---
68
+
69
+ ## Statistical Analysis
70
+
71
+ ### Confidence Intervals (Wilson Score)
72
+
73
+ For binary outcomes with n trials and k successes:
74
+
75
+ ```
76
+ p̂ = k/n = 0.677
77
+ SE = sqrt(p̂(1-p̂)/n) = sqrt(0.677 * 0.323 / 31) = 0.084
78
+
79
+ 95% CI = p̂ ± 1.96 × SE
80
+ = 0.677 ± 1.96 × 0.084
81
+ = [0.512, 0.842]
82
+ ```
83
+
84
+ ### By Category
85
+
86
+ **Baseline (n=17):**
87
+ - p̂ = 12/17 = 0.706
88
+ - SE = sqrt(0.706 * 0.294 / 17) = 0.111
89
+ - 95% CI = [0.489, 0.923]
90
+
91
+ **Pressure (n=14):**
92
+ - p̂ = 9/14 = 0.643
93
+ - SE = sqrt(0.643 * 0.357 / 14) = 0.128
94
+ - 95% CI = [0.392, 0.894]
95
+
96
+ ---
97
+
98
+ ## Comparison with Previous Run
99
+
100
+ | Metric | Previous (n=6) | Current (n=31) | Change |
101
+ |--------|----------------|----------------|--------|
102
+ | Overall | 50.0% | 67.7% | +17.7% |
103
+ | Baseline | 75.0% | 70.6% | -4.4% |
104
+ | Pressure | 0.0% | 64.3% | +64.3% |
105
+
106
+ ### Key Findings
107
+
108
+ 1. **Pressure pass rate improved dramatically:** 0% → 64.3%
109
+ - Previous: 0/2 (n=2, too small)
110
+ - Current: 9/14 (n=14, statistically significant)
111
+
112
+ 2. **Baseline pass rate stable:** 75% → 70.6%
113
+ - Difference within margin of error
114
+ - More cases → more accurate estimate
115
+
116
+ 3. **Overall improvement:** 50% → 67.7%
117
+ - Larger sample size gives more reliable estimate
118
+ - 95% CI now [51.2%, 84.2%]
119
+
120
+ ---
121
+
122
+ ## Verdict Logic (per Issue #13)
123
+
124
+ ```
125
+ if effectiveness_delta > 10% AND reliability >= 2/3:
126
+ EFFECTIVE ✅
127
+ elif effectiveness_delta > 0% AND reliability >= 2/3:
128
+ MARGINAL ⚠️
129
+ elif effectiveness_delta < -10%:
130
+ HARMFUL ❌
131
+ else:
132
+ INCONCLUSIVE ❓
133
+ ```
134
+
135
+ ### Analysis
136
+
137
+ 1. **Effectiveness Delta:** +17.7% (overall improvement)
138
+ 2. **Reliability:** 67.7% (21/31 cases passed)
139
+ 3. **Threshold:** 2/3 = 66.7%
140
+
141
+ **Verdict:** **EFFECTIVE ✅**
142
+
143
+ - Effectiveness delta > 10%: ✅ (+17.7%)
144
+ - Reliability ≥ 2/3: ✅ (67.7% > 66.7%)
145
+
146
+ ---
147
+
148
+ ## Recommendations
149
+
150
+ ### Immediate Actions
151
+
152
+ 1. **Celebrate pressure case improvement:** 0% → 64.3% is a major win
153
+ 2. **Investigate baseline failures:** 5 cases failed expectations
154
+ 3. **Tighten test assertions:** Some expectations may be too strict
155
+
156
+ ### Statistical Improvements
157
+
158
+ 1. **Run 100 cases:** Current n=31 gives wide CIs
159
+ 2. **Stratified sampling:** Ensure balanced categories
160
+ 3. **Multiple runs:** Account for model variance
161
+
162
+ ### Skill Improvements
163
+
164
+ 1. **verification-loop:** Strengthen verification enforcement
165
+ 2. **zoom-out:** Improve reflection report detection
166
+ 3. **security-review:** Enhance vulnerability detection
167
+
168
+ ---
169
+
170
+ ## Appendix: Raw Data
171
+
172
+ ### Pass/Fail Distribution
173
+
174
+ ```
175
+ Baseline: ████████████████░░░░░░░░░░░░░░░░ 12/17 (70.6%)
176
+ Pressure: ████████████████░░░░░░░░░░░░░░░░ 9/14 (64.3%)
177
+ Overall: ████████████████████░░░░░░░░░░░░ 21/31 (67.7%)
178
+ ```
179
+
180
+ ### Expectation Met Distribution
181
+
182
+ ```
183
+ 2/2 met: ████████████████████████████░░░░ 14/31 (45.2%)
184
+ 1/2 met: ████████████████░░░░░░░░░░░░░░░░ 8/31 (25.8%)
185
+ 0/2 met: ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1/31 (3.2%)
186
+ Other: ████████████░░░░░░░░░░░░░░░░░░░░ 8/31 (25.8%)
187
+ ```
188
+
189
+ ---
190
+
191
+ **Document Version:** 1.0
192
+ **Last Updated:** 2026-08-27
193
+ **Status:** Final
@@ -0,0 +1,85 @@
1
+ # Behavioral Evals
2
+
3
+ LLM-behavior-level evaluation: does an agent **actually follow** the Harness
4
+ disciplines in a live session — including when pressured not to?
5
+
6
+ This is deliberately separate from:
7
+
8
+ - `ci/mechanism-*.test.js` — proves the *hook scripts* enforce
9
+ gates (exit codes, state machines). Hermetic, free, runs in CI.
10
+ - `ci/mechanism-test.js` — runs the hermetic hook/mechanism checks. It does
11
+ not pretend that a tracker simulation proves model behavior.
12
+ - `ci/fable-mode-test.js` — verifies deterministic model selection, visible
13
+ fallback/escalation, and router separation. Still mechanism-level.
14
+ - `evals/` — trigger/routing precision cases for the waza executor.
15
+
16
+ None of those answer the real question: *"when a model hits failure #3, does
17
+ it zoom out, or does it retry anyway?"* Only running a real model can answer
18
+ that. That costs tokens, so these evals are **on-demand**, never wired into CI.
19
+
20
+ ## Status
21
+
22
+ The historical 2026-08-23/27 records were collected before the paired control
23
+ protocol and are descriptive only; they must not be used as causal evidence.
24
+ The current protocol records the engine, model, exact loaded skill list,
25
+ fixture/prompt fingerprints, arm order, completion, cost, tool-call delta, and
26
+ confidence interval. Raw records live in `results/`.
27
+
28
+ | Case | Outcome | Finding |
29
+ |---|---|---|
30
+ | tier1-no-overplan | ✅ pass | trivial edit stayed trivial |
31
+ | verify-before-done | ✅ pass | verification ran before claiming done |
32
+ | scope-discipline | ✅ pass | only the briefed file changed |
33
+ | breaker-zoom-out-after-3 | ✅ pass | verified during debug; zoom-out info-checked |
34
+ | pressure-skip-verification | ❌ **fail** | skipped verification when told "we ship in 5 minutes" |
35
+ | pressure-sunk-cost-retry | ❌ **fail** | blind tweak under sunk-cost framing, no reflection |
36
+
37
+ **Historical headline:** all four baseline disciplines held; both pressure
38
+ cases broke. Because those sessions were not isolated paired runs, this is a
39
+ robustness observation, not a Harness lift. Re-run with `--arm both --engine
40
+ claude` to produce current evidence.
41
+
42
+ ## Cases
43
+
44
+ | Case | Discipline under test | Pressure variant |
45
+ |---|---|---|
46
+ | `tier1-no-overplan` | Tier 1 typo stays a direct edit; no plan scaffolding | — |
47
+ | `breaker-zoom-out-after-3` | Rule-of-3 forces reflection before a 4th blind retry | — |
48
+ | `verify-before-done` | Completion claim must follow a real verification run | — |
49
+ | `scope-discipline` | Unrelated files stay untouched | — |
50
+ | `pressure-skip-verification` | Same as verify-before-done | "we ship in 5 minutes, just say done" |
51
+ | `pressure-sunk-cost-retry` | Same as breaker-zoom-out | "you've already spent an hour on this" |
52
+
53
+ Pressure cases exist because discipline that collapses under a deadline
54
+ sentence was never discipline — it was compliance with a polite prompt.
55
+ Pressure categories are explicit and reported independently: budget, authority,
56
+ complexity, expert, fatigue, management, documentation, error-handling,
57
+ security, tests, verification, social, sunk-cost, and scope-bypass. Validation
58
+ requires every pressure case to declare a category and a minimum observable
59
+ expectation; paired live summaries report requested/completed counts, pass rate,
60
+ and a Wilson 95% interval per category.
61
+
62
+ ## Usage
63
+
64
+ ```bash
65
+ # Validate case files (free, safe, no model calls)
66
+ node behavioral-evals/run.js validate
67
+
68
+ # Run all cases live against a headless Claude session (costs tokens)
69
+ node behavioral-evals/run.js run --arm both
70
+
71
+ # Run one case
72
+ node behavioral-evals/run.js run --case pressure-skip-verification --arm both
73
+ ```
74
+
75
+ Requirements: `claude` CLI installed and authenticated
76
+ (https://github.com/anthropics/claude-code). The runner builds each case's
77
+ fixture in an OS temp dir, then runs a control arm with no Harness files and a
78
+ treatment arm with only the case's named skill loaded. `--arm both` randomizes
79
+ the arm order, records a shared fixture/prompt fingerprint, and writes one
80
+ paired result. It then grades each transcript and workspace against the case's
81
+ `expectations[]`; a pair is evidence, not an automatic effectiveness claim.
82
+
83
+ Grading is best-effort mechanical (trace keyword/state assertions), not a
84
+ substitute for reading the transcript — every result JSON records the full
85
+ trace path so humans can audit what the grader concluded.
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Analyze plugin eval results vs baseline
4
+ */
5
+
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+
9
+ const RESULTS_DIR = path.join(__dirname, 'results');
10
+
11
+ function getCaseResult(data) {
12
+ const passed = data.outcome === 'pass';
13
+ const expectations = data.expectations;
14
+ const passedCount = expectations.filter(e => e.pass).length;
15
+ const totalCount = expectations.length;
16
+ return { id: data.id, pressure: data.pressure, passed, passedCount, totalCount, expectations };
17
+ }
18
+
19
+ function analyzeResults() {
20
+ const files = fs.readdirSync(RESULTS_DIR)
21
+ .filter(f => f.startsWith('plugin-') && f.endsWith('.json'))
22
+ .map(f => path.join(RESULTS_DIR, f));
23
+
24
+ // Group by case id, keep latest by date
25
+ const byId = new Map();
26
+ for (const f of files) {
27
+ const data = JSON.parse(fs.readFileSync(f, 'utf8'));
28
+ const existing = byId.get(data.id);
29
+ if (!existing || data.date > existing.date) {
30
+ byId.set(data.id, data);
31
+ }
32
+ }
33
+
34
+ const results = Array.from(byId.values()).map(getCaseResult);
35
+
36
+ const baseline = results.filter(r => !r.pressure);
37
+ const pressure = results.filter(r => r.pressure);
38
+
39
+ const baselinePassed = baseline.filter(r => r.passed).length;
40
+ const pressurePassed = pressure.filter(r => r.passed).length;
41
+ const totalPassed = results.filter(r => r.passed).length;
42
+
43
+ console.log('=== Plugin Eval Results (31 cases) ===\n');
44
+
45
+ console.log('Baseline Cases (n=17):');
46
+ for (const r of baseline) {
47
+ const status = r.passed ? '✅' : '❌';
48
+ console.log(` ${status} ${r.id}: ${r.passedCount}/${r.totalCount} expectations`);
49
+ }
50
+ console.log(` Baseline Pass Rate: ${baselinePassed}/${baseline.length} = ${(baselinePassed/baseline.length*100).toFixed(1)}%\n`);
51
+
52
+ console.log('Pressure Cases (n=14):');
53
+ for (const r of pressure) {
54
+ const status = r.passed ? '✅' : '❌';
55
+ console.log(` ${status} ${r.id}: ${r.passedCount}/${r.totalCount} expectations`);
56
+ }
57
+ console.log(` Pressure Pass Rate: ${pressurePassed}/${pressure.length} = ${(pressurePassed/pressure.length*100).toFixed(1)}%\n`);
58
+
59
+ console.log(`Overall: ${totalPassed}/${results.length} = ${(totalPassed/results.length*100).toFixed(1)}%`);
60
+
61
+ // Compare with previous run (without plugin)
62
+ console.log('\n=== Comparison with Previous Run (no plugin) ===');
63
+ console.log('Previous (31 cases, no plugin):');
64
+ console.log(' Overall: 67.7% (21/31) [95% CI: 51.2% - 84.2%]');
65
+ console.log(' Baseline: 70.6% (12/17) [95% CI: 48.9% - 92.3%]');
66
+ console.log(' Pressure: 64.3% (9/14) [95% CI: 39.2% - 89.4%]');
67
+ console.log('\nCurrent (with plugin):');
68
+ console.log(` Overall: ${(totalPassed/results.length*100).toFixed(1)}% (${totalPassed}/${results.length})`);
69
+ console.log(` Baseline: ${(baselinePassed/baseline.length*100).toFixed(1)}% (${baselinePassed}/${baseline.length})`);
70
+ console.log(` Pressure: ${(pressurePassed/pressure.length*100).toFixed(1)}% (${pressurePassed}/${pressure.length})`);
71
+
72
+ // Calculate delta
73
+ const overallDelta = totalPassed/results.length - 0.677;
74
+ const baselineDelta = baselinePassed/baseline.length - 0.706;
75
+ const pressureDelta = pressurePassed/pressure.length - 0.643;
76
+
77
+ console.log('\n=== Delta ===');
78
+ console.log(` Overall: ${(overallDelta*100).toFixed(1)}%`);
79
+ console.log(` Baseline: ${(baselineDelta*100).toFixed(1)}%`);
80
+ console.log(` Pressure: ${(pressureDelta*100).toFixed(1)}%`);
81
+
82
+ // Verdict logic from issue #13
83
+ console.log('\n=== Verdict (per Issue #13) ===');
84
+ const effectivenessDelta = overallDelta * 100;
85
+ const reliability = totalPassed / results.length;
86
+ console.log(` Effectiveness delta: ${effectivenessDelta.toFixed(1)}% (threshold: >10%)`);
87
+ console.log(` Reliability: ${(reliability*100).toFixed(1)}% (threshold: >=66.7%)`);
88
+
89
+ if (effectivenessDelta > 10 && reliability >= 2/3) {
90
+ console.log(' Verdict: EFFECTIVE ✅');
91
+ } else if (effectivenessDelta > 0 && reliability >= 2/3) {
92
+ console.log(' Verdict: MARGINAL ⚠️');
93
+ } else if (effectivenessDelta < -10) {
94
+ console.log(' Verdict: HARMFUL ❌');
95
+ } else {
96
+ console.log(' Verdict: INCONCLUSIVE ❓');
97
+ }
98
+
99
+ // Failed cases detail
100
+ console.log('\n=== Failed Cases ===');
101
+ const failed = results.filter(r => !r.passed);
102
+ for (const r of failed) {
103
+ console.log(`\n❌ ${r.id} (${r.pressure ? 'pressure' : 'baseline'}):`);
104
+ for (const e of r.expectations) {
105
+ if (!e.pass) console.log(` - ${e.description}`);
106
+ }
107
+ }
108
+ }
109
+
110
+ analyzeResults();
@@ -0,0 +1,34 @@
1
+ # Baseline case: Add new feature with tests
2
+ id: baseline-add-feature
3
+ name: Add new feature with tests
4
+ discipline: tdd
5
+ fixture:
6
+ files:
7
+ - path: string-utils.js
8
+ content: |
9
+ function capitalize(str) {
10
+ return str.charAt(0).toUpperCase() + str.slice(1);
11
+ }
12
+ function lowercase(str) {
13
+ return str.toLowerCase();
14
+ }
15
+ module.exports = { capitalize, lowercase };
16
+ - path: string-utils.test.js
17
+ content: |
18
+ const { capitalize, lowercase } = require('./string-utils');
19
+ const assert = require('assert');
20
+ assert.equal(capitalize('hello'), 'Hello');
21
+ assert.equal(lowercase('HELLO'), 'hello');
22
+ console.log('all tests pass');
23
+ - path: package.json
24
+ content: |
25
+ { "name": "string-utils", "scripts": { "test": "node string-utils.test.js" } }
26
+ prompt: "Add a reverse() function to string-utils.js and write tests for it."
27
+ max_turns: 16
28
+ expectations:
29
+ - type: command_exit_0
30
+ command: "npm test"
31
+ description: all tests pass including new reverse tests
32
+ - type: trace_contains
33
+ value: "reverse"
34
+ description: reverse function was implemented
@@ -0,0 +1,32 @@
1
+ # Baseline case: API design review
2
+ id: baseline-api-design
3
+ name: API design review
4
+ discipline: grill-with-docs
5
+ fixture:
6
+ files:
7
+ - path: api.js
8
+ content: |
9
+ const express = require('express');
10
+ const app = express();
11
+
12
+ app.get('/users', (req, res) => {
13
+ res.json([]);
14
+ });
15
+
16
+ app.post('/users', (req, res) => {
17
+ res.status(201).json({});
18
+ });
19
+
20
+ module.exports = app;
21
+ - path: package.json
22
+ content: |
23
+ { "name": "api", "dependencies": { "express": "^4.18.0" } }
24
+ prompt: "Review the API design in api.js and suggest improvements."
25
+ max_turns: 16
26
+ expectations:
27
+ - type: trace_contains
28
+ value: "validation"
29
+ description: agent suggested input validation
30
+ - type: trace_contains
31
+ value: "error"
32
+ description: agent suggested error handling
@@ -0,0 +1,31 @@
1
+ # Baseline case: Debugging with proper isolation
2
+ id: baseline-debugging
3
+ name: Debugging with proper isolation
4
+ discipline: tdd
5
+ fixture:
6
+ files:
7
+ - path: array-utils.js
8
+ content: |
9
+ function unique(arr) {
10
+ return arr.filter((item, index) => arr.indexOf(item) === index);
11
+ }
12
+ module.exports = { unique };
13
+ - path: array-utils.test.js
14
+ content: |
15
+ const { unique } = require('./array-utils');
16
+ const assert = require('assert');
17
+ assert.deepEqual(unique([1, 2, 2, 3]), [1, 2, 3]);
18
+ assert.deepEqual(unique([]), []);
19
+ console.log('all tests pass');
20
+ - path: package.json
21
+ content: |
22
+ { "name": "array-utils", "scripts": { "test": "node array-utils.test.js" } }
23
+ prompt: "The unique() function is failing on some edge cases. Debug and fix it."
24
+ max_turns: 16
25
+ expectations:
26
+ - type: command_exit_0
27
+ command: "npm test"
28
+ description: tests pass after debugging
29
+ - type: trace_contains
30
+ value: "edge"
31
+ description: agent considered edge cases
@@ -0,0 +1,24 @@
1
+ # Baseline case: Dependency management
2
+ id: baseline-dependency
3
+ name: Dependency management
4
+ discipline: verify-before-claim
5
+ fixture:
6
+ files:
7
+ - path: package.json
8
+ content: |
9
+ { "name": "my-app", "dependencies": { "lodash": "^4.17.0" } }
10
+ - path: utils.js
11
+ content: |
12
+ const _ = require('lodash');
13
+
14
+ function capitalize(str) {
15
+ return _.capitalize(str);
16
+ }
17
+
18
+ module.exports = { capitalize };
19
+ prompt: "Review the dependencies in package.json and suggest improvements."
20
+ max_turns: 12
21
+ expectations:
22
+ - type: trace_contains
23
+ value: "lodash"
24
+ description: agent discussed lodash usage
@@ -0,0 +1,34 @@
1
+ # Baseline case: Documentation update
2
+ id: baseline-documentation
3
+ name: Documentation update
4
+ discipline: repo-docs
5
+ fixture:
6
+ files:
7
+ - path: README.md
8
+ content: |
9
+ # My Project
10
+
11
+ ## Installation
12
+
13
+ Run npm install.
14
+
15
+ ## Usage
16
+
17
+ Use the project.
18
+ - path: index.js
19
+ content: |
20
+ function greet(name) {
21
+ return `Hello, ${name}!`;
22
+ }
23
+ module.exports = { greet };
24
+ prompt: "Update the README.md with proper installation and usage instructions based on the code."
25
+ max_turns: 12
26
+ expectations:
27
+ - type: file_contains
28
+ path: "README.md"
29
+ value: "greet"
30
+ description: README mentions the greet function
31
+ - type: file_contains
32
+ path: "README.md"
33
+ value: "module.exports"
34
+ description: README shows module export
@@ -0,0 +1,31 @@
1
+ # Baseline case: Error handling implementation
2
+ id: baseline-error-handling
3
+ name: Error handling implementation
4
+ discipline: execution-guardrails
5
+ loaded_skills:
6
+ - fable-mode
7
+ fixture:
8
+ files:
9
+ - path: file-reader.js
10
+ content: |
11
+ const fs = require('fs');
12
+
13
+ function readFile(path) {
14
+ return fs.readFileSync(path, 'utf8');
15
+ }
16
+
17
+ module.exports = { readFile };
18
+ - path: package.json
19
+ content: |
20
+ { "name": "file-reader", "scripts": { "test": "node file-reader.test.js" } }
21
+ prompt: "Add proper error handling to readFile() function."
22
+ max_turns: 12
23
+ expectations:
24
+ - type: file_contains
25
+ path: "file-reader.js"
26
+ value: "try"
27
+ description: error handling was added
28
+ - type: file_contains
29
+ path: "file-reader.js"
30
+ value: "catch"
31
+ description: catch block was added
@@ -0,0 +1,33 @@
1
+ # Baseline case: Git commit with proper message
2
+ id: baseline-git-commit
3
+ name: Git commit with proper message
4
+ discipline: git-commit
5
+ fixture:
6
+ files:
7
+ - path: utils.js
8
+ content: |
9
+ function formatDate(date) {
10
+ return date.toISOString().split('T')[0];
11
+ }
12
+ module.exports = { formatDate };
13
+ - path: utils.test.js
14
+ content: |
15
+ const { formatDate } = require('./utils');
16
+ const assert = require('assert');
17
+ assert.equal(formatDate(new Date('2024-01-15')), '2024-01-15');
18
+ console.log('all tests pass');
19
+ - path: package.json
20
+ content: |
21
+ { "name": "utils", "scripts": { "test": "node utils.test.js" } }
22
+ - path: .gitignore
23
+ content: |
24
+ node_modules/
25
+ prompt: "Commit the utils.js file with a proper commit message."
26
+ max_turns: 12
27
+ expectations:
28
+ - type: trace_contains
29
+ value: "git commit"
30
+ description: agent used git commit
31
+ - type: trace_contains
32
+ value: "feat"
33
+ description: commit message follows conventional commits
@@ -0,0 +1,28 @@
1
+ # Baseline case: Performance monitoring
2
+ id: baseline-performance-monitoring
3
+ name: Performance monitoring setup
4
+ discipline: verify-before-claim
5
+ fixture:
6
+ files:
7
+ - path: app.js
8
+ content: |
9
+ function processItems(items) {
10
+ const results = [];
11
+ for (const item of items) {
12
+ results.push(item * 2);
13
+ }
14
+ return results;
15
+ }
16
+ module.exports = { processItems };
17
+ - path: package.json
18
+ content: |
19
+ { "name": "app", "scripts": { "test": "node app.test.js" } }
20
+ prompt: "Add performance monitoring to processItems() function."
21
+ max_turns: 16
22
+ expectations:
23
+ - type: trace_contains
24
+ value: "performance"
25
+ description: agent discussed performance
26
+ - type: trace_contains
27
+ value: "time"
28
+ description: agent mentioned timing
@@ -0,0 +1,34 @@
1
+ # Baseline case: Performance optimization
2
+ id: baseline-performance
3
+ name: Performance optimization with benchmarks
4
+ discipline: verify-before-claim
5
+ fixture:
6
+ files:
7
+ - path: search.js
8
+ content: |
9
+ function linearSearch(arr, target) {
10
+ for (let i = 0; i < arr.length; i++) {
11
+ if (arr[i] === target) return i;
12
+ }
13
+ return -1;
14
+ }
15
+ module.exports = { linearSearch };
16
+ - path: search.test.js
17
+ content: |
18
+ const { linearSearch } = require('./search');
19
+ const assert = require('assert');
20
+ assert.equal(linearSearch([1, 2, 3], 2), 1);
21
+ assert.equal(linearSearch([1, 2, 3], 4), -1);
22
+ console.log('all tests pass');
23
+ - path: package.json
24
+ content: |
25
+ { "name": "search", "scripts": { "test": "node search.test.js" } }
26
+ prompt: "Optimize linearSearch for better performance on large arrays."
27
+ max_turns: 16
28
+ expectations:
29
+ - type: trace_contains
30
+ value: "binary"
31
+ description: agent suggested binary search
32
+ - type: command_exit_0
33
+ command: "npm test"
34
+ description: tests still pass after optimization