@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,230 +0,0 @@
1
- ---
2
- adr: 061
3
- status: accepted
4
- date: 2026-06-07
5
- decision: corpus-grounding-layer
6
- supersedes: —
7
- superseded_by: —
8
- phase: frontend design intelligence (road-to-frontend-design-intelligence, Phase 0)
9
- type: structural
10
- ---
11
-
12
- # ADR-061 — Reusable corpus-grounding layer; frontend is its first instance
13
-
14
- ## Status
15
-
16
- **Accepted** · 2026-06-07. Records the AI-council convergence
17
- (anthropic/claude-sonnet-4-5 + anthropic/claude-opus-4-5 + openai/gpt-4o,
18
- deep 3-round debate, 2026-06-03 — no split, no tie-break) plus the four
19
- implementation forks resolved 2026-06-07 (anthropic/claude-sonnet-4-5 +
20
- openai/gpt-4o, converged).
21
-
22
- ## Context
23
-
24
- The package's UI directive set (`audit → design → apply → review → polish`)
25
- produces design briefs from agent judgment plus the `fe-design` heuristics —
26
- there is no queryable design-knowledge corpus. The MIT-licensed
27
- `nextlevelbuilder/ui-ux-pro-max-skill` repository ships exactly that: ~15
28
- tabular CSVs (161-row `ui-reasoning` with JSON decision rules, WCAG-adjusted
29
- color token sets, typography pairings, chart-selection knowledge, 16
30
- per-framework best-practice files) plus a dependency-free pure-stdlib BM25
31
- engine. The owner's escalated goal — *"real knowledge + real orchestration in
32
- every domain, as flexible and good as possible"* — reshaped the adoption from
33
- "copy a frontend corpus" into "build a reusable grounding layer; frontend is
34
- its first instance."
35
-
36
- ## Decision
37
-
38
- ### 1. Four-operation routing — never one corpus for everything
39
-
40
- Each domain's knowledge is split across four mechanisms; conflating them is a
41
- named failure mode ("grounding theater"):
42
-
43
- | Operation | When | Mechanism |
44
- |---|---|---|
45
- | **Grounding** | *before* action — constrains the option space | curated corpus + decision rules |
46
- | **Reference** | *during* action — factual lookup | on-demand `references/` / RAG, not the corpus |
47
- | **Validation** | *after* action — constraint check | rules / linters |
48
- | **Method** | the procedure itself | framework skill |
49
-
50
- A corpus **grounds** (pre-action). Mid-action lookup is reference; post-action
51
- checking is a rule; the procedure stays a skill.
52
-
53
- ### 2. One shared engine, invoked not inherited
54
-
55
- A generic engine lives at `src/skills/_lib/corpus-grounding/`
56
- (`bm25_search.py`, `decision_engine.py`, `schema_validator.py`) with a
57
- **versioned interface-stability contract** documented in its README before any
58
- domain adopts it. Domains plug in via a manifest; the engine is grep-able,
59
- never a hidden god-dependency. Retrieval: BM25 default with a structured
60
- `filters` pre-filter from day one; retriever selected by name
61
- (`bm25`/`structured`/`hybrid`); embeddings only on measured recall failure,
62
- never network-by-default.
63
-
64
- ### 3. Schema-agnostic plug-in contract — explicitly NOT uniform
65
-
66
- Each domain declares its own axes via a manifest (corpus files, search
67
- columns, output columns, reasoning-map location) and an output tier:
68
- **lookup-only → conditional-grounding (decision rules) → constraint-emission**.
69
- Forcing the frontend schema onto other domains is a named failure mode. Every
70
- corpus output carries a **confidence score + an evidence-gap line** by
71
- contract (prevents false precision / authority inflation).
72
-
73
- ### 4. Grounding default = lightweight consultation
74
-
75
- Default integration: a skill consults the corpus → proposes grounded options
76
- with confidence + evidence-gap → human confirms. Directive-engine integration
77
- is reserved for mature, naturally-sequential domains (frontend keeps its
78
- directive engine — Tier 2); "directive engines everywhere" is rejected as
79
- orchestration envy. `directives/ui/design.py` never imports the engine — the
80
- corpus call lives in the skill layer (`ui-design-brief` /
81
- `design-intelligence`), keeping the engine an optional dependency.
82
-
83
- ### 5. Qualification by decision-rule utility, NOT row count
84
-
85
- A domain qualifies when (i) its selection/constraint decision is
86
- externalizable as auditable rules that beat the agent's priors, and (ii)
87
- grounding happens before action. Verdicts:
88
-
89
- - **Strong**: security/threat-modeling (MITRE-derived), accessibility
90
- (WCAG/ARIA patterns), API design, DB-query tuning.
91
- - **Conditional (evidence-gated)**: finance *method selection*,
92
- architecture-pattern selection — thin pre-action selection corpora only;
93
- land only if a corpus measurably beats the existing framework skill over
94
- ≥10 real sessions (the council's change-my-mind anchor).
95
- - **Reject as corpus**: anything that is really reference (→ RAG), really
96
- validation (→ rule), volatile/culturally-specific (people/org fads), or a
97
- thin corpus that doesn't beat priors. Test: *if it fits in 5 lines of an
98
- always-on rule, it's a rule, not a corpus.*
99
-
100
- ### 6. Provenance / freshness — the upstream-source line is part of DoD
101
-
102
- Every adopted asset carries an inline upstream-source line: upstream repo +
103
- commit SHA + last-checked date. Per-corpus header additionally names a
104
- maintainer + refresh cadence + last-validated date (domain-adoption Gate 2).
105
- CI link-checks; volatile content is tiered by rot velocity or marked
106
- reference-only. **Definition of done for every adoption phase includes this
107
- line** (refresh stays mechanical, not archaeological).
108
-
109
- ### 7. Licensing
110
-
111
- Root corpus + scripts: MIT (Next Level Builder, 2024) → retain notice.
112
- `ui-styling`-derived material: **Apache-2.0** (vendored "claudekit"; the
113
- dedicated `LICENSE.txt` wins over the MIT frontmatter claim) → retain notice,
114
- mark modified files (§4b), ship the license copy alongside derived assets.
115
- Recorded in `src/skills/design-intelligence/ATTRIBUTION.md`.
116
-
117
- ### 8. Implementation forks (council-resolved 2026-06-07)
118
-
119
- | Fork | Resolution |
120
- |---|---|
121
- | Pack placement | **New `frontend-design` pack** (ADR-013 amendment, same PR). `requires: [engineering-base]`, `suggests: [react, nextjs]` — corpus is stack-agnostic data, React never required. Keeps ~1 MB of design data out of `engineering-base`. |
122
- | `google-fonts.csv` (745 KB, 1923 rows) | **Skip.** Redundant with the public Google Fonts API; `font-pairings-reference.csv` (73 curated pairings) carries the pairing decision. Document the API fallback for fonts outside the curated set. |
123
- | Stack-corpus surfacing | **`--stack <name>` search domain** on the one grounding engine — single mechanism, no 16-way prose-staleness vector. |
124
- | Brand→token pipeline | **Defer** with a watch note pinning the upstream commit SHA; adopt on first consumer demand. |
125
-
126
- ### 9. Out of scope (explicit)
127
-
128
- - The upstream slide/presentation engine (out of frontend scope).
129
- - The Gemini generative brand-asset suite (logo/CIP/icon/banner/social) —
130
- gated by `domain-adoption-policy`; see the domain-watch note. If gates
131
- pass later, it adapts into `pack-ai-video` (no second image-gen stack).
132
- - Business-pack corpora (people/org, GTM, founder-strategy verdicts) —
133
- rejected per the qualification rubric; reference belongs to RAG,
134
- validation to rules.
135
-
136
- ## Consequences
137
-
138
- - A new domain ships a manifest + data + a named owner — not a forked engine.
139
- - `engineering-base` stays lean; design intelligence is opt-in via the
140
- `frontend-design` pack.
141
- - The skill-bundled `scripts/` + `data/` delivery path becomes a sanctioned,
142
- tested pattern (delivery-mechanism gate, Phase 1) — load-bearing for every
143
- later domain corpus.
144
- - Corpus maintenance is a standing cost: named owner + cadence per corpus, or
145
- the corpus is not merged.
146
-
147
- ## Alternatives considered
148
-
149
- - **One corpus for everything (CSV per domain)** — rejected; conflates the
150
- four operations, produces grounding theater + maintenance bloat.
151
- - **Fold the corpus into `fe-design`** — rejected 2-of-3; size discipline.
152
- `fe-design` stays heuristics and *invokes* `design-intelligence`.
153
- - **Directive engines for every domain** — rejected; consultation default.
154
- - **Keep `.cjs` token generators on Node** — rejected unanimously; ported to
155
- Python (no Node runtime dependency for core flows).
156
- - **Adopt `google-fonts.csv`** — rejected; public-API-redundant bloat.
157
-
158
- ## References
159
-
160
- - `agents/roadmaps/archive/road-to-frontend-design-intelligence.md` —
161
- implementing roadmap, archived 2026-06-07 (full source analysis + phase
162
- plan + per-step evidence notes).
163
- - [ADR-013 — Discovery frontmatter contract](ADR-013-discovery-frontmatter-contract.md)
164
- — `frontend-design` pack amendment (2026-06-07).
165
- - `src/skills/design-intelligence/ATTRIBUTION.md` — upstream provenance +
166
- license obligations.
167
- - `agents/settings/contexts/domain-watch/generative-brand-assets.md` — gated
168
- Gemini-suite watch note.
169
- - Upstream: `nextlevelbuilder/ui-ux-pro-max-skill` @
170
- `b7e3af80f6e331f6fb456667b82b12cade7c9d35` (last checked 2026-06-07).
171
-
172
- ## Amendment — 2026-06-16 (§8/§9 superseded in part)
173
-
174
- The image/brand/typography work re-examined the gated and deferred items of
175
- §8/§9 on the merits for the product vision. A two-round merits council
176
- (anthropic/claude-sonnet-4-5 + openai/gpt-4o, 2026-06-13, design lens,
177
- web-research-grounded) overturned three of them. The four-operation routing
178
- (§1) and the no-forked-engine principle (§2) are unchanged — the brand corpus
179
- is a second instance of the same grounding engine.
180
-
181
- - **§8 brand→token defer — resolved, no longer deferred.** This work was the
182
- "first consumer demand" §8 named. `brand-to-tokens` ships: brand decisions →
183
- a DTCG `.tokens.json` source of truth → `design-tokens/scripts/tokens.py`
184
- (no Node). The same `.tokens.json` is the export pack-ai-image's brand-asset
185
- generation and the greenfield-scaffold seed consume.
186
- - **§8 font fork — superseded.** "Skip `google-fonts.csv`, rely on the live
187
- Google Fonts API" is replaced by **adopt-lite pinned metadata**: pin the MIT
188
- `google-font-metadata` mirror (or a slim top-N slice) as a deterministic
189
- offline **Reference**; the live API needs a key, is nondeterministic, and
190
- carries no pairing metadata. `font-pairings-reference.csv` stays the curated
191
- pairing Reference with a freshness contract.
192
- - **§9 brand-asset generation — superseded, ADOPTED.** The Gemini generative
193
- brand-asset suite (logo/CIP/banner/social) was gated as a possible second
194
- image-gen stack. The merits pass established it never was one: generation is
195
- structured prompting + brand-token injection + provider routing on the
196
- **existing** adapters (now the neutral `scripts/media/` substrate), with a
197
- `recraft`/LLM-SVG vector path for marks raster models can't emit. Generation
198
- lives in **pack-ai-image**; brand governance/tokens stay in **pack-brand**,
199
- which exports tokens pack-ai-image consumes (dependency B → A, never
200
- inverted). The `domain-watch/generative-brand-assets.md` gate is cleared.
201
- - **§9 slide/presentation engine — confirmed out of scope, but reasoned.**
202
- Document assembly ≠ brand UX; owning a render engine (reveal.js / Presenton /
203
- Gamma) is scope creep. pack-brand instead **exports validated brand
204
- templates** (Marp/reveal YAML with locked brand variables) for the user's own
205
- deck tools — enforcement via the template, not engine ownership. Re-open only
206
- on evidenced demand.
207
-
208
- The brand corpus deviates from the §8-implied "adopt the SHA-pinned claudekit
209
- brand sub-skills" framing: it is **original-authored** from public brand
210
- frameworks (Jung / Mark-Pearson archetypes, public messaging frameworks),
211
- `upstream: null` — honest provenance, no third-party SHA to pin, no §4b file
212
- marking. The shared grounding engine is still attributed via
213
- `design-intelligence/ATTRIBUTION.md`.
214
-
215
- Implementing roadmap: `road-to-image-brand-typography` (Phase A–D),
216
- archived 2026-06-16; live-validation + command-surface follow-on tracked in
217
- its sibling follow-up roadmap.
218
-
219
- ## Resolution note — retrieval ranking at scale (2026-07-09)
220
-
221
- The "no engine fork / no minisearch-class dependency" decision is honoured at
222
- memory/knowledge retrieval scale by a **hand-rolled BM25 + trigram index**
223
- (`src/scripts/_lib/lexical_index.ts`, pure Node stdlib) rather than SQLite-FTS5
224
- or any embedded search engine. It activates at the `lint_knowledge_scale`
225
- tripwire (>200/type or >500 total files) and replaces the coarse `_score`
226
- bucket scorer's ranking; measured lift on the retrieval-precision corpus is a
227
- mean top tie-set of 3.333 → 1.0 with precision@1/@5 unchanged
228
- (`internal/bench/reports/lexical-ranking.json`). This closes the ADR-061 ↔
229
- FTS5 open question flagged in `road-to-retrieval-substrate-hardening` (B2): the
230
- BM25 core ADR-061 sanctioned is realised without an engine dependency.
@@ -1,121 +0,0 @@
1
- ---
2
- adr: 062
3
- status: accepted
4
- date: 2026-06-08
5
- decision: encrypt-at-rest-store-architecture
6
- supersedes: —
7
- superseded_by: —
8
- phase: employee-product Phase 8 (road-to-employee-product-and-external-proof, Step 3)
9
- type: structural
10
- ---
11
-
12
- # ADR-062 — Encrypt-at-rest store architecture: AES-256-GCM + Python-authoritative store access
13
-
14
- ## Status
15
-
16
- **Accepted** · 2026-06-08. Design converged via two-round AI-council debate
17
- (anthropic/claude-sonnet-4-5 + openai/gpt-4o, design mode, 2026-06-08). Both
18
- members independently converged in round 2. This ADR records the architecture;
19
- the **implementation is a dedicated follow-up PR** (scope + must-haves below) —
20
- it is deliberately **not** bundled into a reconciliation diff.
21
-
22
- ## Context
23
-
24
- Phase 8 of the employee-product workstream adds at-rest encryption for the
25
- three workspace stores under `~/.event4u/agent-config/workspace/`
26
- (sessions `*.jsonl`, documents `*.md` + `*.history.jsonl`, analytics
27
- `events.jsonl`). The crypto layer `workspace_crypto.py` is shipped behind the
28
- `workspace.encrypt_at_rest` flag (default **OFF** — no field data is encrypted
29
- yet). A prior council (2026-06-07) deferred the *store wiring* to its own PR
30
- because the Node-side crypto/key approach was undecided.
31
-
32
- Two problems had to be resolved before any wiring:
33
-
34
- 1. **Cipher drift.** `docs/contracts/at-rest-encryption.md` specifies
35
- **AES-256-GCM** (envelope `AC1\0` + version + 12-byte nonce + 16-byte tag +
36
- ciphertext) and lists `keytar` (Node) alongside `keyring` (Python). The
37
- shipped `workspace_crypto.py` actually uses **Fernet** (AES-128-CBC +
38
- HMAC-SHA256, magic `E4U-WSv1`). Fernet is not natively reproducible in
39
- Node's `node:crypto`; AES-256-GCM is.
40
- 2. **The Node GUI server reads/writes the stores directly** (`src/server/routes/workspace.ts`
41
- via `fs` — readdir/readFile/writeFile/appendFile, filtering by `.jsonl` /
42
- `.md`). If Python writes `.enc`, those direct reads break.
43
-
44
- ## Decision
45
-
46
- ### A — Cipher: align the code to the contract's **AES-256-GCM**
47
-
48
- The code is wrong, not the contract. Re-cipher `workspace_crypto.py` from
49
- Fernet to AES-256-GCM with the documented `AC1\0` + version-byte envelope,
50
- keeping the public API (`encrypt_bytes` / `decrypt_bytes` / `encrypt_file` /
51
- `decrypt_file`) and the plaintext-pass-through-on-read back-compat. Reject
52
- unknown envelope versions explicitly. Safe to do because the flag is default-OFF
53
- and **no Fernet-encrypted field data exists** to migrate. AES-256-GCM is native
54
- in both `cryptography` (Python `AESGCM`) and `node:crypto`, so the same envelope
55
- is byte-reproducible across runtimes.
56
-
57
- ### B — Store access: **Option 4, Python-authoritative end-to-end**
58
-
59
- The Node GUI server stops reading/writing the encrypted store files directly.
60
- All store access routes through the Python CLI modules (the canonical writers),
61
- which own encryption. Rejected alternatives:
62
-
63
- - **keytar in Node** — `keytar` is deprecated (Dec 2022, superseded by
64
- Electron `safeStorage`); cross-library keychain interop between Python
65
- `keyring` and `keytar` is unproven. Both council members rejected it.
66
- - **Reimplement Fernet in Node** — moot once A picks AES-256-GCM, and still a
67
- new format-fiddly surface.
68
- - **Dual native crypto** — duplicates the security-critical path in two
69
- runtimes; the council called line-count "narrowness" that leaves a dual-write
70
- footgun a false economy.
71
-
72
- To avoid Python interpreter cold-start cost (the dissent's concern, sharp on
73
- Windows ~200–500 ms), store reads use **batched** CLI calls (e.g.
74
- `workspace_sessions.py list --decrypt` returns all decrypted records in one
75
- subprocess), not one subprocess per file.
76
-
77
- ## Consequences
78
-
79
- - The follow-up PR is a **real refactor of the GUI data path**, not a wiring
80
- one-liner. The council was explicit: *"ship the right architecture now, or
81
- don't ship encryption at all"* — Option 1 (shell-out as a temporary
82
- intermediate) was rejected as process theatre.
83
- - The flag stays **default OFF** through this work; the `true` flip waits for
84
- external (recruit-session) validation per `agents/roles/EVIDENCE_BASIS.md`'s
85
- sibling reasoning.
86
-
87
- ### Must-haves before the implementation PR is greenlit (council checklist)
88
-
89
- 1. **`cryptography` exercised in CI.** Today the round-trip tests in
90
- `tests/test_workspace_crypto.py` **skip** when `cryptography` is absent —
91
- and it is absent in CI, so the cipher has never actually round-tripped under
92
- test. The implementation PR MUST add `cryptography` to the test job so the
93
- AES-256-GCM round-trip genuinely runs (otherwise the cipher ships unverified
94
- — a `verify-before-complete` violation on a security primitive).
95
- 2. **Migration with concurrency safety.** Detect plaintext → encrypt-in-place
96
- atomically (temp + fsync + rename + delete), roll back on any error; refuse
97
- to migrate while the GUI server is running (or make it non-destructive).
98
- 3. **Key rotation path.** Wrong-key today = permanent data loss; ship
99
- `workspace_crypto.py rekey` + a documented recovery/export flow.
100
- 4. **Kill-switch / rollback criteria.** `AGENT_CONFIG_NO_ENCRYPTION` already
101
- forces-disable reads; add an emergency bulk-decrypt and a documented
102
- error-rate auto-disable.
103
- 5. **Envelope version semantics.** Version byte defined; unknown versions
104
- rejected with a clear error, not a crash.
105
- 6. **Cross-runtime integration test.** Python encrypts → Node reads back the
106
- decrypted record through the Python-authoritative path (Option 4).
107
-
108
- ## Alternatives
109
-
110
- See § Decision B rejected alternatives (keytar / Fernet-in-Node / dual native)
111
- and the cipher A alternative (keep Fernet + reconcile the contract to document
112
- it — rejected because it forecloses native Node interop and the contract's
113
- AES-256-GCM was the deliberate original design).
114
-
115
- ## References
116
-
117
- - Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
118
- - Crypto layer: `src/cli/python/workspace_crypto.py`.
119
- - GUI store IO: `src/server/routes/workspace.ts`.
120
- - Prior deferral: AI-council 2026-06-07 (recorded in the roadmap Phase 8 Step 3 deferral note).
121
- - Roadmap: `agents/roadmaps/archive/road-to-employee-product-and-external-proof.md` Phase 8.
@@ -1,83 +0,0 @@
1
- ---
2
- adr: 063
3
- status: accepted
4
- date: 2026-06-08
5
- decision: append-jsonl-encryption-deferred
6
- supersedes: —
7
- superseded_by: —
8
- phase: employee-product Phase 8 (road-to-employee-product-and-external-proof, Step 3)
9
- type: structural
10
- ---
11
-
12
- # ADR-063 — Append-JSONL store encryption deferred (nonce-management gate)
13
-
14
- ## Status
15
-
16
- **Accepted** · 2026-06-08. AI-council (claude-sonnet-4-5 + gpt-4o, design mode,
17
- 2026-06-08). Records why encrypt-at-rest Part B ships **documents-only** and
18
- what must be solved before the append-heavy JSONL stores are encrypted.
19
-
20
- ## Context
21
-
22
- ADR-062 chose AES-256-GCM + Option-4 Python-authoritative store access. The
23
- three workspace stores have different write shapes:
24
-
25
- - **documents** — whole-file `<slug>.md`. Whole-file `.md.enc` is a natural
26
- fit; encrypted in Part B.
27
- - **sessions** — `sessions/<day>/<id>.jsonl`, **append-heavy** (one record per
28
- host turn).
29
- - **analytics** — `analytics/events.jsonl`, **append-heavy** on a hot UI path.
30
- - **document revision logs** — `<slug>.history.jsonl`, append-once-per-save.
31
-
32
- AES-256-GCM encrypts a whole blob — you cannot append a line to an encrypted
33
- blob. Two strategies were weighed:
34
-
35
- - **Whole-file read-decrypt-append-encrypt-rewrite** per append: O(file) per
36
- event under a lock — unacceptable for the analytics hot path.
37
- - **Per-record encryption** (one envelope per line, append stays append):
38
- attractive, but the council flagged it as **cryptographically unsafe as
39
- sketched** — AES-GCM security collapses on (key, nonce) reuse, and the
40
- design had no nonce-derivation scheme, no crash/concurrency reuse proof, no
41
- nonce-exhaustion handling.
42
-
43
- ## Decision
44
-
45
- **Defer encryption of all append-JSONL stores** — `sessions/*.jsonl`,
46
- `analytics/events.jsonl`, and document `*.history.jsonl` — to a dedicated
47
- follow-up. Part B encrypts document `.md` bodies only (the highest-sensitivity
48
- content: offer / mail / memo / brief bodies). The append-JSONL set stays
49
- plaintext until a per-record encryption protocol is designed and ADR'd.
50
-
51
- ## Consequences
52
-
53
- - Document bodies are encrypted end-to-end (write + Python-authoritative read);
54
- edit metadata in `.history.jsonl` and session/analytics records remain
55
- plaintext for now. The at-rest-encryption contract scope table is updated to
56
- mark this split explicitly so no one assumes the JSONL stores are protected.
57
- - The flag stays default-OFF; nothing about today's behaviour changes.
58
-
59
- ### Must-solve before append-JSONL encryption (the follow-up ADR's gate)
60
-
61
- 1. **Nonce-derivation scheme** that provably never reuses (key, nonce):
62
- deterministic from (key, file-id, monotonic-record-index) or a
63
- crash-persistent counter — not bare random per line.
64
- 2. **Concurrent-append serialization** (file lock + atomic record-index
65
- allocation) so two writers cannot mint the same nonce.
66
- 3. **Crash safety** — partial/truncated final record detected and skipped, not
67
- fatal; counter state survives process restart.
68
- 4. **Nonce-exhaustion / rotation** before the GCM 2^32-per-key limit.
69
- 5. **Hot-path cost** — analytics `emit()` must stay non-blocking; per-record
70
- encryption must not reintroduce whole-file rewrite.
71
-
72
- ## Alternatives
73
-
74
- Whole-file-rewrite-per-append (rejected: O(file) on the hot path) and
75
- ship-all-three-now with random per-line nonces (rejected: nonce-reuse
76
- vulnerability). See ADR-062 for the cipher + Option-4 architecture this builds
77
- on.
78
-
79
- ## References
80
-
81
- - ADR-062 — encrypt-at-rest store architecture (cipher + Option 4).
82
- - Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
83
- - Stores: `src/cli/python/workspace_sessions.py`, `workspace_analytics.py`, `workspace_documents.py`.
@@ -1,113 +0,0 @@
1
- ---
2
- adr: 064
3
- status: accepted
4
- date: 2026-06-08
5
- decision: append-jsonl-per-record-encryption
6
- supersedes: —
7
- superseded_by: —
8
- phase: employee-product Phase 8 (road-to-employee-product-and-external-proof, Step 3)
9
- type: structural
10
- ---
11
-
12
- # ADR-064 — Append-JSONL per-record encryption protocol
13
-
14
- ## Status
15
-
16
- **Accepted** · 2026-06-08. Resolves the nonce-management gate ADR-063 set.
17
- Design converged via AI-council (claude-sonnet-4-5 + gpt-4o, design mode,
18
- 2026-06-08) — a cautious round that raised six refinements (nonce-count
19
- awareness, single-writer enforcement, per-store corruption policy, envelope
20
- versioning, OS preconditions, scope sequencing); the protocol below folds them
21
- in. First store shipped under this protocol: **analytics**.
22
-
23
- ## Context
24
-
25
- ADR-063 deferred encrypting the append-heavy JSONL stores because AES-GCM
26
- cannot append to a blob and the per-record scheme needed a nonce-management
27
- design. This ADR fixes the protocol.
28
-
29
- ## Decision
30
-
31
- ### Protocol — per-record self-contained envelope
32
-
33
- Each JSONL record is encrypted independently into its own `AC1\0` AES-256-GCM
34
- envelope (the Part-A cipher, with its version byte), base64-encoded as **one
35
- line**. Append = `encrypt_line(json)` → a single atomic `O_APPEND` write. No
36
- whole-file rewrite, no shared counter. Helpers live in `workspace_crypto`
37
- (`encrypt_line` / `decrypt_line`); `decrypt_line` passes a plaintext JSON line
38
- (`{`/`[`-prefixed) through unchanged, so a file with mixed plaintext+encrypted
39
- records (flag flipped mid-life) reads correctly.
40
-
41
- - **Nonce (N1):** a fresh **random 96-bit nonce per record**. NIST SP 800-38D
42
- permits random-construction nonces up to 2^32 invocations per key; a session
43
- or analytics file is many orders below that, and `rekey` resets the per-key
44
- count. Random nonces carry **no crash-fragile counter state** — the prior
45
- round's "catastrophic reuse" concern was about counters resetting on crash,
46
- which this scheme does not use.
47
- - **Concurrency (N2):** correctness rests on **single-writer-per-file**, not
48
- locks. Each record line is independent (own nonce, own envelope), so one
49
- atomic append per line suffices. The single-writer guarantee is
50
- **architectural**: the Python store module is the sole writer. For sessions
51
- (Node reads+writes today) this means routing through the Python CLI
52
- (ADR-062 Option 4) so there is still exactly one writer — the protocol is
53
- single-writer-based, **not** Python-only-based, so it extends to sessions
54
- unchanged.
55
- - **Corruption (N3) — per store:** *analytics* is best-effort telemetry →
56
- skip-and-continue on a torn/undecryptable line. *Document history* (when it
57
- lands) is state-critical → fail-closed. The reader policy is the store's
58
- call, not the protocol's.
59
- - **Versioning (N4):** the envelope version byte (Part A) lets a future
60
- scheme coexist; unknown versions already reject.
61
-
62
- ### Operations parity
63
-
64
- Each encrypted append-JSONL store ships `migrate` (plaintext → per-record
65
- `.enc` lines, idempotent), `decrypt-all` (kill-switch → plaintext, works
66
- flag-off), and `rekey` (rotate key + re-encrypt every record). `prune` (and any
67
- age/query reader) is decrypt-aware but keeps the original encrypted line at
68
- rest.
69
-
70
- ### Rollout order
71
-
72
- 1. **analytics** — Python-only, single-writer already true. **Shipped.**
73
- 2. **document `.history.jsonl`** — Python-only, inside `workspace_documents.py`;
74
- its whole-file `.md` migrate/rekey/decrypt-all gained a parallel per-line
75
- history pass. **Shipped.**
76
- 3. **sessions** — Node reads+writes; the Option-4 Node-session refactor routed
77
- all 5 endpoints (list / read / launch / append) through the Python CLI
78
- (`--root` validated, `--host` / `--data-json` for record fidelity).
79
- **Shipped.** All three append-JSONL stores now encrypt at rest.
80
-
81
- > **Routing choice (sessions):** the refactor went **uniform** Python-routing
82
- > (reads + writes always through the CLI, like documents), not the
83
- > conditional flag-gated routing this ADR's design round leaned toward. Uniform
84
- > removes the need for Node to read the flag (Python owns the flag decision —
85
- > true single source of truth), is consistent with the documents precedent, and
86
- > is fully CI-testable (plaintext path needs no `cryptography`). The design
87
- > round's perf concern targeted *machine-hot* appends; session appends are
88
- > human-turn-paced, so the per-op subprocess cost is imperceptible.
89
-
90
- ## Consequences
91
-
92
- - Analytics records are encrypted at rest when the flag is on; the flag stays
93
- **default-OFF**, so nothing changes for today's users.
94
- - `emit()` stays non-blocking and never raises: a crypto error DROPS the event
95
- (consistent with the existing scrub-fail-drop), never persists it
96
- unencrypted.
97
- - The shared `encrypt_line`/`decrypt_line` protocol is now the contract the
98
- history + session follow-ups reuse verbatim.
99
-
100
- ## Alternatives
101
-
102
- Counter-based nonces (rejected: crash-fragile state, concurrent-index
103
- allocation) and whole-file read-modify-rewrite per append (rejected by ADR-063:
104
- O(file) on the analytics hot path). See ADR-062 (cipher + Option 4) and ADR-063
105
- (the deferral gate this resolves).
106
-
107
- ## References
108
-
109
- - ADR-062 — cipher + Python-authoritative architecture.
110
- - ADR-063 — the deferral + nonce gate this resolves.
111
- - `src/cli/python/workspace_crypto.py` (`encrypt_line`/`decrypt_line`),
112
- `workspace_analytics.py` (emit/read/prune/migrate/decrypt-all/rekey).
113
- - Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).
@@ -1,86 +0,0 @@
1
- ---
2
- adr: 065
3
- status: accepted
4
- date: 2026-06-08
5
- decision: tier3-inbox-handoff-v0
6
- supersedes: —
7
- superseded_by: —
8
- phase: employee-product Phase 8 (road-to-employee-product-and-external-proof)
9
- type: structural
10
- ---
11
-
12
- # ADR-065 — Tier-3 host hand-off inbox: plaintext, ephemeral v0 (encryption declined)
13
-
14
- ## Status
15
-
16
- **Accepted** · 2026-06-08. Design converged via AI-council (claude-sonnet-4-5 +
17
- gpt-4o, design mode, 2026-06-08). The encrypt-at-rest arc (ADR-062/063/064)
18
- listed the inbox as the one deferred store; the council round that scoped it
19
- found the inbox did not exist yet **and** that encrypting it would be security
20
- theater. This ADR records the honest v0: build the hand-off, ship it plaintext.
21
-
22
- ## Context
23
-
24
- ADR-023 specifies a **Tier-3 host hand-off**: for hosts the workspace cannot
25
- drive (Augment, Cursor, Cline, Windsurf, JetBrains), the workspace writes the
26
- rendered prompt into `~/.event4u/agent-config/workspace/inbox/<id>.md` and
27
- surfaces a copy-to-clipboard banner; the user opens the host themselves. No
28
- code wrote or read that file — the feature was specified, never built.
29
-
30
- ## Decision
31
-
32
- Build the Tier-3 inbox as a **plaintext, ephemeral, content-minimal** store.
33
-
34
- - **Plaintext — encryption declined.** The inbox holds a prompt the user
35
- *reads to copy-paste*; the adversary an at-rest cipher defends against is a
36
- filesystem attacker. That same prompt content already lives in the
37
- **encrypted sessions store**. Encrypting the inbox therefore stops **no
38
- incremental threat** — it would add migrate/rekey/decrypt-all/Python-routing
39
- complexity for zero marginal security. Revisit only if a distinct threat
40
- model emerges (e.g. the inbox starts holding content not in sessions).
41
- - **Ephemeral.** `prune` drops hand-off files older than 24h; the store is a
42
- transient hand-off surface, not durable storage.
43
- - **Content-minimal (v0).** The file is a small frontmatter header
44
- (id / role / task / session / created_at) + the **rendered prompt body**
45
- supplied by the caller. Skill-body pre-rendering **shipped** as a follow-up
46
- ([`ADR-066`](ADR-066-skill-body-prerendering.md) — `--skill-hint` resolves the
47
- skill body into the hand-off). Still **deferred:** host-tier **auto-detection**
48
- (v0 takes the hand-off intent explicitly from the caller).
49
- - **Python-authoritative, ships dark.** `workspace_inbox.py`
50
- (write / read / list / forget / prune, `--root` validated to
51
- `…/workspace/inbox`) is the store; the Node `POST /api/v1/workspace/inbox`
52
- + `GET /api/v1/workspace/inbox/:id` endpoints route through it and are
53
- **gated behind `AGENT_CONFIG_TIER3_INBOX` (default off)** until the hand-off
54
- UX is validated. The write endpoint returns `{id, path, banner}`; the banner
55
- text only — clipboard / UI wiring is the Preact shell's job, deferred.
56
- - A pasted credential in the prompt is **scrubbed** on write (disposable
57
- hand-off posture, same as the session/analytics telemetry stores).
58
-
59
- ## Consequences
60
-
61
- - The Tier-3 hand-off has a real, tested writer/reader for the first time;
62
- the encrypt-at-rest arc is closed (the inbox is intentionally plaintext, not
63
- an outstanding encryption gap).
64
- - The feature ships dark — zero behaviour change until an operator sets the
65
- flag.
66
- - If the inbox later carries content NOT mirrored in sessions, encryption
67
- must be revisited (reuse the documents whole-file `.md.enc` pattern); the
68
- contract scope table records this trigger.
69
-
70
- ## Alternatives
71
-
72
- - **Encrypt the inbox** (the arc's original intent) — rejected as security
73
- theater per the threat-model analysis above.
74
- - **Fold into `launch`** (write the inbox when a Tier-3 launch happens) —
75
- rejected for v0: requires host-tier auto-detection, which is deferred; a
76
- standalone endpoint is more testable and modular.
77
- - **Skill-body pre-rendering in v0** — rejected: a new skill-resolution trust
78
- boundary; its own ADR.
79
-
80
- ## References
81
-
82
- - ADR-023 — host-agent protocol (Tier-3 hand-off spec).
83
- - ADR-024 — workspace v0 floor (the inbox is a post-floor addition).
84
- - ADR-062/063/064 — the encrypt-at-rest arc this closes.
85
- - `src/cli/python/workspace_inbox.py`, `src/server/routes/workspace.ts`.
86
- - Contract: [`docs/contracts/at-rest-encryption.md`](../contracts/at-rest-encryption.md).