freeharness 0.4.1

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 (375) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +108 -0
  3. package/README.md +134 -0
  4. package/canonical/HARVEST.yaml +858 -0
  5. package/canonical/PROVENANCE.yaml +740 -0
  6. package/canonical/agents/README.md +95 -0
  7. package/canonical/agents/agentic-architect.md +18 -0
  8. package/canonical/agents/database-reviewer.md +41 -0
  9. package/canonical/agents/explorer-ai-engineer-analyst.md +65 -0
  10. package/canonical/agents/pr-reviewer.md +96 -0
  11. package/canonical/agents/python-reviewer.md +55 -0
  12. package/canonical/agents/report-formatter.md +19 -0
  13. package/canonical/agents/security-reviewer.md +53 -0
  14. package/canonical/agents/test-writer.md +34 -0
  15. package/canonical/commands/fh-context.md +37 -0
  16. package/canonical/evals/promptfoo.redteam.yaml +108 -0
  17. package/canonical/hooks/cost-prices.json +14 -0
  18. package/canonical/hooks/freeharness-auto-memory.mjs +158 -0
  19. package/canonical/hooks/freeharness-config-guard.mjs +162 -0
  20. package/canonical/hooks/freeharness-context-monitor.mjs +198 -0
  21. package/canonical/hooks/freeharness-converge.mjs +227 -0
  22. package/canonical/hooks/freeharness-cost-tracker.mjs +1027 -0
  23. package/canonical/hooks/freeharness-memory-guard.mjs +57 -0
  24. package/canonical/hooks/freeharness-output-pruner.mjs +333 -0
  25. package/canonical/hooks/freeharness-precompact.mjs +323 -0
  26. package/canonical/hooks/freeharness-repeat-tool.mjs +208 -0
  27. package/canonical/hooks/freeharness-security-guidance.mjs +164 -0
  28. package/canonical/hooks/freeharness-session-start +583 -0
  29. package/canonical/hooks/hooks.auto-memory.claude-code.json +16 -0
  30. package/canonical/hooks/hooks.claude-code.json +17 -0
  31. package/canonical/hooks/hooks.config-guard.claude-code.json +16 -0
  32. package/canonical/hooks/hooks.context-monitor.claude-code.json +15 -0
  33. package/canonical/hooks/hooks.converge.claude-code.json +15 -0
  34. package/canonical/hooks/hooks.cost-tracker.claude-code.json +37 -0
  35. package/canonical/hooks/hooks.memory-guard.claude-code.json +16 -0
  36. package/canonical/hooks/hooks.output-pruner.claude-code.json +16 -0
  37. package/canonical/hooks/hooks.precompact.claude-code.json +15 -0
  38. package/canonical/hooks/hooks.repeat-tool.claude-code.json +25 -0
  39. package/canonical/hooks/hooks.security-guidance.claude-code.json +16 -0
  40. package/canonical/mcp/servers.json +20 -0
  41. package/canonical/openspec/config.base.yaml +89 -0
  42. package/canonical/openspec/schema.spec-driven.yaml +277 -0
  43. package/canonical/openspec/templates/data-contract.md +36 -0
  44. package/canonical/openspec/templates/design.md +84 -0
  45. package/canonical/openspec/templates/eval-plan.md +33 -0
  46. package/canonical/openspec/templates/follow-ups.md +2 -0
  47. package/canonical/openspec/templates/proposal.md +45 -0
  48. package/canonical/openspec/templates/spec.md +42 -0
  49. package/canonical/openspec/templates/tasks.md +38 -0
  50. package/canonical/profiles/local-llamacpp.LOCAL-MODELS.md +47 -0
  51. package/canonical/profiles/local-llamacpp.json +27 -0
  52. package/canonical/profiles/local-ollama.json +20 -0
  53. package/canonical/profiles/mcp.json +91 -0
  54. package/canonical/rules/CLAUDE.md +78 -0
  55. package/canonical/rules/project-CLAUDE.template.md +62 -0
  56. package/canonical/rules/routing.md +20 -0
  57. package/canonical/rules/safety.md +41 -0
  58. package/canonical/settings/settings.cache-hygiene.claude-code.json +5 -0
  59. package/canonical/skills/agent-evaluation/SKILL.md +102 -0
  60. package/canonical/skills/agent-evaluation/assets/evaluation_report_template.md +206 -0
  61. package/canonical/skills/agent-evaluation/evals/cases.yaml +106 -0
  62. package/canonical/skills/agent-evaluation/references/dataset-preparation.md +351 -0
  63. package/canonical/skills/agent-evaluation/references/scorers-constraints.md +165 -0
  64. package/canonical/skills/agent-evaluation/references/scorers.md +431 -0
  65. package/canonical/skills/agent-evaluation/references/setup-guide.md +252 -0
  66. package/canonical/skills/agent-evaluation/references/tracing-integration.md +164 -0
  67. package/canonical/skills/agent-evaluation/references/troubleshooting.md +514 -0
  68. package/canonical/skills/agent-evaluation/scripts/analyze_results.py +462 -0
  69. package/canonical/skills/agent-evaluation/scripts/create_dataset_template.py +382 -0
  70. package/canonical/skills/agent-evaluation/scripts/list_datasets.py +273 -0
  71. package/canonical/skills/agent-evaluation/scripts/run_evaluation_template.py +309 -0
  72. package/canonical/skills/agent-evaluation/scripts/setup_mlflow.py +353 -0
  73. package/canonical/skills/agent-evaluation/scripts/utils/__init__.py +27 -0
  74. package/canonical/skills/agent-evaluation/scripts/utils/env_validation.py +123 -0
  75. package/canonical/skills/agent-evaluation/scripts/utils/tracing_utils.py +108 -0
  76. package/canonical/skills/agent-evaluation/scripts/validate_agent_tracing.py +148 -0
  77. package/canonical/skills/agent-evaluation/scripts/validate_auth.py +240 -0
  78. package/canonical/skills/agent-evaluation/scripts/validate_environment.py +185 -0
  79. package/canonical/skills/agent-evaluation/scripts/validate_tracing_runtime.py +318 -0
  80. package/canonical/skills/agentic-architecture/SKILL.md +41 -0
  81. package/canonical/skills/agentic-architecture/evals/cases.yaml +94 -0
  82. package/canonical/skills/agentic-architecture/reference/context-engineering.md +75 -0
  83. package/canonical/skills/agentic-architecture/reference/patterns.md +76 -0
  84. package/canonical/skills/agentic-architecture/reference/reliability-observability.md +94 -0
  85. package/canonical/skills/agentic-architecture/reference/review-framework.md +59 -0
  86. package/canonical/skills/code-review/SKILL.md +52 -0
  87. package/canonical/skills/code-review/evals/cases.yaml +197 -0
  88. package/canonical/skills/git-workflow/SKILL.md +41 -0
  89. package/canonical/skills/git-workflow/evals/cases.yaml +92 -0
  90. package/canonical/skills/local-code/SKILL.md +24 -0
  91. package/canonical/skills/local-code/evals/cases.yaml +85 -0
  92. package/canonical/skills/local-code/scripts/query_llama.py +68 -0
  93. package/canonical/skills/report-formatting/SKILL.md +62 -0
  94. package/canonical/skills/report-formatting/evals/cases.yaml +83 -0
  95. package/canonical/skills/report-formatting/reference/ARCHITECTURE.md +135 -0
  96. package/canonical/skills/report-formatting/reference/HELPERS.md +120 -0
  97. package/canonical/skills/report-formatting/reference/PPTX.md +136 -0
  98. package/canonical/skills/report-formatting/reference/RELEASE.md +99 -0
  99. package/canonical/skills/report-formatting/reference/TEMPLATES.md +48 -0
  100. package/canonical/skills/report-formatting/reference/authoring.md +66 -0
  101. package/canonical/skills/report-formatting/scripts/architecture-template.md +271 -0
  102. package/canonical/skills/report-formatting/scripts/assets/claro-logo.png +0 -0
  103. package/canonical/skills/report-formatting/scripts/assets/claro-wordmark.svg +1 -0
  104. package/canonical/skills/report-formatting/scripts/build-architecture.js +57 -0
  105. package/canonical/skills/report-formatting/scripts/build-md-claro.js +224 -0
  106. package/canonical/skills/report-formatting/scripts/build-release.js +51 -0
  107. package/canonical/skills/report-formatting/scripts/check-env.js +58 -0
  108. package/canonical/skills/report-formatting/scripts/docmodel.js +283 -0
  109. package/canonical/skills/report-formatting/scripts/example-build.js +119 -0
  110. package/canonical/skills/report-formatting/scripts/example_build_ArchitectureReview_docx.js +195 -0
  111. package/canonical/skills/report-formatting/scripts/example_build_ExecutiveReport_docx.js +114 -0
  112. package/canonical/skills/report-formatting/scripts/package.json +17 -0
  113. package/canonical/skills/report-formatting/scripts/pptx/example_build_StatusReport_pptx.py +223 -0
  114. package/canonical/skills/report-formatting/scripts/pptx/example_build_WeeklyStatus_pptx.py +245 -0
  115. package/canonical/skills/report-formatting/scripts/pptx/pptx_office.py +144 -0
  116. package/canonical/skills/report-formatting/scripts/pptx/requirements.txt +7 -0
  117. package/canonical/skills/report-formatting/scripts/pptx/status_report_blocks.py +193 -0
  118. package/canonical/skills/report-formatting/scripts/pptx/theme_claro_pptx.py +473 -0
  119. package/canonical/skills/report-formatting/scripts/release-template.md +80 -0
  120. package/canonical/skills/report-formatting/scripts/render-mermaid.js +105 -0
  121. package/canonical/skills/report-formatting/scripts/theme-claro.js +403 -0
  122. package/canonical/skills/subagent-driven-development/SKILL.md +60 -0
  123. package/canonical/skills/subagent-driven-development/evals/cases.yaml +208 -0
  124. package/canonical/skills/subagent-driven-development/reference/brief.md +91 -0
  125. package/canonical/skills/subagent-driven-development/reference/handoff.md +118 -0
  126. package/canonical/skills/subagent-driven-development/scripts/validate-handoff.mjs +850 -0
  127. package/canonical/skills/systematic-debugging/SKILL.md +44 -0
  128. package/canonical/skills/systematic-debugging/evals/cases.yaml +90 -0
  129. package/canonical/skills/test-driven-development/SKILL.md +42 -0
  130. package/canonical/skills/test-driven-development/evals/cases.yaml +86 -0
  131. package/canonical/skills/test-driven-development/reference/writing-good-tests.md +52 -0
  132. package/canonical/skills/verification-before-completion/SKILL.md +53 -0
  133. package/canonical/skills/verification-before-completion/evals/cases.yaml +107 -0
  134. package/dist/adapters/content/language-lint.d.ts +46 -0
  135. package/dist/adapters/content/language-lint.js +191 -0
  136. package/dist/adapters/harness/claude-code.d.ts +57 -0
  137. package/dist/adapters/harness/claude-code.js +385 -0
  138. package/dist/adapters/harness/index.d.ts +3 -0
  139. package/dist/adapters/harness/index.js +17 -0
  140. package/dist/adapters/harness/opencode.d.ts +7 -0
  141. package/dist/adapters/harness/opencode.js +166 -0
  142. package/dist/adapters/harness/plugin.d.ts +22 -0
  143. package/dist/adapters/harness/plugin.js +257 -0
  144. package/dist/adapters/memory/doctor.d.ts +480 -0
  145. package/dist/adapters/memory/doctor.js +1217 -0
  146. package/dist/adapters/memory/vendored.d.ts +150 -0
  147. package/dist/adapters/memory/vendored.js +487 -0
  148. package/dist/adapters/package/node.d.ts +9 -0
  149. package/dist/adapters/package/node.js +20 -0
  150. package/dist/adapters/prompt/readline.d.ts +19 -0
  151. package/dist/adapters/prompt/readline.js +53 -0
  152. package/dist/adapters/sync/diff.d.ts +43 -0
  153. package/dist/adapters/sync/diff.js +380 -0
  154. package/dist/cli/cleanup.d.ts +86 -0
  155. package/dist/cli/cleanup.js +382 -0
  156. package/dist/cli/cost.d.ts +304 -0
  157. package/dist/cli/cost.js +501 -0
  158. package/dist/cli/doctor.d.ts +205 -0
  159. package/dist/cli/doctor.js +654 -0
  160. package/dist/cli/executor.d.ts +5 -0
  161. package/dist/cli/executor.js +48 -0
  162. package/dist/cli/plugin-validate.d.ts +37 -0
  163. package/dist/cli/plugin-validate.js +256 -0
  164. package/dist/cli/prefix.d.ts +68 -0
  165. package/dist/cli/prefix.js +218 -0
  166. package/dist/cli/profile.d.ts +170 -0
  167. package/dist/cli/profile.js +285 -0
  168. package/dist/cli/runner.d.ts +10 -0
  169. package/dist/cli/runner.js +27 -0
  170. package/dist/cli/uninstall.d.ts +65 -0
  171. package/dist/cli/uninstall.js +147 -0
  172. package/dist/index.d.ts +8 -0
  173. package/dist/index.js +989 -0
  174. package/dist/infra/dogfood.d.ts +31 -0
  175. package/dist/infra/dogfood.js +51 -0
  176. package/dist/infra/fsutil.d.ts +40 -0
  177. package/dist/infra/fsutil.js +143 -0
  178. package/dist/infra/manifest.d.ts +76 -0
  179. package/dist/infra/manifest.js +92 -0
  180. package/dist/infra/paths.d.ts +19 -0
  181. package/dist/infra/paths.js +74 -0
  182. package/dist/infra/routing.d.ts +4 -0
  183. package/dist/infra/routing.js +7 -0
  184. package/node_modules/@freeharness/core/dist/context.d.ts +30 -0
  185. package/node_modules/@freeharness/core/dist/context.js +1 -0
  186. package/node_modules/@freeharness/core/dist/index.d.ts +5 -0
  187. package/node_modules/@freeharness/core/dist/index.js +6 -0
  188. package/node_modules/@freeharness/core/dist/planner.d.ts +13 -0
  189. package/node_modules/@freeharness/core/dist/planner.js +18 -0
  190. package/node_modules/@freeharness/core/dist/ports.d.ts +90 -0
  191. package/node_modules/@freeharness/core/dist/ports.js +1 -0
  192. package/node_modules/@freeharness/core/dist/registry.d.ts +41 -0
  193. package/node_modules/@freeharness/core/dist/registry.js +124 -0
  194. package/node_modules/@freeharness/core/dist/tiers.d.ts +30 -0
  195. package/node_modules/@freeharness/core/dist/tiers.js +99 -0
  196. package/node_modules/@freeharness/core/package.json +34 -0
  197. package/node_modules/@freeharness/sdd/PROVENANCE.yaml +175 -0
  198. package/node_modules/@freeharness/sdd/dist/src/bin/openspec.d.ts +2 -0
  199. package/node_modules/@freeharness/sdd/dist/src/bin/openspec.js +166 -0
  200. package/node_modules/@freeharness/sdd/dist/src/index.d.ts +14 -0
  201. package/node_modules/@freeharness/sdd/dist/src/index.js +11 -0
  202. package/node_modules/@freeharness/sdd/dist/src/init.d.ts +39 -0
  203. package/node_modules/@freeharness/sdd/dist/src/init.js +190 -0
  204. package/node_modules/@freeharness/sdd/dist/src/root-resolver.d.ts +8 -0
  205. package/node_modules/@freeharness/sdd/dist/src/root-resolver.js +32 -0
  206. package/node_modules/@freeharness/sdd/dist/src/shim/archive.d.ts +81 -0
  207. package/node_modules/@freeharness/sdd/dist/src/shim/archive.js +483 -0
  208. package/node_modules/@freeharness/sdd/dist/src/shim/context.d.ts +4 -0
  209. package/node_modules/@freeharness/sdd/dist/src/shim/context.js +48 -0
  210. package/node_modules/@freeharness/sdd/dist/src/shim/follow-up.d.ts +57 -0
  211. package/node_modules/@freeharness/sdd/dist/src/shim/follow-up.js +279 -0
  212. package/node_modules/@freeharness/sdd/dist/src/shim/instructions.d.ts +67 -0
  213. package/node_modules/@freeharness/sdd/dist/src/shim/instructions.js +460 -0
  214. package/node_modules/@freeharness/sdd/dist/src/shim/list.d.ts +5 -0
  215. package/node_modules/@freeharness/sdd/dist/src/shim/list.js +95 -0
  216. package/node_modules/@freeharness/sdd/dist/src/shim/new-change.d.ts +6 -0
  217. package/node_modules/@freeharness/sdd/dist/src/shim/new-change.js +150 -0
  218. package/node_modules/@freeharness/sdd/dist/src/shim/schemas.d.ts +4 -0
  219. package/node_modules/@freeharness/sdd/dist/src/shim/schemas.js +23 -0
  220. package/node_modules/@freeharness/sdd/dist/src/shim/shared.d.ts +56 -0
  221. package/node_modules/@freeharness/sdd/dist/src/shim/shared.js +140 -0
  222. package/node_modules/@freeharness/sdd/dist/src/shim/status.d.ts +8 -0
  223. package/node_modules/@freeharness/sdd/dist/src/shim/status.js +85 -0
  224. package/node_modules/@freeharness/sdd/dist/src/shim/validate.d.ts +6 -0
  225. package/node_modules/@freeharness/sdd/dist/src/shim/validate.js +229 -0
  226. package/node_modules/@freeharness/sdd/dist/src/validate-change.d.ts +40 -0
  227. package/node_modules/@freeharness/sdd/dist/src/validate-change.js +114 -0
  228. package/node_modules/@freeharness/sdd/dist/src/validate.d.ts +24 -0
  229. package/node_modules/@freeharness/sdd/dist/src/validate.js +72 -0
  230. package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/specs-apply.d.ts +130 -0
  231. package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/specs-apply.js +981 -0
  232. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-metadata.d.ts +46 -0
  233. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-metadata.js +128 -0
  234. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-status-policy.d.ts +26 -0
  235. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-status-policy.js +32 -0
  236. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/file-system.d.ts +50 -0
  237. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/file-system.js +394 -0
  238. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/global-config.d.ts +15 -0
  239. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/global-config.js +49 -0
  240. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/graph.d.ts +71 -0
  241. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/graph.js +164 -0
  242. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/index.d.ts +11 -0
  243. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/index.js +21 -0
  244. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/instruction-loader.d.ts +102 -0
  245. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/instruction-loader.js +230 -0
  246. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/outputs.d.ts +18 -0
  247. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/outputs.js +138 -0
  248. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/resolver.d.ts +82 -0
  249. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/resolver.js +333 -0
  250. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/schema.d.ts +12 -0
  251. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/schema.js +110 -0
  252. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/state.d.ts +11 -0
  253. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/state.js +32 -0
  254. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/task-progress.d.ts +33 -0
  255. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/task-progress.js +149 -0
  256. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/types.d.ts +39 -0
  257. package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/types.js +49 -0
  258. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/claude.d.ts +12 -0
  259. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/claude.js +31 -0
  260. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/index.d.ts +10 -0
  261. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/index.js +10 -0
  262. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/opencode.d.ts +12 -0
  263. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/adapters/opencode.js +26 -0
  264. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/generator.d.ts +28 -0
  265. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/generator.js +41 -0
  266. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/index.d.ts +23 -0
  267. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/index.js +25 -0
  268. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/invocation.d.ts +72 -0
  269. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/invocation.js +76 -0
  270. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/registry.d.ts +39 -0
  271. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/registry.js +53 -0
  272. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/types.d.ts +62 -0
  273. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/types.js +7 -0
  274. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/yaml.d.ts +35 -0
  275. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-generation/yaml.js +47 -0
  276. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-references.d.ts +33 -0
  277. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/command-references.js +55 -0
  278. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/allowed-tools.d.ts +11 -0
  279. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/allowed-tools.js +11 -0
  280. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/skill-generation.d.ts +48 -0
  281. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/shared/skill-generation.js +99 -0
  282. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/skill-templates.d.ts +19 -0
  283. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/skill-templates.js +18 -0
  284. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/types.d.ts +18 -0
  285. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/types.js +4 -0
  286. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/apply-change.d.ts +19 -0
  287. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/apply-change.js +207 -0
  288. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/archive-change.d.ts +12 -0
  289. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/archive-change.js +409 -0
  290. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/bulk-archive-change.d.ts +9 -0
  291. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/bulk-archive-change.js +673 -0
  292. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/continue-change.d.ts +9 -0
  293. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/continue-change.js +230 -0
  294. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/explore.d.ts +12 -0
  295. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/explore.js +550 -0
  296. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/feedback.d.ts +8 -0
  297. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/feedback.js +107 -0
  298. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/ff-change.d.ts +12 -0
  299. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/ff-change.js +228 -0
  300. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/new-change.d.ts +9 -0
  301. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/new-change.js +147 -0
  302. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/onboard.d.ts +9 -0
  303. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/onboard.js +571 -0
  304. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/propose.d.ts +12 -0
  305. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/propose.js +322 -0
  306. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/store-selection.d.ts +7 -0
  307. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/store-selection.js +7 -0
  308. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/sync-specs.d.ts +9 -0
  309. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/sync-specs.js +518 -0
  310. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/update-change.d.ts +9 -0
  311. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/update-change.js +176 -0
  312. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/verify-change.d.ts +9 -0
  313. package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/verify-change.js +344 -0
  314. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/constants.d.ts +39 -0
  315. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/constants.js +54 -0
  316. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/delta-resolution.d.ts +35 -0
  317. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/delta-resolution.js +171 -0
  318. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/change-parser.d.ts +27 -0
  319. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/change-parser.js +210 -0
  320. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/code-fence.d.ts +14 -0
  321. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/code-fence.js +48 -0
  322. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/markdown-parser.d.ts +22 -0
  323. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/markdown-parser.js +186 -0
  324. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-blocks.d.ts +65 -0
  325. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-blocks.js +409 -0
  326. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-text.d.ts +55 -0
  327. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-text.js +98 -0
  328. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/spec-structure.d.ts +8 -0
  329. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/spec-structure.js +77 -0
  330. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/purpose-placeholder.d.ts +44 -0
  331. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/purpose-placeholder.js +116 -0
  332. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/base.schema.d.ts +12 -0
  333. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/base.schema.js +17 -0
  334. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/change.schema.d.ts +72 -0
  335. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/change.schema.js +30 -0
  336. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/index.d.ts +3 -0
  337. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/index.js +3 -0
  338. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/spec.schema.d.ts +17 -0
  339. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/schemas/spec.schema.js +14 -0
  340. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/spec-discovery.d.ts +39 -0
  341. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/spec-discovery.js +114 -0
  342. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-lines.d.ts +45 -0
  343. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-lines.js +105 -0
  344. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-numbering.d.ts +15 -0
  345. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-numbering.js +56 -0
  346. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/types.d.ts +17 -0
  347. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/types.js +1 -0
  348. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/validator.d.ts +94 -0
  349. package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/validator.js +756 -0
  350. package/node_modules/@freeharness/sdd/package.json +57 -0
  351. package/node_modules/@freeharness/sdd/vendor/openspec/LICENSE.upstream +22 -0
  352. package/node_modules/@freeharness/sdd/vendor/openspec/assets/schema.upstream.yaml +232 -0
  353. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/README.md +19 -0
  354. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-apply-change/SKILL.md +187 -0
  355. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-archive-change/SKILL.md +181 -0
  356. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-bulk-archive-change/SKILL.md +338 -0
  357. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-continue-change/SKILL.md +117 -0
  358. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-explore/SKILL.md +342 -0
  359. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-ff-change/SKILL.md +116 -0
  360. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-new-change/SKILL.md +76 -0
  361. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-onboard/SKILL.md +560 -0
  362. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-propose/SKILL.md +162 -0
  363. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-sync-specs/SKILL.md +261 -0
  364. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-update-change/SKILL.md +90 -0
  365. package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-verify-change/SKILL.md +174 -0
  366. package/package.json +70 -0
  367. package/provenance/canonical.PROVENANCE.yaml +740 -0
  368. package/provenance/claude-mem.LICENSE.upstream +202 -0
  369. package/provenance/memory.PROVENANCE.yaml +399 -0
  370. package/provenance/sdd.PROVENANCE.yaml +175 -0
  371. package/vendor-licenses/caveman.LICENSE +27 -0
  372. package/vendor-licenses/deepseek-harness.LICENSE +21 -0
  373. package/vendor-licenses/ecc.LICENSE +21 -0
  374. package/vendor-licenses/pi.LICENSE +21 -0
  375. package/vendor-licenses/superpowers.LICENSE +21 -0
