@event4u/agent-config 9.7.0 → 9.9.0

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 (901) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +314 -190
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +57 -11
  6. package/dist/agent-src/commands/agents/audit.md +1 -1
  7. package/dist/agent-src/commands/agents/optimize.md +2 -2
  8. package/dist/agent-src/commands/agents/user.md +1 -1
  9. package/dist/agent-src/commands/agents.md +1 -1
  10. package/dist/agent-src/commands/check-current-md.md +3 -3
  11. package/dist/agent-src/commands/commit/in-chunks.md +8 -0
  12. package/dist/agent-src/commands/commit.md +17 -0
  13. package/dist/agent-src/commands/fix/portability.md +2 -2
  14. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  15. package/dist/agent-src/commands/fix/refs.md +2 -2
  16. package/dist/agent-src/commands/fix/route.md +4 -3
  17. package/dist/agent-src/commands/fix.md +9 -6
  18. package/dist/agent-src/commands/ghostwriter.md +1 -1
  19. package/dist/agent-src/commands/image.md +1 -1
  20. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  21. package/dist/agent-src/commands/optimize/skills.md +2 -2
  22. package/dist/agent-src/commands/post-as.md +1 -1
  23. package/dist/agent-src/commands/pr/create.md +4 -0
  24. package/dist/agent-src/commands/research.md +1 -1
  25. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  26. package/dist/agent-src/commands/security-audit-config.md +1 -1
  27. package/dist/agent-src/commands/team/delegate.md +4 -0
  28. package/dist/agent-src/commands/video.md +1 -1
  29. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  30. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  31. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  32. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  33. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  34. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  35. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  36. package/dist/agent-src/contexts/override-system.md +75 -5
  37. package/dist/agent-src/rules/code-provenance.md +112 -0
  38. package/dist/agent-src/rules/context-hygiene.md +2 -0
  39. package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
  40. package/dist/agent-src/rules/domain-safety-pii.md +1 -0
  41. package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
  42. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
  43. package/dist/agent-src/rules/git-history-discipline.md +2 -0
  44. package/dist/agent-src/rules/history-discipline.md +80 -0
  45. package/dist/agent-src/rules/language-and-tone.md +2 -0
  46. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
  47. package/dist/agent-src/rules/media-governance-routing.md +2 -0
  48. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  49. package/dist/agent-src/rules/no-roadmap-references.md +4 -1
  50. package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
  51. package/dist/agent-src/rules/onboarding-gate.md +2 -0
  52. package/dist/agent-src/rules/output-discipline.md +2 -0
  53. package/dist/agent-src/rules/persona-governance.md +2 -0
  54. package/dist/agent-src/rules/php-coding.md +1 -0
  55. package/dist/agent-src/rules/preservation-guard.md +3 -0
  56. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  57. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  58. package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
  59. package/dist/agent-src/rules/scale-discipline.md +92 -0
  60. package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
  61. package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
  62. package/dist/agent-src/rules/session-canary.md +77 -0
  63. package/dist/agent-src/rules/skill-quality.md +2 -0
  64. package/dist/agent-src/rules/source-confidentiality.md +2 -0
  65. package/dist/agent-src/rules/source-of-truth.md +2 -0
  66. package/dist/agent-src/rules/telegraph-speak.md +2 -0
  67. package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
  68. package/dist/agent-src/rules/tool-safety.md +4 -1
  69. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  70. package/dist/agent-src/rules/verify-before-complete.md +2 -0
  71. package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
  72. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  73. package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
  74. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  75. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  76. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  77. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  78. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  79. package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
  80. package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
  81. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  82. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  83. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  84. package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
  85. package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
  86. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  87. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  88. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  89. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  90. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  91. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  92. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  93. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  94. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  95. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  96. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  97. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  98. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  99. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  100. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  101. package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
  102. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  103. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  104. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  105. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  106. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  107. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  108. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  109. package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
  110. package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
  111. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  112. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  113. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  114. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  115. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  116. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  117. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  118. package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
  119. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
  120. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
  121. package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
  122. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
  123. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
  124. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
  125. package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
  126. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  127. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  128. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  129. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
  130. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  131. package/dist/agent-src/templates/AGENTS.md +1 -1
  132. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  133. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  134. package/dist/agent-src/templates/command.md +3 -3
  135. package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
  136. package/dist/agent-src/templates/persona.md +2 -2
  137. package/dist/agent-src/templates/rule.md +2 -2
  138. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  139. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  140. package/dist/cli/commands/doctorShell.js +20 -0
  141. package/dist/cli/commands/doctorShell.js.map +1 -1
  142. package/dist/cli/commands/rtkDetect.js +58 -0
  143. package/dist/cli/commands/rtkDetect.js.map +1 -0
  144. package/dist/cli/configRoot.js +112 -0
  145. package/dist/cli/configRoot.js.map +1 -0
  146. package/dist/cli/configRoot.test.js +97 -0
  147. package/dist/cli/configRoot.test.js.map +1 -0
  148. package/dist/cli/firstRunNotice.js +70 -0
  149. package/dist/cli/firstRunNotice.js.map +1 -0
  150. package/dist/cli/help.js +4 -1
  151. package/dist/cli/help.js.map +1 -1
  152. package/dist/cli/main.js +54 -5
  153. package/dist/cli/main.js.map +1 -1
  154. package/dist/cli/registry.js +8 -1
  155. package/dist/cli/registry.js.map +1 -1
  156. package/dist/discovery/deprecation-report.md +1 -1
  157. package/dist/discovery/discovery-manifest.json +502 -101
  158. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  159. package/dist/discovery/discovery-manifest.summary.md +6 -4
  160. package/dist/discovery/orphan-report.md +1 -1
  161. package/dist/discovery/packs.json +95 -8
  162. package/dist/discovery/trust-report.md +11 -11
  163. package/dist/discovery/workspaces.json +36 -7
  164. package/dist/hooks/dispatch.js +19475 -0
  165. package/dist/install/agentSwitchDetection.js +75 -0
  166. package/dist/install/agentSwitchDetection.js.map +1 -0
  167. package/dist/install/agentSwitchProfile.js +117 -0
  168. package/dist/install/agentSwitchProfile.js.map +1 -0
  169. package/dist/install/atomic.js +1 -1
  170. package/dist/install/detect.js +1 -1
  171. package/dist/install/install.mjs +791 -486
  172. package/dist/install/rtkDetection.js +213 -0
  173. package/dist/install/rtkDetection.js.map +1 -0
  174. package/dist/install/rule_scope.js +2 -1
  175. package/dist/install/rule_scope.js.map +1 -1
  176. package/dist/install/types.js +2 -2
  177. package/dist/install/wizard-plan.js +1 -1
  178. package/dist/install/wizardDismissals.js +58 -0
  179. package/dist/install/wizardDismissals.js.map +1 -0
  180. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  181. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  182. package/dist/mcp/registry-manifest.json +15 -4
  183. package/dist/mcp/server.json +20 -0
  184. package/dist/mcp/server.mjs +44292 -0
  185. package/dist/router.json +1 -1
  186. package/dist/scripts/condense.js +14 -7
  187. package/dist/scripts/condense.js.map +1 -1
  188. package/dist/server/app.js +12 -0
  189. package/dist/server/app.js.map +1 -1
  190. package/dist/server/io/sharedWriteCheck.js +101 -0
  191. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  192. package/dist/server/routes/ping.js +32 -0
  193. package/dist/server/routes/ping.js.map +1 -1
  194. package/dist/server/routes/settings.js +21 -4
  195. package/dist/server/routes/settings.js.map +1 -1
  196. package/dist/server/routes/userMd.js +21 -4
  197. package/dist/server/routes/userMd.js.map +1 -1
  198. package/dist/server/routes/wizard.js +68 -25
  199. package/dist/server/routes/wizard.js.map +1 -1
  200. package/dist/server/schemas/settings.js +12 -2
  201. package/dist/server/schemas/settings.js.map +1 -1
  202. package/dist/server/serverInfo.js +6 -2
  203. package/dist/server/serverInfo.js.map +1 -1
  204. package/dist/server/token.js +11 -4
  205. package/dist/server/token.js.map +1 -1
  206. package/dist/server/writeRoot.js +15 -1
  207. package/dist/server/writeRoot.js.map +1 -1
  208. package/dist/shared/capabilities.js +33 -0
  209. package/dist/shared/capabilities.js.map +1 -0
  210. package/dist/shared/capabilities.test.js +39 -0
  211. package/dist/shared/capabilities.test.js.map +1 -0
  212. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  213. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  214. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  215. package/dist/ui/index.html +15 -6
  216. package/docs/MIGRATION.md +16 -0
  217. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  218. package/package.json +22 -9
  219. package/src/agent-src/templates/AGENTS.md +1 -1
  220. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  221. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  222. package/src/config/agent-settings.template.yml +94 -13
  223. package/src/config/discovery/packs.yml +22 -0
  224. package/src/config/discovery/workspaces.yml +1 -1
  225. package/src/config/evaluator-budgets.json +47 -0
  226. package/src/config/hook-latency-budget.json +20 -0
  227. package/src/config/reach-channels.yml +217 -0
  228. package/src/config/reach-prescriptions-intake.yml +200 -0
  229. package/src/install/agentSwitchDetection.ts +90 -0
  230. package/src/install/agentSwitchProfile.ts +131 -0
  231. package/src/install/atomic.ts +1 -1
  232. package/src/install/detect.ts +1 -1
  233. package/src/install/rtkDetection.ts +274 -0
  234. package/src/install/rule_scope.ts +9 -2
  235. package/src/install/types.ts +2 -2
  236. package/src/install/wizard-plan.ts +1 -1
  237. package/src/install/wizardDismissals.ts +60 -0
  238. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  239. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  240. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  241. package/src/scripts/_dispatch.bash +96 -0
  242. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  243. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  244. package/src/scripts/_lib/detect_target_license.ts +714 -0
  245. package/src/scripts/_lib/exec_evidence.ts +251 -0
  246. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
  247. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
  248. package/src/scripts/_lib/install_drift.ts +194 -0
  249. package/src/scripts/_lib/kernel_rules.ts +46 -0
  250. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  251. package/src/scripts/_lib/orchestration_record.ts +91 -2
  252. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  253. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  254. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  255. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  256. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  257. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  258. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  259. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  260. package/src/scripts/_lib/persistence/types.ts +109 -0
  261. package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
  262. package/src/scripts/_lib/risk_paths.ts +160 -0
  263. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  264. package/src/scripts/_lib/secret_detector.test.ts +108 -0
  265. package/src/scripts/_lib/secret_detector.ts +328 -0
  266. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  267. package/src/scripts/_lib/spawn_env.ts +7 -0
  268. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  269. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  270. package/src/scripts/_lib/tool_probe.ts +359 -0
  271. package/src/scripts/_lib/worker_budget.ts +107 -0
  272. package/src/scripts/adr/regenerate_index.ts +81 -6
  273. package/src/scripts/ai_council/blind_review.ts +0 -0
  274. package/src/scripts/ai_council/config.ts +12 -6
  275. package/src/scripts/ai_council/orchestrator.ts +73 -3
  276. package/src/scripts/ai_team/review_gate.ts +8 -10
  277. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  278. package/src/scripts/audit_adr_coverage.ts +33 -0
  279. package/src/scripts/audit_initial_context.ts +1 -1
  280. package/src/scripts/bench_cross_source_eval.ts +400 -0
  281. package/src/scripts/bench_honesty_score.ts +1093 -0
  282. package/src/scripts/bench_hook_latency.ts +218 -0
  283. package/src/scripts/build_mcp_catalog.ts +275 -0
  284. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  285. package/src/scripts/build_proof.ts +207 -0
  286. package/src/scripts/chat_history.ts +8 -5
  287. package/src/scripts/check_adr_frontmatter.ts +195 -0
  288. package/src/scripts/check_artefact_count_messaging.ts +4 -0
  289. package/src/scripts/check_backstop_debt.ts +210 -0
  290. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  291. package/src/scripts/check_claims.ts +188 -8
  292. package/src/scripts/check_comparison.ts +12 -0
  293. package/src/scripts/check_enforcement_coverage.ts +592 -0
  294. package/src/scripts/check_evaluator_budgets.ts +99 -0
  295. package/src/scripts/check_kernel_rule_bundle.ts +16 -12
  296. package/src/scripts/check_knowledge_sharing.ts +12 -1
  297. package/src/scripts/check_no_external_sources.ts +2 -2
  298. package/src/scripts/check_reach_channels.ts +407 -0
  299. package/src/scripts/check_reach_staleness.ts +364 -0
  300. package/src/scripts/check_secret_leak.test.ts +47 -0
  301. package/src/scripts/check_secret_leak.ts +290 -0
  302. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  303. package/src/scripts/code_graph/build.ts +0 -0
  304. package/src/scripts/code_graph/cli.ts +379 -0
  305. package/src/scripts/code_graph/detect.ts +186 -0
  306. package/src/scripts/code_graph/extract.ts +386 -0
  307. package/src/scripts/code_graph/intent.ts +45 -0
  308. package/src/scripts/code_graph/loader.ts +123 -0
  309. package/src/scripts/code_graph/query.ts +290 -0
  310. package/src/scripts/code_graph/sanitize.ts +30 -0
  311. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  312. package/src/scripts/code_graph/types.ts +83 -0
  313. package/src/scripts/code_graph/validate.ts +63 -0
  314. package/src/scripts/condense.ts +14 -6
  315. package/src/scripts/context_hygiene_hook.ts +8 -5
  316. package/src/scripts/council_cli.ts +126 -12
  317. package/src/scripts/detect_target_license.ts +203 -0
  318. package/src/scripts/evaluator_umbrella.sh +145 -0
  319. package/src/scripts/external_sources_denylist.json +8 -4
  320. package/src/scripts/first_run_gate_hook.ts +9 -5
  321. package/src/scripts/generate_subagent_floor.ts +194 -0
  322. package/src/scripts/hermetic-install.sh +3 -3
  323. package/src/scripts/hook_manifest.yaml +65 -16
  324. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  325. package/src/scripts/hooks/block_no_verify.ts +9 -9
  326. package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
  327. package/src/scripts/hooks/concern_registry.ts +75 -0
  328. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  329. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  330. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  331. package/src/scripts/hooks/hook_stdin.ts +42 -0
  332. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  333. package/src/scripts/hot_context_hook.ts +7 -6
  334. package/src/scripts/injection_scan_hook.ts +9 -1
  335. package/src/scripts/install +6 -6
  336. package/src/scripts/install-hooks.sh +4 -4
  337. package/src/scripts/install.sh +5 -4
  338. package/src/scripts/install.ts +264 -23
  339. package/src/scripts/iron_law_sha.ts +3 -12
  340. package/src/scripts/learning_sidecar.ts +0 -0
  341. package/src/scripts/lint_budget_ownership.ts +89 -0
  342. package/src/scripts/lint_command_routing.ts +35 -5
  343. package/src/scripts/lint_command_verbs.ts +42 -9
  344. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  345. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  346. package/src/scripts/lint_documented_commands.ts +670 -0
  347. package/src/scripts/lint_framework_leakage.ts +17 -3
  348. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  349. package/src/scripts/lint_governed_writes.ts +335 -0
  350. package/src/scripts/lint_hidden_unicode.ts +6 -0
  351. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  352. package/src/scripts/lint_memory_tripwire.ts +186 -0
  353. package/src/scripts/lint_override_kernel_guard.ts +267 -0
  354. package/src/scripts/lint_persistence.ts +171 -0
  355. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  356. package/src/scripts/lint_provenance.ts +547 -0
  357. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  358. package/src/scripts/lint_spawn_payload.ts +283 -0
  359. package/src/scripts/lint_store_boundary.ts +152 -0
  360. package/src/scripts/lint_versioned_cache.ts +7 -1
  361. package/src/scripts/mcp_server/__main__.ts +7 -2
  362. package/src/scripts/mcp_server/catalog.ts +23 -1
  363. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  364. package/src/scripts/mcp_server/prompts.ts +6 -0
  365. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  366. package/src/scripts/mcp_server/tools.ts +56 -5
  367. package/src/scripts/mcp_telemetry_query.ts +2 -33
  368. package/src/scripts/mcp_telemetry_store.ts +64 -34
  369. package/src/scripts/measure_rule_budget.ts +3 -12
  370. package/src/scripts/memory_learn_hook.ts +126 -0
  371. package/src/scripts/memory_lookup.ts +0 -0
  372. package/src/scripts/memory_replay_24.ts +312 -0
  373. package/src/scripts/memory_report.ts +16 -3
  374. package/src/scripts/memory_signal.ts +48 -0
  375. package/src/scripts/memory_status.ts +6 -0
  376. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  377. package/src/scripts/onboarding_gate_hook.ts +8 -5
  378. package/src/scripts/orchestration_record.ts +16 -0
  379. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  380. package/src/scripts/prepack-check.mjs +17 -0
  381. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  382. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  383. package/src/scripts/profile_staleness_hook.ts +8 -7
  384. package/src/scripts/reach_doctor.ts +1651 -0
  385. package/src/scripts/release.ts +24 -3
  386. package/src/scripts/report_install_drift.ts +109 -0
  387. package/src/scripts/risk_escalation_shadow.ts +160 -0
  388. package/src/scripts/roadmap_progress_hook.ts +8 -5
  389. package/src/scripts/schemas/agent-settings.schema.json +23 -0
  390. package/src/scripts/schemas/license-policy.schema.json +89 -0
  391. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  392. package/src/scripts/schemas/reach-channels.schema.json +134 -0
  393. package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
  394. package/src/scripts/schemas/rule.schema.json +20 -0
  395. package/src/scripts/self_review_gate.test.ts +173 -1
  396. package/src/scripts/self_review_gate.ts +155 -15
  397. package/src/scripts/session_canary_hook.ts +182 -0
  398. package/src/scripts/skill_linter.ts +55 -0
  399. package/src/scripts/smoke_quickstart.ts +2 -2
  400. package/src/scripts/surface_probe_hook.ts +8 -7
  401. package/src/scripts/sync_gitattributes.ts +310 -0
  402. package/src/scripts/team_review_gate_hook.ts +13 -16
  403. package/src/scripts/validate_reach_prescriptions.ts +751 -0
  404. package/src/scripts/verify_before_complete_hook.ts +8 -5
  405. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  406. package/src/server/schemas/settings.ts +24 -2
  407. package/src/shared/capabilities.test.ts +43 -0
  408. package/src/shared/capabilities.ts +75 -0
  409. package/src/templates/minimal/agents-overrides-readme.md +20 -0
  410. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  411. package/dist/ui/assets/index-BiEZiZ31.js +0 -40
  412. package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
  413. package/docs/CLAIMS.md +0 -261
  414. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  415. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  416. package/docs/SKILL_CENSUS.md +0 -352
  417. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  418. package/docs/adrs/cost/README.md +0 -9
  419. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  420. package/docs/adrs/memory/README.md +0 -10
  421. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  422. package/docs/adrs/router/README.md +0 -9
  423. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  424. package/docs/adrs/schema/README.md +0 -9
  425. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  426. package/docs/adrs/smoke/README.md +0 -9
  427. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  428. package/docs/adrs/telegraph/README.md +0 -9
  429. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  430. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  431. package/docs/anti-reskin-gate.md +0 -60
  432. package/docs/architecture/augment-projection.md +0 -70
  433. package/docs/architecture/claude-bundle.md +0 -77
  434. package/docs/architecture/current-onboard-baseline.md +0 -126
  435. package/docs/architecture/current-safety-behavior.md +0 -137
  436. package/docs/architecture/multi-tool-projection.md +0 -125
  437. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  438. package/docs/architecture/source-projection.md +0 -85
  439. package/docs/architecture.md +0 -390
  440. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  441. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  442. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  443. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  444. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  445. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  446. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  447. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  448. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  449. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  450. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  451. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  452. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  453. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  454. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  455. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  456. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  457. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  458. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  459. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  460. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  461. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  462. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  463. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  464. package/docs/artefact-census.md +0 -71
  465. package/docs/benchmark.md +0 -648
  466. package/docs/benchmark.pinned.yml +0 -31
  467. package/docs/benchmarks.md +0 -85
  468. package/docs/capability-matrix.md +0 -33
  469. package/docs/case-studies/_template.md +0 -60
  470. package/docs/case-studies/frontend-design-positioning.md +0 -86
  471. package/docs/catalog.md +0 -721
  472. package/docs/command-flows.md +0 -272
  473. package/docs/command-naming-audit.md +0 -60
  474. package/docs/comparison.yaml +0 -45
  475. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  476. package/docs/contracts/STABILITY.md +0 -188
  477. package/docs/contracts/adoption-signal-floor.md +0 -127
  478. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  479. package/docs/contracts/adr-chat-history-split.md +0 -140
  480. package/docs/contracts/adr-command-suggestion.md +0 -144
  481. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  482. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  483. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  484. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  485. package/docs/contracts/adr-layout.md +0 -107
  486. package/docs/contracts/adr-level-6-productization.md +0 -145
  487. package/docs/contracts/adr-mcp-runtime.md +0 -128
  488. package/docs/contracts/adr-product-ui-track.md +0 -381
  489. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  490. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  491. package/docs/contracts/adr-user-types-axis.md +0 -127
  492. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  493. package/docs/contracts/agent-user-schema.md +0 -170
  494. package/docs/contracts/agents-layout.md +0 -148
  495. package/docs/contracts/agents-md-tech-stack.md +0 -75
  496. package/docs/contracts/ai-council-config.md +0 -829
  497. package/docs/contracts/ai-team-config.md +0 -224
  498. package/docs/contracts/analysis-memory-loop.md +0 -149
  499. package/docs/contracts/at-rest-encryption.md +0 -191
  500. package/docs/contracts/audit-log-v1.md +0 -150
  501. package/docs/contracts/auto-orchestration-v1.md +0 -70
  502. package/docs/contracts/benchmark-ab-contract.md +0 -106
  503. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  504. package/docs/contracts/benchmark-report-schema.md +0 -113
  505. package/docs/contracts/branch-protection-policy.md +0 -139
  506. package/docs/contracts/brand-token-consumption.md +0 -74
  507. package/docs/contracts/capability-boundary.md +0 -69
  508. package/docs/contracts/capability-packs.md +0 -217
  509. package/docs/contracts/ci-cost-budget.md +0 -111
  510. package/docs/contracts/ci-green-floor.md +0 -141
  511. package/docs/contracts/command-category-governance.md +0 -84
  512. package/docs/contracts/command-clusters.md +0 -399
  513. package/docs/contracts/command-surface-tiers.md +0 -176
  514. package/docs/contracts/command-taxonomy.md +0 -137
  515. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  516. package/docs/contracts/config-presets.md +0 -144
  517. package/docs/contracts/conformance.md +0 -84
  518. package/docs/contracts/consumer-bridge.md +0 -73
  519. package/docs/contracts/context-paths.md +0 -101
  520. package/docs/contracts/context-spine.md +0 -179
  521. package/docs/contracts/cost-dashboard.md +0 -143
  522. package/docs/contracts/cost-enforcement.md +0 -134
  523. package/docs/contracts/cost-profile-defaults.md +0 -110
  524. package/docs/contracts/cost-summary-schema.md +0 -107
  525. package/docs/contracts/creative-pack-boundary.md +0 -63
  526. package/docs/contracts/cross-repo-retrieval.md +0 -64
  527. package/docs/contracts/cross-wing-handoff.md +0 -134
  528. package/docs/contracts/daily-workspace.md +0 -147
  529. package/docs/contracts/decision-engine-gates.md +0 -120
  530. package/docs/contracts/decision-trace-v1.md +0 -177
  531. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  532. package/docs/contracts/design-artifact-verification.md +0 -153
  533. package/docs/contracts/discovery-manifest.md +0 -209
  534. package/docs/contracts/discovery-manifest.schema.json +0 -254
  535. package/docs/contracts/evidence-based-pruning.md +0 -102
  536. package/docs/contracts/explain-modes.md +0 -187
  537. package/docs/contracts/explain-trace.schema.json +0 -144
  538. package/docs/contracts/file-ownership-matrix.json +0 -13941
  539. package/docs/contracts/file-ownership-matrix.md +0 -135
  540. package/docs/contracts/frontmatter-contract.md +0 -140
  541. package/docs/contracts/ghostwriter-schema.md +0 -337
  542. package/docs/contracts/governance-enforcement-projection.md +0 -159
  543. package/docs/contracts/gui-wizard.md +0 -350
  544. package/docs/contracts/harness-expectations.md +0 -128
  545. package/docs/contracts/hook-architecture-v1.md +0 -325
  546. package/docs/contracts/host-agent-protocol.md +0 -110
  547. package/docs/contracts/implement-ticket-flow.md +0 -625
  548. package/docs/contracts/init-telemetry.md +0 -132
  549. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  550. package/docs/contracts/install-layout.md +0 -249
  551. package/docs/contracts/install-scopes.md +0 -82
  552. package/docs/contracts/installed-tools-lockfile.md +0 -144
  553. package/docs/contracts/installer-agent-mode.md +0 -137
  554. package/docs/contracts/iron-law-overrides.txt +0 -26
  555. package/docs/contracts/kernel-membership.md +0 -339
  556. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  557. package/docs/contracts/linear-ai-three-layers.md +0 -130
  558. package/docs/contracts/linter-structural-model.md +0 -181
  559. package/docs/contracts/load-context-budget-model.md +0 -259
  560. package/docs/contracts/load-context-schema.md +0 -220
  561. package/docs/contracts/local-analytics.md +0 -160
  562. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  563. package/docs/contracts/local-server-api.md +0 -134
  564. package/docs/contracts/low-impact-corpus-format.md +0 -95
  565. package/docs/contracts/mcp-beta-criteria.md +0 -130
  566. package/docs/contracts/mcp-cloud-scope.md +0 -355
  567. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  568. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  569. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  570. package/docs/contracts/mcp-tool-inventory.md +0 -64
  571. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  572. package/docs/contracts/measurement-baseline.md +0 -103
  573. package/docs/contracts/memory-visibility-v1.md +0 -160
  574. package/docs/contracts/mental-models.md +0 -336
  575. package/docs/contracts/migrate-command.md +0 -233
  576. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  577. package/docs/contracts/namespace.md +0 -125
  578. package/docs/contracts/no-runtime-boundary.md +0 -61
  579. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  580. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  581. package/docs/contracts/package-self-orientation.md +0 -163
  582. package/docs/contracts/pilot/agent-authority.md +0 -24
  583. package/docs/contracts/pilot/direct-answers.md +0 -70
  584. package/docs/contracts/pilot/language-and-tone.md +0 -63
  585. package/docs/contracts/plain-language-surface.md +0 -117
  586. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  587. package/docs/contracts/profile-system.md +0 -167
  588. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  589. package/docs/contracts/release-pr-gating.md +0 -151
  590. package/docs/contracts/release-sizing.md +0 -107
  591. package/docs/contracts/release-trunk-sync.md +0 -105
  592. package/docs/contracts/review-lens-schema.md +0 -64
  593. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  594. package/docs/contracts/role-experience.md +0 -125
  595. package/docs/contracts/router-blending.md +0 -71
  596. package/docs/contracts/rule-classification.md +0 -171
  597. package/docs/contracts/rule-interactions.md +0 -132
  598. package/docs/contracts/rule-interactions.yml +0 -260
  599. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  600. package/docs/contracts/rule-router.md +0 -287
  601. package/docs/contracts/safety-model.md +0 -129
  602. package/docs/contracts/session-profile-overlay.md +0 -157
  603. package/docs/contracts/settings-api.md +0 -264
  604. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  605. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  606. package/docs/contracts/skill-bundled-assets.md +0 -62
  607. package/docs/contracts/skill-discovery.md +0 -80
  608. package/docs/contracts/skill-distribution-channels.md +0 -66
  609. package/docs/contracts/skill-domains.md +0 -144
  610. package/docs/contracts/skill-dry-run.md +0 -47
  611. package/docs/contracts/skill-family-map.yml +0 -915
  612. package/docs/contracts/smoke-contracts.md +0 -144
  613. package/docs/contracts/subagent-boundary.md +0 -59
  614. package/docs/contracts/surface-agent-contracts.md +0 -153
  615. package/docs/contracts/surface-matrix.md +0 -108
  616. package/docs/contracts/surface-tiers.md +0 -81
  617. package/docs/contracts/telegraph-telemetry.md +0 -83
  618. package/docs/contracts/ticket-bundle-format.md +0 -233
  619. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  620. package/docs/contracts/trust-and-safety.md +0 -144
  621. package/docs/contracts/ui-stack-extension.md +0 -237
  622. package/docs/contracts/ui-track-flow.md +0 -329
  623. package/docs/contracts/universal-skills.md +0 -91
  624. package/docs/contracts/user-type-schema.md +0 -146
  625. package/docs/contracts/value-dashboard-spec.md +0 -378
  626. package/docs/contracts/value-report-schema.md +0 -168
  627. package/docs/contracts/workflow-packs.md +0 -121
  628. package/docs/contracts/workspace-boundary.md +0 -84
  629. package/docs/contracts/workspace-documents.md +0 -144
  630. package/docs/contracts/write-engine.md +0 -182
  631. package/docs/cookbook.md +0 -152
  632. package/docs/customization.md +0 -685
  633. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  634. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  635. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  636. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  637. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  638. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  639. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  640. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  641. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  642. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  643. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  644. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  645. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  646. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  647. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  648. package/docs/decisions/ADR-016-installer-architecture.md +0 -189
  649. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  650. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  651. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  652. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  653. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  654. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  655. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  656. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  657. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  658. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  659. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  660. package/docs/decisions/ADR-028-root-layout.md +0 -147
  661. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  662. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  663. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  664. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  665. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  666. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  667. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  668. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  669. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  670. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  671. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  672. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  673. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  674. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  675. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  676. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  677. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  678. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  679. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  680. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  681. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  682. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  683. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  684. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  685. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  686. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  687. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  688. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  689. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  690. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  691. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  692. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  693. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  694. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  695. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  696. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  697. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  698. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  699. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  700. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  701. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  702. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  703. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  704. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  705. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  706. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  707. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  708. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  709. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  710. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  711. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  712. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  713. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  714. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  715. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  716. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  717. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  718. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  719. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  720. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  721. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  722. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  723. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  724. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  725. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  726. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  727. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  728. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  729. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  730. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  731. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  732. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  733. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  734. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  735. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  736. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  737. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  738. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  739. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  740. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  741. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
  742. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
  743. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  744. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  745. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
  746. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  747. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  748. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  749. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  750. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  751. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  752. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  753. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  754. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  755. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  756. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  757. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  758. package/docs/decisions/INDEX.md +0 -136
  759. package/docs/deploy/connector-setup.md +0 -129
  760. package/docs/deploy/env-vars.md +0 -70
  761. package/docs/deploy/policy-cookbook.md +0 -130
  762. package/docs/deploy/quickstart.md +0 -112
  763. package/docs/deploy/small-team-recipe.md +0 -148
  764. package/docs/deploy/team-deployment-posture.md +0 -111
  765. package/docs/design/adversarial-council-eval.md +0 -106
  766. package/docs/design/council-vs-solo-baseline.md +0 -92
  767. package/docs/design/cross-model-parity-eval.md +0 -82
  768. package/docs/design/length-neutral-judge-rerun.md +0 -92
  769. package/docs/design/utilization-window-criteria.md +0 -51
  770. package/docs/development.md +0 -230
  771. package/docs/distribution/awesome-list-submission.md +0 -46
  772. package/docs/distribution/consumer-matrix.md +0 -96
  773. package/docs/distribution/launch-story-draft.md +0 -58
  774. package/docs/distribution/mcp-submission-checklist.md +0 -95
  775. package/docs/distribution/public-install-smoke.md +0 -68
  776. package/docs/distribution/registries.md +0 -117
  777. package/docs/distribution/registry-submissions.md +0 -85
  778. package/docs/distribution/telemetry-privacy.md +0 -128
  779. package/docs/distribution/telemetry-schema.md +0 -174
  780. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  781. package/docs/end-to-end-walkthroughs.md +0 -165
  782. package/docs/enforcement-by-host.md +0 -44
  783. package/docs/examples/agent-user.example.md +0 -22
  784. package/docs/experiences/agency.md +0 -49
  785. package/docs/experiences/content_creator.md +0 -49
  786. package/docs/experiences/developer.md +0 -49
  787. package/docs/experiences/finance.md +0 -50
  788. package/docs/experiences/founder.md +0 -49
  789. package/docs/experiences/ops.md +0 -49
  790. package/docs/featured-commands.md +0 -27
  791. package/docs/featured-skills.md +0 -95
  792. package/docs/flows.md +0 -67
  793. package/docs/getting-started-by-role.md +0 -190
  794. package/docs/getting-started-laravel.md +0 -72
  795. package/docs/getting-started-local-stdio.md +0 -77
  796. package/docs/getting-started.md +0 -254
  797. package/docs/github-topics.md +0 -93
  798. package/docs/governance-advantage.md +0 -72
  799. package/docs/governance.md +0 -96
  800. package/docs/guides/cross-repo-linked-projects.md +0 -93
  801. package/docs/guides/cross-repo-retrieval.md +0 -61
  802. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  803. package/docs/guides/local-analytics.md +0 -125
  804. package/docs/guides/local-knowledge.md +0 -127
  805. package/docs/guides/skill-discovery.md +0 -71
  806. package/docs/guides/skill-preview.md +0 -71
  807. package/docs/hook-payload-capture.md +0 -221
  808. package/docs/install-friction-report.md +0 -66
  809. package/docs/installation.md +0 -959
  810. package/docs/maintainers/branch-protection.md +0 -105
  811. package/docs/maintainers/dev-mode.md +0 -106
  812. package/docs/maintainers/optional-media-deps.md +0 -50
  813. package/docs/maintainers/system-map.md +0 -85
  814. package/docs/mcp-registries.md +0 -94
  815. package/docs/mcp-server.md +0 -175
  816. package/docs/mcp.md +0 -147
  817. package/docs/media/proof-demo.cast +0 -14
  818. package/docs/media/proof-demo.gif +0 -0
  819. package/docs/migration/consumer-template-consumption-model.md +0 -145
  820. package/docs/migration/divergences/README.md +0 -55
  821. package/docs/migration/divergences/_template.md +0 -50
  822. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  823. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  824. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  825. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  826. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  827. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  828. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  829. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  830. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  831. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  832. package/docs/migration/node-floor.md +0 -86
  833. package/docs/migration/v1-to-v2.md +0 -156
  834. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  835. package/docs/migrations/commands-1.15.0.md +0 -117
  836. package/docs/parity/bench-external.json +0 -58
  837. package/docs/parity/bench.json +0 -41
  838. package/docs/parity/command-frontmatter.md +0 -60
  839. package/docs/parity/external-runtime.md +0 -46
  840. package/docs/personas.md +0 -178
  841. package/docs/positioning-evidence.md +0 -86
  842. package/docs/profiles.md +0 -108
  843. package/docs/proof.md +0 -176
  844. package/docs/quality.md +0 -98
  845. package/docs/readme-split-plan.md +0 -102
  846. package/docs/recruits/_template.md +0 -81
  847. package/docs/release-runbook.md +0 -141
  848. package/docs/role-experiences.md +0 -19
  849. package/docs/safety.md +0 -30
  850. package/docs/second-brain-scope.md +0 -116
  851. package/docs/self-review-gate.md +0 -65
  852. package/docs/setup/enterprise-and-offline.md +0 -201
  853. package/docs/setup/mcp-client-config.md +0 -358
  854. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  855. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  856. package/docs/setup/mcp-cloud-setup.md +0 -183
  857. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  858. package/docs/setup/mcp-server-docker.md +0 -101
  859. package/docs/setup/per-ide/aider.md +0 -48
  860. package/docs/setup/per-ide/antigravity.md +0 -68
  861. package/docs/setup/per-ide/augment.md +0 -89
  862. package/docs/setup/per-ide/claude-code.md +0 -97
  863. package/docs/setup/per-ide/claude-desktop.md +0 -207
  864. package/docs/setup/per-ide/cline.md +0 -43
  865. package/docs/setup/per-ide/codebuddy.md +0 -63
  866. package/docs/setup/per-ide/codex.md +0 -46
  867. package/docs/setup/per-ide/continue.md +0 -68
  868. package/docs/setup/per-ide/copilot.md +0 -80
  869. package/docs/setup/per-ide/cursor.md +0 -125
  870. package/docs/setup/per-ide/droid.md +0 -65
  871. package/docs/setup/per-ide/gemini-cli.md +0 -45
  872. package/docs/setup/per-ide/jetbrains.md +0 -76
  873. package/docs/setup/per-ide/kilocode.md +0 -66
  874. package/docs/setup/per-ide/kiro.md +0 -72
  875. package/docs/setup/per-ide/opencode.md +0 -62
  876. package/docs/setup/per-ide/qoder.md +0 -63
  877. package/docs/setup/per-ide/roocode.md +0 -68
  878. package/docs/setup/per-ide/trae.md +0 -63
  879. package/docs/setup/per-ide/warp.md +0 -63
  880. package/docs/setup/per-ide/windsurf.md +0 -109
  881. package/docs/setup/per-ide/zed.md +0 -73
  882. package/docs/showcase.md +0 -209
  883. package/docs/skill-duplication-findings.md +0 -91
  884. package/docs/skills-catalog.md +0 -265
  885. package/docs/skills-taxonomy.md +0 -90
  886. package/docs/spawn-site-policy.md +0 -72
  887. package/docs/succession.md +0 -80
  888. package/docs/threat-model.md +0 -29
  889. package/docs/troubleshooting.md +0 -155
  890. package/docs/ui-track-mental-model.md +0 -121
  891. package/docs/us-vs-the-category.md +0 -38
  892. package/docs/value.md +0 -86
  893. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  894. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  895. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  896. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  897. package/docs/walkthroughs/daily-workspace.md +0 -127
  898. package/docs/wedge/production-validator/README.md +0 -81
  899. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  900. package/docs/wedge/production-validator/production-validator.md +0 -83
  901. package/docs/wizard.md +0 -173
