ultimate-pi 0.1.0 → 0.1.3

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 (509) hide show
  1. package/.agents/skills/ck-search/SKILL.md +99 -0
  2. package/.agents/skills/defuddle/SKILL.md +90 -0
  3. package/.agents/skills/find-skills/SKILL.md +142 -0
  4. package/.agents/skills/firecrawl/SKILL.md +150 -0
  5. package/.agents/skills/firecrawl/rules/install.md +82 -0
  6. package/.agents/skills/firecrawl/rules/security.md +26 -0
  7. package/.agents/skills/firecrawl-agent/SKILL.md +57 -0
  8. package/.agents/skills/firecrawl-build-interact/SKILL.md +67 -0
  9. package/.agents/skills/firecrawl-build-onboarding/SKILL.md +102 -0
  10. package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
  11. package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
  12. package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
  13. package/.agents/skills/firecrawl-build-scrape/SKILL.md +68 -0
  14. package/.agents/skills/firecrawl-build-search/SKILL.md +68 -0
  15. package/.agents/skills/firecrawl-crawl/SKILL.md +58 -0
  16. package/.agents/skills/firecrawl-download/SKILL.md +69 -0
  17. package/.agents/skills/firecrawl-interact/SKILL.md +83 -0
  18. package/.agents/skills/firecrawl-map/SKILL.md +50 -0
  19. package/.agents/skills/firecrawl-parse/SKILL.md +61 -0
  20. package/.agents/skills/firecrawl-scrape/SKILL.md +68 -0
  21. package/.agents/skills/firecrawl-search/SKILL.md +59 -0
  22. package/.agents/skills/obsidian-bases/SKILL.md +299 -0
  23. package/.agents/skills/obsidian-markdown/SKILL.md +237 -0
  24. package/.agents/skills/posthog-analyst/SKILL.md +306 -0
  25. package/.agents/skills/posthog-analyst/evals/evals.json +23 -0
  26. package/.agents/skills/wiki/SKILL.md +215 -0
  27. package/.agents/skills/wiki/references/css-snippets.md +122 -0
  28. package/.agents/skills/wiki/references/frontmatter.md +107 -0
  29. package/.agents/skills/wiki/references/git-setup.md +58 -0
  30. package/.agents/skills/wiki/references/mcp-setup.md +149 -0
  31. package/.agents/skills/wiki/references/modes.md +259 -0
  32. package/.agents/skills/wiki/references/plugins.md +96 -0
  33. package/.agents/skills/wiki/references/rest-api.md +124 -0
  34. package/.agents/skills/wiki-autoresearch/SKILL.md +211 -0
  35. package/.agents/skills/wiki-autoresearch/references/program.md +75 -0
  36. package/.agents/skills/wiki-fold/SKILL.md +204 -0
  37. package/.agents/skills/wiki-fold/references/fold-template.md +133 -0
  38. package/.agents/skills/wiki-ingest/SKILL.md +288 -0
  39. package/.agents/skills/wiki-lint/SKILL.md +183 -0
  40. package/.agents/skills/wiki-query/SKILL.md +176 -0
  41. package/.agents/skills/wiki-save/SKILL.md +128 -0
  42. package/.ckignore +41 -0
  43. package/.env.example +9 -0
  44. package/.github/banner-v2.png +0 -0
  45. package/.github/workflows/lint.yml +33 -0
  46. package/.github/workflows/publish-github-packages.yml +35 -0
  47. package/.github/workflows/publish-npm.yml +32 -0
  48. package/.pi/SYSTEM.md +107 -40
  49. package/.pi/agents/pi-pi/agent-expert.md +205 -0
  50. package/.pi/agents/pi-pi/cli-expert.md +47 -0
  51. package/.pi/agents/pi-pi/config-expert.md +67 -0
  52. package/.pi/agents/pi-pi/ext-expert.md +53 -0
  53. package/.pi/agents/pi-pi/keybinding-expert.md +123 -0
  54. package/.pi/agents/pi-pi/pi-orchestrator.md +103 -0
  55. package/.pi/agents/pi-pi/prompt-expert.md +83 -0
  56. package/.pi/agents/pi-pi/skill-expert.md +52 -0
  57. package/.pi/agents/pi-pi/theme-expert.md +46 -0
  58. package/.pi/agents/pi-pi/tui-expert.md +100 -0
  59. package/.pi/agents/rethink.md +140 -0
  60. package/.pi/agents/wiki-ingest.md +67 -0
  61. package/.pi/agents/wiki-lint.md +75 -0
  62. package/.pi/auto-commit.json +20 -0
  63. package/.pi/extensions/banner.png +0 -0
  64. package/.pi/extensions/ck-enforce.ts +216 -0
  65. package/.pi/extensions/custom-footer.ts +308 -0
  66. package/.pi/extensions/custom-header.ts +116 -0
  67. package/.pi/extensions/dotenv-loader.ts +170 -0
  68. package/.pi/internal/cursor-sdk-transcript-parser.ts +59 -0
  69. package/.pi/model-router.json +95 -0
  70. package/.pi/npm/.gitignore +2 -0
  71. package/.pi/prompts/git-sync.md +124 -0
  72. package/.pi/prompts/harness-setup.md +509 -0
  73. package/.pi/prompts/save.md +16 -0
  74. package/.pi/prompts/wiki-autoresearch.md +19 -0
  75. package/.pi/prompts/wiki.md +23 -0
  76. package/.pi/providers/cursor-sdk-provider.test.mjs +476 -0
  77. package/.pi/providers/cursor-sdk-provider.ts +1085 -0
  78. package/.pi/settings.json +14 -4
  79. package/.pi/skills/agent-router/SKILL.md +174 -0
  80. package/.pi/sounds/alert/1-kaching-track.mp3 +0 -0
  81. package/.pi/sounds/error/1-ksi-wth-track.mp3 +0 -0
  82. package/.pi/sounds/error/2-smash-track.mp3 +0 -0
  83. package/.pi/sounds/error/3-buzzer-track.mp3 +0 -0
  84. package/.pi/sounds/notification/1-soft-notification-track.mp3 +0 -0
  85. package/.pi/sounds/project-sounds.json +25 -0
  86. package/.pi/sounds/reminder/1-soft-notification-track.mp3 +0 -0
  87. package/.pi/sounds/success/1-tada-track.mp3 +0 -0
  88. package/.pi/sounds/success/2-jobs-done-track.mp3 +0 -0
  89. package/.pi/sounds/success/3-yay-track.mp3 +0 -0
  90. package/CONTRIBUTING.md +116 -0
  91. package/README.md +33 -40
  92. package/biome.json +34 -0
  93. package/firecrawl/.env.template +58 -0
  94. package/firecrawl/README.md +49 -0
  95. package/firecrawl/docker-compose.yaml +201 -0
  96. package/firecrawl/searxng/searxng.env +3 -0
  97. package/firecrawl/searxng/settings.yml +85 -0
  98. package/lefthook.yml +8 -0
  99. package/package.json +55 -16
  100. package/vault/AGENTS.md +37 -0
  101. package/vault/wiki/_templates/comparison.md +39 -0
  102. package/vault/wiki/_templates/concept.md +40 -0
  103. package/vault/wiki/_templates/decision.md +21 -0
  104. package/vault/wiki/_templates/entity.md +32 -0
  105. package/vault/wiki/_templates/flow.md +14 -0
  106. package/vault/wiki/_templates/module.md +18 -0
  107. package/vault/wiki/_templates/question.md +31 -0
  108. package/vault/wiki/_templates/source.md +39 -0
  109. package/vault/wiki/concepts/AST-Aware Code Chunking.md +44 -0
  110. package/vault/wiki/concepts/Build-Time Prompt Compilation.md +107 -0
  111. package/vault/wiki/concepts/Context Engine (AI Coding).md +47 -0
  112. package/vault/wiki/concepts/Context-Aware System Reminders.md +61 -0
  113. package/vault/wiki/concepts/Contextualized Text Embedding.md +42 -0
  114. package/vault/wiki/concepts/Contractor vs Employee AI Model.md +55 -0
  115. package/vault/wiki/concepts/Dual-Model Agent Architecture.md +65 -0
  116. package/vault/wiki/concepts/Late Chunking vs Early Chunking.md +43 -0
  117. package/vault/wiki/concepts/Majority Vote Ensembling.md +68 -0
  118. package/vault/wiki/concepts/Meta-Harness.md +16 -0
  119. package/vault/wiki/concepts/Multi-Agent AI Coding Architecture.md +75 -0
  120. package/vault/wiki/concepts/Prompt Enhancement.md +90 -0
  121. package/vault/wiki/concepts/Prompt Renderer.md +89 -0
  122. package/vault/wiki/concepts/Semantic Codebase Indexing.md +67 -0
  123. package/vault/wiki/concepts/additive-config-hierarchy.md +16 -0
  124. package/vault/wiki/concepts/agent-artifacts-verifiable-deliverables.md +71 -0
  125. package/vault/wiki/concepts/agent-browser-browser-automation.md +99 -0
  126. package/vault/wiki/concepts/agent-codebase-interface.md +43 -0
  127. package/vault/wiki/concepts/agent-harness-architecture.md +67 -0
  128. package/vault/wiki/concepts/agent-loop-detection-patterns.md +133 -0
  129. package/vault/wiki/concepts/agent-search-enforcement.md +126 -0
  130. package/vault/wiki/concepts/agent-skills-ecosystem.md +74 -0
  131. package/vault/wiki/concepts/agent-skills-pattern.md +68 -0
  132. package/vault/wiki/concepts/agentic-harness-context-enforcement.md +91 -0
  133. package/vault/wiki/concepts/agentic-harness.md +34 -0
  134. package/vault/wiki/concepts/agentic-orchestration-pipeline.md +56 -0
  135. package/vault/wiki/concepts/agentic-search-no-embeddings.md +18 -0
  136. package/vault/wiki/concepts/anthropic-context-engineering.md +13 -0
  137. package/vault/wiki/concepts/antigravity-agent-first-architecture.md +61 -0
  138. package/vault/wiki/concepts/ast-compression.md +19 -0
  139. package/vault/wiki/concepts/ast-truncation.md +66 -0
  140. package/vault/wiki/concepts/barrel-files.md +37 -0
  141. package/vault/wiki/concepts/browser-harness-agent.md +41 -0
  142. package/vault/wiki/concepts/browser-subagent-visual-verification.md +82 -0
  143. package/vault/wiki/concepts/codebase-intelligence-ecosystem-comparison.md +192 -0
  144. package/vault/wiki/concepts/codebase-intelligence-harness-integration.md +161 -0
  145. package/vault/wiki/concepts/codebase-to-context-ingestion.md +46 -0
  146. package/vault/wiki/concepts/codex-harness-innovations.md +147 -0
  147. package/vault/wiki/concepts/consensus-debate-flow.md +17 -0
  148. package/vault/wiki/concepts/consensus-debate.md +206 -0
  149. package/vault/wiki/concepts/content-addressed-spec-identity.md +166 -0
  150. package/vault/wiki/concepts/context-anxiety.md +57 -0
  151. package/vault/wiki/concepts/context-compression-techniques.md +19 -0
  152. package/vault/wiki/concepts/context-continuity.md +22 -0
  153. package/vault/wiki/concepts/context-drift-in-agents.md +106 -0
  154. package/vault/wiki/concepts/context-engineering.md +62 -0
  155. package/vault/wiki/concepts/context-folding.md +67 -0
  156. package/vault/wiki/concepts/context-mode.md +38 -0
  157. package/vault/wiki/concepts/cursor-harness-innovations.md +107 -0
  158. package/vault/wiki/concepts/deterministic-session-compaction.md +79 -0
  159. package/vault/wiki/concepts/drift-detection-unified.md +296 -0
  160. package/vault/wiki/concepts/execution-feedback-loop.md +46 -0
  161. package/vault/wiki/concepts/feedforward-feedback-harness.md +60 -0
  162. package/vault/wiki/concepts/five-root-cause-metrics-sentrux.md +40 -0
  163. package/vault/wiki/concepts/fork-safe-spec-storage.md +89 -0
  164. package/vault/wiki/concepts/fts5-sandbox.md +19 -0
  165. package/vault/wiki/concepts/fuzzy-edit-matching.md +71 -0
  166. package/vault/wiki/concepts/gemini-cli-architecture.md +104 -0
  167. package/vault/wiki/concepts/generator-evaluator-architecture.md +64 -0
  168. package/vault/wiki/concepts/guardian-agent-pattern.md +67 -0
  169. package/vault/wiki/concepts/harness-configuration-layers.md +89 -0
  170. package/vault/wiki/concepts/harness-control-frameworks.md +155 -0
  171. package/vault/wiki/concepts/harness-engineering-first-principles.md +90 -0
  172. package/vault/wiki/concepts/harness-h-formalism.md +53 -0
  173. package/vault/wiki/concepts/hybrid-code-search.md +61 -0
  174. package/vault/wiki/concepts/inline-post-edit-validation.md +112 -0
  175. package/vault/wiki/concepts/legendary-engineering-patterns-harness.md +110 -0
  176. package/vault/wiki/concepts/lifecycle-hooks.md +94 -0
  177. package/vault/wiki/concepts/mcp-tool-routing.md +102 -0
  178. package/vault/wiki/concepts/memory-system-of-record-vs-ephemeral-cache.md +47 -0
  179. package/vault/wiki/concepts/meta-agent-context-pruning.md +151 -0
  180. package/vault/wiki/concepts/model-adaptive-harness.md +122 -0
  181. package/vault/wiki/concepts/model-routing-agents.md +101 -0
  182. package/vault/wiki/concepts/monorepo-architecture.md +45 -0
  183. package/vault/wiki/concepts/multi-agent-specialization.md +61 -0
  184. package/vault/wiki/concepts/permission-subsystem.md +16 -0
  185. package/vault/wiki/concepts/pi-messenger-analysis.md +243 -0
  186. package/vault/wiki/concepts/pi-vscode-extension-landscape.md +37 -0
  187. package/vault/wiki/concepts/policy-engine-pattern.md +78 -0
  188. package/vault/wiki/concepts/progressive-disclosure-agents.md +53 -0
  189. package/vault/wiki/concepts/progressive-skill-disclosure.md +17 -0
  190. package/vault/wiki/concepts/provider-native-prompting.md +203 -0
  191. package/vault/wiki/concepts/quality-signal-sentrux.md +37 -0
  192. package/vault/wiki/concepts/repo-map-ranking.md +42 -0
  193. package/vault/wiki/concepts/result-monad-error-handling.md +47 -0
  194. package/vault/wiki/concepts/safety-defense-in-depth.md +83 -0
  195. package/vault/wiki/concepts/sandbox-os-enforcement.md +18 -0
  196. package/vault/wiki/concepts/selective-debate-routing.md +70 -0
  197. package/vault/wiki/concepts/self-evolving-harness.md +60 -0
  198. package/vault/wiki/concepts/sentrux-mcp-integration.md +36 -0
  199. package/vault/wiki/concepts/sentrux-rules-engine.md +49 -0
  200. package/vault/wiki/concepts/shell-pattern-compression.md +24 -0
  201. package/vault/wiki/concepts/skill-first-architecture.md +166 -0
  202. package/vault/wiki/concepts/structured-compaction.md +78 -0
  203. package/vault/wiki/concepts/subagent-orchestration.md +17 -0
  204. package/vault/wiki/concepts/subagent-worktree-isolation.md +68 -0
  205. package/vault/wiki/concepts/superpowers-methodology.md +78 -0
  206. package/vault/wiki/concepts/think-in-code.md +73 -0
  207. package/vault/wiki/concepts/ts-execution-layer.md +100 -0
  208. package/vault/wiki/concepts/typescript-strict-mode.md +37 -0
  209. package/vault/wiki/concepts/vcc-conversation-compaction-for-pi.md +51 -0
  210. package/vault/wiki/concepts/verification-drift-detection.md +19 -0
  211. package/vault/wiki/consensus/consensus-records.md +58 -0
  212. package/vault/wiki/decisions/2026-04-30-pi-lean-ctx-native.md +122 -0
  213. package/vault/wiki/decisions/adr-008.md +40 -0
  214. package/vault/wiki/decisions/adr-009.md +46 -0
  215. package/vault/wiki/decisions/adr-010.md +55 -0
  216. package/vault/wiki/decisions/adr-011.md +165 -0
  217. package/vault/wiki/decisions/adr-012.md +102 -0
  218. package/vault/wiki/decisions/adr-013.md +59 -0
  219. package/vault/wiki/decisions/adr-014.md +73 -0
  220. package/vault/wiki/decisions/adr-015.md +81 -0
  221. package/vault/wiki/decisions/adr-016.md +91 -0
  222. package/vault/wiki/decisions/adr-017.md +79 -0
  223. package/vault/wiki/decisions/adr-018.md +100 -0
  224. package/vault/wiki/decisions/adr-019.md +75 -0
  225. package/vault/wiki/decisions/adr-020.md +106 -0
  226. package/vault/wiki/decisions/adr-021.md +86 -0
  227. package/vault/wiki/decisions/adr-022.md +113 -0
  228. package/vault/wiki/decisions/adr-023.md +113 -0
  229. package/vault/wiki/decisions/adr-024.md +73 -0
  230. package/vault/wiki/decisions/adr-025.md +130 -0
  231. package/vault/wiki/decisions/adr-026.md +56 -0
  232. package/vault/wiki/decisions/colocate-wiki.md +34 -0
  233. package/vault/wiki/entities/Anders Hejlsberg.md +29 -0
  234. package/vault/wiki/entities/Anthropic.md +17 -0
  235. package/vault/wiki/entities/Augment Code.md +49 -0
  236. package/vault/wiki/entities/Bjarne Stroustrup.md +26 -0
  237. package/vault/wiki/entities/Bolt.new (StackBlitz).md +39 -0
  238. package/vault/wiki/entities/Boris Cherny.md +11 -0
  239. package/vault/wiki/entities/Claude Code.md +19 -0
  240. package/vault/wiki/entities/Dennis Ritchie.md +26 -0
  241. package/vault/wiki/entities/Emergent Labs.md +32 -0
  242. package/vault/wiki/entities/Google Cloud.md +16 -0
  243. package/vault/wiki/entities/Guido van Rossum.md +28 -0
  244. package/vault/wiki/entities/Ken Thompson.md +28 -0
  245. package/vault/wiki/entities/Lee et al.md +16 -0
  246. package/vault/wiki/entities/Linus Torvalds.md +28 -0
  247. package/vault/wiki/entities/Lovable (company).md +40 -0
  248. package/vault/wiki/entities/Martin Fowler.md +16 -0
  249. package/vault/wiki/entities/Meng et al.md +16 -0
  250. package/vault/wiki/entities/OpenAI.md +16 -0
  251. package/vault/wiki/entities/Rocket.new.md +38 -0
  252. package/vault/wiki/entities/VILA-Lab.md +15 -0
  253. package/vault/wiki/entities/autodev-codebase.md +18 -0
  254. package/vault/wiki/entities/ck-tool.md +59 -0
  255. package/vault/wiki/entities/codesearch.md +18 -0
  256. package/vault/wiki/entities/disler-indydevdan.md +33 -0
  257. package/vault/wiki/entities/gsd-get-shit-done.md +56 -0
  258. package/vault/wiki/entities/javascript-runtimes.md +48 -0
  259. package/vault/wiki/entities/jesse-vincent.md +38 -0
  260. package/vault/wiki/entities/lean-ctx.md +32 -0
  261. package/vault/wiki/entities/opendev.md +41 -0
  262. package/vault/wiki/entities/ops-codegraph-tool.md +18 -0
  263. package/vault/wiki/entities/pi-coding-agent.md +53 -0
  264. package/vault/wiki/entities/sentrux.md +54 -0
  265. package/vault/wiki/entities/vgrep-tool.md +57 -0
  266. package/vault/wiki/entities/vitest.md +41 -0
  267. package/vault/wiki/flows/harness-wiki-pipeline.md +204 -0
  268. package/vault/wiki/hot.md +932 -0
  269. package/vault/wiki/index.md +437 -0
  270. package/vault/wiki/log.md +418 -0
  271. package/vault/wiki/meta/dashboard.md +30 -0
  272. package/vault/wiki/meta/lint-report-2026-04-30.md +86 -0
  273. package/vault/wiki/meta/lint-report-2026-05-02.md +251 -0
  274. package/vault/wiki/meta/overview.canvas +43 -0
  275. package/vault/wiki/modules/adversarial-verification.md +57 -0
  276. package/vault/wiki/modules/automated-observability.md +54 -0
  277. package/vault/wiki/modules/bench.md +20 -0
  278. package/vault/wiki/modules/extensions.md +23 -0
  279. package/vault/wiki/modules/grounding-checkpoints.md +62 -0
  280. package/vault/wiki/modules/harness-implementation-plan.md +345 -0
  281. package/vault/wiki/modules/harness-wiki-skill-mapping.md +135 -0
  282. package/vault/wiki/modules/harness.md +86 -0
  283. package/vault/wiki/modules/persistent-memory.md +85 -0
  284. package/vault/wiki/modules/schema-orchestration.md +68 -0
  285. package/vault/wiki/modules/skills.md +27 -0
  286. package/vault/wiki/modules/spec-hardening.md +58 -0
  287. package/vault/wiki/modules/structured-planning.md +53 -0
  288. package/vault/wiki/modules/think-in-code-enforcement.md +153 -0
  289. package/vault/wiki/modules/wiki-query-interface.md +64 -0
  290. package/vault/wiki/overview.md +51 -0
  291. package/vault/wiki/questions/Research-pi-vs-claude-code-agentic-orchestration-pipeline.md +87 -0
  292. package/vault/wiki/questions/Research-sentrux-dev.md +123 -0
  293. package/vault/wiki/questions/Research-superpowers-skill-for-agentic-coding-agents.md +164 -0
  294. package/vault/wiki/questions/Research: Augment Code Context Engine.md +244 -0
  295. package/vault/wiki/questions/Research: Automating Software Engineering - Lovable, Bolt, Emergent, Rocket.md +112 -0
  296. package/vault/wiki/questions/Research: Claude Code State-of-the-Art Harness Improvements.md +209 -0
  297. package/vault/wiki/questions/Research: Codex State-of-the-Art Harness Improvements.md +99 -0
  298. package/vault/wiki/questions/Research: Engineering Workflows of Legendary Programmers and AI Harness Mapping.md +107 -0
  299. package/vault/wiki/questions/Research: Fallow Codebase Intelligence Harness Integration.md +72 -0
  300. package/vault/wiki/questions/Research: Gemini CLI SOTA Harness Integration.md +166 -0
  301. package/vault/wiki/questions/Research: GitHub Issues as Harness Spec Storage.md +188 -0
  302. package/vault/wiki/questions/Research: Google Antigravity Harness Integration.md +120 -0
  303. package/vault/wiki/questions/Research: Meta-Agent Context Drift Detection.md +236 -0
  304. package/vault/wiki/questions/Research: Model-Adaptive Agent Harness Design.md +95 -0
  305. package/vault/wiki/questions/Research: Model-Specific Prompting Guides.md +165 -0
  306. package/vault/wiki/questions/Research: Prompt Renderer for Multi-Model Agent Harness.md +216 -0
  307. package/vault/wiki/questions/Research: Skill-First Harness Architecture.md +91 -0
  308. package/vault/wiki/questions/Research: TypeScript Best Practices and Codebase Structure.md +88 -0
  309. package/vault/wiki/questions/Research: TypeScript Execution Layer for Agent Tool Calling.md +81 -0
  310. package/vault/wiki/questions/Research: claude-mem over Obsidian for Harness Layer.md +71 -0
  311. package/vault/wiki/questions/Research: claude-mem over obsidian wiki as the knowledge base for our agentic harness pipeline. think from first principles. does this replace or complement our current setup? no hard feelings about previous decisions. gimme accurate points.md +80 -0
  312. package/vault/wiki/questions/Research: context-mode vs lean-ctx.md +72 -0
  313. package/vault/wiki/questions/Research: cursor.sh Harness Innovations.md +92 -0
  314. package/vault/wiki/questions/Research: executor.sh Harness Integration.md +170 -0
  315. package/vault/wiki/questions/Research: how GSD fits into our coding harness setup.md +97 -0
  316. package/vault/wiki/questions/Research: how claude-mem fits into our workflow. and whether it should replace obsidian in the codebase. no hard feelings about previous actions, rethink from first principles always.md +80 -0
  317. package/vault/wiki/questions/Research: pi-vcc.md +113 -0
  318. package/vault/wiki/questions/Research: semantic code search tools.md +69 -0
  319. package/vault/wiki/questions/Research: vcc extension for pi coding agent.md +73 -0
  320. package/vault/wiki/questions/how-to-enable-semantic-code-search-now.md +111 -0
  321. package/vault/wiki/questions/mvp-implementation-blueprint.md +552 -0
  322. package/vault/wiki/questions/research-agent-first-codebase-exploration.md +199 -0
  323. package/vault/wiki/questions/research-agentic-coding-harness-latest-papers.md +142 -0
  324. package/vault/wiki/questions/research-gitingest-gitreverse-integration.md +100 -0
  325. package/vault/wiki/questions/research-wozcode-token-reduction.md +67 -0
  326. package/vault/wiki/questions/resolved-context-pruning-inplace-vs-restart.md +95 -0
  327. package/vault/wiki/questions/resolved-context-window-economics.md +167 -0
  328. package/vault/wiki/questions/resolved-imad-debate-gating-transfer.md +126 -0
  329. package/vault/wiki/questions/resolved-mcp-tool-preference.md +112 -0
  330. package/vault/wiki/questions/resolved-small-model-meta-agents.md +107 -0
  331. package/vault/wiki/questions/resolved-treesitter-dynamic-languages.md +95 -0
  332. package/vault/wiki/sources/Auggie Context MCP Server.md +63 -0
  333. package/vault/wiki/sources/Augment Code Codacy AI Giants.md +61 -0
  334. package/vault/wiki/sources/Augment Code MCP SiliconAngle.md +49 -0
  335. package/vault/wiki/sources/Augment Code WorkOS ERC 2025.md +55 -0
  336. package/vault/wiki/sources/Augment Context Engine Official.md +71 -0
  337. package/vault/wiki/sources/Augment SWE-bench Agent GitHub.md +74 -0
  338. package/vault/wiki/sources/Augment SWE-bench Pro Blog.md +58 -0
  339. package/vault/wiki/sources/Source: AgentBus Jinja2 Prompt Pipelines.md +75 -0
  340. package/vault/wiki/sources/Source: Arxiv /342/200/224 Don't Break the Cache.md" +85 -0
  341. package/vault/wiki/sources/Source: Augment - Harness Engineering for AI Coding Agents.md +58 -0
  342. package/vault/wiki/sources/Source: Blake Crosley Agent Architecture Guide.md +100 -0
  343. package/vault/wiki/sources/Source: Bolt.new Architecture & Case Study.md +75 -0
  344. package/vault/wiki/sources/Source: Build-Time Prompt Compilation Architecture.md +107 -0
  345. package/vault/wiki/sources/Source: Claude API Agent Skills Overview.md +70 -0
  346. package/vault/wiki/sources/Source: Gemini CLI Changelogs.md +88 -0
  347. package/vault/wiki/sources/Source: Google Blog - Gemini CLI Announcement.md +57 -0
  348. package/vault/wiki/sources/Source: Google Gemini CLI Architecture Docs.md +53 -0
  349. package/vault/wiki/sources/Source: LangChain - Anatomy of Agent Harness.md +65 -0
  350. package/vault/wiki/sources/Source: Lovable Architecture & Clone Analysis.md +83 -0
  351. package/vault/wiki/sources/Source: Martin Fowler - Harness Engineering.md +70 -0
  352. package/vault/wiki/sources/Source: OpenAI Harness Engineering Five Principles.md +58 -0
  353. package/vault/wiki/sources/Source: OpenAI Harness Engineering /342/200/224 0 Lines of Human Code.md" +101 -0
  354. package/vault/wiki/sources/Source: OpenDev /342/200/224 Building AI Coding Agents for the Terminal.md" +100 -0
  355. package/vault/wiki/sources/Source: Render AI Coding Agents Benchmark 2025.md +53 -0
  356. package/vault/wiki/sources/Source: Rocket.new /342/200/224 Vibe Solutioning Platform.md" +70 -0
  357. package/vault/wiki/sources/Source: SwirlAI Agent Skills Progressive Disclosure.md +71 -0
  358. package/vault/wiki/sources/Source: TianPan Prompt Caching Architecture.md +89 -0
  359. package/vault/wiki/sources/Source: Vercel Labs agent-browser.md +155 -0
  360. package/vault/wiki/sources/Source: browser-harness CDP Harness.md +126 -0
  361. package/vault/wiki/sources/agent-drift-academic-paper.md +79 -0
  362. package/vault/wiki/sources/aider-repomap-tree-sitter.md +42 -0
  363. package/vault/wiki/sources/anthropic-compaction-api.md +58 -0
  364. package/vault/wiki/sources/anthropic-effective-harnesses.md +42 -0
  365. package/vault/wiki/sources/anthropic-prompt-best-practices.md +100 -0
  366. package/vault/wiki/sources/anthropic2026-harness-design.md +63 -0
  367. package/vault/wiki/sources/barrel-files-tkdodo.md +38 -0
  368. package/vault/wiki/sources/birth-of-unix-kernighan-interview.md +57 -0
  369. package/vault/wiki/sources/bockeler2026-harness-engineering.md +69 -0
  370. package/vault/wiki/sources/cast-code-chunking-paper.md +50 -0
  371. package/vault/wiki/sources/ck-semantic-search.md +78 -0
  372. package/vault/wiki/sources/claude-code-architecture-karaxai-2026.md +71 -0
  373. package/vault/wiki/sources/claude-code-architecture-qubytes-2026.md +50 -0
  374. package/vault/wiki/sources/claude-code-architecture-vila-lab-2026.md +64 -0
  375. package/vault/wiki/sources/claude-code-security-architecture-penligent-2026.md +70 -0
  376. package/vault/wiki/sources/claude-context-editing-docs.md +13 -0
  377. package/vault/wiki/sources/cloudflare-codemode.md +63 -0
  378. package/vault/wiki/sources/code-chunk-library-supermemory.md +63 -0
  379. package/vault/wiki/sources/codeact-apple-2024.md +62 -0
  380. package/vault/wiki/sources/codex-dsc-rfc-8573.md +41 -0
  381. package/vault/wiki/sources/codex-open-source-agent-2026.md +110 -0
  382. package/vault/wiki/sources/coir-code-retrieval-benchmark.md +51 -0
  383. package/vault/wiki/sources/colinmcnamara-context-optimization-codemode.md +48 -0
  384. package/vault/wiki/sources/context-folding-paper.md +61 -0
  385. package/vault/wiki/sources/context-mode-website.md +63 -0
  386. package/vault/wiki/sources/cursor-agent-best-practices-2026.md +62 -0
  387. package/vault/wiki/sources/cursor-fork-29b-2025.md +50 -0
  388. package/vault/wiki/sources/cursor-harness-april-2026.md +76 -0
  389. package/vault/wiki/sources/cursor-instant-apply-2024.md +45 -0
  390. package/vault/wiki/sources/cursor-shadow-workspace-2024.md +52 -0
  391. package/vault/wiki/sources/cursor-shipped-coding-agent-2026.md +53 -0
  392. package/vault/wiki/sources/cursor-vs-antigravity-2026.md +51 -0
  393. package/vault/wiki/sources/disler-pi-vs-claude-code.md +69 -0
  394. package/vault/wiki/sources/distill-deterministic-context-compression.md +53 -0
  395. package/vault/wiki/sources/embedding-models-benchmark-supermemory-2025.md +48 -0
  396. package/vault/wiki/sources/executor-rhyssullivan.md +122 -0
  397. package/vault/wiki/sources/fallow-rs-codebase-intelligence.md +125 -0
  398. package/vault/wiki/sources/fan2025-imad.md +60 -0
  399. package/vault/wiki/sources/forgecode-gpt5-agent-improvements.md +63 -0
  400. package/vault/wiki/sources/gemini-3-prompting-guide.md +78 -0
  401. package/vault/wiki/sources/gh-cli-sub-issue-rfc.md +50 -0
  402. package/vault/wiki/sources/gh-sub-issue-extension.md +72 -0
  403. package/vault/wiki/sources/github-fork-issues-discussion.md +44 -0
  404. package/vault/wiki/sources/github-issue-dependencies-docs.md +49 -0
  405. package/vault/wiki/sources/github-sub-issues-docs.md +51 -0
  406. package/vault/wiki/sources/gitingest.md +91 -0
  407. package/vault/wiki/sources/gitreverse.md +63 -0
  408. package/vault/wiki/sources/google-antigravity-official-blog.md +47 -0
  409. package/vault/wiki/sources/google-antigravity-wikipedia.md +53 -0
  410. package/vault/wiki/sources/gsd-codecentric-deep-dive.md +57 -0
  411. package/vault/wiki/sources/gsd-github-repo.md +51 -0
  412. package/vault/wiki/sources/gsd-hn-discussion.md +59 -0
  413. package/vault/wiki/sources/guido-python-design-philosophy.md +56 -0
  414. package/vault/wiki/sources/hejlsberg-7-learnings.md +48 -0
  415. package/vault/wiki/sources/ironclaw-drift-monitor.md +80 -0
  416. package/vault/wiki/sources/langsight-loop-detection.md +80 -0
  417. package/vault/wiki/sources/leanctx-website.md +69 -0
  418. package/vault/wiki/sources/lee2026-meta-harness.md +59 -0
  419. package/vault/wiki/sources/linux-kernel-coding-workflow.md +50 -0
  420. package/vault/wiki/sources/lou2026-autoharness.md +53 -0
  421. package/vault/wiki/sources/martin-fowler-harness-engineering.md +73 -0
  422. package/vault/wiki/sources/mcp-architecture-docs.md +13 -0
  423. package/vault/wiki/sources/meng2026-agent-harness-survey.md +79 -0
  424. package/vault/wiki/sources/mindstudio-four-agent-types.md +68 -0
  425. package/vault/wiki/sources/ms-chat-history-management.md +13 -0
  426. package/vault/wiki/sources/openai-prompt-guidance.md +104 -0
  427. package/vault/wiki/sources/openclaw-session-pruning.md +13 -0
  428. package/vault/wiki/sources/opencode-dcp.md +13 -0
  429. package/vault/wiki/sources/opendev-arxiv-2603.05344v1.md +79 -0
  430. package/vault/wiki/sources/openhands-platform.md +39 -0
  431. package/vault/wiki/sources/oss-guide-codebase-exploration.md +53 -0
  432. package/vault/wiki/sources/pi-compaction-extensions-ecosystem.md +102 -0
  433. package/vault/wiki/sources/pi-context-prune-github-repo.md +38 -0
  434. package/vault/wiki/sources/pi-mono-compaction-docs.md +38 -0
  435. package/vault/wiki/sources/pi-omni-compact-github-repo.md +50 -0
  436. package/vault/wiki/sources/pi-rtk-optimizer-github-repo.md +45 -0
  437. package/vault/wiki/sources/pi-vcc-github-repo.md +69 -0
  438. package/vault/wiki/sources/pi-vscode-marketplace.md +41 -0
  439. package/vault/wiki/sources/pi-vscode-model-provider-marketplace.md +39 -0
  440. package/vault/wiki/sources/py-tree-sitter.md +13 -0
  441. package/vault/wiki/sources/sentrux-dev-landing.md +40 -0
  442. package/vault/wiki/sources/sentrux-docs-pro-architecture.md +75 -0
  443. package/vault/wiki/sources/sentrux-docs-quality-signal.md +46 -0
  444. package/vault/wiki/sources/sentrux-docs-root-cause-metrics.md +57 -0
  445. package/vault/wiki/sources/sentrux-docs-rules-engine.md +58 -0
  446. package/vault/wiki/sources/sentrux-github-repo.md +56 -0
  447. package/vault/wiki/sources/superpowers-github-repo.md +56 -0
  448. package/vault/wiki/sources/superpowers-release-blog.md +54 -0
  449. package/vault/wiki/sources/superpowers-termdock-analysis.md +45 -0
  450. package/vault/wiki/sources/swe-agent-aci.md +42 -0
  451. package/vault/wiki/sources/swe-bench.md +45 -0
  452. package/vault/wiki/sources/swe-pruner-context-pruning.md +13 -0
  453. package/vault/wiki/sources/think-in-code-blog.md +48 -0
  454. package/vault/wiki/sources/tree-sitter-docs.md +13 -0
  455. package/vault/wiki/sources/ts-best-practices-2025-devto.md +42 -0
  456. package/vault/wiki/sources/ts-folder-structure-mingyang.md +58 -0
  457. package/vault/wiki/sources/ts-monorepo-koerselman.md +44 -0
  458. package/vault/wiki/sources/ts-result-error-handling-kkalamarski.md +52 -0
  459. package/vault/wiki/sources/ts-runtimes-comparison-betterstack.md +42 -0
  460. package/vault/wiki/sources/ts-strict-mode-rishikc.md +43 -0
  461. package/vault/wiki/sources/unix-philosophy.md +48 -0
  462. package/vault/wiki/sources/vectara-chunking-vs-embedding-naacl2025.md +39 -0
  463. package/vault/wiki/sources/vectara-guardian-agents.md +79 -0
  464. package/vault/wiki/sources/vgrep-semantic-search.md +76 -0
  465. package/vault/wiki/sources/vitest-official.md +41 -0
  466. package/vault/wiki/sources/vscode-pi-community-extension.md +40 -0
  467. package/vault/wiki/sources/wozcode.md +79 -0
  468. package/.agents/skills/compress/SKILL.md +0 -111
  469. package/.agents/skills/compress/scripts/__init__.py +0 -9
  470. package/.agents/skills/compress/scripts/__main__.py +0 -3
  471. package/.agents/skills/compress/scripts/benchmark.py +0 -78
  472. package/.agents/skills/compress/scripts/cli.py +0 -73
  473. package/.agents/skills/compress/scripts/compress.py +0 -227
  474. package/.agents/skills/compress/scripts/detect.py +0 -121
  475. package/.agents/skills/compress/scripts/validate.py +0 -189
  476. package/.agents/skills/emil-design-eng/SKILL.md +0 -679
  477. package/.agents/skills/lean-ctx/SKILL.md +0 -149
  478. package/.agents/skills/lean-ctx/scripts/install.sh +0 -95
  479. package/.agents/skills/scrapling-official/LICENSE.txt +0 -28
  480. package/.agents/skills/scrapling-official/SKILL.md +0 -390
  481. package/.agents/skills/scrapling-official/examples/01_fetcher_session.py +0 -26
  482. package/.agents/skills/scrapling-official/examples/02_dynamic_session.py +0 -26
  483. package/.agents/skills/scrapling-official/examples/03_stealthy_session.py +0 -26
  484. package/.agents/skills/scrapling-official/examples/04_spider.py +0 -58
  485. package/.agents/skills/scrapling-official/examples/README.md +0 -45
  486. package/.agents/skills/scrapling-official/references/fetching/choosing.md +0 -78
  487. package/.agents/skills/scrapling-official/references/fetching/dynamic.md +0 -352
  488. package/.agents/skills/scrapling-official/references/fetching/static.md +0 -432
  489. package/.agents/skills/scrapling-official/references/fetching/stealthy.md +0 -255
  490. package/.agents/skills/scrapling-official/references/mcp-server.md +0 -214
  491. package/.agents/skills/scrapling-official/references/migrating_from_beautifulsoup.md +0 -86
  492. package/.agents/skills/scrapling-official/references/parsing/adaptive.md +0 -212
  493. package/.agents/skills/scrapling-official/references/parsing/main_classes.md +0 -586
  494. package/.agents/skills/scrapling-official/references/parsing/selection.md +0 -494
  495. package/.agents/skills/scrapling-official/references/spiders/advanced.md +0 -344
  496. package/.agents/skills/scrapling-official/references/spiders/architecture.md +0 -94
  497. package/.agents/skills/scrapling-official/references/spiders/getting-started.md +0 -164
  498. package/.agents/skills/scrapling-official/references/spiders/proxy-blocking.md +0 -235
  499. package/.agents/skills/scrapling-official/references/spiders/requests-responses.md +0 -196
  500. package/.agents/skills/scrapling-official/references/spiders/sessions.md +0 -205
  501. package/.github/banner.png +0 -0
  502. package/PLAN.md +0 -11
  503. package/extensions/lean-ctx-enforce.ts +0 -166
  504. package/skills-lock.json +0 -35
  505. package/wiki/README.md +0 -10
  506. package/wiki/decisions/0001-establish-project-wiki-and-decision-record-format.md +0 -25
  507. package/wiki/decisions/0002-add-project-banner-to-readme.md +0 -26
  508. package/wiki/decisions/0003-remove-redundant-readme-title-heading.md +0 -26
  509. package/wiki/decisions/0004-publish-package-to-npm-as-ultimate-pi.md +0 -26
