ultimate-pi 0.1.7 → 0.2.2

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 (524) hide show
  1. package/.agents/skills/graphify/.graphify_version +1 -0
  2. package/.agents/skills/graphify/SKILL.md +1204 -0
  3. package/.agents/skills/wiki-autoresearch/SKILL.md +225 -97
  4. package/.agents/skills/wiki-autoresearch/references/program.md +28 -62
  5. package/.agents/skills/wiki-autoresearch/references/quality-sites.md +32 -0
  6. package/.env.example +5 -1
  7. package/.gitattributes +1 -0
  8. package/.github/workflows/publish-github-packages.yml +1 -1
  9. package/.pi/SYSTEM.md +72 -18
  10. package/.pi/agents/harness/adversary.md +32 -0
  11. package/.pi/agents/harness/evaluator.md +32 -0
  12. package/.pi/agents/harness/executor.md +34 -0
  13. package/.pi/agents/harness/meta-optimizer.md +33 -0
  14. package/.pi/agents/harness/planner.md +33 -0
  15. package/.pi/agents/harness/tie-breaker.md +35 -0
  16. package/.pi/agents/harness/trace-librarian.md +32 -0
  17. package/.pi/extensions/banner.png +0 -0
  18. package/.pi/extensions/budget-guard.ts +265 -0
  19. package/.pi/extensions/custom-footer.ts +194 -22
  20. package/.pi/extensions/custom-header.ts +47 -9
  21. package/.pi/extensions/debate-orchestrator.ts +479 -0
  22. package/.pi/extensions/harness-live-widget.ts +438 -0
  23. package/.pi/extensions/policy-gate.ts +349 -0
  24. package/.pi/extensions/review-integrity.ts +198 -0
  25. package/.pi/extensions/test-diff-integrity.ts +240 -0
  26. package/.pi/extensions/trace-recorder.ts +315 -0
  27. package/.pi/harness/README.md +23 -0
  28. package/.pi/harness/router/README.md +35 -0
  29. package/.pi/harness/router/apply-router-proposal.mjs +153 -0
  30. package/.pi/harness/router/propose-router-tuning.mjs +149 -0
  31. package/.pi/harness/specs/README.md +37 -0
  32. package/.pi/harness/specs/adversary-report.schema.json +53 -0
  33. package/.pi/harness/specs/budget-exhausted-event.schema.json +93 -0
  34. package/.pi/harness/specs/consensus-packet.schema.json +175 -0
  35. package/.pi/harness/specs/eval-verdict.schema.json +59 -0
  36. package/.pi/harness/specs/incident-record.schema.json +84 -0
  37. package/.pi/harness/specs/plan-packet.schema.json +90 -0
  38. package/.pi/harness/specs/round-result.schema.json +126 -0
  39. package/.pi/harness/specs/router-tuning-proposal.schema.json +114 -0
  40. package/.pi/harness/specs/run-trace.schema.json +107 -0
  41. package/.pi/lib/harness-ui-state.ts +311 -0
  42. package/.pi/mcp.json +4 -0
  43. package/.pi/model-router.json +93 -93
  44. package/.pi/prompts/graphify.md +23 -0
  45. package/.pi/prompts/harness-abort.md +41 -0
  46. package/.pi/prompts/harness-auto.md +83 -0
  47. package/.pi/prompts/harness-critic.md +52 -0
  48. package/.pi/prompts/harness-eval.md +51 -0
  49. package/.pi/prompts/harness-incident.md +51 -0
  50. package/.pi/prompts/harness-plan.md +64 -0
  51. package/.pi/prompts/harness-review.md +52 -0
  52. package/.pi/prompts/harness-router-tune.md +74 -0
  53. package/.pi/prompts/harness-run.md +59 -0
  54. package/.pi/prompts/harness-setup.md +316 -216
  55. package/.pi/prompts/harness-trace.md +51 -0
  56. package/.pi/prompts/wiki-autoresearch.md +9 -7
  57. package/.pi/prompts/wiki-save.md +20 -0
  58. package/.pi/skills/agent-router/SKILL.md +2 -4
  59. package/.pi/skills/ast-grep/SKILL.md +354 -0
  60. package/.pi/sounds/project-sounds.json +18 -24
  61. package/AGENTS.md +30 -0
  62. package/CHANGELOG.md +89 -0
  63. package/CONTRIBUTING.md +51 -1
  64. package/README.md +264 -20
  65. package/biome.json +8 -2
  66. package/lefthook.yml +3 -2
  67. package/node_modules/@sting8k/pi-vcc/README.md +200 -0
  68. package/node_modules/@sting8k/pi-vcc/index.ts +14 -0
  69. package/node_modules/@sting8k/pi-vcc/package.json +26 -0
  70. package/node_modules/@sting8k/pi-vcc/scripts/audit-sessions.ts +88 -0
  71. package/node_modules/@sting8k/pi-vcc/scripts/benchmark-real-sessions.ts +25 -0
  72. package/node_modules/@sting8k/pi-vcc/scripts/compare-before-after.ts +36 -0
  73. package/node_modules/@sting8k/pi-vcc/scripts/dump-branch-output.ts +20 -0
  74. package/node_modules/@sting8k/pi-vcc/src/commands/pi-vcc.ts +36 -0
  75. package/node_modules/@sting8k/pi-vcc/src/commands/vcc-recall.ts +65 -0
  76. package/node_modules/@sting8k/pi-vcc/src/core/brief.ts +381 -0
  77. package/node_modules/@sting8k/pi-vcc/src/core/build-sections.ts +79 -0
  78. package/node_modules/@sting8k/pi-vcc/src/core/content.ts +60 -0
  79. package/node_modules/@sting8k/pi-vcc/src/core/filter-noise.ts +42 -0
  80. package/node_modules/@sting8k/pi-vcc/src/core/format-recall.ts +27 -0
  81. package/node_modules/@sting8k/pi-vcc/src/core/format.ts +49 -0
  82. package/node_modules/@sting8k/pi-vcc/src/core/lineage.ts +26 -0
  83. package/node_modules/@sting8k/pi-vcc/src/core/load-messages.ts +41 -0
  84. package/node_modules/@sting8k/pi-vcc/src/core/normalize.ts +66 -0
  85. package/node_modules/@sting8k/pi-vcc/src/core/recall-scope.ts +14 -0
  86. package/node_modules/@sting8k/pi-vcc/src/core/render-entries.ts +55 -0
  87. package/node_modules/@sting8k/pi-vcc/src/core/report.ts +237 -0
  88. package/node_modules/@sting8k/pi-vcc/src/core/sanitize.ts +5 -0
  89. package/node_modules/@sting8k/pi-vcc/src/core/search-entries.ts +221 -0
  90. package/node_modules/@sting8k/pi-vcc/src/core/settings.ts +77 -0
  91. package/node_modules/@sting8k/pi-vcc/src/core/skill-collapse.ts +35 -0
  92. package/node_modules/@sting8k/pi-vcc/src/core/summarize.ts +157 -0
  93. package/node_modules/@sting8k/pi-vcc/src/core/tool-args.ts +14 -0
  94. package/node_modules/@sting8k/pi-vcc/src/details.ts +7 -0
  95. package/node_modules/@sting8k/pi-vcc/src/extract/commits.ts +69 -0
  96. package/node_modules/@sting8k/pi-vcc/src/extract/files.ts +80 -0
  97. package/node_modules/@sting8k/pi-vcc/src/extract/goals.ts +79 -0
  98. package/node_modules/@sting8k/pi-vcc/src/extract/preferences.ts +55 -0
  99. package/node_modules/@sting8k/pi-vcc/src/hooks/before-compact.ts +322 -0
  100. package/node_modules/@sting8k/pi-vcc/src/sections.ts +12 -0
  101. package/node_modules/@sting8k/pi-vcc/src/tools/recall.ts +109 -0
  102. package/node_modules/@sting8k/pi-vcc/src/types.ts +14 -0
  103. package/node_modules/@sting8k/pi-vcc/tests/before-compact-hook.test.ts +181 -0
  104. package/node_modules/@sting8k/pi-vcc/tests/before-compact.test.ts +140 -0
  105. package/node_modules/@sting8k/pi-vcc/tests/brief.test.ts +206 -0
  106. package/node_modules/@sting8k/pi-vcc/tests/build-sections.test.ts +59 -0
  107. package/node_modules/@sting8k/pi-vcc/tests/compile.test.ts +80 -0
  108. package/node_modules/@sting8k/pi-vcc/tests/content.test.ts +31 -0
  109. package/node_modules/@sting8k/pi-vcc/tests/extract-goals.test.ts +86 -0
  110. package/node_modules/@sting8k/pi-vcc/tests/extract-preferences.test.ts +30 -0
  111. package/node_modules/@sting8k/pi-vcc/tests/filter-noise.test.ts +61 -0
  112. package/node_modules/@sting8k/pi-vcc/tests/fixtures.ts +61 -0
  113. package/node_modules/@sting8k/pi-vcc/tests/format-recall.test.ts +30 -0
  114. package/node_modules/@sting8k/pi-vcc/tests/format.test.ts +62 -0
  115. package/node_modules/@sting8k/pi-vcc/tests/lineage.test.ts +33 -0
  116. package/node_modules/@sting8k/pi-vcc/tests/load-messages.test.ts +51 -0
  117. package/node_modules/@sting8k/pi-vcc/tests/normalize.test.ts +97 -0
  118. package/node_modules/@sting8k/pi-vcc/tests/real-sessions.test.ts +38 -0
  119. package/node_modules/@sting8k/pi-vcc/tests/recall-expand.test.ts +15 -0
  120. package/node_modules/@sting8k/pi-vcc/tests/recall-scope.test.ts +32 -0
  121. package/node_modules/@sting8k/pi-vcc/tests/recall-tool-scope.test.ts +67 -0
  122. package/node_modules/@sting8k/pi-vcc/tests/render-entries.test.ts +62 -0
  123. package/node_modules/@sting8k/pi-vcc/tests/report.test.ts +44 -0
  124. package/node_modules/@sting8k/pi-vcc/tests/sanitize.test.ts +24 -0
  125. package/node_modules/@sting8k/pi-vcc/tests/search-entries.test.ts +144 -0
  126. package/node_modules/@sting8k/pi-vcc/tests/support/load-session.ts +23 -0
  127. package/node_modules/@sting8k/pi-vcc/tests/support/real-sessions.ts +51 -0
  128. package/package.json +15 -4
  129. package/scripts/__pycache__/merge_graphify_corpora.cpython-314.pyc +0 -0
  130. package/scripts/index_youtube_urls.py +376 -0
  131. package/scripts/merge_graphify_corpora.py +398 -0
  132. package/scripts/regen_graphify_html.py +46 -0
  133. package/.agents/skills/defuddle/SKILL.md +0 -90
  134. package/.agents/skills/wiki/SKILL.md +0 -215
  135. package/.agents/skills/wiki/references/css-snippets.md +0 -122
  136. package/.agents/skills/wiki/references/frontmatter.md +0 -107
  137. package/.agents/skills/wiki/references/git-setup.md +0 -58
  138. package/.agents/skills/wiki/references/mcp-setup.md +0 -149
  139. package/.agents/skills/wiki/references/modes.md +0 -259
  140. package/.agents/skills/wiki/references/plugins.md +0 -96
  141. package/.agents/skills/wiki/references/rest-api.md +0 -124
  142. package/.agents/skills/wiki-fold/SKILL.md +0 -204
  143. package/.agents/skills/wiki-fold/references/fold-template.md +0 -133
  144. package/.agents/skills/wiki-ingest/SKILL.md +0 -288
  145. package/.agents/skills/wiki-lint/SKILL.md +0 -183
  146. package/.agents/skills/wiki-query/SKILL.md +0 -176
  147. package/.pi/agents/rethink.md +0 -140
  148. package/.pi/agents/wiki-ingest.md +0 -67
  149. package/.pi/agents/wiki-lint.md +0 -75
  150. package/.pi/internal/cursor-sdk-transcript-parser.ts +0 -59
  151. package/.pi/prompts/save.md +0 -16
  152. package/.pi/prompts/wiki.md +0 -23
  153. package/.pi/providers/cursor-sdk-provider.test.mjs +0 -476
  154. package/.pi/providers/cursor-sdk-provider.ts +0 -1085
  155. package/vault/AGENTS.md +0 -37
  156. package/vault/wiki/_templates/comparison.md +0 -39
  157. package/vault/wiki/_templates/concept.md +0 -40
  158. package/vault/wiki/_templates/decision.md +0 -21
  159. package/vault/wiki/_templates/entity.md +0 -32
  160. package/vault/wiki/_templates/flow.md +0 -14
  161. package/vault/wiki/_templates/module.md +0 -18
  162. package/vault/wiki/_templates/question.md +0 -31
  163. package/vault/wiki/_templates/source.md +0 -39
  164. package/vault/wiki/concepts/AST-Aware Code Chunking.md +0 -44
  165. package/vault/wiki/concepts/Build-Time Prompt Compilation.md +0 -107
  166. package/vault/wiki/concepts/Context Engine (AI Coding).md +0 -47
  167. package/vault/wiki/concepts/Context-Aware System Reminders.md +0 -61
  168. package/vault/wiki/concepts/Contextualized Text Embedding.md +0 -42
  169. package/vault/wiki/concepts/Contractor vs Employee AI Model.md +0 -55
  170. package/vault/wiki/concepts/Dual-Model Agent Architecture.md +0 -65
  171. package/vault/wiki/concepts/Late Chunking vs Early Chunking.md +0 -43
  172. package/vault/wiki/concepts/Majority Vote Ensembling.md +0 -68
  173. package/vault/wiki/concepts/Meta-Harness.md +0 -16
  174. package/vault/wiki/concepts/Multi-Agent AI Coding Architecture.md +0 -75
  175. package/vault/wiki/concepts/Prompt Enhancement.md +0 -90
  176. package/vault/wiki/concepts/Prompt Renderer.md +0 -89
  177. package/vault/wiki/concepts/Semantic Codebase Indexing.md +0 -67
  178. package/vault/wiki/concepts/additive-config-hierarchy.md +0 -16
  179. package/vault/wiki/concepts/agent-artifacts-verifiable-deliverables.md +0 -71
  180. package/vault/wiki/concepts/agent-browser-browser-automation.md +0 -99
  181. package/vault/wiki/concepts/agent-codebase-interface.md +0 -43
  182. package/vault/wiki/concepts/agent-harness-architecture.md +0 -67
  183. package/vault/wiki/concepts/agent-loop-detection-patterns.md +0 -133
  184. package/vault/wiki/concepts/agent-search-enforcement.md +0 -126
  185. package/vault/wiki/concepts/agent-skills-ecosystem.md +0 -74
  186. package/vault/wiki/concepts/agent-skills-pattern.md +0 -68
  187. package/vault/wiki/concepts/agentic-harness-context-enforcement.md +0 -91
  188. package/vault/wiki/concepts/agentic-harness.md +0 -34
  189. package/vault/wiki/concepts/agentic-orchestration-pipeline.md +0 -56
  190. package/vault/wiki/concepts/agentic-search-no-embeddings.md +0 -18
  191. package/vault/wiki/concepts/anthropic-context-engineering.md +0 -13
  192. package/vault/wiki/concepts/antigravity-agent-first-architecture.md +0 -61
  193. package/vault/wiki/concepts/ast-compression.md +0 -19
  194. package/vault/wiki/concepts/ast-truncation.md +0 -66
  195. package/vault/wiki/concepts/barrel-files.md +0 -37
  196. package/vault/wiki/concepts/browser-harness-agent.md +0 -41
  197. package/vault/wiki/concepts/browser-subagent-visual-verification.md +0 -82
  198. package/vault/wiki/concepts/codebase-intelligence-ecosystem-comparison.md +0 -192
  199. package/vault/wiki/concepts/codebase-intelligence-harness-integration.md +0 -161
  200. package/vault/wiki/concepts/codebase-to-context-ingestion.md +0 -46
  201. package/vault/wiki/concepts/codex-harness-innovations.md +0 -147
  202. package/vault/wiki/concepts/consensus-debate-flow.md +0 -17
  203. package/vault/wiki/concepts/consensus-debate.md +0 -206
  204. package/vault/wiki/concepts/content-addressed-spec-identity.md +0 -166
  205. package/vault/wiki/concepts/context-anxiety.md +0 -57
  206. package/vault/wiki/concepts/context-compression-techniques.md +0 -19
  207. package/vault/wiki/concepts/context-continuity.md +0 -22
  208. package/vault/wiki/concepts/context-drift-in-agents.md +0 -106
  209. package/vault/wiki/concepts/context-engineering.md +0 -62
  210. package/vault/wiki/concepts/context-folding.md +0 -67
  211. package/vault/wiki/concepts/context-mode.md +0 -38
  212. package/vault/wiki/concepts/cursor-harness-innovations.md +0 -107
  213. package/vault/wiki/concepts/deterministic-session-compaction.md +0 -79
  214. package/vault/wiki/concepts/drift-detection-unified.md +0 -296
  215. package/vault/wiki/concepts/execution-feedback-loop.md +0 -46
  216. package/vault/wiki/concepts/feedforward-feedback-harness.md +0 -60
  217. package/vault/wiki/concepts/five-root-cause-metrics-sentrux.md +0 -40
  218. package/vault/wiki/concepts/fork-safe-spec-storage.md +0 -89
  219. package/vault/wiki/concepts/fts5-sandbox.md +0 -19
  220. package/vault/wiki/concepts/fuzzy-edit-matching.md +0 -71
  221. package/vault/wiki/concepts/gemini-cli-architecture.md +0 -104
  222. package/vault/wiki/concepts/generator-evaluator-architecture.md +0 -64
  223. package/vault/wiki/concepts/guardian-agent-pattern.md +0 -67
  224. package/vault/wiki/concepts/harness-configuration-layers.md +0 -89
  225. package/vault/wiki/concepts/harness-control-frameworks.md +0 -155
  226. package/vault/wiki/concepts/harness-engineering-first-principles.md +0 -90
  227. package/vault/wiki/concepts/harness-h-formalism.md +0 -53
  228. package/vault/wiki/concepts/hybrid-code-search.md +0 -61
  229. package/vault/wiki/concepts/inline-post-edit-validation.md +0 -112
  230. package/vault/wiki/concepts/legendary-engineering-patterns-harness.md +0 -110
  231. package/vault/wiki/concepts/lifecycle-hooks.md +0 -94
  232. package/vault/wiki/concepts/mcp-tool-routing.md +0 -102
  233. package/vault/wiki/concepts/memory-system-of-record-vs-ephemeral-cache.md +0 -47
  234. package/vault/wiki/concepts/meta-agent-context-pruning.md +0 -151
  235. package/vault/wiki/concepts/model-adaptive-harness.md +0 -122
  236. package/vault/wiki/concepts/model-routing-agents.md +0 -101
  237. package/vault/wiki/concepts/monorepo-architecture.md +0 -45
  238. package/vault/wiki/concepts/multi-agent-specialization.md +0 -61
  239. package/vault/wiki/concepts/permission-subsystem.md +0 -16
  240. package/vault/wiki/concepts/pi-messenger-analysis.md +0 -243
  241. package/vault/wiki/concepts/pi-vscode-extension-landscape.md +0 -37
  242. package/vault/wiki/concepts/policy-engine-pattern.md +0 -78
  243. package/vault/wiki/concepts/progressive-disclosure-agents.md +0 -53
  244. package/vault/wiki/concepts/progressive-skill-disclosure.md +0 -17
  245. package/vault/wiki/concepts/provider-native-prompting.md +0 -203
  246. package/vault/wiki/concepts/quality-signal-sentrux.md +0 -37
  247. package/vault/wiki/concepts/repo-map-ranking.md +0 -42
  248. package/vault/wiki/concepts/result-monad-error-handling.md +0 -47
  249. package/vault/wiki/concepts/safety-defense-in-depth.md +0 -83
  250. package/vault/wiki/concepts/sandbox-os-enforcement.md +0 -18
  251. package/vault/wiki/concepts/selective-debate-routing.md +0 -70
  252. package/vault/wiki/concepts/self-evolving-harness.md +0 -60
  253. package/vault/wiki/concepts/sentrux-mcp-integration.md +0 -36
  254. package/vault/wiki/concepts/sentrux-rules-engine.md +0 -49
  255. package/vault/wiki/concepts/shell-pattern-compression.md +0 -24
  256. package/vault/wiki/concepts/skill-first-architecture.md +0 -166
  257. package/vault/wiki/concepts/structured-compaction.md +0 -78
  258. package/vault/wiki/concepts/subagent-orchestration.md +0 -17
  259. package/vault/wiki/concepts/subagent-worktree-isolation.md +0 -68
  260. package/vault/wiki/concepts/superpowers-methodology.md +0 -78
  261. package/vault/wiki/concepts/think-in-code.md +0 -73
  262. package/vault/wiki/concepts/ts-execution-layer.md +0 -100
  263. package/vault/wiki/concepts/typescript-strict-mode.md +0 -37
  264. package/vault/wiki/concepts/vcc-conversation-compaction-for-pi.md +0 -53
  265. package/vault/wiki/concepts/verification-drift-detection.md +0 -19
  266. package/vault/wiki/consensus/consensus-records.md +0 -58
  267. package/vault/wiki/decisions/2026-04-30-pi-lean-ctx-native.md +0 -122
  268. package/vault/wiki/decisions/2026-05-07-replace-lean-ctx-with-context-mode.md +0 -59
  269. package/vault/wiki/decisions/adr-008.md +0 -40
  270. package/vault/wiki/decisions/adr-009.md +0 -46
  271. package/vault/wiki/decisions/adr-010.md +0 -55
  272. package/vault/wiki/decisions/adr-011.md +0 -165
  273. package/vault/wiki/decisions/adr-012.md +0 -102
  274. package/vault/wiki/decisions/adr-013.md +0 -59
  275. package/vault/wiki/decisions/adr-014.md +0 -73
  276. package/vault/wiki/decisions/adr-015.md +0 -81
  277. package/vault/wiki/decisions/adr-016.md +0 -91
  278. package/vault/wiki/decisions/adr-017.md +0 -79
  279. package/vault/wiki/decisions/adr-018.md +0 -100
  280. package/vault/wiki/decisions/adr-019.md +0 -75
  281. package/vault/wiki/decisions/adr-020.md +0 -106
  282. package/vault/wiki/decisions/adr-021.md +0 -86
  283. package/vault/wiki/decisions/adr-022.md +0 -113
  284. package/vault/wiki/decisions/adr-023.md +0 -113
  285. package/vault/wiki/decisions/adr-024.md +0 -73
  286. package/vault/wiki/decisions/adr-025.md +0 -130
  287. package/vault/wiki/decisions/adr-026.md +0 -56
  288. package/vault/wiki/decisions/adr-027.md +0 -94
  289. package/vault/wiki/decisions/colocate-wiki.md +0 -34
  290. package/vault/wiki/entities/Anders Hejlsberg.md +0 -29
  291. package/vault/wiki/entities/Anthropic.md +0 -17
  292. package/vault/wiki/entities/Augment Code.md +0 -49
  293. package/vault/wiki/entities/Bjarne Stroustrup.md +0 -26
  294. package/vault/wiki/entities/Bolt.new (StackBlitz).md +0 -39
  295. package/vault/wiki/entities/Boris Cherny.md +0 -11
  296. package/vault/wiki/entities/Claude Code.md +0 -19
  297. package/vault/wiki/entities/Dennis Ritchie.md +0 -26
  298. package/vault/wiki/entities/Emergent Labs.md +0 -32
  299. package/vault/wiki/entities/Google Cloud.md +0 -16
  300. package/vault/wiki/entities/Guido van Rossum.md +0 -28
  301. package/vault/wiki/entities/Ken Thompson.md +0 -28
  302. package/vault/wiki/entities/Lee et al.md +0 -16
  303. package/vault/wiki/entities/Linus Torvalds.md +0 -28
  304. package/vault/wiki/entities/Lovable (company).md +0 -40
  305. package/vault/wiki/entities/Martin Fowler.md +0 -16
  306. package/vault/wiki/entities/Meng et al.md +0 -16
  307. package/vault/wiki/entities/OpenAI.md +0 -16
  308. package/vault/wiki/entities/Rocket.new.md +0 -38
  309. package/vault/wiki/entities/VILA-Lab.md +0 -15
  310. package/vault/wiki/entities/autodev-codebase.md +0 -18
  311. package/vault/wiki/entities/ck-tool.md +0 -59
  312. package/vault/wiki/entities/codesearch.md +0 -18
  313. package/vault/wiki/entities/disler-indydevdan.md +0 -33
  314. package/vault/wiki/entities/gsd-get-shit-done.md +0 -56
  315. package/vault/wiki/entities/javascript-runtimes.md +0 -48
  316. package/vault/wiki/entities/jesse-vincent.md +0 -38
  317. package/vault/wiki/entities/lean-ctx.md +0 -32
  318. package/vault/wiki/entities/opendev.md +0 -41
  319. package/vault/wiki/entities/ops-codegraph-tool.md +0 -18
  320. package/vault/wiki/entities/pi-coding-agent.md +0 -53
  321. package/vault/wiki/entities/sentrux.md +0 -54
  322. package/vault/wiki/entities/vgrep-tool.md +0 -57
  323. package/vault/wiki/entities/vitest.md +0 -41
  324. package/vault/wiki/flows/harness-wiki-pipeline.md +0 -204
  325. package/vault/wiki/hot.md +0 -932
  326. package/vault/wiki/index.md +0 -437
  327. package/vault/wiki/log.md +0 -422
  328. package/vault/wiki/meta/dashboard.md +0 -30
  329. package/vault/wiki/meta/lint-report-2026-04-30.md +0 -86
  330. package/vault/wiki/meta/lint-report-2026-05-02.md +0 -251
  331. package/vault/wiki/meta/overview.canvas +0 -43
  332. package/vault/wiki/modules/adversarial-verification.md +0 -57
  333. package/vault/wiki/modules/automated-observability.md +0 -54
  334. package/vault/wiki/modules/bench.md +0 -20
  335. package/vault/wiki/modules/extensions.md +0 -23
  336. package/vault/wiki/modules/grounding-checkpoints.md +0 -62
  337. package/vault/wiki/modules/harness-implementation-plan.md +0 -345
  338. package/vault/wiki/modules/harness-wiki-skill-mapping.md +0 -135
  339. package/vault/wiki/modules/harness.md +0 -86
  340. package/vault/wiki/modules/persistent-memory.md +0 -85
  341. package/vault/wiki/modules/schema-orchestration.md +0 -68
  342. package/vault/wiki/modules/skills.md +0 -27
  343. package/vault/wiki/modules/spec-hardening.md +0 -58
  344. package/vault/wiki/modules/structured-planning.md +0 -53
  345. package/vault/wiki/modules/think-in-code-enforcement.md +0 -153
  346. package/vault/wiki/modules/wiki-query-interface.md +0 -64
  347. package/vault/wiki/overview.md +0 -51
  348. package/vault/wiki/questions/Research-pi-vs-claude-code-agentic-orchestration-pipeline.md +0 -87
  349. package/vault/wiki/questions/Research-sentrux-dev.md +0 -123
  350. package/vault/wiki/questions/Research-superpowers-skill-for-agentic-coding-agents.md +0 -164
  351. package/vault/wiki/questions/Research: Augment Code Context Engine.md +0 -244
  352. package/vault/wiki/questions/Research: Automating Software Engineering - Lovable, Bolt, Emergent, Rocket.md +0 -112
  353. package/vault/wiki/questions/Research: Claude Code State-of-the-Art Harness Improvements.md +0 -209
  354. package/vault/wiki/questions/Research: Codex State-of-the-Art Harness Improvements.md +0 -99
  355. package/vault/wiki/questions/Research: Engineering Workflows of Legendary Programmers and AI Harness Mapping.md +0 -107
  356. package/vault/wiki/questions/Research: Fallow Codebase Intelligence Harness Integration.md +0 -72
  357. package/vault/wiki/questions/Research: Gemini CLI SOTA Harness Integration.md +0 -166
  358. package/vault/wiki/questions/Research: GitHub Issues as Harness Spec Storage.md +0 -188
  359. package/vault/wiki/questions/Research: Google Antigravity Harness Integration.md +0 -120
  360. package/vault/wiki/questions/Research: Meta-Agent Context Drift Detection.md +0 -236
  361. package/vault/wiki/questions/Research: Model-Adaptive Agent Harness Design.md +0 -95
  362. package/vault/wiki/questions/Research: Model-Specific Prompting Guides.md +0 -165
  363. package/vault/wiki/questions/Research: Prompt Renderer for Multi-Model Agent Harness.md +0 -216
  364. package/vault/wiki/questions/Research: Skill-First Harness Architecture.md +0 -91
  365. package/vault/wiki/questions/Research: TypeScript Best Practices and Codebase Structure.md +0 -88
  366. package/vault/wiki/questions/Research: TypeScript Execution Layer for Agent Tool Calling.md +0 -81
  367. package/vault/wiki/questions/Research: claude-mem over Obsidian for Harness Layer.md +0 -71
  368. 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 +0 -80
  369. package/vault/wiki/questions/Research: context-mode vs lean-ctx.md +0 -72
  370. package/vault/wiki/questions/Research: cursor.sh Harness Innovations.md +0 -92
  371. package/vault/wiki/questions/Research: executor.sh Harness Integration.md +0 -170
  372. package/vault/wiki/questions/Research: how GSD fits into our coding harness setup.md +0 -97
  373. 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 +0 -80
  374. package/vault/wiki/questions/Research: pi-vcc.md +0 -113
  375. package/vault/wiki/questions/Research: semantic code search tools.md +0 -69
  376. package/vault/wiki/questions/Research: vcc extension for pi coding agent.md +0 -73
  377. package/vault/wiki/questions/how-to-enable-semantic-code-search-now.md +0 -111
  378. package/vault/wiki/questions/mvp-implementation-blueprint.md +0 -552
  379. package/vault/wiki/questions/research-agent-first-codebase-exploration.md +0 -199
  380. package/vault/wiki/questions/research-agentic-coding-harness-latest-papers.md +0 -142
  381. package/vault/wiki/questions/research-gitingest-gitreverse-integration.md +0 -100
  382. package/vault/wiki/questions/research-wozcode-token-reduction.md +0 -67
  383. package/vault/wiki/questions/resolved-context-pruning-inplace-vs-restart.md +0 -95
  384. package/vault/wiki/questions/resolved-context-window-economics.md +0 -167
  385. package/vault/wiki/questions/resolved-imad-debate-gating-transfer.md +0 -126
  386. package/vault/wiki/questions/resolved-mcp-tool-preference.md +0 -112
  387. package/vault/wiki/questions/resolved-small-model-meta-agents.md +0 -107
  388. package/vault/wiki/questions/resolved-treesitter-dynamic-languages.md +0 -95
  389. package/vault/wiki/sources/Auggie Context MCP Server.md +0 -63
  390. package/vault/wiki/sources/Augment Code Codacy AI Giants.md +0 -61
  391. package/vault/wiki/sources/Augment Code MCP SiliconAngle.md +0 -49
  392. package/vault/wiki/sources/Augment Code WorkOS ERC 2025.md +0 -55
  393. package/vault/wiki/sources/Augment Context Engine Official.md +0 -71
  394. package/vault/wiki/sources/Augment SWE-bench Agent GitHub.md +0 -74
  395. package/vault/wiki/sources/Augment SWE-bench Pro Blog.md +0 -58
  396. package/vault/wiki/sources/Source: AgentBus Jinja2 Prompt Pipelines.md +0 -75
  397. package/vault/wiki/sources/Source: Arxiv /342/200/224 Don't Break the Cache.md" +0 -85
  398. package/vault/wiki/sources/Source: Augment - Harness Engineering for AI Coding Agents.md +0 -58
  399. package/vault/wiki/sources/Source: Blake Crosley Agent Architecture Guide.md +0 -100
  400. package/vault/wiki/sources/Source: Bolt.new Architecture & Case Study.md +0 -75
  401. package/vault/wiki/sources/Source: Build-Time Prompt Compilation Architecture.md +0 -107
  402. package/vault/wiki/sources/Source: Claude API Agent Skills Overview.md +0 -70
  403. package/vault/wiki/sources/Source: Gemini CLI Changelogs.md +0 -88
  404. package/vault/wiki/sources/Source: Google Blog - Gemini CLI Announcement.md +0 -57
  405. package/vault/wiki/sources/Source: Google Gemini CLI Architecture Docs.md +0 -53
  406. package/vault/wiki/sources/Source: LangChain - Anatomy of Agent Harness.md +0 -65
  407. package/vault/wiki/sources/Source: Lovable Architecture & Clone Analysis.md +0 -83
  408. package/vault/wiki/sources/Source: Martin Fowler - Harness Engineering.md +0 -70
  409. package/vault/wiki/sources/Source: OpenAI Harness Engineering Five Principles.md +0 -58
  410. package/vault/wiki/sources/Source: OpenAI Harness Engineering /342/200/224 0 Lines of Human Code.md" +0 -101
  411. package/vault/wiki/sources/Source: OpenDev /342/200/224 Building AI Coding Agents for the Terminal.md" +0 -100
  412. package/vault/wiki/sources/Source: Render AI Coding Agents Benchmark 2025.md +0 -53
  413. package/vault/wiki/sources/Source: Rocket.new /342/200/224 Vibe Solutioning Platform.md" +0 -70
  414. package/vault/wiki/sources/Source: SwirlAI Agent Skills Progressive Disclosure.md +0 -71
  415. package/vault/wiki/sources/Source: TianPan Prompt Caching Architecture.md +0 -89
  416. package/vault/wiki/sources/Source: Vercel Labs agent-browser.md +0 -155
  417. package/vault/wiki/sources/Source: browser-harness CDP Harness.md +0 -126
  418. package/vault/wiki/sources/agent-drift-academic-paper.md +0 -79
  419. package/vault/wiki/sources/aider-repomap-tree-sitter.md +0 -42
  420. package/vault/wiki/sources/anthropic-compaction-api.md +0 -58
  421. package/vault/wiki/sources/anthropic-effective-harnesses.md +0 -42
  422. package/vault/wiki/sources/anthropic-prompt-best-practices.md +0 -100
  423. package/vault/wiki/sources/anthropic2026-harness-design.md +0 -63
  424. package/vault/wiki/sources/barrel-files-tkdodo.md +0 -38
  425. package/vault/wiki/sources/birth-of-unix-kernighan-interview.md +0 -57
  426. package/vault/wiki/sources/bockeler2026-harness-engineering.md +0 -69
  427. package/vault/wiki/sources/cast-code-chunking-paper.md +0 -50
  428. package/vault/wiki/sources/ck-semantic-search.md +0 -78
  429. package/vault/wiki/sources/claude-code-architecture-karaxai-2026.md +0 -71
  430. package/vault/wiki/sources/claude-code-architecture-qubytes-2026.md +0 -50
  431. package/vault/wiki/sources/claude-code-architecture-vila-lab-2026.md +0 -64
  432. package/vault/wiki/sources/claude-code-security-architecture-penligent-2026.md +0 -70
  433. package/vault/wiki/sources/claude-context-editing-docs.md +0 -13
  434. package/vault/wiki/sources/cloudflare-codemode.md +0 -63
  435. package/vault/wiki/sources/code-chunk-library-supermemory.md +0 -63
  436. package/vault/wiki/sources/codeact-apple-2024.md +0 -62
  437. package/vault/wiki/sources/codex-dsc-rfc-8573.md +0 -41
  438. package/vault/wiki/sources/codex-open-source-agent-2026.md +0 -110
  439. package/vault/wiki/sources/coir-code-retrieval-benchmark.md +0 -51
  440. package/vault/wiki/sources/colinmcnamara-context-optimization-codemode.md +0 -48
  441. package/vault/wiki/sources/context-folding-paper.md +0 -61
  442. package/vault/wiki/sources/context-mode-website.md +0 -63
  443. package/vault/wiki/sources/cursor-agent-best-practices-2026.md +0 -62
  444. package/vault/wiki/sources/cursor-fork-29b-2025.md +0 -50
  445. package/vault/wiki/sources/cursor-harness-april-2026.md +0 -76
  446. package/vault/wiki/sources/cursor-instant-apply-2024.md +0 -45
  447. package/vault/wiki/sources/cursor-shadow-workspace-2024.md +0 -52
  448. package/vault/wiki/sources/cursor-shipped-coding-agent-2026.md +0 -53
  449. package/vault/wiki/sources/cursor-vs-antigravity-2026.md +0 -51
  450. package/vault/wiki/sources/disler-pi-vs-claude-code.md +0 -69
  451. package/vault/wiki/sources/distill-deterministic-context-compression.md +0 -53
  452. package/vault/wiki/sources/embedding-models-benchmark-supermemory-2025.md +0 -48
  453. package/vault/wiki/sources/executor-rhyssullivan.md +0 -122
  454. package/vault/wiki/sources/fallow-rs-codebase-intelligence.md +0 -125
  455. package/vault/wiki/sources/fan2025-imad.md +0 -60
  456. package/vault/wiki/sources/forgecode-gpt5-agent-improvements.md +0 -63
  457. package/vault/wiki/sources/gemini-3-prompting-guide.md +0 -78
  458. package/vault/wiki/sources/gh-cli-sub-issue-rfc.md +0 -50
  459. package/vault/wiki/sources/gh-sub-issue-extension.md +0 -72
  460. package/vault/wiki/sources/github-fork-issues-discussion.md +0 -44
  461. package/vault/wiki/sources/github-issue-dependencies-docs.md +0 -49
  462. package/vault/wiki/sources/github-sub-issues-docs.md +0 -51
  463. package/vault/wiki/sources/gitingest.md +0 -91
  464. package/vault/wiki/sources/gitreverse.md +0 -63
  465. package/vault/wiki/sources/google-antigravity-official-blog.md +0 -47
  466. package/vault/wiki/sources/google-antigravity-wikipedia.md +0 -53
  467. package/vault/wiki/sources/gsd-codecentric-deep-dive.md +0 -57
  468. package/vault/wiki/sources/gsd-github-repo.md +0 -51
  469. package/vault/wiki/sources/gsd-hn-discussion.md +0 -59
  470. package/vault/wiki/sources/guido-python-design-philosophy.md +0 -56
  471. package/vault/wiki/sources/hejlsberg-7-learnings.md +0 -48
  472. package/vault/wiki/sources/ironclaw-drift-monitor.md +0 -80
  473. package/vault/wiki/sources/langsight-loop-detection.md +0 -80
  474. package/vault/wiki/sources/leanctx-website.md +0 -69
  475. package/vault/wiki/sources/lee2026-meta-harness.md +0 -59
  476. package/vault/wiki/sources/linux-kernel-coding-workflow.md +0 -50
  477. package/vault/wiki/sources/lou2026-autoharness.md +0 -53
  478. package/vault/wiki/sources/martin-fowler-harness-engineering.md +0 -73
  479. package/vault/wiki/sources/mcp-architecture-docs.md +0 -13
  480. package/vault/wiki/sources/meng2026-agent-harness-survey.md +0 -79
  481. package/vault/wiki/sources/mindstudio-four-agent-types.md +0 -68
  482. package/vault/wiki/sources/ms-chat-history-management.md +0 -13
  483. package/vault/wiki/sources/openai-prompt-guidance.md +0 -104
  484. package/vault/wiki/sources/openclaw-session-pruning.md +0 -13
  485. package/vault/wiki/sources/opencode-dcp.md +0 -13
  486. package/vault/wiki/sources/opendev-arxiv-2603.05344v1.md +0 -79
  487. package/vault/wiki/sources/openhands-platform.md +0 -39
  488. package/vault/wiki/sources/oss-guide-codebase-exploration.md +0 -53
  489. package/vault/wiki/sources/pi-compaction-extensions-ecosystem.md +0 -102
  490. package/vault/wiki/sources/pi-context-prune-github-repo.md +0 -38
  491. package/vault/wiki/sources/pi-mono-compaction-docs.md +0 -38
  492. package/vault/wiki/sources/pi-omni-compact-github-repo.md +0 -50
  493. package/vault/wiki/sources/pi-rtk-optimizer-github-repo.md +0 -45
  494. package/vault/wiki/sources/pi-vcc-github-repo.md +0 -69
  495. package/vault/wiki/sources/pi-vscode-marketplace.md +0 -41
  496. package/vault/wiki/sources/pi-vscode-model-provider-marketplace.md +0 -39
  497. package/vault/wiki/sources/py-tree-sitter.md +0 -13
  498. package/vault/wiki/sources/sentrux-dev-landing.md +0 -40
  499. package/vault/wiki/sources/sentrux-docs-pro-architecture.md +0 -75
  500. package/vault/wiki/sources/sentrux-docs-quality-signal.md +0 -46
  501. package/vault/wiki/sources/sentrux-docs-root-cause-metrics.md +0 -57
  502. package/vault/wiki/sources/sentrux-docs-rules-engine.md +0 -58
  503. package/vault/wiki/sources/sentrux-github-repo.md +0 -56
  504. package/vault/wiki/sources/superpowers-github-repo.md +0 -56
  505. package/vault/wiki/sources/superpowers-release-blog.md +0 -54
  506. package/vault/wiki/sources/superpowers-termdock-analysis.md +0 -45
  507. package/vault/wiki/sources/swe-agent-aci.md +0 -42
  508. package/vault/wiki/sources/swe-bench.md +0 -45
  509. package/vault/wiki/sources/swe-pruner-context-pruning.md +0 -13
  510. package/vault/wiki/sources/think-in-code-blog.md +0 -48
  511. package/vault/wiki/sources/tree-sitter-docs.md +0 -13
  512. package/vault/wiki/sources/ts-best-practices-2025-devto.md +0 -42
  513. package/vault/wiki/sources/ts-folder-structure-mingyang.md +0 -58
  514. package/vault/wiki/sources/ts-monorepo-koerselman.md +0 -44
  515. package/vault/wiki/sources/ts-result-error-handling-kkalamarski.md +0 -52
  516. package/vault/wiki/sources/ts-runtimes-comparison-betterstack.md +0 -42
  517. package/vault/wiki/sources/ts-strict-mode-rishikc.md +0 -43
  518. package/vault/wiki/sources/unix-philosophy.md +0 -48
  519. package/vault/wiki/sources/vectara-chunking-vs-embedding-naacl2025.md +0 -39
  520. package/vault/wiki/sources/vectara-guardian-agents.md +0 -79
  521. package/vault/wiki/sources/vgrep-semantic-search.md +0 -76
  522. package/vault/wiki/sources/vitest-official.md +0 -41
  523. package/vault/wiki/sources/vscode-pi-community-extension.md +0 -40
  524. package/vault/wiki/sources/wozcode.md +0 -79