@@ -1,145 +0,0 @@
1
- ---
2
- stability: stable
3
- ---
4
-
5
- # ADR — Level-6 Productization Closure
6
-
7
- > **Status:** Decided · 2026-05-14
8
- > **Context:** Closure record for `road-to-productization.md` and its
9
- > two sibling roadmaps (`road-to-proof-not-features.md`,
10
- > `road-to-better-skills-and-profiles.md` Block A). PR #43 lifted the
11
- > package from Level-4 (execution engine) to Level-5 (observable
12
- > decision system); this roadmap was the Level-5 → Level-6 jump:
13
- > **steerable + provable + onboardable**.
14
- > **Cross-links:** sibling roadmaps `road-to-productization`,
15
- > `road-to-proof-not-features`, and `road-to-better-skills-and-profiles`
16
- > — see `agents/roadmaps/` (or `agents/roadmaps/archive/` for the
17
- > closed ones) for current status.
18
-
19
- ## What shipped
20
-
21
- ### Decision-Engine steerability (Phase 2)
22
-
23
- - [`decision-engine-gates.md`](decision-engine-gates.md) — additive
24
- `decision_engine:` block in `.agent-settings.yml` with
25
- `min_confidence`, `block_on_risk`, `require_memory_hits`, `on_block`,
26
- `ask_timeout_seconds`, `on_block_fallback`. Absent block = unchanged
27
- observe-only behaviour.
28
- - Gate-conflict resolution matrix (P2.1a) + non-TTY timeout fallback
29
- (P2.1b) shipped before the gates themselves; the engine refuses to
30
- evaluate downstream gates after the first rejection and falls back
31
- to `on_block_fallback` in non-interactive contexts.
32
- - Confidence-band gate (P2.2) and risk-class gate (P2.3) wired into
33
- the scoring path. Memory-required policy (P2.4) unblocks on P6.2
34
- shipping (`affected` keys in the decision trace).
35
-
36
- ### UX simplification (Phase 3)
37
-
38
- - README "Quickstart" block — install → `/onboard` → `/work "first
39
- real task"`, contributor detail moved below the `## For contributors`
40
- fold.
41
- - Default `rule_loading_tier` flipped from `minimal` to `balanced`;
42
- rationale in [`cost-profile-defaults.md`](cost-profile-defaults.md).
43
- - `/onboard` step 11 prints the Quickstart command list inline.
44
- - CI gate: `task smoke-quickstart` runs the installer into a tmpdir
45
- and validates the documented default surface deterministically.
46
-
47
- ### Multi-stack skill depth (Phase 4)
48
-
49
- - `symfony-workflow` skill (~8.6 KB) — DI, Doctrine, Messenger,
50
- voters, Twig, console.
51
- - `nextjs-patterns` skill (~9.9 KB) — App Router, RSC boundaries,
52
- Server Actions, caching, route handlers, 14.x↔15.x deltas.
53
- - README stack table now separates Symfony / Next.js / Zend-Laminas
54
- rows; "Deepest reference stack" paragraph names the workflow-grade
55
- second tier explicitly.
56
-
57
- ### Architecture cleanup (Phase 5)
58
-
59
- - Auto-rules (`non-destructive-by-default`, `scope-control-policy`)
60
- audited: already refactored to trigger + Iron Law + pointer shape;
61
- bound by the kernel-budget linter at 4 000-char override ceiling
62
- (P5.1).
63
- - Rule-Interaction matrix marked rule-only by design;
64
- [`rule-interactions.md`](rule-interactions.md) § "Out of scope —
65
- orchestration surfaces" points at `decision-engine-gates`,
66
- `decision-trace-v1`, `memory-visibility-v1`,
67
- and the `ai-council` skill for Council × Memory × Work-Engine
68
- interactions (P5.2).
69
- - `type: orchestrator` frontmatter tag exempts cluster routers from
70
- the `command_missing_skill_references` linter check; 15 commands
71
- carry the tag (P5.3).
72
- - Beta-review marker protocol shipped in [`STABILITY.md`](STABILITY.md)
73
- § Beta-review markers; `scripts/check_beta_review_markers.py` wired
74
- into `task ci`; 39 beta contracts back-filled (P5.4).
75
- - Test-redundancy audit produced the `step-5-test-cleanup` sibling
76
- roadmap — audit-only, no deletions (P5.5).
77
-
78
- ### Release-trunk discipline (Phase 1)
79
-
80
- - [`release-trunk-sync.md`](release-trunk-sync.md) protocol; CI gate
81
- fails the release-prep branch when `main` is more than one tagged
82
- release behind (P1.3).
83
-
84
- ### Proof + cognition layers (Phases 6 + 7)
85
-
86
- - Memory-consequence in the trace: `affected` keys in
87
- [`decision-trace-v1.md`](decision-trace-v1.md) (sibling P2.1a–c).
88
- - README three-audience split (sibling P2.2a–c).
89
- - Hook doctor (sibling P2.3).
90
- - Persona spine: Core-tier 5-section + Specialist-tier 7-section
91
- spines locked in [`persona-schema.md`](persona-schema.md) (sibling
92
- Block A).
93
-
94
- ## What got cancelled
95
-
96
- - **P6.1 — Three real showcase sessions** (sibling P1.1–P1.4).
97
- Cancelled upstream — capturing real host-agent sessions requires a
98
- hosted-LLM runner that is out of scope for this roadmap. P1.0
99
- pre-flight shipped; the capture surface is ready when a runner
100
- exists. Reopen as `road-to-showcase-capture.md` once a runner is
101
- on the table.
102
- - **P8.1 — End-to-end Level-6 smoke** — same gating as P6.1.
103
- Structural coverage (`task smoke-quickstart` + decision-engine
104
- schema validator + gate-evaluator unit tests) covers the
105
- configuration surface deterministically; the live smoke remains
106
- the manual pre-tag gate.
107
-
108
- ## What stayed beta
109
-
110
- 39 contracts carry `keep-beta-until: 2026-08-12` (next audit
111
- deadline). None met the 30-day promotion floor at audit time.
112
- First-commit age range: 0–12 days. Audit cap is 90 days from the
113
- audit date; CI rejects undated betas, multiple markers, and
114
- keep-beta-until dates beyond the window.
115
-
116
- ## What got deferred to siblings
117
-
118
- - **Showcase capture** → future `road-to-showcase-capture.md` when a
119
- hosted-LLM runner is on the table.
120
- - **Test-suite deletion** → `step-5-test-cleanup` sibling roadmap
121
- (audit-only sibling spawned by P5.5; non-destructive by default).
122
- - **Persona Block B** (Architect / Risk-Officer extension) —
123
- anti-recommended per the sibling closure decision; not deferred,
124
- closed.
125
- - **Distribution / adoption** →
126
- `road-to-distribution-and-adoption.md`, gated on this roadmap
127
- closing (which this ADR records).
128
- - **MCP server work** — own strand, out of scope.
129
-
130
- ## Consequences
131
-
132
- - **Steerable:** the Decision Engine now gates on configurable
133
- thresholds; the configuration surface is documented and CI-tested.
134
- - **Provable:** memory hits/misses surface as `affected` keys in the
135
- decision trace; the trace shape is contract-stable.
136
- - **Onboardable:** a fresh user can land at a working `/work`
137
- invocation in three Quickstart steps without scrolling past the
138
- fold.
139
- - **Multi-stack credible:** Laravel stays the deepest reference;
140
- Symfony and Next.js shipped at workflow-grade depth; other stacks
141
- remain project-analysis-only with the honest delta language in the
142
- README.
143
- - **Architecturally tidy:** orchestrator commands no longer warn,
144
- beta contracts cannot rot undated, and the contract surface itself
145
- carries a periodic review obligation.
@@ -1,128 +0,0 @@
1
- ---
2
- stability: stable
3
- ---
4
-
5
- # ADR — MCP server runtime: Anthropic `mcp` Python SDK
6
-
7
- > **Status:** Decided · 2026-05-10 (recorded 2026-05-15).
8
- > **Context:**
9
- > [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md),
10
- > [`mcp-cloud-scope.md`](mcp-cloud-scope.md).
11
-
12
- ## Decision
13
-
14
- The MCP server at `scripts/mcp_server/` runs on **Python 3.11+** using the
15
- official Anthropic **`mcp` Python SDK** (PyPI; pinned to `mcp==1.27.1`
16
- per [`scripts/mcp_server/requirements.txt`](../../src/scripts/mcp_server/requirements.txt)).
17
- **FastMCP** (the higher-level decorator wrapper) and the **MCP TypeScript SDK**
18
- are explicitly rejected for this surface.
19
-
20
- The hosted Cloudflare Worker bridge (`internal/workers/mcp/`) is the only place a
21
- non-Python runtime is allowed, and it stays bound to the same wire contract
22
- (see [`mcp-cloud-scope.md`](mcp-cloud-scope.md)).
23
-
24
- ## Why this was a real question
25
-
26
- The package already ships Python under `scripts/` (work engine, AI Council,
27
- skill linter, install driver helpers) and ships zero Node-runtime code paths
28
- outside the npx dispatcher. Picking a runtime for the MCP server had three
29
- candidates that all could have shipped:
30
-
31
- 1. **MCP Python SDK** (low-level `Server` + `stdio_server` handlers).
32
- 2. **FastMCP** (higher-level Pythonic decorators built on the same SDK).
33
- 3. **MCP TypeScript SDK** (Node runtime, separate package).
34
-
35
- Without an ADR, this choice would have stayed implicit in the code and
36
- re-litigated every time a contributor read `scripts/mcp_server/server.py`.
37
-
38
- ## Why MCP Python SDK (low-level) wins
39
-
40
- | Criterion | MCP Python SDK | FastMCP | MCP TypeScript SDK |
41
- |---|---|---|---|
42
- | Runtime already in repo | ✅ Python is the `scripts/` runtime | ✅ Same | ❌ Adds Node-runtime path for one server |
43
- | A0 safety boundary fit (read-only `prompts/list`, `prompts/get`, narrow `tools/*` allowlist) | ✅ Direct handler control matches the [Phase 1 scope contract](mcp-phase-1-scope.md) | ⚠️ Decorator sugar can obscure the unimplemented-tool guard | ✅ Possible but duplicates Python helpers |
44
- | Import-surface guard (`tests/test_mcp_server.py` asserts no `subprocess`, `os.system`, `os.popen`, no HTTP client in `scripts.mcp_server.prompts/tools`) | ✅ Trivial to enforce — one module set to audit | ⚠️ FastMCP pulls in extra deps that widen the audit surface | ❌ Would need a TS-side equivalent |
45
- | Reuse of existing project helpers (`scripts/skill_linter.py`, `scripts/chat_history.py`) | ✅ Direct in-process call | ✅ Same | ❌ Cross-runtime IPC or duplicated logic |
46
- | Pin / supply-chain footprint | One pin (`mcp==1.27.1`) + `PyYAML` | Adds FastMCP version coupling on top | Node toolchain (`npm`, `tsc`, `dist/`) |
47
- | Smoke-test path | `task mcp:setup && task mcp:run` (already shipped) | Would re-wrap the same SDK | Separate test runner |
48
-
49
- Evidence the decision is already realised in code:
50
-
51
- - [`scripts/mcp_server/server.py`](../../src/scripts/mcp_server/server.py) — uses
52
- `mcp.server.Server`, `mcp.server.stdio.stdio_server`, `InitializationOptions`
53
- directly (no FastMCP decorators).
54
- - [`scripts/mcp_server/__init__.py`](../../src/scripts/mcp_server/__init__.py) —
55
- pins `__version__` and declares stability/contract pointer.
56
- - [`scripts/mcp_server/requirements.txt`](../../src/scripts/mcp_server/requirements.txt)
57
- — `mcp==1.27.1`, no FastMCP, no Node tooling.
58
- - [`scripts/mcp_setup.sh`](../../src/scripts/mcp_setup.sh) — onboarding writes
59
- the Claude Desktop config snippet against `python -m scripts.mcp_server`.
60
-
61
- ## Tool surface (Phase 1 scoping)
62
-
63
- Locked separately by [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md) Phase 4
64
- amendment. The current ALLOWLIST is exactly two tools, registered as a
65
- hardcoded module-level tuple in
66
- [`scripts/mcp_server/tools.py`](../../src/scripts/mcp_server/tools.py):
67
-
68
- | Tool | Mode | Source |
69
- |---|---|---|
70
- | `lint_skills` | read-only | wraps `scripts.skill_linter.lint_file` |
71
- | `chat_history_append` | path-scoped write | wraps `scripts.chat_history.append`; writes restricted to `agents/runtime/.agent-chat-history` (current default), `agents/.agent-chat-history`, or `.agent-chat-history` under the consumer root |
72
-
73
- No `push`, `merge`, `commit`, or prod-write surface is exposed. The
74
- unimplemented-tool envelope from
75
- [`mcp-tool-stub-envelope.md`](mcp-tool-stub-envelope.md) governs the rest of
76
- the [`consumer_tool_catalog.json`](../../src/scripts/mcp_server/consumer_tool_catalog.json)
77
- entries.
78
-
79
- `agent-config init`, `agent-config skills list`, and
80
- `agent-config council estimate` (the speculative tool surface in the
81
- step-14 stub) are **not** exposed today. They stay terminal-gated because
82
- their natural shape is a stateful CLI. The AI Council (claude-sonnet-4-5 +
83
- gpt-4o, 2026-05-10, 2 rounds, $0.06) converged on a hardcoded module-level
84
- ALLOWLIST with mandatory path-scoping for any write tool, and locked the
85
- rule that engine-state-bearing operations stay off the MCP wire until a
86
- real consumer ask justifies amending the A0 boundary.
87
-
88
- ## Install surface
89
-
90
- The step-14 stub speculated about an `agent-config install --mcp` flag.
91
- That shape was rejected in favour of two existing entrypoints, both
92
- already shipped:
93
-
94
- - **One-liner onboarding:** `task mcp:setup` runs
95
- [`scripts/mcp_setup.sh`](../../src/scripts/mcp_setup.sh) — creates
96
- `.venv-mcp/`, installs `mcp`, and prints the Claude Desktop JSON snippet
97
- the operator pastes into
98
- `~/Library/Application Support/Claude/claude_desktop_config.json`
99
- (with the per-OS variants documented in
100
- [`docs/mcp-server.md`](../mcp-server.md)).
101
- - **Config writer:** `./agent-config mcp:render --claude-desktop` writes
102
- the user-scope Claude Desktop config directly.
103
-
104
- Writing the global Claude Desktop config from the npx dispatcher without
105
- an operator pasting JSON is **not** part of this contract — Claude Desktop
106
- restarts and config-merge semantics make silent rewrites a footgun. The
107
- copy-paste path stays the canonical install shape until non-dev recruit
108
- evidence under `agents/evidence/eval-findings/` demonstrates the manual step is the
109
- actual adoption blocker.
110
-
111
- ## Consequences
112
-
113
- - Adding a third tool to the MCP server is a code-review event against
114
- `ALLOWLIST` in `scripts/mcp_server/tools.py`. No settings flag, no env
115
- var, no dynamic registration — see
116
- [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md) Phase 4 amendment.
117
- - Picking up a future protocol break (MCP SDK 2.x) is one pin bump in
118
- `scripts/mcp_server/requirements.txt`, gated on the 12 import-surface +
119
- behaviour tests in `tests/test_mcp_server.py` staying green.
120
- - Re-opening FastMCP or the TypeScript SDK requires a new ADR that
121
- supersedes this one with evidence (Python SDK shipping a deprecation
122
- or FastMCP closing the safety-audit gap on `tools/*`).
123
-
124
- ## See also
125
-
126
- - [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md) — Phase 1–6 hard contract.
127
- - [`mcp-cloud-scope.md`](mcp-cloud-scope.md) — hosted Worker bridge scope.
128
- - [`mcp-tool-stub-envelope.md`](mcp-tool-stub-envelope.md) — unimplemented-tool wire shape.
@@ -1,381 +0,0 @@
1
- ---
2
- stability: stable
3
- ---
4
-
5
- # ADR — Product UI Track: audit-as-hard-gate, design-review loop, stack dispatch
6
-
7
- > **Status:** Decided · R3 Phases 1–6 shipped · 2026-05-01
8
- > **Context:** [`ui-track-flow.md`](ui-track-flow.md)
9
- > **Builds on:** [`adr-prompt-driven-execution.md`](adr-prompt-driven-execution.md)
10
- > — R2 envelope routing and the band-action gate that R3 widens to UI.
11
- > **Defers to:** the visual-review-loop track for headless-browser
12
- > screenshot capture and visual-regression assertions.
13
-
14
- ## Decision
15
-
16
- R3 ships four directive sets — `backend` (R1/R2), **`ui`**, **`ui-trivial`**,
17
- and **`mixed`** — dispatched at the engine boundary on
18
- `state.directive_set`. The slot wiring is fixed by
19
- [`directives/ui/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/__init__.py),
20
- [`directives/ui_trivial/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui_trivial/__init__.py),
21
- and [`directives/mixed/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/mixed/__init__.py);
22
- the contract for each lives in [`ui-track-flow.md`](ui-track-flow.md).
23
-
24
- The UI set drives `audit → design → apply → review → polish → report`
25
- with three load-bearing properties:
26
-
27
- 1. **Existing-UI-audit is a hard gate.** No `apply` runs without
28
- `state.ui_audit` populated. The gate lives at directive level **and**
29
- at always-on rule level ([`ui-audit-gate`](../../.agent-src.uncondensed/rules/ui-audit-gate.md))
30
- so an agent acting outside the engine cannot bypass it.
31
- 2. **Design brief is locked microcopy.** `apply` consumes the brief
32
- verbatim — `PLACEHOLDER_PATTERNS` (`<placeholder>`, `lorem`, `todo:`,
33
- `tbd`, `xxx`) reject at producer and consumer.
34
- 3. **Polish has a hard 2-round ceiling.** Schema-level validation
35
- (`work_engine.state._validate_ui_polish`) rejects `rounds > 2` on
36
- disk; after round 2 the engine halts with ship-as-is / abort / hand-off.
37
-
38
- Halt budget on the happy path: **2 user halts** — audit pick + design
39
- sign-off. Apply / review / polish run silently when their producers
40
- write clean envelopes.
41
-
42
- ## Why this was a real question
43
-
44
- R1 + R2 produced a competent backend executor. UI work was the gap. The
45
- package already shipped UI skills (`fe-design`, `blade-ui`, `livewire`,
46
- `flux`) but they were flat tools: an agent could call `flux` directly,
47
- write a component that duplicated three existing primitives, ignore the
48
- project's design tokens, and ship microcopy with `<placeholder>` strings
49
- intact. Tests passed; the result felt undesigned.
50
-
51
- Three options were on the table:
52
-
53
- 1. **More UI skills, no directive set** — add `react-shadcn-ui`,
54
- `existing-ui-audit`, `ui-design-brief` as flat skills and let
55
- `/work` route to them via the existing dispatcher. Rejected:
56
- the audit step is the load-bearing piece, and a flat skill cannot
57
- enforce "no apply before audit". Rules can advise; only the
58
- dispatcher can refuse.
59
- 2. **One mega-skill (`product-ui`) that orchestrates internally** —
60
- single SKILL.md that runs audit → design → apply → review →
61
- polish in one shot. Rejected: the engine's halt-budget,
62
- sentinel-based replay, and Golden Transcript suite are designed
63
- for slot-level granularity. Folding five steps into one skill
64
- blinds the freeze-guard to mid-flow regressions.
65
- 3. **A new directive set per intent (chosen)** — `ui` for build /
66
- improve, `ui-trivial` for provably bounded edits, `mixed` for
67
- prompts that touch both layers. Adopted because each slot keeps
68
- its own sentinel, halt surface, and replay coverage; the audit
69
- gate is enforced at the dispatcher boundary and at the agent
70
- boundary; and stack-specific implementation is dispatched without
71
- widening the directive set.
72
-
73
- ## Audit as a hard gate (the load-bearing piece)
74
-
75
- The Lovable-grade differentiator is **"audit existing UI first, design
76
- before code, polish before ship"**. Everything in R3 follows from that.
77
-
78
- The audit gate refuses `apply` until `state.ui_audit` is well-formed:
79
- either `≥1 components_found` entry, or `greenfield=True` with a user-chosen
80
- `greenfield_decision` ∈ `{scaffold, bare, external_reference}`. An empty
81
- dict, `None`, or a populated dict without those keys is **not** findings;
82
- the gate emits `@agent-directive: existing-ui-audit` and refuses to advance.
83
-
84
- Two enforcement layers, deliberately redundant:
85
-
86
- - **Dispatcher layer** —
87
- [`directives/ui/audit.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/audit.py)
88
- refuses to write `outcomes["refine"] = "success"` without a populated
89
- audit. Purely structural; no LLM, no heuristic.
90
- - **Agent layer** — [`ui-audit-gate`](../../.agent-src.uncondensed/rules/ui-audit-gate.md)
91
- is an always-on rule that fires when the agent is about to write a
92
- component file outside the engine (free-form edit, side conversation,
93
- cloud surface). The rule encodes the same Iron Law in prose so cloud
94
- agents that don't ship the engine still honour it.
95
-
96
- **Why two layers.** A single layer would leak: cloud surfaces and
97
- free-form edits bypass the dispatcher entirely. A rule alone would not
98
- hold under engine-driven runs because rules don't refuse exit codes.
99
- Belt-and-suspenders is cheap (no shared state, no double-write) and
100
- the failure modes are different enough to justify it.
101
-
102
- ### Confidence-path resolution
103
-
104
- Audit findings carry a confidence label and per-candidate similarity.
105
- [`directives/ui/audit.py::_decide_path`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/audit.py)
106
- resolves to one of:
107
-
108
- - `high_confidence` — confidence `high` + ≥1 match with similarity
109
- ≥ `STRONG_SIMILARITY = 0.7` and no runner-up within
110
- `TIE_GAP = 0.05`. Audit folds findings into the design brief — no
111
- separate halt.
112
- - `ambiguous` — populated but below the high-confidence threshold or
113
- with a tie. Numbered-options halt records `audit_path = "ambiguous"`
114
- + `candidate_pick`.
115
- - `greenfield` — no `components_found`, `greenfield = True`, user picks
116
- `scaffold` / `bare` / `external_reference`.
117
-
118
- Constants are named, exported, and imported by tests so a re-tune
119
- re-captures Goldens explicitly rather than drifting silently.
120
-
121
- ## Design-review polish loop
122
-
123
- `apply` writes the rendered envelope. `review` (stack-dispatched) emits
124
- `findings` + `review_clean`. `polish` runs a bounded fix loop with a
125
- hard ceiling of `POLISH_CEILING = 2` rounds, validated at three layers
126
- (in-memory state, on-disk schema, dispatcher).
127
-
128
- | `review_clean` | `rounds` | Behaviour |
129
- |---|---|---|
130
- | `True` | any | `SUCCESS` — advance to report |
131
- | `False` | `< 2` | `BLOCKED` + `@agent-directive: ui-polish-<stack>`; agent applies fixes, re-runs review, increments `rounds` |
132
- | `False` | `== 2` | `BLOCKED` numbered options: ship-as-is / abort / hand off |
133
-
134
- **Why ceiling at 2.** Three rounds is one round too many: by round 3
135
- the agent is either making cosmetic tweaks the user can't notice, or
136
- spinning on a design problem the engine cannot resolve. Halting at 2
137
- hands the decision to the user with the cheapest possible context
138
- (two completed rounds of evidence). Rate of false-ceiling-hits will
139
- be visible in delivery reports; a tune to 3 stays a one-line constant
140
- change with a Golden re-capture.
141
-
142
- **Token-violation extraction.** Findings with `kind == "token_violation"`
143
- carry `category` and `value`. Polish classifies against
144
- `state.ui_audit.design_tokens`:
145
-
146
- - Matched value → fix uses the named token.
147
- - Unmatched value repeated > `TOKEN_REPEAT_THRESHOLD = 2` times →
148
- emits `polish_token_extraction_pending` to extract a new token
149
- before the next round runs. One-off unmatched values stay inline.
150
-
151
- This is the only place R3 mutates the design system. It runs only
152
- after a finding identifies a violation, and only when the same value
153
- appears three or more times — single-use values are not worth the
154
- ceremony.
155
-
156
- ## Halt budget — why max 2 on the happy path
157
-
158
- The Lovable feel comes from "user decides once, agent runs". Three
159
- halts (audit + design + polish-final) is the obvious shape but
160
- empirically wrong: by the time polish needs sign-off, the user is
161
- context-switched away. Two halts that pin the **decisive** choices
162
- (which existing UI to extend, what microcopy to ship) buy the agent
163
- the runway to finish silently.
164
-
165
- Additional halts surface only on real ambiguity:
166
- greenfield-undecided, shadcn-version-mismatch, audit-ambiguous,
167
- placeholder rejection, polish round (per dirty review, capped at 2),
168
- polish ceiling. GT-U11 (high-confidence) and GT-U12 (ambiguous) pin
169
- the budget at 1 and 2 halts respectively; a regression that adds a
170
- third halt fails replay.
171
-
172
- ## Trivial path and reclassification
173
-
174
- For provably bounded edits (single class swap, copy tweak, one-prop
175
- adjustment), the Phase-1 intent classifier writes
176
- `directive_set = "ui-trivial"`. The slot wiring collapses to
177
- `refine → ⊘ → ⊘ → ⊘ → apply → test → ⊘ → report` with
178
- `MAX_FILES = 1` and `MAX_LINES_CHANGED = 5` enforced inside
179
- [`directives/ui_trivial/apply.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui_trivial/apply.py).
180
-
181
- **Mandatory reclassification at apply time.** When a trivial edit
182
- exceeds the preconditions, apply flips
183
- `state.directive_set = "ui"` and the dispatcher restarts at audit.
184
- The reclassification is loud (delivery report records it) and
185
- counted (delivery report tracks the rate). Silent skips are the
186
- failure mode to watch for.
187
-
188
- **Why the bypass exists.** Without it, "fix the typo on the login
189
- button" runs the full audit + design loop. That is six halts the
190
- user does not want to take. The bypass restores common sense without
191
- weakening the audit gate — the gate stays in force whenever the
192
- preconditions don't hold.
193
-
194
- ## Stack detection and dispatch
195
-
196
- [`scripts/work_engine/stack/detect.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/stack/detect.py)
197
- reads `composer.json` and `package.json` once, applies a four-rule
198
- priority table, and writes `state.stack.frontend`:
199
-
200
- 1. `livewire/livewire` + `livewire/flux` → `blade-livewire-flux`
201
- 2. `react` + (`@radix-ui/*` OR `shadcn-ui` OR `components.json`) → `react-shadcn`
202
- 3. `vue` (any major) → `vue`
203
- 4. otherwise → `plain`
204
-
205
- Cached on `state.stack` against the manifest `mtime`. A `composer.json`
206
- or `package.json` change invalidates the cache; same conversation
207
- re-detects on the next dispatch.
208
-
209
- Errors (missing file, malformed JSON) downgrade to `plain` rather than
210
- raising — a wrong stack label is recoverable (audit catches it, user
211
- can override), a crash mid-dispatch is not.
212
-
213
- `apply`, `review`, `polish` each route on `state.stack.frontend` to a
214
- stack-specific directive (`ui-apply-blade-livewire-flux`,
215
- `ui-apply-react-shadcn`, `ui-apply-vue`, `ui-apply-plain`). The
216
- dispatch table shape is identical across all three slots; adding a
217
- stack adds three rows, one per slot.
218
-
219
- ## fe-design migration — reference, not executor
220
-
221
- `fe-design` previously functioned as both heuristics catalogue and
222
- direct executor. R3 splits the responsibilities:
223
-
224
- - **Reference (kept):** layout patterns, form / table design,
225
- responsive strategy, a11y heuristics. Cited by
226
- [`directives/ui/design.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/design.py).
227
- - **Executor (removed):** code-writing responsibilities migrated to
228
- the stack-specific apply / review / polish skills (`flux`,
229
- `livewire`, `blade-ui`, `react-shadcn-ui`, `ui-apply-vue`).
230
-
231
- The split lets the design step stay framework-agnostic while
232
- implementation skills stay focused on a single stack's idioms.
233
-
234
- ## Mixed orchestration — contract first, then UI, then stitch
235
-
236
- When a single input touches both layers, `mixed` runs
237
- `refine → memory → analyze → contract → ui → stitch → verify → report`.
238
- Sentinels:
239
-
240
- - `state.contract.contract_confirmed` — UI sub-flow refuses to start
241
- without it (defense-in-depth even if `outcomes["plan"] == "success"`).
242
- - `state.ui_review.review_clean` — mixed `ui` step's success condition.
243
- - `state.stitch.verdict = "success"` — stitch's success condition;
244
- `blocked` / `partial` halts unless `state.stitch.integration_confirmed`
245
- flips.
246
-
247
- **Why contract first.** UI shape and microcopy depend on the API
248
- surface (field names, error codes, paginated vs streamed). Building
249
- UI before locking the contract leads to two rounds of churn — once
250
- when the contract surfaces a constraint the design ignored, once
251
- when the integration test reveals a field-name mismatch. Locking
252
- the contract first costs one halt and saves an entire polish round.
253
-
254
- ## Tradeoffs accepted
255
-
256
- - **Three new directive sets** — bigger surface to maintain, more
257
- Goldens (12 GT-U entries vs. R2's 4 GT-P). Mitigated by shared
258
- refine/report handlers and the strict-verb replay harness.
259
- - **Hard 2-round polish ceiling** — some legitimate edge cases
260
- (a11y compliance edits across multiple components) need 3 rounds.
261
- Mitigated by ship-as-is / hand-off as explicit user choices at
262
- the ceiling halt.
263
- - **Stack detection is heuristic, not full-AST** — a project with
264
- `react` + `flux` (e.g. test scaffold) misclassifies as
265
- `react-shadcn`. Mitigated by user-override path: explicit `intent`
266
- in prompt overrides detection.
267
- - **Two-layer audit enforcement** — duplicates the gate logic in
268
- rule prose and dispatcher Python. Accepted: cloud surfaces don't
269
- ship the engine, and engine-driven flows can't rely on rule
270
- enforcement. Both layers are needed; the cost is documentation.
271
-
272
- ## Non-goals
273
-
274
- - Does **not** replace `/implement-ticket` or `/work` — same engine,
275
- new directive sets only.
276
- - Does **not** introduce a `/build` or `/build-screen` entrypoint.
277
- Intent classification at refine is enough; new commands wait on
278
- evidence of mis-routing.
279
- - Does **not** pin a removal date for `fe-design`; the reference
280
- positioning is stable.
281
- - Does **not** ship visual review (headless browser, screenshot
282
- capture, a11y tooling) — Roadmap 4 stub.
283
- - Does **not** ship project-local design-memory beyond what the
284
- audit step already extracts; the audit is the memory.
285
-
286
- ## Consequences — unblocks
287
-
288
- - **Roadmap 4** (visual review loop) can register a post-polish
289
- visual-assertion step against the existing `state.ui_apply`
290
- envelope.
291
- - **New stacks** (Svelte, SolidJS, Astro) plug in via the
292
- extension recipe ([`ui-stack-extension.md`](ui-stack-extension.md)) —
293
- detector heuristic + apply/review/polish skills + Golden fixture.
294
- No engine change.
295
- - **Mixed entrypoints** (`/refactor`, `/spike`, future) compose by
296
- building a new envelope kind plus a new directive set; the audit
297
- gate is reusable when the work touches UI.
298
-
299
- ## Follow-ups (not part of this ADR)
300
-
301
- - Track reclassification rate (`ui-trivial` → `ui` flips) in
302
- delivery reports; if > 30 % of trivial runs reclassify, the
303
- classifier needs tuning.
304
- - Track polish-ceiling-hit rate; if > 10 % of UI runs hit the
305
- ceiling, raise to 3 with a Golden re-capture.
306
- - Decide whether `state.ui_audit` should expire on long-running
307
- state files (currently sticky for the lifetime of the file).
308
- - Evaluate whether `react-shadcn` should split into
309
- `react-shadcn-v2` / `react-shadcn-v3` once shadcn ships its next
310
- major; the audit version-mismatch warning surfaces this signal
311
- without forcing a split today.
312
-
313
- ## R4 amendment — Visual Review Loop (2026-05-01)
314
-
315
- > **Status:** Decided · R4 Phases 0–4 shipped · Phase 5 in progress
316
-
317
- R4 narrows the polish-termination contract from "subjective ceiling
318
- only" to "subjective ceiling **plus** objective a11y block", adds a
319
- preview envelope on `state.ui_review.preview` (engine reads, skill
320
- writes — the engine never spawns a browser), and threads an a11y
321
- baseline through the existing audit step so pre-existing violations
322
- stay informational while new ones block.
323
-
324
- ### Acceptance criteria — locked verbatim from the roadmap
325
-
326
- - **AC #1 — Objective polish anchoring:** Polish loop terminates when
327
- (a) `findings` is empty OR (b) `rounds == POLISH_CEILING` AND no
328
- `a11y_violation` entries remain at severity ≥ floor. Round 2 with
329
- remaining a11y findings halts via `polish_a11y_blocking`, not via
330
- `polish_ceiling_reached`.
331
- - **AC #2 — Preview envelope:** `state.ui_review.preview` shape
332
- validated by engine; `render_ok: False` halts via
333
- `preview_render_failed`; trivial path bypasses the envelope
334
- entirely.
335
- - **AC #3 — A11y baseline:** `state.ui_audit.a11y_baseline` is read
336
- by the review gate; only NEW/CHANGED violations are actionable.
337
- Pre-existing violations stay in findings as informational, never
338
- block polish.
339
- - **AC #4 — Goldens pinned:** GT-U13, GT-U14, GT-U15 captured and
340
- replay-byte-equal. GT-U4 still passes (regression guard for the
341
- narrowed `polish_ceiling_reached`).
342
- - **AC #5 — `task ci` green** with all three new baselines wired
343
- into the harness and CHECKSUMS regenerated.
344
- - **AC #6 — Contracts updated:** `ui-track-flow.md` and
345
- `adr-product-ui-track.md` reflect the new gates and the
346
- polish-termination rewrite.
347
-
348
- ### Termination rewrite — load-bearing change
349
-
350
- The pre-R4 polish step had one ceiling halt
351
- (`polish_ceiling_reached`) with three options: ship as-is / abort /
352
- hand off. R4 keeps that branch for **subjective** findings (visual
353
- polish, design tweaks) and adds an explicit **objective** branch
354
- when remaining findings include `a11y_violation` entries:
355
-
356
- - `polish_a11y_blocking` halt with options:
357
- 1. **Extend** — sets `state.ui_polish.extension_used = True`; the
358
- schema validator widens `rounds` from `[0, 2]` to `[0, 3]` only
359
- while the flag is set. Once spent, the Extend option disappears
360
- on re-entry.
361
- 2. **Accept** — appends rule ids to
362
- `state.ui_review.a11y.accepted_violations`; on replay the review
363
- gate's `_apply_a11y_gate` filters those rule ids before
364
- synthesising findings, so the run round-trips through `SUCCESS`
365
- idempotently.
366
- 3. **Abort** — drops the UI request.
367
-
368
- The two halts share the polish step but never fire together: the
369
- explicit branch in `polish.run()` checks for `a11y_violation` entries
370
- before falling through to the subjective ceiling.
371
-
372
- ### Iron law
373
-
374
- The engine **never** renders. Playwright integration lives in the
375
- stack-specific review skills. The engine reads
376
- `state.ui_review.preview`; the skill writes it. `render_ok: False`
377
- halts the user; `skipped: True` bypasses the gate idempotently;
378
- `render_ok: True` with `screenshot_path` set threads the path into
379
- the delivery report's `artifacts` list. This boundary keeps the
380
- package Python + Bash and pushes the browser dependency into
381
- consumer-project setup.