@@ -0,0 +1,59 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-013: Biome for Phase 16 Deterministic Quality Gate"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, phase-16, linting, formatting, biome, deterministic-gate]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[package.json]]"
11
+ - "[[biome.json]]"
12
+ related:
13
+ - "[[adr-012]]"
14
+ supersedes: "PRD Q5 (ESLint+Prettier recommendation)"
15
+ created: 2026-05-02
16
+ updated: 2026-05-02
17
+ ---
18
+
19
+ # ADR-013: Biome for Phase 16 Deterministic Quality Gate
20
+
21
+ ## Context
22
+
23
+ PRD Q5 originally resolved Phase 16 gate to "ESLint + Prettier." The project already uses Biome 2.0.6 (`package.json`: `"lint": "biome check"`, `"format": "biome format --write"`) with lefthook pre-commit integration. Adding ESLint+Prettier as new dependencies would duplicate existing tooling.
24
+
25
+ The original concern was Biome's type-aware linting gap. With Biome 2.0.6 + TypeScript 6.0.3, type-aware rules have improved. The remaining gap is covered by `tsc --noEmit` as a separate deterministic step.
26
+
27
+ ## Decision
28
+
29
+ **Use Biome for lint + format in Phase 16. Replace `ESLint + Prettier` with `biome check --apply` + `tsc --noEmit` + `fallow audit`.**
30
+
31
+ Phase 16 gate runs three deterministic steps, 0 LLM tokens:
32
+
33
+ 1. `biome check --apply` — lint + format in one pass
34
+ 2. `tsc --noEmit` — type-checking catch for rules Biome doesn't cover (floating promises, type-aware issues)
35
+ 3. `fallow audit --changed-since main` — dead code, duplication, complexity
36
+
37
+ All three are pure CLI tools with exit codes. No LLM involvement.
38
+
39
+ ## Rationale
40
+
41
+ - **Already configured**: Biome is installed, configured (`biome.json`), and integrated with lefthook. Zero setup cost.
42
+ - **Single tool for lint+format**: Biome replaces both ESLint and Prettier. One dependency instead of two.
43
+ - **TypeScript type-checking via `tsc`**: Covers what Biome can't. `tsc --noEmit` is already in `package.json` scripts (`"check:ts"`).
44
+ - **Zero incremental dependencies**: No ESLint, no prettier, no eslint-config-prettier, no @typescript-eslint packages.
45
+
46
+ ## Consequences
47
+
48
+ ### Positive
49
+ - Fewer dependencies. Lower maintenance.
50
+ - Matches existing project conventions.
51
+ - lefthook integration already works.
52
+
53
+ ### Negative
54
+ - Some ESLint rules have no Biome equivalent (rare edge cases).
55
+ - `tsc --noEmit` is slower than Biome's native linting (but acceptable as a separate gate step).
56
+
57
+ ### Mitigations
58
+ - If a specific ESLint-only rule is needed, evaluate case-by-case. Most are cosmetic — Biome's defaults are sufficient for a deterministic quality gate.
59
+ - `tsc --noEmit` can be limited to `--skipLibCheck` for speed.
@@ -0,0 +1,73 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-014: isolated-vm for P43 TypeScript Execution Sandbox"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, p43, typescript-execution, sandbox, isolated-vm, security]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-012]]"
11
+ related:
12
+ - "[[adr-012]]"
13
+ supersedes:
14
+ created: 2026-05-02
15
+ updated: 2026-05-02
16
+ ---
17
+
18
+ # ADR-014: isolated-vm for P43 TypeScript Execution Sandbox
19
+
20
+ ## Context
21
+
22
+ P43 TypeScript Execution Layer replaces flat tool calling with a single `write_ts` tool backed by a sandboxed runtime. Agent writes TypeScript orchestrating tools; runtime executes the code.
23
+
24
+ Three sandbox options evaluated:
25
+
26
+ | | Node.js VM (`node:vm`) | Deno subprocess | `isolated-vm` |
27
+ |---|---|---|---|
28
+ | Isolation | Weak — same process, `process.exit()` kills harness | Strong — separate OS process | Strong — V8 isolate, separate heap |
29
+ | Performance | Fastest — no IPC | IPC overhead per tool call | Fast — in-process but isolated |
30
+ | Setup | Zero deps | Install Deno (new runtime dep) | Native addon (C++ compilation) |
31
+ | Node compat | Full | Partial (Deno APIs differ) | Full |
32
+ | Security | Low — `require('child_process')` escapes | Medium — `--allow-*` flags | High — no `require` unless granted |
33
+ | Maturity | Built-in | Young | Mature (7K+ stars, Fly.io, Netlify) |
34
+
35
+ Pi runs on Node.js. Adding Deno as a dependency for just the sandbox is heavy. `node:vm` is too weak — `process.exit()` kills the harness. PRD P38 (OS-level sandbox with bubblewrap/Seatbelt) is a separate phase and won't be ready when P43 ships.
36
+
37
+ ## Decision
38
+
39
+ **Use `isolated-vm` as the P43 sandbox runtime.**
40
+
41
+ - Separate V8 isolate with its own heap. Cannot crash the harness.
42
+ - No `require` access unless explicitly granted via the sandbox API.
43
+ - Tool functions (`read`, `edit`, `bash`, `find`, `grep`, `ck_search`) are exposed via explicit host function registration, not via Node.js module resolution.
44
+ - TypeScript agent code is compiled with ESBuild (`tsc` type-strips, ESBuild bundles) to plain JS before injection into the isolate.
45
+ - P38 bubblewrap/Seatbelt adds defense-in-depth later. `isolated-vm` is the inner sandbox; P38 is the outer sandbox.
46
+
47
+ ### Fallback
48
+
49
+ If `isolated-vm` native addon compilation fails in a given environment, fall back to `node:vm` + P38 bubblewrap as the outer enforcement layer. The fallback is less secure but functional.
50
+
51
+ ## Rationale
52
+
53
+ - **Security**: The agent writes arbitrary TypeScript. We cannot trust it. `isolated-vm` limits blast radius to the isolate.
54
+ - **Performance**: In-process. No IPC overhead. Tool calls dispatch via typed host functions.
55
+ - **Maturity**: 7K+ GitHub stars. Used by Fly.io for customer code execution and Netlify for edge functions. Battle-tested.
56
+ - **Composability**: P43 sandbox serves double duty as P15b pre-verification sandbox. Same isolate, different execution context.
57
+
58
+ ## Consequences
59
+
60
+ ### Positive
61
+ - Strong isolation without process overhead.
62
+ - Reuses same sandbox for P15b pre-verification.
63
+ - Explicit host function registration = auditable tool surface.
64
+
65
+ ### Negative
66
+ - Native addon requires C++ build toolchain (`node-gyp`). Adds `dev` setup step.
67
+ - Not available in all environments (e.g., some CI runners without C++ toolchain). Fallback needed.
68
+ - Learning curve — `isolated-vm` API differs from `node:vm`.
69
+
70
+ ### Mitigations
71
+ - Document `isolated-vm` build requirements in README.
72
+ - Implement `node:vm` fallback path from day one.
73
+ - P38 OS-level sandbox provides outer defense for fallback mode.
@@ -0,0 +1,81 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-015: Pipeline-First Build Order"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, build-order, mvp, incremental-delivery]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-012]]"
11
+ - "[[adr-014]]"
12
+ related:
13
+ - "[[adr-012]]"
14
+ - "[[adr-014]]"
15
+ supersedes: "PRD Section 16.1 (original 10-group build order)"
16
+ created: 2026-05-02
17
+ updated: 2026-05-02
18
+ ---
19
+
20
+ # ADR-015: Pipeline-First Build Order
21
+
22
+ ## Context
23
+
24
+ The original PRD specified 10 build groups with P43 (TypeScript Execution Layer) in Group 6 — after L1, L2, L3, L2.5, L4, and Post-Verification. Two competing strategies emerged:
25
+
26
+ - **Option A (P43-first)**: Foundation → L1/L2 → P43 → L3 survivors → L2.5 → L4. Front-load the biggest context reduction.
27
+ - **Option B (Pipeline-first)**: Foundation → L1/L2 → L2.5 → L4 → P43 + L3 survivors → Post-Verification. Validate quality gates before investing in execution layer.
28
+
29
+ Initial preference was Option A to avoid rebuilding L3 integration. Re-evaluated: L2.5 (drift monitor) and L4 (adversarial verification) do not depend on P43. They work with pi's existing flat tool calling. Validating the full L1→L2→L2.5→L4 pipeline before P43 means we prove the gate model works before committing to the execution layer.
30
+
31
+ ## Decision
32
+
33
+ **Pipeline-first (Option B). Validate gates before P43 investment.**
34
+
35
+ ### New Build Order
36
+
37
+ ```
38
+ Group 1: Foundation (F0) + L1 Spec Hardening + L2 Structured Planning
39
+ Group 2: L2.5 Runtime Drift Monitor (rule-based, works with pi's existing tool calling)
40
+ Group 3: L4 Adversarial Verification (critic agents, selective debate)
41
+ Group 4: P43 TypeScript Execution Layer + L3 survivors (P8/P9/P11/P13/P15)
42
+ Group 5: Post-Verification (P20-P24: lint gate, observability, memory, orchestration, wiki query)
43
+ Group 6: Cross-Cutting Capabilities (P25-P42: router, anxiety guard, error class, browser, hooks, compaction, permissions, etc.)
44
+ Group 7: Self-Evolving Infrastructure (P45-P48: auto-optimize, behaviour harness, auto-learn, sandbox infra)
45
+ ```
46
+
47
+ ### L3 Survivors Absorbed into P43
48
+
49
+ P8 (grounding checkpoints), P9 (AST truncation), P11 (inline validation), P12 (post-edit hooks), P13 (ck search), P15 (gitingest) implement inside P43's `isolated-vm` runtime, not on top of flat tools. P14 (Think-in-Code) is absorbed by P43 — P43 IS think-in-code. P10 (fuzzy edit matching) moves into P43's `edit()` host function. P15b (pre-verification sandbox) reuses the same `isolated-vm` isolate.
50
+
51
+ ### Incremental Delivery
52
+
53
+ 1. **After Group 1**: Harness blocks ambiguous tasks. Specs hardened. Plans structured.
54
+ 2. **After Group 2**: Agent stuckness detected and auto-corrected. Drift spirals prevented.
55
+ 3. **After Group 3**: Every change passes critic attack. Consensus debates filed.
56
+ 4. **After Group 4**: 3-4x context reduction on all tool workflows.
57
+ 5. **After Group 5**: Keep Rate tracked. Memory persists. Pipeline orchestrated.
58
+ 6. **After Group 6**: Full SOTA harness feature set.
59
+ 7. **After Group 7**: Harness self-evolves.
60
+
61
+ ## Rationale
62
+
63
+ - **Risk reduction**: P43 is the hardest single phase (CodeAct-level complexity). Validating the simpler gate pipeline (L1/L2/L2.5/L4) first proves the architecture before committing to the execution layer.
64
+ - **No throwaway work**: L2.5 and L4 work with any tool-calling mechanism. When P43 arrives, drift monitor and critics monitor P43 tool calls the same way they monitor flat tool calls — through `tool_result` events.
65
+ - **Faster to first working pipeline**: Groups 1-3 produce an end-to-end harness (harden → plan → monitor drift → verify) in ~7 weeks. Users get value before P43.
66
+ - **Parallelizable**: Group 4 (P43) can begin in parallel with Groups 2-3 if multiple developers/agents are available.
67
+
68
+ ## Consequences
69
+
70
+ ### Positive
71
+ - Gates proven before execution layer.
72
+ - Earlier user value.
73
+ - P43 benefits from lessons learned in Groups 2-3 about tool calling patterns.
74
+
75
+ ### Negative
76
+ - More total time to 3-4x context reduction (P43 at Group 4 vs Group 2).
77
+ - L3 survivors (P8/P9/P11) delayed until P43 ships — grounding checkpoints not available in Groups 1-3.
78
+
79
+ ### Mitigations
80
+ - If P43 proves simpler than expected, Group 4 can be fast-tracked.
81
+ - Drift monitor (Group 2) provides partial grounding — catches context loops even without formal checkpoints.
@@ -0,0 +1,91 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-016: @tintinweb/pi-subagents for L4 Critic and Sub-Agent Infrastructure"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, l4, subagents, critic, pi-subagents, tintinweb]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-011]]"
11
+ - "[[adr-012]]"
12
+ related:
13
+ - "[[adr-011]]"
14
+ - "[[adr-012]]"
15
+ supersedes:
16
+ created: 2026-05-02
17
+ updated: 2026-05-02
18
+ ---
19
+
20
+ # ADR-016: @tintinweb/pi-subagents for L4 Critic and Sub-Agent Infrastructure
21
+
22
+ ## Context
23
+
24
+ L4 Adversarial Verification requires a separate agent process (critic) with its own context window, system prompt, and tool set. ADR-011 specifies multi-agent debate with separate sessions. ADR-012 specifies extension-based integration without forking pi.
25
+
26
+ Two existing pi subagent packages were evaluated:
27
+
28
+ - `@tintinweb/pi-subagents` (v0.6.3, 26 versions) — full-featured: RPC, event bus, custom agents, worktree isolation, memory, graceful turn limits
29
+ - `@mjakl/pi-subagent` (v1.4.1) — minimal: depth guards, cycle prevention, spawn/fork modes. No RPC or event bus.
30
+
31
+ Pi's philosophy: "No sub-agents built in. Build your own with extensions, or install a package." Both packages follow this model — they are pi extensions that spawn sub-agents as separate pi processes.
32
+
33
+ ## Decision
34
+
35
+ **Use `@tintinweb/pi-subagents` as the sub-agent infrastructure. Define L4 critic as a custom agent type.**
36
+
37
+ ### Critic Agent Definition
38
+
39
+ `.pi/agents/critic.md`:
40
+
41
+ ```yaml
42
+ ---
43
+ description: Adversarial code reviewer — attacks code changes with hard-threshold pass/fail criteria
44
+ tools: read, grep, find, ls, bash
45
+ model: inherit
46
+ thinking: high
47
+ max_turns: 15
48
+ prompt_mode: replace
49
+ ---
50
+ ```
51
+
52
+ Critic runs with `prompt_mode: replace` — standalone system prompt, no parent context inheritance. This ensures true generator-evaluator separation (FP #8). The critic's system prompt contains hard-threshold pass/fail criteria extracted from the sprint contract.
53
+
54
+ ### Harness Integration
55
+
56
+ The harness extension uses the package's cross-extension RPC to spawn and manage critics:
57
+
58
+ 1. Harness writes critic prompt to `.pi/harness/critics/<spec-hash>.md` (spec, diff, criteria)
59
+ 2. Harness emits `subagents:rpc:spawn` with `type: "critic"`, `prompt: "@.pi/harness/critics/<hash>.md"`
60
+ 3. Critic runs in separate pi process (`prompt_mode: replace` = clean context)
61
+ 4. Harness listens for `subagents:completed` event to get verdict
62
+ 5. Harness files consensus to `wiki/consensus/` (ADR-011)
63
+
64
+ ### Multi-Round Debate
65
+
66
+ For selective multi-round debate (ADR-011), the harness can spawn multiple critic agents with different attack angles and use `steer_subagent` via RPC to inject counter-arguments.
67
+
68
+ ## Rationale
69
+
70
+ - **Event bus + RPC**: The cross-extension RPC (`subagents:rpc:spawn`, `subagents:rpc:stop`) is essential for programmatic harness integration. `@mjakl/pi-subagent` lacks this.
71
+ - **Separate pi processes**: Each sub-agent gets its own context window, model, and tool set. True adversarial separation.
72
+ - **Mature**: 26 versions, active maintenance, ~4.6K monthly downloads.
73
+ - **Custom agent types via `.md` files**: Clean, declarative. No code changes to define new agent roles.
74
+ - **Graceful turn limits**: Critic won't spin forever. Gets wrap-up warning before abort.
75
+ - **Compatibility**: Pi-native. Uses pi's session management, tool system, and extension API. No external LLM SDK needed.
76
+
77
+ ## Consequences
78
+
79
+ ### Positive
80
+ - L4 critic runs in isolated context. No generator-evaluator contamination.
81
+ - Extensible to other sub-agent roles (P25 specialization router, P30 browser agent).
82
+ - Event bus enables other extensions to react to sub-agent lifecycle.
83
+
84
+ ### Negative
85
+ - New dependency: `@tintinweb/pi-subagents`. Must be installed via `pi install npm:@tintinweb/pi-subagents`.
86
+ - Sub-agent token cost is additive (critic tokens + proposer tokens). Mitigated by selective debate routing (ADR-011).
87
+ - Relies on third-party package maintenance. If abandoned, fallback to direct pi SDK usage.
88
+
89
+ ### Mitigations
90
+ - Package is MIT licensed. Can be forked and maintained if needed.
91
+ - Fallback: direct `createAgentSession()` SDK usage if the package becomes unavailable.
@@ -0,0 +1,79 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-017: Harness Project Structure — src/harness/ Library + Extension Wiring"
4
+ status: superseded
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, project-structure, foundation, f0]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-012]]"
11
+ related:
12
+ - "[[adr-012]]"
13
+ - "[[skill-first-architecture]]"
14
+ supersedes: "PRD Section 17 (original lib/ file structure)"
15
+ superseded_by: "Pi built-in event bus (2026-05-04) — custom event bus no longer needed"
16
+ created: 2026-05-02
17
+ updated: 2026-05-04
18
+ ---
19
+
20
+ # ADR-017: Harness Project Structure
21
+
22
+ ## Context
23
+
24
+ The PRD specified a `lib/` directory with ~30 TypeScript files for harness logic. The project is a pi package with `.pi/extensions/` and `.pi/skills/`, not a standalone Node.js library. The integration model (ADR-012) is extension-based — harness logic wires into pi's `ExtensionAPI`.
25
+
26
+ > [!warning] Superseded (2026-05-04)
27
+ > Pi's latest version ships a built-in event bus, making the custom `events.ts` and `harness-event-bus.ts` wiring layer redundant. The code layer now consists of 3 files: `types.ts`, `config.ts`, `drift-monitor.ts`. Skills register directly with pi's native event bus. See [[skill-first-architecture]] for the updated architecture.
28
+
29
+ Three structures considered:
30
+ - ~~**Monolithic extension**: all logic in `.pi/extensions/harness-event-bus.ts`~~ (event bus removed)
31
+ - **Multiple extensions**: one per layer (`.pi/extensions/harness-l1.ts`, etc.)
32
+ - ~~**Library + wiring**: `src/harness/` for pure logic, `.pi/extensions/harness-event-bus.ts` for pi integration~~ (event bus removed)
33
+
34
+ ## Decision
35
+
36
+ **Use `src/harness/` as the harness library. Skills register with pi's built-in event bus directly (no custom event bus needed).**
37
+
38
+ ```
39
+ src/harness/
40
+ types.ts # All harness types (Spec, Plan, DriftEvent, CriticVerdict, Config)
41
+ config.ts # Load .pi/harness/config.json with code defaults
42
+ drift-monitor.ts # L2.5: LLM-first drift detection + rule pre-filter
43
+
44
+ .pi/extensions/
45
+ wiki-hooks.ts # Existing (unchanged)
46
+ dotenv-loader.ts # Existing (unchanged)
47
+
48
+ .pi/agents/
49
+ critic.md # L4 critic agent definition (ADR-016)
50
+ ```
51
+
52
+ ### Rules
53
+
54
+ - `src/harness/` modules are **pure TypeScript**. No pi imports (`ExtensionAPI`, etc.). Testable without pi runtime.
55
+ - Skills register event handlers directly with pi's built-in event bus — no custom wiring extension needed.
56
+ - Shared state between harness modules uses pi's native event bus and typed interfaces in `types.ts`.
57
+
58
+ ## Rationale
59
+
60
+ - **Separation of concerns**: Harness logic (spec hardening, drift detection, critic management) is independent of pi's API. Can be tested with plain vitest.
61
+ - **Preserves PRD modularity**: The 30-file structure condenses into `src/harness/` modules but maintains the same logical separation.
62
+ - **Single extension load**: pi loads one harness extension. No startup ordering issues.
63
+ - **Minimal pi surface**: Pi's built-in event bus handles all Event API calls. Skills register directly with pi's native events.
64
+
65
+ ## Consequences
66
+
67
+ ### Positive
68
+ - Testable without pi runtime.
69
+ - Clean dependency direction: `pi native event bus → skills → src/harness/ → nothing external`.
70
+ - Fits standard TypeScript project structure.
71
+ - Fewer files: 3 code files vs 4 (event bus removed).
72
+
73
+ ### Negative
74
+ - `src/harness/` modules must avoid importing from `@mariozechner/pi-coding-agent`. Type-only imports are OK.
75
+ - Skills must correctly register with pi's built-in event bus API (pi's responsibility, not ours).
76
+
77
+ ### Mitigations
78
+ - Pi extensions are TypeScript natively — pi runs them via `tsx`. No build step needed for development.
79
+ - Type-only imports from pi SDK are safe (import type { ExtensionAPI }).
@@ -0,0 +1,100 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-018: Single Harness Config File — .pi/harness/config.json"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, config, foundation, f0]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-017]]"
11
+ related:
12
+ - "[[adr-017]]"
13
+ supersedes: "PRD Section 17 (multiple config files)"
14
+ created: 2026-05-02
15
+ updated: 2026-05-02
16
+ ---
17
+
18
+ # ADR-018: Single Harness Config File
19
+
20
+ ## Context
21
+
22
+ The PRD specified multiple harness config files (`.pi/harness/drift-monitor.json`, `.pi/harness/ts-exec.json`, `.pi/harness/fallow-gate.json`, etc.). This fragments configuration and adds cognitive overhead. Pi already has `.pi/settings.json` for its own config.
23
+
24
+ Three approaches considered:
25
+ - **Separate files per subsystem** — original PRD approach
26
+ - **Extend `.pi/settings.json`** with a `harness` key — mixes harness config with pi config
27
+ - **Single `.pi/harness/config.json`** with all harness settings
28
+
29
+ ## Decision
30
+
31
+ **Use a single `.pi/harness/config.json` file. Project-local. No cascade. Defaults in code.**
32
+
33
+ ```json
34
+ {
35
+ "driftMonitor": {
36
+ "enabled": true,
37
+ "patterns": {
38
+ "repetitionLoops": { "threshold": 3 },
39
+ "failureSpirals": { "threshold": 3 },
40
+ "toolCycling": { "threshold": 5 },
41
+ "silenceBatching": { "threshold": 6 },
42
+ "rework": { "threshold": 2 },
43
+ "excessiveSearch": { "threshold": 8 }
44
+ },
45
+ "escalation": {
46
+ "softNudgeAfter": 2,
47
+ "strongNudgeAfter": 4,
48
+ "restartAfter": 6
49
+ }
50
+ },
51
+ "critics": {
52
+ "maxRounds": 3,
53
+ "maxTokensPerRound": 6000,
54
+ "model": "inherit"
55
+ },
56
+ "specs": {
57
+ "storagePath": ".pi/harness/specs",
58
+ "maxClarificationRounds": 3
59
+ },
60
+ "debate": {
61
+ "enabled": true,
62
+ "gatingMode": "imad",
63
+ "budget": {
64
+ "l1MaxTokens": 6000,
65
+ "l2MaxTokens": 10000,
66
+ "l4MaxTokens": 8000
67
+ }
68
+ },
69
+ "phase16": {
70
+ "biome": true,
71
+ "tsc": true,
72
+ "fallow": false
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Rules
78
+
79
+ - All keys have defaults in `src/harness/config.ts`. User config merges on top.
80
+ - File is project-local only (`.pi/harness/config.json`). No global cascade.
81
+ - User creates from `harness.example.json` or edits by hand.
82
+ - Missing file = all defaults. No error.
83
+
84
+ ## Rationale
85
+
86
+ - **Single source of truth**: One file to understand and edit. No hunting across multiple files.
87
+ - **Defaults in code**: Sensible defaults ship with the harness. Users only override what they need.
88
+ - **No cascade complexity**: Project-local only. Avoids implementing a separate cascade system when pi already has one for its settings.
89
+ - **Flat structure**: Top-level keys correspond to harness subsystems. Clear ownership.
90
+
91
+ ## Consequences
92
+
93
+ ### Positive
94
+ - Simple. One file to read, one file to write.
95
+ - Discoverable — single `harness.example.json` shows all options.
96
+ - Merge from code defaults means config file can be minimal.
97
+
98
+ ### Negative
99
+ - File grows as subsystems are added. Mitigated by flat top-level keys.
100
+ - No per-user global defaults. Users who want the same harness config across projects must copy the file.
@@ -0,0 +1,75 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-019: Tool-Based Q&A for L1 Spec Clarification"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, l1, spec-hardening, qa, tool]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-012]]"
11
+ - "[[adr-017]]"
12
+ related:
13
+ - "[[adr-012]]"
14
+ - "[[adr-017]]"
15
+ supersedes:
16
+ created: 2026-05-02
17
+ updated: 2026-05-02
18
+ ---
19
+
20
+ # ADR-019: Tool-Based Q&A for L1 Spec Clarification
21
+
22
+ ## Context
23
+
24
+ L1 spec hardening may detect unresolved ambiguities. When automatic resolution fails (clarification loop exhausts), the harness must surface structured questions to the user. The harness extension has no direct UI — it must communicate through the LLM or via registered tools.
25
+
26
+ Three approaches considered:
27
+ - **System prompt injection**: LLM rephrases and asks user. Fragile — harness must parse LLM's rephrasing.
28
+ - **Tool-based Q&A**: Harness registers a `harness_ask` tool. LLM calls it with structured questions. Tool handles user interaction via pi's TUI.
29
+ - **Pre-execution gate**: Block before LLM sees the task. Poor UX in pi's conversation model.
30
+
31
+ ## Decision
32
+
33
+ **Register a `harness_ask` tool that the LLM calls when L1 requires user clarification.**
34
+
35
+ ### Flow
36
+
37
+ 1. L1 ambiguity detector finds unresolved decisions in user request
38
+ 2. Harness injects system prompt: "Call `harness_ask` to clarify these ambiguities before proceeding"
39
+ 3. LLM calls `harness_ask({ questions: [{ id, question, options? }] })`
40
+ 4. Tool presents structured questions in pi's TUI (using `ctx.ui` API, same pattern as `wiki-hooks.ts` notifications)
41
+ 5. User answers via structured input (select from options, free text)
42
+ 6. Tool returns `{ answers: [{ id, answer }] }` to LLM
43
+ 7. Harness re-checks spec hardness. If resolved, proceed. If not, loop.
44
+
45
+ ### Fallback
46
+
47
+ If `harness_ask` tool registration fails or pi's TUI API is insufficient, fall back to system prompt injection: "ASK THE USER THESE EXACT QUESTIONS: ...". The LLM becomes the intermediary.
48
+
49
+ ### Constraints
50
+
51
+ - Maximum 3 clarification rounds per spec (configurable in `.pi/harness/config.json` → `specs.maxClarificationRounds`)
52
+ - Questions must be multiple-choice when possible (reduces user effort, prevents LLM reinterpretation)
53
+ - User can skip individual questions (allow partial resolution)
54
+
55
+ ## Rationale
56
+
57
+ - **Structured**: Harness formats questions. LLM doesn't re-interpret. Answers are typed.
58
+ - **Natural UX**: LLM mediates the conversation but harness controls the questions.
59
+ - **Proven pattern**: `@tintinweb/pi-subagents` uses pi's TUI for agent widgets and conversation viewers. Tool-based UI is established in pi's extension model.
60
+ - **Extensible**: Same `harness_ask` tool can be used by L2 (plan clarification) and L4 (critic follow-up questions).
61
+
62
+ ## Consequences
63
+
64
+ ### Positive
65
+ - Structured Q&A prevents LLM from rephrasing or skipping questions.
66
+ - Reusable across pipeline layers.
67
+ - User sees clear, intentional questions — not LLM-generated ambiguity.
68
+
69
+ ### Negative
70
+ - Requires pi TUI API support. If insufficient, falls back to system prompt injection (less reliable).
71
+ - Adds latency — tool call round-trip for every clarification round.
72
+
73
+ ### Mitigations
74
+ - Multiple questions batched in a single `harness_ask` call.
75
+ - `maxClarificationRounds: 3` prevents infinite loops.
@@ -0,0 +1,106 @@
1
+ ---
2
+ type: decision
3
+ title: "ADR-020: YAML Task DAG and Sprint Contract Format"
4
+ status: accepted
5
+ priority: 1
6
+ date: "2026-05-02"
7
+ tags: [adr, harness, l2, planning, yaml, dag, sprint-contract]
8
+ sources:
9
+ - "[[HARNESS-PRD]]"
10
+ - "[[adr-011]]"
11
+ related:
12
+ - "[[adr-011]]"
13
+ - "[[adr-015]]"
14
+ supersedes:
15
+ created: 2026-05-02
16
+ updated: 2026-05-02
17
+ ---
18
+
19
+ # ADR-020: YAML Task DAG and Sprint Contract Format
20
+
21
+ ## Context
22
+
23
+ L2 structured planning must produce a machine-readable task dependency graph with falsifiable "done" criteria (sprint contracts). The output must be:
24
+ - Parseable by L3 for grounding checkpoint tracking
25
+ - Version-controllable (diff-friendly in git)
26
+ - Human-readable enough for debugging
27
+
28
+ Three formats considered: JSON DAG, Markdown + YAML frontmatter, pure YAML.
29
+
30
+ ## Decision
31
+
32
+ **Use pure YAML. Store in `.pi/harness/plans/<spec-hash>.yaml`.**
33
+
34
+ ### Schema
35
+
36
+ ```yaml
37
+ spec: sha256:abc123...
38
+ generated: "2026-05-02T14:30:00Z"
39
+ model: anthropic/claude-sonnet-4-6
40
+ tasks:
41
+ - id: "add-auth-middleware"
42
+ description: "Add JWT authentication middleware to Express app"
43
+ dependsOn: ["add-user-model"]
44
+ doneCriteria:
45
+ - type: "tests_pass"
46
+ pattern: "auth/**"
47
+ - type: "lint_passes"
48
+ - type: "no_regression"
49
+ baseline: "main"
50
+ - type: "spec_requirement"
51
+ requirement: "JWT tokens must be validated on every /api/* route"
52
+ estimatedTokens: 5000
53
+ checkpoint: false
54
+ - id: "add-user-model"
55
+ description: "Create User model with password hashing"
56
+ dependsOn: []
57
+ doneCriteria:
58
+ - type: "tests_pass"
59
+ pattern: "models/user*"
60
+ - type: "lint_passes"
61
+ - type: "typescript_compiles"
62
+ estimatedTokens: 3000
63
+ checkpoint: true
64
+ ```
65
+
66
+ ### Done Criteria Types
67
+
68
+ | Type | Deterministic | Description |
69
+ |------|--------------|-------------|
70
+ | `tests_pass` | Deterministic | `vitest run --reporter json` pass for given pattern |
71
+ | `lint_passes` | Deterministic | `biome check` pass |
72
+ | `typescript_compiles` | Deterministic | `tsc --noEmit` pass |
73
+ | `no_regression` | Deterministic | Tests that passed on `baseline` still pass |
74
+ | `spec_requirement` | LLM-judged | Specific spec requirement satisfied (L4 critic verifies) |
75
+ | `no_new_dead_code` | Deterministic | `fallow audit --changed-since main` pass |
76
+
77
+ ### Checkpoints
78
+
79
+ Tasks with `checkpoint: true` are grounding checkpoints (P8). L3 pauses after completing a checkpoint task, runs all deterministic criteria, and compares spec-drift. Checkpoint tasks should be the smallest verifiable change (MVC).
80
+
81
+ ### Sprint Contract
82
+
83
+ The entire plan file IS the sprint contract. Sign-off = plan file committed to git. L3 reads it, L4 critic uses `doneCriteria` as attack surface.
84
+
85
+ ## Rationale
86
+
87
+ - **YAML over JSON**: Diff-friendly. No trailing comma issues. Comments supported (`#`). Human-readable without tooling.
88
+ - **YAML over Markdown+YAML**: Single format. No parsing two formats from one file.
89
+ - **Content-addressed**: File named by `spec-hash`. Immutable after generation. Regenerating plan = new hash = new file. Old plans preserved for audit.
90
+ - **Typed `doneCriteria`**: Deterministic criteria can be auto-verified. LLM-judged criteria route to L4 critic. Clear separation.
91
+
92
+ ## Consequences
93
+
94
+ ### Positive
95
+ - Single file per plan. Git-friendly diffs.
96
+ - L3 reads YAML directly for checkpoint tracking.
97
+ - Deterministic criteria auto-verified. LLM criteria deferred to L4.
98
+
99
+ ### Negative
100
+ - YAML parser needed in harness (already available via `js-yaml` dependency from P22b).
101
+ - `spec_requirement` type relies on L4 critic — if L4 not yet built (Group 1-2), these criteria are unchecked.
102
+ - No narrative planning doc. Task descriptions are the only human-readable content.
103
+
104
+ ### Mitigations
105
+ - `spec_requirement` criteria are skipped until L4 is active (Group 3). During Groups 1-2, only deterministic criteria are enforced.
106
+ - Task `description` fields should be specific enough to serve as the narrative.