@@ -0,0 +1,740 @@
1
+ # Provenance for canonical content derived from external sources. Every file listed here was
2
+ # rewritten in the FreeHarness style (English, no-bold prose, our tool-routing contract, Google
3
+ # docstrings / JSDoc in code); none is a verbatim copy. `upstream_path` is the file whose ideas
4
+ # the entry derives from; `commit` is the pinned upstream revision at harvest time.
5
+ # `upstream_sha256` is the hash of the upstream file (or, for a directory, of its sorted
6
+ # file names + contents) at that commit; the test asserts our file never hashes to it.
7
+ # Harvest classifications and rationale: canonical/HARVEST.yaml.
8
+
9
+ sources:
10
+ claude-code:
11
+ repo: https://github.com/anthropics/claude-code
12
+ fork: https://github.com/anegrelli/claude-code
13
+ baseline_commit: "b3f0e50"
14
+ caveman:
15
+ repo: https://github.com/JuliusBrussee/caveman
16
+ baseline_commit: "367fdb7f"
17
+ license: MIT (skills/ only; engine, proxy, mcp, shrink, mem are BSL-1.1 and ship nothing)
18
+ pi:
19
+ repo: https://github.com/badlogic/pi-mono
20
+ baseline_commit: "4cc339f5"
21
+ license: MIT
22
+ deepseek-harness:
23
+ repo: https://github.com/deepseek-ai/deepseek-harness
24
+ baseline_commit: "d347e703"
25
+ license: MIT
26
+ superpowers:
27
+ repo: https://github.com/obra/superpowers
28
+ baseline_commit: "b36e0829"
29
+ license: MIT
30
+ ecc:
31
+ repo: https://github.com/affaan-m/ECC
32
+ baseline_commit: "68e926bf"
33
+ license: MIT
34
+ openspec:
35
+ repo: https://github.com/Fission-AI/OpenSpec
36
+ fork: https://github.com/anegrelli/OpenSpec
37
+ baseline_commit: "e062b957"
38
+ license: MIT
39
+
40
+ files:
41
+ - path: agents/explorer-ai-engineer-analyst.md
42
+ source: claude-code
43
+ upstream_path: plugins/feature-dev/agents/code-explorer.md
44
+ upstream_sha256: "3b277703de7458988ec3b8021c716f79f642e174950ed332629310f68322029a"
45
+ commit: "b3f0e50"
46
+ rewritten: true
47
+ note: "Only the feature_trace_mode section derives from upstream (entry points -> call chain -> layers -> essential-files list, file:line discipline); the agent itself predates the harvest (local-code angle). Former agents/code-explorer.md folded here."
48
+
49
+ - path: openspec/schema.spec-driven.yaml
50
+ source: claude-code
51
+ upstream_path: plugins/feature-dev/agents/code-architect.md
52
+ upstream_sha256: "c50fb08d59a4bbd19660860626a049e44cf1a2b0c1cf782e6c7a99ba7e71b0c3"
53
+ commit: "b3f0e50"
54
+ rewritten: true
55
+ note: "Only the design artifact instruction derives from upstream (compare 2-3 approaches grounded in codebase patterns, commit with rationale, file-level blueprint with interfaces, data flow and test points); the schema predates the harvest. Former agents/code-architect.md and agents/planner.md folded here; /opsx:propose writes the artifacts."
56
+
57
+ - path: openspec/templates/design.md
58
+ source: claude-code
59
+ upstream_path: plugins/feature-dev/commands/feature-dev.md
60
+ upstream_sha256: "652e5d6264fd253fcb70c2f84de986a88d77109a02410aacd90230a6ab4bf557"
61
+ commit: "b3f0e50"
62
+ rewritten: true
63
+ note: "Only the Open Questions Resolved, Candidate Approaches and Blueprint sections derive from upstream (clarify + architect phases); implement/review phases are subagent-driven-development + TDD + code-review. Former skills/feature-dev/SKILL.md folded here."
64
+
65
+ - path: agents/pr-reviewer.md
66
+ source: claude-code
67
+ upstream_path: plugins/pr-review-toolkit/agents
68
+ upstream_sha256: "1828c969ec52ea8542fb98fad6f57cde3103e8039056d0a88571ab0c14cc56b7"
69
+ commit: "b3f0e50"
70
+ rewritten: true
71
+ note: "Six upstream agents (comment-analyzer, pr-test-analyzer, silent-failure-hunter, type-design-analyzer, code-simplifier, code-reviewer) folded into one agent with lens sections and P0/P1/P2 output; project-specific logging references dropped."
72
+
73
+ - path: skills/code-review/SKILL.md
74
+ source: claude-code
75
+ upstream_path: plugins/code-review/commands/code-review.md
76
+ upstream_sha256: "2b0837c5ec0b2e75f8ba4565bdafd76fa916b0dc146608c5733af7ba5802012c"
77
+ commit: "b3f0e50"
78
+ rewritten: true
79
+ note: "Only the parallel-lens dispatch and validate-before-consolidate paragraph derives from upstream; the diff-driven lens selection paragraph derives from plugins/pr-review-toolkit/commands/review-pr.md (former skills/pr-review/SKILL.md, folded here); the rest of the skill predates the harvest (Superpowers-derived, rewritten in v1)."
80
+
81
+ - path: hooks/freeharness-security-guidance.mjs
82
+ source: claude-code
83
+ upstream_path: plugins/security-guidance/hooks/patterns.py
84
+ upstream_sha256: "7870f5cac17034e9bfff829a2bba283bbcb47b416c915d8c8a1ab7ec02c5b4aa"
85
+ commit: "b3f0e50"
86
+ rewritten: true
87
+ note: "Node rewrite of the pattern catalogue with reworded reminders; adds SQL string building, path traversal, hardcoded secrets, prompt interpolation, and model-output-to-sink rules; advisory only (additionalContext, exit 0)."
88
+
89
+ - path: hooks/hooks.security-guidance.claude-code.json
90
+ source: claude-code
91
+ upstream_path: plugins/security-guidance/hooks/hooks.json
92
+ upstream_sha256: "37181aea2a1ccd4efa88c427d4cd194fac48ab1ca67779c14edf8de375809181"
93
+ commit: "b3f0e50"
94
+ rewritten: true
95
+ note: "PreToolUse fragment only; the upstream SessionStart/UserPromptSubmit/Stop LLM-review events are not adopted."
96
+
97
+ - path: skills/git-workflow/SKILL.md
98
+ source: claude-code
99
+ upstream_path: plugins/commit-commands/commands
100
+ upstream_sha256: "00b7e943b9737f1cbf3e4d08db412370862728972b27b70c1cef9e54d5d3cac7"
101
+ commit: "b3f0e50"
102
+ rewritten: true
103
+ note: "commit.md, commit-push-pr.md, clean_gone.md merged into one skill with conventional messages and non-negotiable safety rules."
104
+
105
+ - path: agents/python-reviewer.md
106
+ source: claude-code
107
+ upstream_path: plugins/pr-review-toolkit/agents/silent-failure-hunter.md
108
+ upstream_sha256: "fa9b0daec5a267e7e66435cc48b3328301fc9f70c3af259fe248881327a1babc"
109
+ commit: "b3f0e50"
110
+ rewritten: true
111
+ note: "Only the appended checklist_harvested section derives from upstream (silent failures, comment accuracy, type invariants)."
112
+
113
+ - path: agents/security-reviewer.md
114
+ source: claude-code
115
+ upstream_path: plugins/security-guidance/hooks/patterns.py
116
+ upstream_sha256: "7870f5cac17034e9bfff829a2bba283bbcb47b416c915d8c8a1ab7ec02c5b4aa"
117
+ commit: "b3f0e50"
118
+ rewritten: true
119
+ note: "Only the appended checklist_harvested section derives from upstream (execution sinks, deserialization, transport and crypto)."
120
+
121
+ # ---- v4 (freeharness-v4, P1 harness-intelligence). Concept rewrites: the upstream file is
122
+ # the source of the idea, the FreeHarness paragraph is authored from scratch (English,
123
+ # no bold, XML-tag sections). One entry per (target, upstream) pair; a target with several
124
+ # upstream sources has several entries.
125
+
126
+ - path: rules/CLAUDE.md
127
+ source: caveman
128
+ upstream_path: skills/caveman/SKILL.md
129
+ upstream_sha256: "c4d7354b4b063d54601fcdd5097a5b1713d1a1a2e386ac39efa438aa1ffef8ce"
130
+ commit: "367fdb7f"
131
+ license: MIT
132
+ rewritten: true
133
+ note: "Only the three <output_rules> lines derive from upstream (terse default with the keep-list, auto-clarity triggers, boundaries for persisted artifacts); levels, wenyan variants and the /caveman command are not adopted (P1.1)."
134
+
135
+ - path: rules/CLAUDE.md
136
+ source: caveman
137
+ upstream_path: skills/cavecrew/SKILL.md
138
+ upstream_sha256: "c05f8e8d16bd8ae1c8d0b0abf6e8b9671051bde61653c4986304c2de3a1cf5d4"
139
+ commit: "367fdb7f"
140
+ license: MIT
141
+ rewritten: true
142
+ note: "Only the Delegation paragraph in <orchestration_contract> derives from upstream (subagent when the caller needs facts or results and the return is compressed by contract; inline otherwise); no cavecrew agents shipped (P1.1)."
143
+
144
+ - path: rules/CLAUDE.md
145
+ source: pi
146
+ upstream_path: AGENTS.md
147
+ upstream_sha256: "9aa976721907c0e705333516969abe57163c8ac1895e920883380367a86af12e"
148
+ commit: "4cc339f5"
149
+ license: MIT
150
+ rewritten: true
151
+ note: "Two rule lines: state agree or disagree before stating what changed (<communication_and_language>); dependency and lockfile changes are reviewed code (<code_quality_and_comments>) (P1.1)."
152
+
153
+ - path: rules/CLAUDE.md
154
+ source: deepseek-harness
155
+ upstream_path: .agents/skills/dsh-trim-cot-leakage/SKILL.md
156
+ upstream_sha256: "d81b60699eec7413183b4fbb7a26a940bedde2f816dba0eccbfa453549292dcc"
157
+ commit: "d347e703"
158
+ license: MIT
159
+ rewritten: true
160
+ note: "HEAD-reader test, the eight leak classes in one line, restate-then-delete and the not-leakage keep list in <code_quality_and_comments> (P1.5)."
161
+
162
+ - path: rules/CLAUDE.md
163
+ source: deepseek-harness
164
+ upstream_path: .agents/skills/dsh-prose-standard/SKILL.md
165
+ upstream_sha256: "df56be84f9ee917a34055c9e229d06c409bce478de7bb0deb233240c1887f2eb"
166
+ commit: "d347e703"
167
+ license: MIT
168
+ rewritten: true
169
+ note: "Complete-proposition rule for docs (enumerate propositions before trimming; keep obligations, invariants, provenance; word count alone is not an improvement) (P1.5)."
170
+
171
+ - path: rules/CLAUDE.md
172
+ source: deepseek-harness
173
+ upstream_path: .agents/notes/README.md
174
+ upstream_sha256: "722a3ed38f137a08121bdd807c1841d7d6bd142ed5bce8033123c7a9247ffd75"
175
+ commit: "d347e703"
176
+ license: MIT
177
+ rewritten: true
178
+ note: "Only the <spec_first_opsx> non-trivial definition (behavior, architecture, cross-file contract, process or tooling, on-disk/wire/config format) and the rule 'no OpenSpec change = no non-trivial code change' derive from the Agent Notes when-to-write-one rule (P1.4)."
179
+
180
+ - path: skills/code-review/SKILL.md
181
+ source: deepseek-harness
182
+ upstream_path: .agents/skills/dsh-trim-cot-leakage/SKILL.md
183
+ upstream_sha256: "d81b60699eec7413183b4fbb7a26a940bedde2f816dba0eccbfa453549292dcc"
184
+ commit: "d347e703"
185
+ license: MIT
186
+ rewritten: true
187
+ note: "Only the stage-2 CoT-leakage lens paragraph derives from upstream (HEAD-reader test, eight classes, restated replacement, keep list); the rest of the skill is claude-code-derived (entry above) and pre-harvest (P1.5)."
188
+
189
+ # Skill description discipline (P1.11): only the front-matter `description:` form (at most
190
+ # 500 characters, trigger-worded 'Use when ...') derives from the deepseek-harness skill
191
+ # catalog convention; every description text is ours.
192
+
193
+ - path: skills/agent-evaluation/SKILL.md
194
+ source: deepseek-harness
195
+ upstream_path: packages/skill/README.md
196
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
197
+ commit: "d347e703"
198
+ license: MIT
199
+ rewritten: true
200
+ note: "Description form only (P1.11)."
201
+
202
+ - path: skills/agentic-architecture/SKILL.md
203
+ source: deepseek-harness
204
+ upstream_path: packages/skill/README.md
205
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
206
+ commit: "d347e703"
207
+ license: MIT
208
+ rewritten: true
209
+ note: "Description form only (P1.11)."
210
+
211
+ - path: skills/code-review/SKILL.md
212
+ source: deepseek-harness
213
+ upstream_path: packages/skill/README.md
214
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
215
+ commit: "d347e703"
216
+ license: MIT
217
+ rewritten: true
218
+ note: "Description form only (P1.11)."
219
+
220
+ - path: skills/git-workflow/SKILL.md
221
+ source: deepseek-harness
222
+ upstream_path: packages/skill/README.md
223
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
224
+ commit: "d347e703"
225
+ license: MIT
226
+ rewritten: true
227
+ note: "Description form only (P1.11)."
228
+
229
+ - path: skills/local-code/SKILL.md
230
+ source: deepseek-harness
231
+ upstream_path: packages/skill/README.md
232
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
233
+ commit: "d347e703"
234
+ license: MIT
235
+ rewritten: true
236
+ note: "Description form only (P1.11)."
237
+
238
+ - path: skills/report-formatting/SKILL.md
239
+ source: deepseek-harness
240
+ upstream_path: packages/skill/README.md
241
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
242
+ commit: "d347e703"
243
+ license: MIT
244
+ rewritten: true
245
+ note: "Description form only (P1.11)."
246
+
247
+ - path: skills/subagent-driven-development/SKILL.md
248
+ source: deepseek-harness
249
+ upstream_path: packages/skill/README.md
250
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
251
+ commit: "d347e703"
252
+ license: MIT
253
+ rewritten: true
254
+ note: "Description form only (P1.11)."
255
+
256
+ - path: skills/systematic-debugging/SKILL.md
257
+ source: deepseek-harness
258
+ upstream_path: packages/skill/README.md
259
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
260
+ commit: "d347e703"
261
+ license: MIT
262
+ rewritten: true
263
+ note: "Description form only (P1.11)."
264
+
265
+ - path: skills/test-driven-development/SKILL.md
266
+ source: deepseek-harness
267
+ upstream_path: packages/skill/README.md
268
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
269
+ commit: "d347e703"
270
+ license: MIT
271
+ rewritten: true
272
+ note: "Description form only (P1.11)."
273
+
274
+ - path: skills/verification-before-completion/SKILL.md
275
+ source: deepseek-harness
276
+ upstream_path: packages/skill/README.md
277
+ upstream_sha256: "1c9a960d4d9a5fe22b70ead5528d568190642d5de51d2759ca5f2df18288a086"
278
+ commit: "d347e703"
279
+ license: MIT
280
+ rewritten: true
281
+ note: "Description form only (P1.11)."
282
+
283
+ - path: agents/explorer-ai-engineer-analyst.md
284
+ source: pi
285
+ upstream_path: packages/coding-agent/examples/extensions/subagent/agents/scout.md
286
+ upstream_sha256: "3b84e8e01c6e05c8dfbff1c845c0c6371f4f16350735d4d1dbd02bfa98b1d4e6"
287
+ commit: "4cc339f5"
288
+ license: MIT
289
+ rewritten: true
290
+ note: "Only the <scout_handoff> contract derives from upstream (handoff for an agent that has not seen the files, essential files with line ranges, key code, start-here order); section names and rules are ours (P1.6)."
291
+
292
+ - path: agents/pr-reviewer.md
293
+ source: caveman
294
+ upstream_path: agents/cavecrew-reviewer.md
295
+ upstream_sha256: "e302fce4e8012b25031427fb076ced3c79b03438c8e0f01cb6fb10f1f5857086"
296
+ commit: "367fdb7f"
297
+ license: MIT
298
+ rewritten: true
299
+ note: "Only the <output_contract> derives from upstream (one line per finding path:line: severity: problem. fix., file order, totals line, clean marker); P0/P1/P2 replace the emoji tiers and the lenses/checklists are ours (P1.6). mle-reviewer folded into pr-reviewer's mle lens; this entry also covers that checklist section, attributed to the same caveman upstream as the rest of the reviewer contracts."
300
+
301
+ - path: agents/python-reviewer.md
302
+ source: caveman
303
+ upstream_path: agents/cavecrew-reviewer.md
304
+ upstream_sha256: "e302fce4e8012b25031427fb076ced3c79b03438c8e0f01cb6fb10f1f5857086"
305
+ commit: "367fdb7f"
306
+ license: MIT
307
+ rewritten: true
308
+ note: "Only the <output_contract> derives from upstream (one line per finding path:line: severity: problem. fix., file order, totals line, clean marker); P0/P1/P2 replace the emoji tiers and the lenses/checklists are ours (P1.6)."
309
+
310
+ - path: agents/database-reviewer.md
311
+ source: caveman
312
+ upstream_path: agents/cavecrew-reviewer.md
313
+ upstream_sha256: "e302fce4e8012b25031427fb076ced3c79b03438c8e0f01cb6fb10f1f5857086"
314
+ commit: "367fdb7f"
315
+ license: MIT
316
+ rewritten: true
317
+ note: "Only the <output_contract> derives from upstream (one line per finding path:line: severity: problem. fix., file order, totals line, clean marker); P0/P1/P2 replace the emoji tiers and the lenses/checklists are ours (P1.6)."
318
+
319
+ - path: agents/security-reviewer.md
320
+ source: caveman
321
+ upstream_path: agents/cavecrew-reviewer.md
322
+ upstream_sha256: "e302fce4e8012b25031427fb076ced3c79b03438c8e0f01cb6fb10f1f5857086"
323
+ commit: "367fdb7f"
324
+ license: MIT
325
+ rewritten: true
326
+ note: "Only the <output_contract> derives from upstream (one line per finding path:line: severity: problem. fix., file order, totals line, clean marker); P0/P1/P2 replace the emoji tiers and the lenses/checklists are ours (P1.6)."
327
+
328
+ - path: agents/python-reviewer.md
329
+ source: deepseek-harness
330
+ upstream_path: docs/defensive-patterns.md
331
+ upstream_sha256: "919d27a033c655ea6187496872caa4aa9babf08d87179562ca23545301108bb1"
332
+ commit: "d347e703"
333
+ license: MIT
334
+ rewritten: true
335
+ note: "<checklist_defensive_patterns>: orthogonal outcomes, async state, quiescent teardown, contained callbacks, scrubbed subprocess environment; error = code + next action from the structured-error note (P1.6, P1.7)."
336
+
337
+ - path: agents/security-reviewer.md
338
+ source: deepseek-harness
339
+ upstream_path: docs/defensive-patterns.md
340
+ upstream_sha256: "919d27a033c655ea6187496872caa4aa9babf08d87179562ca23545301108bb1"
341
+ commit: "d347e703"
342
+ license: MIT
343
+ rewritten: true
344
+ note: "<checklist_defensive_patterns>: scrubbed environment, private temp paths, link-shaped path removal, safe error text, independent outcomes (P1.6)."
345
+
346
+ - path: skills/agentic-architecture/reference/reliability-observability.md
347
+ source: deepseek-harness
348
+ upstream_path: docs/defensive-patterns.md
349
+ upstream_sha256: "919d27a033c655ea6187496872caa4aa9babf08d87179562ca23545301108bb1"
350
+ commit: "d347e703"
351
+ license: MIT
352
+ rewritten: true
353
+ note: "Only the 'Error contract: code + next action' section derives from upstream (orthogonal outcomes, async state, boundary normalization) plus the structured-error taxonomy note; the rest of the reference predates the harvest (P1.7)."
354
+
355
+ - path: skills/verification-before-completion/SKILL.md
356
+ source: deepseek-harness
357
+ upstream_path: packages/goal/goal-round-driver/src/prompt.ts
358
+ upstream_sha256: "48410d77077e88053cded777736a425534e91b36402ab46dc151ea9867a3db97"
359
+ commit: "d347e703"
360
+ license: MIT
361
+ rewritten: true
362
+ note: "<grounding> authoritative-state, evidence-before-completion and three-round blocked lines derive from the goal-round prompt (P1.9)."
363
+
364
+ - path: skills/verification-before-completion/SKILL.md
365
+ source: deepseek-harness
366
+ upstream_path: docs/postmortem/0003-web-agent-gui-feedback-loop.md
367
+ upstream_sha256: "b3127e3b387e95dc167a85edb5a2c97f73a3b1029fb81f3dfad16709d5586b0a"
368
+ commit: "d347e703"
369
+ license: MIT
370
+ rewritten: true
371
+ note: "Acceptance names the exact origin; replacement service, build success and bare HTTP 200 prove nothing; the port 3081 rationalization row and eval fixture (P1.9, P1.15)."
372
+
373
+ - path: skills/verification-before-completion/SKILL.md
374
+ source: superpowers
375
+ upstream_path: skills/verification-before-completion/SKILL.md
376
+ upstream_sha256: "2befe7fc55bcadaa3d97dd9e8efeb633d2561c0ebe74c5a8b17c4d9e7e4520b3"
377
+ commit: "b36e0829"
378
+ license: MIT
379
+ rewritten: true
380
+ note: "Rationalization table shape (claim, why not evidence, what counts) and the gate-then-claim order; rows and stop conditions are ours (P1.9)."
381
+
382
+ - path: skills/subagent-driven-development/SKILL.md
383
+ source: superpowers
384
+ upstream_path: skills/subagent-driven-development/SKILL.md
385
+ upstream_sha256: "8dd1b8e698edec3700c6d89517dbe96febd3bacd3f6ea21c1a3569c62ea104b5"
386
+ commit: "b36e0829"
387
+ license: MIT
388
+ rewritten: true
389
+ note: "File-based briefs and review packages, explicit tier per dispatch, one combined task reviewer, final branch review, no finding suppression, batching of same-shape tasks, no nested subagents, 5-round breaker with rulings, the four stop classes; re-expressed on .freeharness/sdd/<change>/ and the OpenSpec change id as Spec pointer (P1.8)."
390
+
391
+ - path: skills/subagent-driven-development/SKILL.md
392
+ source: deepseek-harness
393
+ upstream_path: packages/experimental/tool-agent-team/src/index.ts
394
+ upstream_sha256: "dc3030fe8ee7c5262e5d4bd435fdf2499b0687138487336b81639c7a88c7d180"
395
+ commit: "d347e703"
396
+ license: MIT
397
+ rewritten: true
398
+ note: "Team lessons from the collaboration policy: disjoint write scopes, the lead reviews the final diff and runs the tests, a member's success report is not acceptance; the JSON handoff with completed|partial|blocked and a labeled partial output is ours (P1.8)."
399
+
400
+ - path: skills/subagent-driven-development/SKILL.md
401
+ source: caveman
402
+ upstream_path: skills/cavecrew/SKILL.md
403
+ upstream_sha256: "c05f8e8d16bd8ae1c8d0b0abf6e8b9671051bde61653c4986304c2de3a1cf5d4"
404
+ commit: "367fdb7f"
405
+ license: MIT
406
+ rewritten: true
407
+ note: "Work-pattern stop tokens as terminal first tokens (too-big, needs-confirm, ambiguous, regressed) in the handoff blocked_reason (P1.8)."
408
+
409
+ - path: skills/subagent-driven-development/reference/handoff.md
410
+ source: caveman
411
+ upstream_path: skills/cavecrew/SKILL.md
412
+ upstream_sha256: "c05f8e8d16bd8ae1c8d0b0abf6e8b9671051bde61653c4986304c2de3a1cf5d4"
413
+ commit: "367fdb7f"
414
+ license: MIT
415
+ rewritten: true
416
+ note: "Stop-condition tokens only; the schema and the lead-evaluation section are ours (P1.8)."
417
+
418
+ - path: skills/subagent-driven-development/reference/brief.md
419
+ source: superpowers
420
+ upstream_path: skills/subagent-driven-development/SKILL.md
421
+ upstream_sha256: "8dd1b8e698edec3700c6d89517dbe96febd3bacd3f6ea21c1a3569c62ea104b5"
422
+ commit: "b36e0829"
423
+ license: MIT
424
+ rewritten: true
425
+ note: "Brief as the single source of requirements, report path named after the brief, batching rule; header lines and the write scope are ours (P1.8)."
426
+
427
+ - path: skills/test-driven-development/reference/writing-good-tests.md
428
+ source: superpowers
429
+ upstream_path: skills/test-driven-development/writing-good-tests.md
430
+ upstream_sha256: "51471c853306ff92ca8bb41dcaea05f31c0e46b03651f8f3c99754b7172f4ae1"
431
+ commit: "b36e0829"
432
+ license: MIT
433
+ rewritten: true
434
+ note: "Falsifiability, independent expectations, string-presence and change-detector traps, mock discipline, the mutation check; condensed to six rules with our content-test exception (P1.10)."
435
+
436
+ - path: skills/test-driven-development/SKILL.md
437
+ source: superpowers
438
+ upstream_path: skills/test-driven-development/writing-good-tests.md
439
+ upstream_sha256: "51471c853306ff92ca8bb41dcaea05f31c0e46b03651f8f3c99754b7172f4ae1"
440
+ commit: "b36e0829"
441
+ license: MIT
442
+ rewritten: true
443
+ note: "<reference> pointer and the five-row rationalization table (P1.10)."
444
+
445
+ - path: skills/systematic-debugging/SKILL.md
446
+ source: superpowers
447
+ upstream_path: skills/systematic-debugging/SKILL.md
448
+ upstream_sha256: "808fc5717aa88ad65efff312b11c186294d3e6ee301afb584e2f86599b137787"
449
+ commit: "b36e0829"
450
+ license: MIT
451
+ rewritten: true
452
+ note: "Stop conditions (three failed hypotheses question the architecture, scope growth, no reproduction) and the trigger check; phases predate the harvest (P1.10)."
453
+
454
+ - path: rules/safety.md
455
+ source: ecc
456
+ upstream_path: skills/safety-guard/SKILL.md
457
+ upstream_sha256: "9247b4a05dde847b93d28997477fd3be53dfed967a6279f5d0fc9fab104528ee"
458
+ commit: "68e926bf"
459
+ license: MIT
460
+ rewritten: true
461
+ note: "Invariants 6-8 (destructive command patterns, credential file globs, network egress review) extend the careful-mode watch list; no hook, freeze mode or log shipped (P1.12)."
462
+
463
+ - path: skills/git-workflow/SKILL.md
464
+ source: superpowers
465
+ upstream_path: skills/using-git-worktrees/SKILL.md
466
+ upstream_sha256: "8cfb86f121269e8f7f12361e6795c4f6738828340e28964c9229d365666c9edd"
467
+ commit: "b36e0829"
468
+ license: MIT
469
+ rewritten: true
470
+ note: "<worktrees>: in-project .worktrees/ verified ignored before creation; the never-delete-dirty and never-discard lines are ours (P1.12)."
471
+
472
+ - path: skills/git-workflow/SKILL.md
473
+ source: pi
474
+ upstream_path: AGENTS.md
475
+ upstream_sha256: "9aa976721907c0e705333516969abe57163c8ac1895e920883380367a86af12e"
476
+ commit: "4cc339f5"
477
+ license: MIT
478
+ rewritten: true
479
+ note: "<worktrees>: never move the worktree to another branch or PR unless asked, inspect PRs against fetched refs, resolve rebase conflicts only in files this branch modified (P1.12)."
480
+
481
+ - path: hooks/freeharness-output-pruner.mjs
482
+ source: pi
483
+ upstream_path: packages/coding-agent/src/core/tools/truncate.ts
484
+ upstream_sha256: "104e61ea602c7f7894097b2771dad8c68de75c5a10ea6222e615c4ad144451c7"
485
+ commit: "4cc339f5"
486
+ license: MIT
487
+ rewritten: true
488
+ note: "Dual byte/line limit, whole lines only, size formatting in the marker; the PostToolUse updatedToolOutput mechanism, the disk copy, the failure-block grammars and the cost-log record are ours (P2.1)."
489
+
490
+ - path: hooks/hooks.output-pruner.claude-code.json
491
+ source: pi
492
+ upstream_path: packages/coding-agent/src/core/tools/truncate.ts
493
+ upstream_sha256: "104e61ea602c7f7894097b2771dad8c68de75c5a10ea6222e615c4ad144451c7"
494
+ commit: "4cc339f5"
495
+ license: MIT
496
+ rewritten: true
497
+ note: "Only the 8 KB / 200-line defaults derive from the dual-limit idea; the fragment shape is our settings.json merge (P2.1)."
498
+
499
+ - path: hooks/freeharness-output-pruner.mjs
500
+ source: deepseek-harness
501
+ upstream_path: packages/compaction/compaction-tool-result-pruner/src/index.ts
502
+ upstream_sha256: "f39bfdd135c9d22c82c426c276eda1d467035c316bb88e7b76145bfec0a1dd25"
503
+ commit: "d347e703"
504
+ license: MIT
505
+ rewritten: true
506
+ note: "Head + marker + tail replacement of an over-budget tool result and the spill of the full text to a session-scoped file (dsh-spill's saveText contract) are the shape; the line-based budget, the protected failure blocks and the hook wiring are ours (P2.1)."
507
+
508
+ - path: hooks/freeharness-repeat-tool.mjs
509
+ source: deepseek-harness
510
+ upstream_path: packages/guard/repeat-tool-reminder/src/index.ts
511
+ upstream_sha256: "5cd612ff3b24eef3febb1b8b4ac6b76b0f431de3def509a9a7021ec2d51d9363"
512
+ commit: "d347e703"
513
+ license: MIT
514
+ rewritten: true
515
+ note: "Deep key-sort canonicalization, the 3/5/8 escalation (gentle then detailed with a capped argument preview), denied calls counted, user prompt resets, fail-loud threshold validation; the per-session ring file, the sha256 key, the stderr-and-defaults fallback and the PreToolUse/UserPromptSubmit wiring are ours (P2.4)."
516
+
517
+ - path: hooks/hooks.repeat-tool.claude-code.json
518
+ source: deepseek-harness
519
+ upstream_path: packages/guard/repeat-tool-reminder/src/index.ts
520
+ upstream_sha256: "5cd612ff3b24eef3febb1b8b4ac6b76b0f431de3def509a9a7021ec2d51d9363"
521
+ commit: "d347e703"
522
+ license: MIT
523
+ rewritten: true
524
+ note: "Only the default thresholds and preview cap derive from upstream's Config defaults (P2.4)."
525
+
526
+ - path: hooks/freeharness-session-start
527
+ source: deepseek-harness
528
+ upstream_path: packages/compaction/compaction-basic/src/summarizer.ts
529
+ upstream_sha256: "3589f95a1b63d882d3907752d369c641a1f473b49e538a071f8a3604dda9789c"
530
+ commit: "d347e703"
531
+ license: MIT
532
+ rewritten: true
533
+ note: "The fixed checkpoint section list (Primary Request, Files and Code, Errors and Fixes, Pending Jobs, Current Work, Next Step, Critical Context; Corrections is ours), '(none)' for empty sections and the verbatim-identifiers rule; the SessionStart(compact|resume) re-injection, the active change, dogfood tail and file-operation list are ours (P2.5)."
534
+
535
+ - path: hooks/hooks.claude-code.json
536
+ source: deepseek-harness
537
+ upstream_path: packages/compaction/compaction-basic/src/summarizer.ts
538
+ upstream_sha256: "3589f95a1b63d882d3907752d369c641a1f473b49e538a071f8a3604dda9789c"
539
+ commit: "d347e703"
540
+ license: MIT
541
+ rewritten: true
542
+ note: "The fragment only widens the SessionStart matcher to compact|resume|fork so the checkpoint re-injection fires (P2.5)."
543
+
544
+ - path: rules/project-CLAUDE.template.md
545
+ source: deepseek-harness
546
+ upstream_path: packages/compaction/compaction-basic/src/summarizer.ts
547
+ upstream_sha256: "3589f95a1b63d882d3907752d369c641a1f473b49e538a071f8a3604dda9789c"
548
+ commit: "d347e703"
549
+ license: MIT
550
+ rewritten: true
551
+ note: "The `# Compact instructions` block names what a checkpoint keeps verbatim (paths, error strings, identifiers, the next step), the summarizer's preservation rule; the template itself predates the harvest (P2.5)."
552
+
553
+ - path: hooks/freeharness-config-guard.mjs
554
+ source: ecc
555
+ upstream_path: scripts/hooks/config-protection.js
556
+ upstream_sha256: "04e6c0fbe1f3e9ef1dcfe3c015464838ad9045571efa443259e46bfaa1da4ea3"
557
+ commit: "e04ea0b9"
558
+ license: MIT
559
+ rewritten: true
560
+ note: "PreToolUse deny on a protected-file list read from tool_input.file_path; our list is the harness configuration (settings, .mcp.json, hooks, CLAUDE.md), the TTL allow marker, the Bash write-construct rule and the JSON permissionDecision are ours (P2.3)."
561
+
562
+ - path: hooks/hooks.config-guard.claude-code.json
563
+ source: ecc
564
+ upstream_path: scripts/hooks/config-protection.js
565
+ upstream_sha256: "04e6c0fbe1f3e9ef1dcfe3c015464838ad9045571efa443259e46bfaa1da4ea3"
566
+ commit: "e04ea0b9"
567
+ license: MIT
568
+ rewritten: true
569
+ note: "Matcher and deny shape only; the 30-minute TTL flag is ours (P2.3)."
570
+
571
+ - path: hooks/freeharness-context-monitor.mjs
572
+ source: ecc
573
+ upstream_path: scripts/hooks/suggest-compact.js
574
+ upstream_sha256: "e031a96b7d05b689a457eb4c2c02dd8e1171cd5e68633f30b60a3f0f6ce4471a"
575
+ commit: "e04ea0b9"
576
+ license: MIT
577
+ rewritten: true
578
+ note: "Context-size signal from the latest assistant usage and a per-session state file so a reminder fires once per bucket; our thresholds are 60/85% of a budget read from the cost snapshot, delivered as a Stop systemMessage (P2.2)."
579
+
580
+ - path: hooks/hooks.context-monitor.claude-code.json
581
+ source: ecc
582
+ upstream_path: scripts/hooks/suggest-compact.js
583
+ upstream_sha256: "e031a96b7d05b689a457eb4c2c02dd8e1171cd5e68633f30b60a3f0f6ce4471a"
584
+ commit: "e04ea0b9"
585
+ license: MIT
586
+ rewritten: true
587
+ note: "Stop registration with the budget/threshold flags; upstream runs on PreToolUse (P2.2)."
588
+
589
+ - path: openspec/templates/design.md
590
+ source: deepseek-harness
591
+ upstream_path: .agents/notes/README.md
592
+ upstream_sha256: "722a3ed38f137a08121bdd807c1841d7d6bd142ed5bce8033123c7a9247ffd75"
593
+ commit: "d347e703"
594
+ license: MIT
595
+ rewritten: true
596
+ note: "Agent Notes loop: the Consequences (cost and bought) section after Decisions, the recorded-not-invented alternatives line and the Supersedes: link; the template itself predates the harvest (P4.3)."
597
+
598
+ - path: openspec/schema.spec-driven.yaml
599
+ source: deepseek-harness
600
+ upstream_path: .agents/notes/AGENTS.md
601
+ upstream_sha256: "1c1b4a6d771ed1a7b0e4fd83776dd0cfb0567f4e89f2c7b3bc8b61b73e9a01d2"
602
+ commit: "d347e703"
603
+ license: MIT
604
+ rewritten: true
605
+ note: "Design instruction: per-decision cost and bought lines, alternatives recorded from what was considered, the Supersedes: convention; proposal instruction: the supersession check over openspec/specs and openspec/changes/archive (P4.3, P4.4)."
606
+
607
+ - path: packages/sdd/vendor/openspec/generation/templates/workflows/propose.ts
608
+ source: openspec
609
+ upstream_path: src/core/templates/workflows/propose.ts
610
+ upstream_sha256: "21cafd6eb89936b02d510e46ca3250d9a7e1c7b4eae32fd2ebd7b2a8563626cd"
611
+ commit: "e062b957"
612
+ license: MIT
613
+ rewritten: true
614
+ note: "Upstream 1.12 inspect-before-drafting step (#1737) ported verbatim; the supersession-check step is ours (dsh Agent Notes loop, P4.2/P4.4). The /opsx:propose skill is generated from this module."
615
+
616
+ - path: packages/sdd/vendor/openspec/generation/templates/workflows/archive-change.ts
617
+ source: openspec
618
+ upstream_path: src/core/templates/workflows/archive-change.ts
619
+ upstream_sha256: "6dfb4c6ba31698935bc1090051271e83c26b75b3940bb0604ae690f85ad17044"
620
+ commit: "e062b957"
621
+ license: MIT
622
+ rewritten: true
623
+ note: "Upstream template plus our supersession check before the archive step (Supersedes: link, reverse link, in-place edit refusal) (P4.4)."
624
+
625
+ - path: packages/sdd/vendor/openspec/generation/templates/workflows/explore.ts
626
+ source: openspec
627
+ upstream_path: src/core/templates/workflows/explore.ts
628
+ upstream_sha256: "82ec21c11241b58002998702336201748db62511f09786f2a8fe7e04dd8899f0"
629
+ commit: "e062b957"
630
+ license: MIT
631
+ rewritten: true
632
+ note: "Upstream 1.12 explore confirmation before the first write, dependency-ordered single discovery questions and ASCII-only diagrams (#1716/#1017/#1010) ported as the upstream diff; header note ours (P4.2)."
633
+
634
+ - path: packages/sdd/vendor/openspec/generation/templates/workflows/ff-change.ts
635
+ source: openspec
636
+ upstream_path: src/core/templates/workflows/ff-change.ts
637
+ upstream_sha256: "de0c3b1b28ed7289adea2bf58f1a179528218f22dcf7e895765bc726727710f0"
638
+ commit: "e062b957"
639
+ license: MIT
640
+ rewritten: true
641
+ note: "Upstream 1.12 inspect-before-drafting step (#1737) ported as the upstream diff; header note ours (P4.2)."
642
+
643
+ - path: openspec/templates/proposal.md
644
+ source: openspec
645
+ upstream_path: schemas/spec-driven/templates/proposal.md
646
+ upstream_sha256: "ea0879a322bb1a3c6e3002c67b5a29e31120dcb17219e3000d43775f48481284"
647
+ commit: "e062b957"
648
+ license: MIT
649
+ rewritten: true
650
+ note: "Override template (predates the port); the scope/depth dial line (AI-DLC) is ours (P4.5)."
651
+
652
+ - path: openspec/templates/tasks.md
653
+ source: openspec
654
+ upstream_path: schemas/spec-driven/templates/tasks.md
655
+ upstream_sha256: "b2a6a4c08c15f347a1d8c3e2d43e0c8fb066dc5cc0feb795f47555f176f9c421"
656
+ commit: "e062b957"
657
+ license: MIT
658
+ rewritten: true
659
+ note: "Per-task verification wording (#1660) from upstream; the Global Constraints block and the Verify/Interfaces/Boundary/Depends lines are ours (P4.2, P4.5)."
660
+
661
+ - path: packages/sdd/vendor/openspec/validation/validator.ts
662
+ source: openspec
663
+ upstream_path: src/core/validation/validator.ts
664
+ upstream_sha256: "cfbecc2e8b6b9386d22bac75dba01ac75bfc2e606521640335833ae520e10c27"
665
+ commit: "e062b957"
666
+ license: MIT
667
+ rewritten: true
668
+ note: "Purpose-placeholder warning (#1671) and findArchiveBlockers INFO pass (#1710) ported into the trimmed vendored Validator (P4.1)."
669
+
670
+ - path: packages/sdd/vendor/openspec/validation/purpose-placeholder.ts
671
+ source: openspec
672
+ upstream_path: src/core/validation/purpose-placeholder.ts
673
+ upstream_sha256: "b9ab338ab62adf261336a577c54ead115773e5b413bc97b8fa5c22b1164846e0"
674
+ commit: "e062b957"
675
+ license: MIT
676
+ rewritten: true
677
+ note: "Verbatim except the code-fence import path (P4.1)."
678
+
679
+ - path: packages/sdd/vendor/openspec/apply/specs-apply.ts
680
+ source: openspec
681
+ upstream_path: src/core/specs-apply.ts
682
+ upstream_sha256: "e2c296f31166e7b201941a3c1945085c19dc382a7671184660bb94791538fd3d"
683
+ commit: "e062b957"
684
+ license: MIT
685
+ rewritten: true
686
+ note: "RENAMED keeps its position (#1712), ENOENT/ENOTDIR guard (#1710), placeholder constants (#1671) ported; chalk dropped, import paths rebased (P4.1)."
687
+
688
+ - path: packages/sdd/src/shim/archive.ts
689
+ source: openspec
690
+ upstream_path: src/core/archive.ts
691
+ upstream_sha256: "a38c46f05f9a1d04787b7118e29d880dc1158b6ed38649d8cdd1b0921c9b2a94"
692
+ commit: "e062b957"
693
+ license: MIT
694
+ rewritten: true
695
+ note: "Store-free archive orchestration; blockers gate (unchecked tasks + validator INFO, refused without --yes) and the Supersedes: convention are ours (P4.1, P4.4)."
696
+
697
+ - path: packages/sdd/src/shim/context.ts
698
+ source: openspec
699
+ upstream_path: src/core/planning-home.ts
700
+ upstream_sha256: "637754bd0eb56e7e861402bd155115ef4a5e4281289183af3f4f0c077d71e676"
701
+ commit: "e062b957"
702
+ license: MIT
703
+ rewritten: true
704
+ note: "planningHome stub { kind: local, root, changesDir, defaultSchema } in context/status/instructions/new-change --json (#1703 shape, no store) (P4.1)."
705
+
706
+ - path: packages/sdd/src/shim/new-change.ts
707
+ source: openspec
708
+ upstream_path: src/core/planning-home.ts
709
+ upstream_sha256: "637754bd0eb56e7e861402bd155115ef4a5e4281289183af3f4f0c077d71e676"
710
+ commit: "e062b957"
711
+ license: MIT
712
+ rewritten: true
713
+ note: "planningHome stub + changeRoot in the new-change --json payload (P4.1)."
714
+
715
+ - path: packages/sdd/PROVENANCE.yaml
716
+ source: openspec
717
+ upstream_path: schemas/spec-driven/schema.yaml
718
+ upstream_sha256: "8a71d362e3ee54b5c978578ac226266bc86cb9fcb9a21fd1dcaa67807862e327"
719
+ commit: "e062b957"
720
+ license: MIT
721
+ rewritten: true
722
+ note: "Baseline bumped to e062b957 / 1.12.0 by `sync adopt sdd` (tracked assets adopted verbatim: assets/schema.upstream.yaml, assets/skills) plus the V4-P4 port list (P4.7)."
723
+
724
+ - path: hooks/freeharness-converge.mjs
725
+ source: claude-code
726
+ upstream_path: plugins/ralph-wiggum/hooks/stop-hook.sh
727
+ upstream_sha256: "c8760febc22ed5e2dd322df277647b7d8fb094a41d590d59236a5a6264c7c9bc"
728
+ commit: "b3f0e50"
729
+ license: "Apache-2.0 (plugin, per design.md; fork LICENSE.md: Anthropic Commercial Terms; shape only)"
730
+ rewritten: true
731
+ note: "Stop-hook loop shape only: block with a reason until a completion condition, bounded rounds. Ours: tasks.md unchecked tasks as the criterion, the Verify line in the reason, .freeharness/converge.json opt-in, converge.log, self-disable on a malformed tasks.md (P4.6)."
732
+
733
+ - path: hooks/hooks.converge.claude-code.json
734
+ source: claude-code
735
+ upstream_path: plugins/ralph-wiggum/hooks/hooks.json
736
+ upstream_sha256: "01180e972a5f6b5c8fa0edcd352ab79b4f8490718fe9c2faac9bfa738f3caa21"
737
+ commit: "b3f0e50"
738
+ license: Apache-2.0 (plugin, per design.md; shape only)
739
+ rewritten: true
740
+ note: "Stop registration; the command path and the opt-in file are ours (P4.6)."