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,858 @@
1
+ # Harvest manifest for the official anthropics/claude-code plugins (V3-P4 content-harvest).
2
+ # Written before any harvested content lands in canonical; every `rewrite` entry lists the
3
+ # canonical target paths, each of which carries an entry in canonical/PROVENANCE.yaml.
4
+ # Classifications: rewrite (rewritten in FreeHarness style, never verbatim) | adopt-concept
5
+ # (idea recorded, no content shipped) | reference-only (consulted, nothing derived) | ignore.
6
+ # packages/cli/test/harvest.test.ts checks targets exist, differ from upstream, and have
7
+ # provenance.
8
+ #
9
+ # v4 (freeharness-v4 P0.4) extends the manifest to every harvested source. Layout:
10
+ # upstream / plugins / examples the V3-P4 claude-code block (unchanged)
11
+ # sources one block per v4 source: name, repo, fork,
12
+ # baseline_commit, version, license
13
+ # <source-name>: the items of that source
14
+ # Item fields: name, classification (rewrite | adopt-concept | port | reference-only |
15
+ # ignore), status (planned | done), license (item override; defaults to the source's),
16
+ # upstream_paths, target_paths, rationale.
17
+ # Rules enforced by the harvest test:
18
+ # - every source block and every item resolves to a license;
19
+ # - a license containing BSL or ELv2 (non-permissive) means an empty target_paths list:
20
+ # "non-permissive sources land as concepts";
21
+ # - rewrite / port items name at least one target; adopt-concept / reference-only /
22
+ # ignore items name none;
23
+ # - target_paths are existing files: relative to canonical/ by default, relative to the
24
+ # repo root when they start with packages/ (vendored engine ports). A `planned` item
25
+ # may point at a file that exists but is not yet edited; `done` items (and items
26
+ # without status, the V3-P4 block) also need a PROVENANCE entry and must not be
27
+ # byte-identical to upstream. The v4 phase that lands an item flips it to done.
28
+ # Landing assets that do not exist yet (new hooks) are named in the rationale and the item
29
+ # points at the existing file the hook extends until the hook lands.
30
+
31
+ upstream:
32
+ name: "claude-code"
33
+ repo: https://github.com/anthropics/claude-code
34
+ fork: https://github.com/anegrelli/claude-code
35
+ baseline_commit: "b3f0e50"
36
+ license: "Anthropic Commercial Terms (plugins)"
37
+ scanned: "plugins/ (13 plugins), examples/ (hooks, settings, gateway, mdm)"
38
+
39
+ plugins:
40
+ - name: feature-dev
41
+ classification: rewrite
42
+ upstream_paths:
43
+ - plugins/feature-dev/commands/feature-dev.md
44
+ - plugins/feature-dev/agents/code-explorer.md
45
+ - plugins/feature-dev/agents/code-architect.md
46
+ - plugins/feature-dev/agents/code-reviewer.md
47
+ target_paths:
48
+ - agents/explorer-ai-engineer-analyst.md
49
+ - openspec/schema.spec-driven.yaml
50
+ - openspec/templates/design.md
51
+ rationale: "Folded into pre-existing content: code-explorer's trace method is a section of explorer-ai-engineer-analyst; code-architect's compare-and-blueprint and the command's clarify phase live in the spec-driven design artifact (/opsx:propose); implement/review phases are subagent-driven-development + TDD + code-review. No standalone feature-dev skill or planner agent (OpenSpec's job)."
52
+
53
+ - name: pr-review-toolkit
54
+ classification: rewrite
55
+ upstream_paths:
56
+ - plugins/pr-review-toolkit/commands/review-pr.md
57
+ - plugins/pr-review-toolkit/agents/comment-analyzer.md
58
+ - plugins/pr-review-toolkit/agents/pr-test-analyzer.md
59
+ - plugins/pr-review-toolkit/agents/silent-failure-hunter.md
60
+ - plugins/pr-review-toolkit/agents/type-design-analyzer.md
61
+ - plugins/pr-review-toolkit/agents/code-simplifier.md
62
+ - plugins/pr-review-toolkit/agents/code-reviewer.md
63
+ target_paths:
64
+ - agents/pr-reviewer.md
65
+ - skills/code-review/SKILL.md
66
+ rationale: "Six review lenses folded into one agent with lens sections; the command's diff-driven lens selection is a paragraph of the pre-existing code-review skill (no separate pr-review skill); our domain reviewers stay untouched and gain a short harvested checklist."
67
+
68
+ - name: code-review
69
+ classification: rewrite
70
+ upstream_paths:
71
+ - plugins/code-review/commands/code-review.md
72
+ target_paths:
73
+ - skills/code-review/SKILL.md
74
+ rationale: "Parallel independent reviewers + validation pass before consolidation (high-signal only) added as a small edit to our existing two-stage protocol."
75
+
76
+ - name: security-guidance
77
+ classification: rewrite
78
+ upstream_paths:
79
+ - plugins/security-guidance/hooks/patterns.py
80
+ - plugins/security-guidance/hooks/security_reminder_hook.py
81
+ - plugins/security-guidance/hooks/hooks.json
82
+ target_paths:
83
+ - hooks/freeharness-security-guidance.mjs
84
+ - hooks/hooks.security-guidance.claude-code.json
85
+ rationale: "Pattern-based PreToolUse warnings on Edit/Write rewritten in Node (no Python runtime), categories reworded, LLM-app patterns added; the LLM review-on-stop path is not adopted."
86
+
87
+ - name: commit-commands
88
+ classification: rewrite
89
+ upstream_paths:
90
+ - plugins/commit-commands/commands/commit.md
91
+ - plugins/commit-commands/commands/commit-push-pr.md
92
+ - plugins/commit-commands/commands/clean_gone.md
93
+ target_paths:
94
+ - skills/git-workflow/SKILL.md
95
+ rationale: "Commit / push+PR / prune-gone flows become one skill with conventional messages and hard safety rules (no force-push, no hook skipping, no secrets)."
96
+
97
+ - name: hookify
98
+ classification: adopt-concept
99
+ upstream_paths:
100
+ - plugins/hookify/README.md
101
+ target_paths: []
102
+ rationale: "Generating deny/warn hooks from observed conversation patterns is a candidate for a later `freeharness hook add` command; no content now."
103
+
104
+ - name: ralph-wiggum
105
+ classification: adopt-concept
106
+ upstream_paths:
107
+ - plugins/ralph-wiggum/README.md
108
+ target_paths: []
109
+ rationale: "Iterative self-referential loop until a completion condition; relevant to subagent-driven-development retries, evaluated later."
110
+
111
+ - name: agent-sdk-dev
112
+ classification: adopt-concept
113
+ upstream_paths:
114
+ - plugins/agent-sdk-dev/README.md
115
+ target_paths: []
116
+ rationale: "Agent SDK scaffolding and verification; input for the agentic-architecture skill references, not shipped."
117
+
118
+ - name: plugin-dev
119
+ classification: adopt-concept
120
+ upstream_paths:
121
+ - plugins/plugin-dev/README.md
122
+ target_paths: []
123
+ rationale: "Plugin layout, hooks, MCP, and marketplace guidance; reference for the V3-P2.3 `init --target plugin` emitter."
124
+
125
+ - name: explanatory-output-style
126
+ classification: ignore
127
+ upstream_paths:
128
+ - plugins/explanatory-output-style/README.md
129
+ target_paths: []
130
+ rationale: "Verbose educational output style contradicts our telegraphic chat rule and costs tokens."
131
+
132
+ - name: learning-output-style
133
+ classification: ignore
134
+ upstream_paths:
135
+ - plugins/learning-output-style/README.md
136
+ target_paths: []
137
+ rationale: "Same as explanatory-output-style; interactive teaching mode is out of scope."
138
+
139
+ - name: claude-opus-4-5-migration
140
+ classification: ignore
141
+ upstream_paths:
142
+ - plugins/claude-opus-4-5-migration/README.md
143
+ target_paths: []
144
+ rationale: "One-off model migration guide; superseded by neutral model tiers in canonical/agents/README.md."
145
+
146
+ - name: frontend-design
147
+ classification: ignore
148
+ upstream_paths:
149
+ - plugins/frontend-design/README.md
150
+ target_paths: []
151
+ rationale: "UI aesthetics generation is outside the backend / agentic engineering stack."
152
+
153
+ examples:
154
+ - name: hooks
155
+ classification: reference-only
156
+ upstream_paths:
157
+ - examples/hooks/bash_command_validator_example.py
158
+ target_paths: []
159
+ rationale: "Hook payload shape confirmed against our memory-guard and security-guidance hooks; nothing derived."
160
+
161
+ - name: settings
162
+ classification: reference-only
163
+ upstream_paths:
164
+ - examples/settings/settings-strict.json
165
+ - examples/settings/settings-lax.json
166
+ - examples/settings/settings-bash-sandbox.json
167
+ target_paths: []
168
+ rationale: "Permission profiles consulted for doctor hook-conflict checks; FreeHarness does not ship settings profiles."
169
+
170
+ - name: gateway
171
+ classification: ignore
172
+ upstream_paths:
173
+ - examples/gateway
174
+ target_paths: []
175
+ rationale: "Cloud gateway configs (AWS/GCP) are deployment concerns outside the harness."
176
+
177
+ - name: mdm
178
+ classification: ignore
179
+ upstream_paths:
180
+ - examples/mdm
181
+ target_paths: []
182
+ rationale: "Managed-device policy templates are outside the harness."
183
+
184
+ # ---------------------------------------------------------------------------------------
185
+ # v4 sources (freeharness-v4). Baselines are the local clone HEADs observed on 2026-09-06
186
+ # (sources.yaml comments); for openspec and claude-mem the delta is vendored-baseline ->
187
+ # observed HEAD. Every item below is `planned` until its v4 task lands it.
188
+ # ---------------------------------------------------------------------------------------
189
+
190
+ sources:
191
+ - name: deepseek-harness
192
+ repo: https://github.com/deepseek-ai/deepseek-harness
193
+ fork: null
194
+ baseline_commit: "d347e703"
195
+ version: "0.1.3-alpha.1"
196
+ license: MIT
197
+ scanned: "packages/core, packages/goal, packages/compaction, packages/guard, packages/experimental/tool-agent-team, .agents/notes, .agents/skills, docs/defensive-patterns.md, docs/postmortem"
198
+
199
+ - name: caveman
200
+ repo: https://github.com/JuliusBrussee/caveman
201
+ fork: null
202
+ baseline_commit: "367fdb7f" # 0fca50ac was a fork-only bot commit; same content
203
+ version: "2.6.0"
204
+ license: "MIT (skills/agents/commands/packages) + BSL-1.1 (engine/proxy/mcp/shrink/mem/browse/rewriter); LICENSING.md is the per-path source of truth"
205
+ scanned: "skills/, agents/, commands/, packages/ (MIT); engine/, shrink/, mem/, proxy/, mcp/ (BSL-1.1, concepts only)"
206
+
207
+ - name: context-mode
208
+ repo: https://github.com/mksglu/context-mode
209
+ fork: null
210
+ baseline_commit: null
211
+ version: null
212
+ license: ELv2
213
+ scanned: "README and source read on 2026-09-05; no clone kept (concepts only)"
214
+
215
+ - name: pi
216
+ repo: https://github.com/badlogic/pi-mono
217
+ fork: null
218
+ baseline_commit: "4cc339f5"
219
+ version: "0.0.3"
220
+ license: MIT
221
+ scanned: "packages/ai, packages/coding-agent/src/core, packages/coding-agent/examples/extensions/subagent"
222
+
223
+ - name: superpowers
224
+ repo: https://github.com/obra/superpowers
225
+ fork: null
226
+ baseline_commit: "b36e0829"
227
+ version: "6.3.0"
228
+ license: MIT
229
+ scanned: "skills/ (subagent-driven-development, writing-plans, verification-before-completion, systematic-debugging, test-driven-development, using-git-worktrees)"
230
+
231
+ - name: ecc
232
+ repo: https://github.com/affaan-m/ECC
233
+ fork: https://github.com/anegrelli/ECC
234
+ baseline_commit: "e04ea0b9"
235
+ version: "2.2.1"
236
+ license: MIT
237
+ scanned: "skills/ (safety-guard, context-budget, strategic-compact, config-gc), scripts/hooks/ (config-protection, suggest-compact, ecc-context-monitor, pre-compact), rules/common/"
238
+
239
+ - name: ruflo
240
+ repo: https://github.com/ruvnet/ruflo
241
+ fork: null
242
+ baseline_commit: "db499196"
243
+ version: "3.38.21"
244
+ license: MIT
245
+ scanned: ".claude/settings.json (PreCompact hooks), v3/@claude-flow/memory/src (consolidator, smart-retrieval); concept only by decision"
246
+
247
+ - name: ralph-loop
248
+ repo: https://github.com/anthropics/claude-code
249
+ fork: https://github.com/anegrelli/claude-code
250
+ baseline_commit: "b3f0e50"
251
+ version: null
252
+ license: "Apache-2.0 per design.md; the fork's LICENSE.md states Anthropic Commercial Terms, so the plugin is used as a shape only"
253
+ scanned: "plugins/ralph-wiggum/ (stop hook, setup script, commands)"
254
+
255
+ - name: openspec
256
+ repo: https://github.com/Fission-AI/OpenSpec
257
+ fork: https://github.com/anegrelli/OpenSpec
258
+ baseline_commit: "e062b957"
259
+ version: "1.12.0"
260
+ license: MIT
261
+ scanned: "delta 610b78f (1.8.0, vendored) -> e062b957 (1.12.0): src/core, schemas/spec-driven, skills/"
262
+
263
+ - name: claude-mem
264
+ repo: https://github.com/thedotmack/claude-mem
265
+ fork: https://github.com/anegrelli/claude-mem
266
+ baseline_commit: "be44b6c8"
267
+ version: "13.24.0"
268
+ license: Apache-2.0
269
+ scanned: "delta d768ba36 (13.15.0, vendored) -> be44b6c8 (13.24.0): src/services/worker, src/shared, src/sdk, plugin/modes"
270
+
271
+ deepseek-harness:
272
+ - name: agent-notes-loop
273
+ classification: rewrite
274
+ status: done
275
+ license: MIT
276
+ upstream_paths:
277
+ - .agents/notes/AGENTS.md
278
+ - .agents/notes/README.md
279
+ target_paths:
280
+ - openspec/templates/design.md
281
+ - openspec/schema.spec-driven.yaml
282
+ - rules/CLAUDE.md
283
+ - packages/sdd/vendor/openspec/generation/templates/workflows/propose.ts
284
+ - packages/sdd/vendor/openspec/generation/templates/workflows/archive-change.ts
285
+ rationale: "Decision records with consequences (cost and bought), recorded alternatives and a supersession check land on the design template, the generated propose/archive workflow templates (the /opsx skills are generated from these, not from assets/skills) and the spec-first rule; no .agents/notes tree next to openspec/ (P1.4, P4.3, P4.4)."
286
+
287
+ - name: goal-round-grounding
288
+ classification: rewrite
289
+ status: done
290
+ license: MIT
291
+ upstream_paths:
292
+ - packages/goal/goal-round-driver/src/prompt.ts
293
+ - packages/goal/goal-round-driver/src/invariant.ts
294
+ target_paths:
295
+ - skills/verification-before-completion/SKILL.md
296
+ rationale: "Workspace, tool results and durable state are authoritative, never earlier narration; evidence before completion; blocked only after three rounds with the same condition (P1.9)."
297
+
298
+ - name: acceptance-post-mortem
299
+ classification: rewrite
300
+ status: done
301
+ license: MIT
302
+ upstream_paths:
303
+ - docs/postmortem/0003-web-agent-gui-feedback-loop.md
304
+ target_paths:
305
+ - skills/verification-before-completion/SKILL.md
306
+ rationale: "Acceptance names the exact origin (URL, process, file, port) and observes the change there; a replacement service, build success or bare HTTP 200 proves nothing; coverage proves lines ran, not behavior (P1.9)."
307
+
308
+ - name: cot-leakage-standard
309
+ classification: rewrite
310
+ status: done
311
+ license: MIT
312
+ upstream_paths:
313
+ - .agents/skills/dsh-trim-cot-leakage
314
+ - .agents/skills/dsh-prose-standard
315
+ target_paths:
316
+ - rules/CLAUDE.md
317
+ - skills/code-review/SKILL.md
318
+ rationale: "HEAD-reader test, the eight leak classes, restate-then-delete and the complete-proposition rule in <code_quality_and_comments>; code-review stage 2 applies the lens to comments, docstrings and docs in the diff (P1.5)."
319
+
320
+ - name: compaction-checkpoint
321
+ classification: rewrite
322
+ status: done
323
+ license: MIT
324
+ upstream_paths:
325
+ - packages/compaction/compaction-basic/src/summarizer.ts
326
+ target_paths:
327
+ - hooks/freeharness-session-start
328
+ - hooks/hooks.claude-code.json
329
+ - rules/project-CLAUDE.template.md
330
+ rationale: "The fixed eight-section summary (Primary Request, Files and Code, Errors and Fixes, Pending Jobs, Current Work, Next Step, Critical Context, Corrections) is the re-orientation skeleton SessionStart(compact|resume|fork) re-injects, pre-filled from ~/.claude/freeharness/state/<session>.precompact.md; freeharness-precompact.mjs (P3.4) fills that file before compaction (P2.5)."
331
+
332
+ - name: tool-result-pruner
333
+ classification: rewrite
334
+ status: done
335
+ license: MIT
336
+ upstream_paths:
337
+ - packages/compaction/compaction-tool-result-pruner/src/index.ts
338
+ - packages/spill/spill/src/index.ts
339
+ target_paths:
340
+ - hooks/freeharness-output-pruner.mjs
341
+ rationale: "Head + marker + tail replacement of an over-budget tool result with the full text spilled to a session-scoped file is the output pruner's shape; it lands as a PostToolUse Bash hook returning updatedToolOutput, with pi's dual limit and our protected failure blocks (P2.1)."
342
+
343
+ - name: repeat-tool-reminder
344
+ classification: rewrite
345
+ status: done
346
+ license: MIT
347
+ upstream_paths:
348
+ - packages/guard/repeat-tool-reminder/src/index.ts
349
+ target_paths:
350
+ - hooks/freeharness-repeat-tool.mjs
351
+ - hooks/hooks.repeat-tool.claude-code.json
352
+ rationale: "Escalating reminder at 3/5/8 consecutive identical (tool, canonicalized args) hashes, denied calls counted, advisory only, a user prompt resets the chain; hooks/freeharness-repeat-tool.mjs + fragment emitted by the rules capability (PreToolUse + UserPromptSubmit) (P2.4)."
353
+
354
+ - name: defensive-patterns
355
+ classification: rewrite
356
+ status: done
357
+ license: MIT
358
+ upstream_paths:
359
+ - docs/defensive-patterns.md
360
+ target_paths:
361
+ - skills/agentic-architecture/reference/reliability-observability.md
362
+ - agents/python-reviewer.md
363
+ - agents/security-reviewer.md
364
+ rationale: "Error = stable code + next action, orthogonal outcomes as independent fields, async state is not sync state; the checklist lands in the reliability reference and the python and security reviewers (P1.6, P1.7)."
365
+
366
+ - name: team-lessons
367
+ classification: rewrite
368
+ status: done
369
+ license: MIT
370
+ upstream_paths:
371
+ - packages/experimental/tool-agent-team
372
+ - packages/subagent/subagent
373
+ target_paths:
374
+ - skills/subagent-driven-development/SKILL.md
375
+ rationale: "Worker reports are not acceptance (the lead reviews the final diff and runs the tests), disjoint write scopes per brief, compact JSON handoff with status completed|partial|blocked and a labeled partial output (P1.8)."
376
+
377
+ - name: description-discipline
378
+ classification: rewrite
379
+ status: done
380
+ license: MIT
381
+ upstream_paths:
382
+ - packages/skill
383
+ - packages/core/system-prompt
384
+ target_paths:
385
+ - skills/code-review/SKILL.md
386
+ - skills/git-workflow/SKILL.md
387
+ - skills/subagent-driven-development/SKILL.md
388
+ - skills/verification-before-completion/SKILL.md
389
+ - skills/systematic-debugging/SKILL.md
390
+ - skills/test-driven-development/SKILL.md
391
+ - skills/agentic-architecture/SKILL.md
392
+ - skills/agent-evaluation/SKILL.md
393
+ - skills/local-code/SKILL.md
394
+ - skills/report-formatting/SKILL.md
395
+ rationale: "Every skill description at most 500 characters and starting with a trigger phrase (Use when ...); enforced by the harvest test and the eval trigger cases (P1.11)."
396
+
397
+ - name: v5-runtime-concepts
398
+ classification: adopt-concept
399
+ status: planned
400
+ license: MIT
401
+ upstream_paths:
402
+ - packages/core/agent
403
+ - packages/core/tools
404
+ - packages/hooks
405
+ target_paths: []
406
+ rationale: "PTC code mode (run_code as the only wire tool), CAS task ledger, durable retry projection, doc-budget gates and the agent-instructions byte budget with a dropped-X disclosure are v5 (own CLI) runtime concepts; nothing lands in v4."
407
+
408
+ caveman:
409
+ - name: output-levels
410
+ classification: rewrite
411
+ status: done
412
+ license: MIT
413
+ upstream_paths:
414
+ - skills/caveman/SKILL.md
415
+ - skills/caveman/README.md
416
+ target_paths:
417
+ - rules/CLAUDE.md
418
+ rationale: "Terse output levels with auto-clarity (full prose for design rationale, security findings, user-facing documents) and a boundaries block, re-expressed as rule paragraphs, never as a skill the model may skip (P1.1)."
419
+
420
+ - name: reviewer-contracts
421
+ classification: rewrite
422
+ status: done
423
+ license: MIT
424
+ upstream_paths:
425
+ - agents/cavecrew-reviewer.md
426
+ - skills/caveman-review/SKILL.md
427
+ - skills/caveman-evidence-review/SKILL.md
428
+ target_paths:
429
+ - agents/pr-reviewer.md
430
+ - agents/python-reviewer.md
431
+ - agents/database-reviewer.md
432
+ - agents/security-reviewer.md
433
+ rationale: "Compressed reviewer output contract: P0/P1/P2 lines with file:line, one-line evidence and one-line fix, no narrative sections (P1.6). mle-reviewer folded into pr-reviewer's mle lens; its target repoints to the existing agents/pr-reviewer.md entry."
434
+
435
+ - name: cavecrew-delegation
436
+ classification: rewrite
437
+ status: done
438
+ license: MIT
439
+ upstream_paths:
440
+ - skills/cavecrew/SKILL.md
441
+ - agents/cavecrew-builder.md
442
+ - agents/cavecrew-investigator.md
443
+ - agents/cavecrew-reviewer.md
444
+ target_paths:
445
+ - rules/CLAUDE.md
446
+ rationale: "Delegation paragraph in the Tool Routing table (subagent when the caller needs facts or results and the return is compressed by contract, inline when the context is loaded, team only on explicit request); no cavecrew agents shipped (P1.1)."
447
+
448
+ - name: cavecrew-stop-conditions
449
+ classification: rewrite
450
+ status: done
451
+ license: MIT
452
+ upstream_paths:
453
+ - skills/cavecrew/SKILL.md
454
+ - skills/investigate-first/SKILL.md
455
+ - skills/verify-and-stop/SKILL.md
456
+ target_paths:
457
+ - skills/subagent-driven-development/SKILL.md
458
+ - skills/subagent-driven-development/reference/handoff.md
459
+ rationale: "Work-pattern stop conditions (too-big, needs-confirm, ambiguous, regressed as terminal first tokens) in the subagent-driven-development handoff (P1.8)."
460
+
461
+ - name: work-pattern-skills
462
+ classification: reference-only
463
+ status: planned
464
+ license: MIT
465
+ upstream_paths:
466
+ - skills/investigate-first/SKILL.md
467
+ - skills/verify-and-stop/SKILL.md
468
+ - skills/surgical-patch/SKILL.md
469
+ - skills/safe-refactor/SKILL.md
470
+ target_paths: []
471
+ rationale: "Consulted for the stop conditions and the verify-then-stop shape already covered by verification-before-completion and systematic-debugging; nothing derived beyond the cavecrew item."
472
+
473
+ - name: subagent-tax
474
+ classification: reference-only
475
+ status: planned
476
+ license: MIT
477
+ upstream_paths:
478
+ - packages/subagent-tax
479
+ target_paths: []
480
+ rationale: "Zero-provider-call harness-prefix measurement is the shape of `freeharness cost prefix`; our probe is written from the cost tracker log, nothing copied (P2.9)."
481
+
482
+ - name: compression-engine
483
+ classification: adopt-concept
484
+ status: planned
485
+ license: BSL-1.1
486
+ upstream_paths:
487
+ - engine
488
+ - shrink
489
+ - rewriter
490
+ target_paths: []
491
+ rationale: "Tool-schema and output compression are concepts behind the output pruner and a later OutputCompressorPort; BSL-1.1 code never lands in a MIT repository."
492
+
493
+ - name: post-compaction-reinjection
494
+ classification: adopt-concept
495
+ status: done
496
+ license: BSL-1.1
497
+ upstream_paths:
498
+ - mem
499
+ - proxy
500
+ target_paths: []
501
+ rationale: "Re-injecting a session digest after compaction is the shape of the SessionStart(compact) hook; the digest content comes from the dsh skeleton and our own PreCompact hook, not from cavemem."
502
+
503
+ context-mode:
504
+ - name: context-mode-concepts
505
+ classification: adopt-concept
506
+ status: planned
507
+ license: ELv2
508
+ upstream_paths:
509
+ - README.md
510
+ - src
511
+ target_paths: []
512
+ rationale: "Context-budget accounting per tool call and the mode switch on budget pressure inform `doctor --context-budget` and the context monitor hook; ELv2 code stays a concept."
513
+
514
+ pi:
515
+ - name: truncate-dual-limit
516
+ classification: rewrite
517
+ status: done
518
+ license: MIT
519
+ upstream_paths:
520
+ - packages/coding-agent/src/core/tools/truncate.ts
521
+ target_paths:
522
+ - hooks/freeharness-output-pruner.mjs
523
+ - hooks/hooks.output-pruner.claude-code.json
524
+ rationale: "Dual byte/line limit with head and tail kept and a marker line is the output pruner's truncation rule; hooks/freeharness-output-pruner.mjs + fragment next to the cost tracker, which sums the pruned bytes into `pruned_bytes` for `cost report --sinks` (P2.1)."
525
+
526
+ - name: scout-handoff
527
+ classification: rewrite
528
+ status: done
529
+ license: MIT
530
+ upstream_paths:
531
+ - packages/coding-agent/examples/extensions/subagent/agents/scout.md
532
+ - packages/coding-agent/examples/extensions/subagent/prompts/scout-and-plan.md
533
+ target_paths:
534
+ - agents/explorer-ai-engineer-analyst.md
535
+ rationale: "Scout handoff format (essential files with line ranges, entry points, call chain, open questions, nothing else) becomes the explorer's output contract (P1.6)."
536
+
537
+ - name: rule-lines
538
+ classification: rewrite
539
+ status: done
540
+ license: MIT
541
+ upstream_paths:
542
+ - AGENTS.md
543
+ target_paths:
544
+ - rules/CLAUDE.md
545
+ rationale: "Two rule lines (state agree or disagree before stating what changed; dependency and lockfile changes are reviewed code) in the global rules (P1.1)."
546
+
547
+ - name: worktree-safety
548
+ classification: rewrite
549
+ status: done
550
+ license: MIT
551
+ upstream_paths:
552
+ - AGENTS.md
553
+ - packages/coding-agent/src/core/extensions
554
+ target_paths:
555
+ - skills/git-workflow/SKILL.md
556
+ rationale: "Worktree safety lines from the pi git rules and the worktree extension (never delete a worktree with uncommitted changes, never operate on another worktree's branch) in git-workflow (P1.12)."
557
+
558
+ - name: provider-layer
559
+ classification: reference-only
560
+ status: planned
561
+ license: MIT
562
+ upstream_paths:
563
+ - packages/ai
564
+ target_paths: []
565
+ rationale: "pi-ai provider abstraction and extension model are the reference for the v5 own-CLI provider port and the local-model profiles; nothing copied in v4."
566
+
567
+ superpowers:
568
+ - name: subagent-driven-development-6x
569
+ classification: rewrite
570
+ status: done
571
+ license: MIT
572
+ upstream_paths:
573
+ - skills/subagent-driven-development/SKILL.md
574
+ - skills/subagent-driven-development/implementer-prompt.md
575
+ - skills/subagent-driven-development/task-reviewer-prompt.md
576
+ - skills/subagent-driven-development/re-review-prompt.md
577
+ target_paths:
578
+ - skills/subagent-driven-development/SKILL.md
579
+ - skills/subagent-driven-development/reference/brief.md
580
+ rationale: "File-based briefs and review packages under .freeharness/sdd/<change>/, explicit tier per dispatch, one combined task reviewer, one final branch review, no finding suppression, batching of small same-shape tasks, no nested subagents, 5-round circuit breaker with a controller ruling (P1.8)."
581
+
582
+ - name: writing-plans-annotations
583
+ classification: rewrite
584
+ status: planned
585
+ license: MIT
586
+ upstream_paths:
587
+ - skills/writing-plans/SKILL.md
588
+ - skills/writing-plans/plan-document-reviewer-prompt.md
589
+ target_paths:
590
+ - openspec/templates/tasks.md
591
+ - openspec/schema.spec-driven.yaml
592
+ rationale: "Per-task Interfaces/Boundary/Depends/Verify annotations and a Global Constraints block on the tasks template; the validator accepts and ignores them (P4.5)."
593
+
594
+ - name: verification-rationalization-table
595
+ classification: rewrite
596
+ status: done
597
+ license: MIT
598
+ upstream_paths:
599
+ - skills/verification-before-completion/SKILL.md
600
+ target_paths:
601
+ - skills/verification-before-completion/SKILL.md
602
+ rationale: "Rationalization table (claim, why it is not evidence, what counts) and stop conditions replace prose (P1.9)."
603
+
604
+ - name: debugging-stop-conditions
605
+ classification: rewrite
606
+ status: done
607
+ license: MIT
608
+ upstream_paths:
609
+ - skills/systematic-debugging/SKILL.md
610
+ - skills/systematic-debugging/root-cause-tracing.md
611
+ target_paths:
612
+ - skills/systematic-debugging/SKILL.md
613
+ rationale: "Keyword check that triggers the protocol and explicit stop conditions (three failed hypotheses, scope growth, missing reproduction) that hand back to the user (P1.10)."
614
+
615
+ - name: writing-good-tests
616
+ classification: rewrite
617
+ status: done
618
+ license: MIT
619
+ upstream_paths:
620
+ - skills/test-driven-development/writing-good-tests.md
621
+ target_paths:
622
+ - skills/test-driven-development/SKILL.md
623
+ - skills/test-driven-development/reference/writing-good-tests.md
624
+ rationale: "Lands as the new skills/test-driven-development/reference/writing-good-tests.md linked from SKILL.md; rewritten, not copied (P1.10)."
625
+
626
+ - name: git-worktrees
627
+ classification: rewrite
628
+ status: done
629
+ license: MIT
630
+ upstream_paths:
631
+ - skills/using-git-worktrees/SKILL.md
632
+ target_paths:
633
+ - skills/git-workflow/SKILL.md
634
+ rationale: "Worktree safety lines (never delete a worktree with uncommitted changes, never operate on another worktree's branch) in git-workflow (P1.12)."
635
+
636
+ - name: brainstorming-and-receiving-review
637
+ classification: ignore
638
+ status: planned
639
+ license: MIT
640
+ upstream_paths:
641
+ - skills/brainstorming/SKILL.md
642
+ - skills/receiving-code-review/SKILL.md
643
+ - skills/using-superpowers/SKILL.md
644
+ target_paths: []
645
+ rationale: "Brainstorming is /opsx:propose with the explore step; receiving review is covered by code-review stage 2; using-superpowers is a plugin bootstrap we do not need."
646
+
647
+ ecc:
648
+ - name: safety-guard
649
+ classification: rewrite
650
+ status: done
651
+ license: MIT
652
+ upstream_paths:
653
+ - skills/safety-guard/SKILL.md
654
+ - rules/common/security.md
655
+ target_paths:
656
+ - rules/safety.md
657
+ rationale: "Destructive command patterns, credential file globs and network egress review added to safety.md (P1.12)."
658
+
659
+ - name: config-protection
660
+ classification: rewrite
661
+ status: done
662
+ license: MIT
663
+ upstream_paths:
664
+ - scripts/hooks/config-protection.js
665
+ target_paths:
666
+ - hooks/freeharness-config-guard.mjs
667
+ - hooks/hooks.config-guard.claude-code.json
668
+ rationale: "Deny writes to settings.json, .mcp.json, hook scripts and CLAUDE.md unless an allow marker with a TTL is set; hooks/freeharness-config-guard.mjs beside the memory guard, same PreToolUse deny shape, Bash covered for write constructs (P2.3)."
669
+
670
+ - name: context-monitor
671
+ classification: rewrite
672
+ status: done
673
+ license: MIT
674
+ upstream_paths:
675
+ - scripts/hooks/suggest-compact.js
676
+ target_paths:
677
+ - hooks/freeharness-context-monitor.mjs
678
+ - hooks/hooks.context-monitor.claude-code.json
679
+ rationale: "Stop hook reading the cost snapshot (`context_tokens`) and warning the user once at 60% and 85% of the context budget with a /compact suggestion naming the `# Compact instructions` block; hooks/freeharness-context-monitor.mjs emitted with the cost tracker (P2.2)."
680
+
681
+ - name: context-budget
682
+ classification: adopt-concept
683
+ status: done
684
+ license: MIT
685
+ upstream_paths:
686
+ - skills/context-budget/SKILL.md
687
+ - skills/config-gc/SKILL.md
688
+ target_paths: []
689
+ rationale: "A context-budget skill is advisory and costs its own prefix; re-expressed as `doctor --context-budget` checks and rule levels, no skill shipped."
690
+
691
+ - name: pre-compact
692
+ classification: reference-only
693
+ status: planned
694
+ license: MIT
695
+ upstream_paths:
696
+ - scripts/hooks/pre-compact.js
697
+ target_paths: []
698
+ rationale: "Confirms the PreCompact payload shape used by freeharness-precompact.mjs; the summary contract comes from dsh and the worker call from claude-mem."
699
+
700
+ - name: agents-and-rules-catalog
701
+ classification: reference-only
702
+ status: planned
703
+ license: MIT
704
+ upstream_paths:
705
+ - agents
706
+ - rules/common
707
+ target_paths: []
708
+ rationale: "ECC 2.x agent and rule catalog consulted for the Tool Routing review (P1.14); FreeHarness keeps its ten tuned agents and adds none."
709
+
710
+ ruflo:
711
+ - name: precompact-summarize
712
+ classification: adopt-concept
713
+ status: planned
714
+ license: MIT
715
+ upstream_paths:
716
+ - .claude/settings.json
717
+ - .claude/helpers
718
+ target_paths: []
719
+ rationale: "PreCompact -> summarize -> SessionStart re-injection is the concept behind freeharness-precompact.mjs; ruflo is concept-only by decision (P3.4)."
720
+
721
+ - name: memory-consolidation
722
+ classification: adopt-concept
723
+ status: planned
724
+ license: MIT
725
+ upstream_paths:
726
+ - v3/@claude-flow/memory/src/consolidator.ts
727
+ - v3/@claude-flow/memory/src/smart-retrieval.ts
728
+ target_paths: []
729
+ rationale: "Memory garbage collection with dedup is a later MemoryPort concern behind a benchmark gate; recorded, not scheduled."
730
+
731
+ ralph-loop:
732
+ - name: converge-loop
733
+ classification: adopt-concept
734
+ status: done
735
+ license: "Apache-2.0 per design.md; fork LICENSE.md: Anthropic Commercial Terms"
736
+ upstream_paths:
737
+ - plugins/ralph-wiggum/hooks/stop-hook.sh
738
+ - plugins/ralph-wiggum/hooks/hooks.json
739
+ - plugins/ralph-wiggum/scripts/setup-ralph-loop.sh
740
+ - plugins/ralph-wiggum/commands/ralph-loop.md
741
+ target_paths: []
742
+ rationale: "Stop-hook loop until a completion promise is the shape of the new hooks/freeharness-converge.mjs, fitted to tasks.md unchecked tasks with a bounded round count and a round log; shape only, no content copied (P4.6)."
743
+
744
+ openspec:
745
+ - name: engine-ports-1-12
746
+ classification: port
747
+ status: done
748
+ license: MIT
749
+ upstream_paths:
750
+ - src/core/validation/purpose-placeholder.ts
751
+ - src/core/validation/validator.ts
752
+ - src/core/specs-apply.ts
753
+ - src/core/archive.ts
754
+ - src/core/planning-home.ts
755
+ target_paths:
756
+ - packages/sdd/vendor/openspec/validation/validator.ts
757
+ - packages/sdd/vendor/openspec/apply/specs-apply.ts
758
+ - packages/sdd/src/shim/archive.ts
759
+ - packages/sdd/src/shim/context.ts
760
+ - packages/sdd/src/shim/new-change.ts
761
+ - packages/sdd/vendor/openspec/validation/purpose-placeholder.ts
762
+ rationale: "Purpose-placeholder validator (#1671), specs-apply RENAMED/ENOENT (#1712/#1710), findArchiveBlockers and the planningHome stub (#1703) ported into the vendored slice with tests (P4.1)."
763
+
764
+ - name: template-and-schema-1-12
765
+ classification: port
766
+ status: done
767
+ license: MIT
768
+ upstream_paths:
769
+ - schemas/spec-driven/schema.yaml
770
+ - schemas/spec-driven/templates/proposal.md
771
+ - schemas/spec-driven/templates/design.md
772
+ - schemas/spec-driven/templates/tasks.md
773
+ - src/core/templates/workflows/explore.ts
774
+ - src/core/templates/workflows/propose.ts
775
+ - src/core/templates/workflows/ff-change.ts
776
+ target_paths:
777
+ - openspec/schema.spec-driven.yaml
778
+ - openspec/templates/proposal.md
779
+ - openspec/templates/design.md
780
+ - openspec/templates/tasks.md
781
+ - packages/sdd/vendor/openspec/generation/templates/workflows/explore.ts
782
+ - packages/sdd/vendor/openspec/generation/templates/workflows/ff-change.ts
783
+ rationale: "Inspect-before-drafting (#1737), explore confirmation and questions (#1716/#1017/#1010) and per-task verify (#1660) ported into our override schema and templates and into the generated explore/propose/ff-change workflow templates (the /opsx skills are generated from these; assets/skills is only the sync diff baseline) (P4.2)."
784
+
785
+ - name: tracked-assets-adopt
786
+ classification: port
787
+ status: done
788
+ license: MIT
789
+ upstream_paths:
790
+ - schemas/spec-driven
791
+ - skills
792
+ target_paths:
793
+ - packages/sdd/PROVENANCE.yaml
794
+ rationale: "`sync adopt sdd` adopted the tracked assets (assets/schema.upstream.yaml, assets/skills) verbatim at the 1.12 baseline e062b957 after the engine ports; the verbatim copies are recorded by packages/sdd/PROVENANCE.yaml (the target here), the baseline is bumped there and in sources.yaml, and our propose/archive workflow-template overrides survive because they are not tracked assets (P4.7)."
795
+
796
+ claude-mem:
797
+ - name: observer-recycle-and-classifier
798
+ classification: port
799
+ status: planned
800
+ license: Apache-2.0
801
+ upstream_paths:
802
+ - src/shared/observer-recycle.ts
803
+ - src/services/worker/session/recycle-conversation.ts
804
+ - src/sdk/output-classifier.ts
805
+ - src/sdk/prompts.ts
806
+ - src/services/worker/agents/ResponseProcessor.ts
807
+ - src/services/worker/ClaudeProvider.ts
808
+ - src/services/worker-types.ts
809
+ - src/shared/SettingsDefaultsManager.ts
810
+ target_paths:
811
+ - packages/memory/vendor/claude-mem/engine/sdk/output-classifier.ts
812
+ - packages/memory/vendor/claude-mem/engine/sdk/prompts.ts
813
+ - packages/memory/vendor/claude-mem/engine/services/worker/agents
814
+ - packages/memory/vendor/claude-mem/engine/services/worker/ClaudeProvider.ts
815
+ - packages/memory/vendor/claude-mem/engine/services/worker-types.ts
816
+ - packages/memory/vendor/claude-mem/engine/shared/SettingsDefaultsManager.ts
817
+ rationale: "Bounded observer recycle (CLAUDE_MEM_OBSERVER_MAX_CONVERSATION_CHARS), output classifier and the prompt changes that stop unbounded-conversation observer failures (P3.1)."
818
+
819
+ - name: field-optimizer-and-quota
820
+ classification: port
821
+ status: planned
822
+ license: Apache-2.0
823
+ upstream_paths:
824
+ - src/services/worker/field-optimizer.ts
825
+ - src/services/worker/RateLimitStore.ts
826
+ - src/shared/observer-health.ts
827
+ - src/shared/quota-cooldown.ts
828
+ target_paths:
829
+ - packages/memory/vendor/claude-mem/engine/services/worker/RateLimitStore.ts
830
+ - packages/memory/vendor/claude-mem/engine/services/context
831
+ rationale: "Field optimizer, the RateLimitStore quota guard fix (#3838), observer health and quota cooldown with the ContextBuilder warning retargeted to `freeharness memory status` (P3.1, P3.3)."
832
+
833
+ - name: process-and-transcript
834
+ classification: port
835
+ status: planned
836
+ license: Apache-2.0
837
+ upstream_paths:
838
+ - src/shared/uvx-env.ts
839
+ - src/shared/kill-process-tree.ts
840
+ - src/shared/process-identity.ts
841
+ - src/shared/transcript-parser.ts
842
+ - plugin/modes/code.json
843
+ target_paths:
844
+ - packages/memory/vendor/claude-mem/engine/shared/spawn.ts
845
+ - packages/memory/vendor/claude-mem/engine/services/transcripts/processor.ts
846
+ - packages/memory/vendor/claude-mem/plugin/modes/code.json
847
+ rationale: "uvx env and process-tree kill, process identity, single-read transcript parser, code-mode observer role and skip_summary noise; the observer prompt gains the verbatim-identifier rule in compact English (P3.1, P3.2)."
848
+
849
+ - name: installer-pro-telemetry-viewer
850
+ classification: ignore
851
+ status: planned
852
+ license: Apache-2.0
853
+ upstream_paths:
854
+ - src/services/install
855
+ - src/services/telemetry
856
+ - src/services/worker/http
857
+ target_paths: []
858
+ rationale: "Installer, pro, telemetry, viewer and provider changes are outside the slim vendored engine (SLIM-AUDIT.md)."