@@ -1,102 +0,0 @@
1
- ---
2
- type: decision
3
- title: "ADR-012: Extension-Based Harness Orchestrator — Leveraging Pi's Native Event System"
4
- status: accepted
5
- priority: 1
6
- date: "2026-05-02"
7
- updated: "2026-05-04"
8
- tags: [adr, harness, integration, extensions, orchestrator, pi-extension-api]
9
- sources:
10
- - "[[HARNESS-PRD]]"
11
- - "[[dotenv-loader]]"
12
- - "[[custom-footer]]"
13
- related:
14
- - "[[adr-010]]"
15
- - "[[adr-011]]"
16
- - "[[adr-026-one-thing]]"
17
- supersedes:
18
- created: 2026-05-02
19
- ---
20
-
21
- # ADR-012: Extension-Based Harness Orchestrator — Leveraging Pi's Native Event System
22
-
23
- **UPDATED 2026-05-04**: Original ADR incorrectly stated pi has only 5 native events. Pi v0.70.2 provides 30+ event types via `ExtensionAPI.on()`. The decision — extension-based, no fork — remains correct. Updated to reflect actual pi capabilities.
24
-
25
- ## Context
26
-
27
- The HARNESS-PRD specifies an 8-layer mandatory execution pipeline. The pi coding agent provides an `ExtensionAPI` with **30+ native event types**: `session_start`, `session_before_compact`, `session_compact`, `session_shutdown`, `before_agent_start`, `agent_start`, `agent_end`, `turn_start`, `turn_end`, `message_start`, `message_update`, `message_end`, `tool_execution_start`, `tool_execution_update`, `tool_execution_end`, `tool_call` (per-tool types: bash, read, edit, write, grep, find, ls, custom), `tool_result` (per-tool types), `context`, `before_provider_request`, `after_provider_response`, `model_select`, `input`, `user_bash`, `resources_discover`, and more.
28
-
29
- Three integration paths were considered:
30
- - **A) Fork pi to add hook points.** Maintenance burden. Blocks on upstream.
31
- - **B) Wrap pi at process boundary.** Fragile, breaks on pi updates.
32
- - **C) Build a harness orchestrator extension that listens to pi's native events and routes them through a skill pipeline.** Zero pi changes. Full control within extensions.
33
-
34
- ## Decision
35
-
36
- **Use an extension-based harness orchestrator. No fork. No process wrapping. No custom event bus needed.**
37
-
38
- A single `harness-orchestrator` extension subscribes to pi's native events directly — no intermediate event bus layer. State machine tracks pipeline position (L1→L2→L3→L4→L5-L8). Phase transitions detected via tool result patterns and turn boundaries. Skills are activated via `pi.sendMessage()` with `deliverAs: "steer"` to inject steering prompts at the right pipeline phase.
39
-
40
- ### Event-to-Pipeline Mapping
41
-
42
- Pi's native events map directly to harness pipeline phases without translation:
43
-
44
- | Pi Native Event | Harness Pipeline Action |
45
- |---|---|
46
- | `turn_start` | Initialize phase context. Inject L1 spec-hardening steer if entering L1. |
47
- | `tool_call` | Track which tools the agent invokes. Detect phase transitions (e.g., write tool = entering L3 execution). |
48
- | `tool_result` | Route to drift monitor during L3 execution. Detect gate conditions (compile failures, lint errors). |
49
- | `turn_end` | Trigger L4 critic if in verification phase. Accumulate token budget. |
50
- | `before_agent_start` | Inject harness state into system prompt. Reinject after compaction. |
51
- | `agent_end` | Finalize pipeline. Trigger L5 observability + L6 memory writes. |
52
- | `session_start` | Bootstrap harness state. Load config. Warm wiki cache. |
53
- | `session_compact` | Persist harness state. Reinject after compaction completes. |
54
- | `session_shutdown` | Flush observations. Write keep-rate samples. |
55
-
56
- ### Enforcement Model — Updated
57
-
58
- With `tool_call` events, the orchestrator gains new enforcement capabilities not possible with only 5 events:
59
-
60
- - **Pre-execution tool blocking**: `tool_call` handlers can return `{ block: true, reason: "..." }` to prevent tool execution. This enables: blocking edits when spec isn't hardened, blocking writes when drift detected, blocking bash when sandbox isn't configured.
61
- - **Result mutation**: `tool_result` handlers can modify content/details/isError. This enables: injecting warnings into results, marking results as errors based on drift detection, adding structural analysis annotations.
62
- - **Context injection**: `before_agent_start` can replace the system prompt entirely. This enables: switching between "spec hardening mode" and "execution mode" and "verification mode" prompts.
63
-
64
- Not 100% software-enforced for all layers, but `tool_call` blocking + `tool_result` mutation + `before_agent_start` prompt injection achieves high compliance. L7 orchestration (later phase) may add process-level enforcement via `pi.exec()`-based gate scripts.
65
-
66
- ## Rationale
67
-
68
- - **Zero pi dependency**: Works with pi v0.70.2 today. No upstream PRs, no fork maintenance.
69
- - **All harness logic in one extension**: The orchestrator is a single `.pi/extensions/harness-orchestrator.ts`. No intermediate event bus layer.
70
- - **Proven pattern**: `custom-footer.ts` already demonstrates using `turn_start`, `context`, `model_select`, and `session_start` events. The harness orchestrator is the same pattern, scaled.
71
- - **Upgrade path**: If pi adds new native events, the orchestrator can subscribe to them without architectural changes.
72
- - **Tool call blocking is new**: pi's `tool_call` event supports `{ block: true }` return — this is a hard enforcement mechanism not available in the original 5-event assumption.
73
-
74
- ## Consequences
75
-
76
- ### Positive
77
- - Ships immediately. No external dependencies beyond pi.
78
- - Harness is self-contained in `.pi/extensions/`.
79
- - `tool_call` blocking provides hard enforcement for critical gates.
80
- - ~150 lines, not ~290 (no intermediate event bus).
81
-
82
- ### Negative
83
- - Still ~95% compliance for skill-level steering (LLM can ignore steering prompts).
84
- - Pattern detection in `tool_result` is heuristic, not guaranteed.
85
- - `pi.sendMessage()` steering behavior unverified — need to test skill activation.
86
-
87
- ### Mitigations
88
- - `tool_call` blocking for critical safety gates (no edit without spec, no write with drift).
89
- - Multiple defense layers (L1 hardening + L2.5 drift + L4 adversarial + P20 deterministic) mean a single-layer bypass is caught downstream.
90
- - Compliance monitoring in L5 observability tracks bypass rates per layer.
91
- - L7 orchestration (P23) adds process-level enforcement via `pi.exec()` gate scripts.
92
-
93
- ## Correction from Original (2026-05-04)
94
-
95
- | | Original ADR-012 | Corrected |
96
- |---|---|---|
97
- | Pi native events | "5 native events" | **30+ native events** |
98
- | Architecture | Event bus layer on top of 5 events | **Orchestrator listens to 30+ events directly** |
99
- | File | `harness-event-bus.ts` | **`harness-orchestrator.ts`** |
100
- | Lines | ~200+ | **~100** (thinner — no bus layer) |
101
- | Tool blocking | Not possible (assumed) | **Possible via `tool_call` event** |
102
- | Pre-execution gates | Prompt-only | **Prompt OR `tool_call` blocking** |
@@ -1,59 +0,0 @@
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.
@@ -1,73 +0,0 @@
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.
@@ -1,81 +0,0 @@
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.
@@ -1,91 +0,0 @@
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.
@@ -1,79 +0,0 @@
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 }).
@@ -1,100 +0,0 @@
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.
@@ -1,75 +0,0 @@
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.