@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
@@ -0,0 +1 @@
1
+ :root,[data-theme=dark]{color-scheme:dark;--color-bg: #0b0c0e;--color-surface: #121316;--color-surface-alt: #1a1c20;--color-surface-hover:#1f2126;--color-sidebar: #232427;--color-border: rgba(255, 255, 255, .09);--color-border-strong:rgba(255, 255, 255, .22);--color-text: #ededef;--color-text-muted: #a2a5ad;--color-text-subtle: #6f7280;--color-text-inverse: #101114;--color-accent: #d66d4d;--color-accent-hover: #db7e61;--color-accent-fg: #101114;--color-accent-soft: rgba(209, 92, 56, .14);--color-success: #4ade80;--color-success-soft: rgba(74, 222, 128, .13);--color-warning: #fbbf24;--color-warning-soft: rgba(251, 191, 36, .13);--color-danger: #f87171;--color-danger-soft: rgba(248, 113, 113, .12);--color-info: #38bdf8;--color-info-soft: rgba(56, 189, 248, .13);--color-focus-ring: #db7e61;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .5);--shadow-md: 0 4px 10px -2px rgba(0, 0, 0, .55);--shadow-lg: 0 12px 28px -6px rgba(0, 0, 0, .65);--shadow-focus: 0 0 0 2px var(--color-focus-ring)}[data-theme=light]{color-scheme:light;--color-bg: #f7f7f8;--color-surface: #ffffff;--color-surface-alt: #f1f2f4;--color-surface-hover:#e9eaee;--color-sidebar: #f1f2f4;--color-border: rgba(17, 18, 24, .1);--color-border-strong:rgba(17, 18, 24, .28);--color-text: #16171b;--color-text-muted: #565963;--color-text-subtle: #7d808c;--color-text-inverse: #f7f7f8;--color-accent: #b24929;--color-accent-hover: #9d4024;--color-accent-fg: #ffffff;--color-accent-soft: rgba(209, 92, 56, .1);--color-success: #16a34a;--color-success-soft: rgba(22, 163, 74, .12);--color-warning: #d97706;--color-warning-soft: rgba(217, 119, 6, .12);--color-danger: #dc2626;--color-danger-soft: rgba(220, 38, 38, .1);--color-info: #0284c7;--color-info-soft: rgba(2, 132, 199, .11);--color-focus-ring: #be4e2c;--shadow-sm: 0 1px 2px 0 rgba(16, 17, 20, .05);--shadow-md: 0 4px 10px -2px rgba(16, 17, 20, .08);--shadow-lg: 0 12px 28px -6px rgba(16, 17, 20, .14);--shadow-focus: 0 0 0 2px var(--color-focus-ring)}:root{--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "JetBrains Mono", "Menlo", "Consolas", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: .9375rem;--font-size-lg: 1.0625rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.75rem;--font-weight-regular:400;--font-weight-medium: 500;--font-weight-bold: 600;--line-height-tight: 1.25;--line-height-base: 1.55;--line-height-loose: 1.75;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .625rem;--radius-xl: .75rem;--radius-full: 9999px;--duration-fast: .12s;--duration-base: .2s;--duration-slow: .32s;--easing-standard: cubic-bezier(.2, 0, 0, 1);--layout-max-width: 52rem;--layout-side-padding: var(--space-6);--layout-content-gap: var(--space-4);--z-base: 0;--z-overlay: 10;--z-modal: 20;--z-toast: 30}@media (prefers-reduced-motion: reduce){:root{--duration-fast: 0ms;--duration-base: 0ms;--duration-slow: 0ms}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-base)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--font-mono);font-size:var(--font-size-sm);background:var(--color-surface-alt);padding:0 var(--space-1);border-radius:var(--radius-sm)}#app{min-height:100vh}.ac-dryrun-banner{position:sticky;top:0;z-index:10;padding:var(--space-2) var(--space-4);background:var(--color-warning-soft);color:var(--color-warning);border-bottom:1px solid var(--color-border);font-size:var(--font-size-sm);text-align:center}.ac-dryrun-banner strong{letter-spacing:.08em;text-transform:uppercase}.ac-topnav{position:sticky;top:0;z-index:9;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.ac-topnav__theme{appearance:none;background:transparent;border:1px solid var(--color-border);color:var(--color-text-muted);width:2rem;height:2rem;border-radius:var(--radius-full);cursor:pointer;font-size:var(--font-size-base);line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.ac-topnav__theme:hover{background:var(--color-surface-hover);color:var(--color-text)}.ac-topnav__theme:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.ac-topnav__inner{max-width:var(--layout-max-width);margin:0 auto;padding:var(--space-3) var(--layout-side-padding);display:flex;align-items:center;gap:var(--space-4)}.ac-topnav__brand{display:flex;flex-direction:column;gap:0;margin-right:var(--space-2)}.ac-topnav__title{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);margin:0;line-height:1.2}.ac-topnav__subtitle{margin:0;color:var(--color-text-muted);font-size:var(--font-size-xs)}.ac-topnav__tabs{display:flex;gap:var(--space-1);flex:1;flex-wrap:wrap}.ac-topnav__tab{appearance:none;background:transparent;border:1px solid transparent;color:var(--color-text-muted);padding:var(--space-2) var(--space-3);font:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);cursor:pointer}.ac-topnav__tab:hover{background:var(--color-surface-alt);color:var(--color-text)}.ac-topnav__tab--active{background:var(--color-surface-alt);color:var(--color-accent);border-color:var(--color-border)}.ac-page{max-width:var(--layout-max-width);margin:0 auto;padding:var(--space-8) var(--layout-side-padding);display:flex;flex-direction:column;gap:var(--layout-content-gap)}.ac-page__header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--color-border);padding-bottom:var(--space-3)}.ac-page h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0}.ac-banner{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md)}.ac-banner--error{border-left-color:var(--color-danger)}.ac-banner--success{border-left-color:var(--color-success)}.ac-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6)}.ac-section__title{font-size:var(--font-size-lg);margin:0 0 var(--space-2)}.ac-section__description{color:var(--color-text-muted);margin:0 0 var(--space-4)}.ac-section__fields{display:flex;flex-direction:column;gap:var(--space-4)}.ac-field{display:flex;flex-direction:column;gap:var(--space-1)}.ac-field__label{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm)}.ac-field__description{color:var(--color-text-muted);font-size:var(--font-size-xs);margin:0}.ac-field__error{color:var(--color-danger);font-size:var(--font-size-xs);margin:0;border-left:3px solid var(--color-danger);padding-left:var(--space-2)}.ac-input,.ac-textarea{font:inherit;color:var(--color-text);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);width:100%;transition:border-color var(--duration-fast) var(--easing-standard),box-shadow var(--duration-fast) var(--easing-standard)}.ac-input:hover,.ac-textarea:hover{border-color:var(--color-border-strong)}.ac-input:focus,.ac-textarea:focus{outline:none;box-shadow:var(--shadow-focus);border-color:var(--color-focus-ring)}.ac-input[aria-invalid=true],.ac-textarea[aria-invalid=true]{border-color:var(--color-danger)}.ac-input[aria-invalid=true]:focus,.ac-textarea[aria-invalid=true]:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px var(--color-danger-soft, rgba(239, 68, 68, .18))}.ac-textarea{font-family:var(--font-mono);font-size:var(--font-size-sm);resize:vertical}.ac-toggle{display:inline-flex;gap:var(--space-2);align-items:center;cursor:pointer}.ac-radio-group{display:flex;flex-direction:column;gap:var(--space-2)}.ac-radio{display:inline-flex;gap:var(--space-2);align-items:center;cursor:pointer}.ac-field[data-invalid=true] .ac-toggle input[type=checkbox],.ac-field[data-invalid=true] .ac-radio input[type=radio]{outline:2px solid var(--color-danger);outline-offset:2px;border-radius:2px}.ac-button{font:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);cursor:pointer;transition:background var(--duration-fast) var(--easing-standard)}.ac-button:hover{background:var(--color-surface-hover);border-color:var(--color-border-strong)}.ac-button:disabled{opacity:.6;cursor:not-allowed}.ac-button--primary{background:var(--color-accent);color:var(--color-accent-fg);border-color:var(--color-accent)}.ac-button--primary:hover{background:var(--color-accent-hover)}.ac-button:focus{outline:none;box-shadow:var(--shadow-focus)}.ac-form{display:flex;flex-direction:column;gap:var(--space-5)}.ac-form__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.ac-modal{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.ac-modal__panel{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);max-width:32rem;width:90vw;max-height:80vh;overflow:auto;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:var(--space-4)}.ac-modal__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.ac-diff{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2)}.ac-diff li{display:grid;grid-template-columns:1fr auto auto auto;gap:var(--space-2);font-size:var(--font-size-sm);align-items:center}.ac-diff__before{color:var(--color-text-muted);text-decoration:line-through}.ac-diff__arrow{color:var(--color-text-subtle)}.ac-diff__after{color:var(--color-success);font-weight:var(--font-weight-medium)}.ac-page__progress{color:var(--color-text-muted);margin:0}.ac-wizard__header{display:flex;flex-direction:column;gap:var(--space-3);align-items:stretch}.ac-wizard__header-text{display:flex;flex-direction:column;gap:var(--space-1)}.ac-wizard__subtitle{color:var(--color-text-muted);margin:0}.ac-wizard__step-count{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.ac-wizard__progress{display:flex;gap:var(--space-1)}.ac-wizard__progress-segment{flex:1;height:5px;background:var(--color-border);border-radius:var(--radius-sm);transition:background var(--duration-fast) var(--easing-standard)}.ac-wizard__progress-segment--filled{background:var(--color-accent)}.ac-wizard__step{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}.ac-wizard__nav{justify-content:space-between}.ac-wizard__nav .ac-button:first-child{margin-right:auto}.ac-wizard__skip{color:var(--color-text-muted)}.ac-wizard__hint{margin:var(--space-3) 0 0;color:var(--color-warning, #b45309);font-size:.875rem}.ac-wizard__review{display:flex;flex-direction:column;gap:var(--space-4)}.ac-wizard__tool-list{list-style:none;padding-left:0;margin:0;display:flex;flex-direction:column;gap:var(--space-1)}.ac-wizard__tool-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--duration-fast) var(--easing-standard),background var(--duration-fast) var(--easing-standard)}.ac-wizard__tool-row:hover{border-color:var(--color-border-strong)}.ac-wizard__tool-row:has(input:checked){border-color:var(--color-accent);background:var(--color-accent-soft)}.ac-wizard__tool-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}.ac-badge{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);padding:.1rem var(--space-2);border-radius:var(--radius-sm);white-space:nowrap}.ac-badge--installed{background:var(--color-success-soft);color:var(--color-success)}.ac-badge--detected{background:var(--color-info-soft, rgba(2, 132, 199, .12));color:var(--color-info)}.ac-badge--missing{background:var(--color-surface-alt);color:var(--color-text-muted)}.ac-badge--ws{font-size:.6875rem;padding:.05rem .4rem;background:var(--color-surface-alt);color:var(--color-text-muted);border:1px solid var(--color-border)}.ac-badge--ws-active{background:var(--color-accent);color:var(--color-accent-fg);border-color:var(--color-accent)}.ac-wizard__pack-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}.ac-pack-tile{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);transition:border-color var(--duration-fast) var(--easing-standard),background var(--duration-fast) var(--easing-standard)}.ac-pack-tile:hover{border-color:var(--color-border-strong)}.ac-pack-tile:has(>.ac-pack-tile__head input:checked){border-color:var(--color-accent);background:var(--color-accent-soft)}.ac-pack-tile__head{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-weight:var(--font-weight-medium)}.ac-pack-tile__title{flex:1}.ac-pack-tile__role{margin:0;font-size:var(--font-size-xs);color:var(--color-text)}.ac-pack-tile__role code{font-size:var(--font-size-xs)}.ac-pack-tile__desc{margin:0;color:var(--color-text-muted);font-size:var(--font-size-xs)}.ac-pack-tile__ws{display:flex;flex-wrap:wrap;gap:var(--space-1)}.ac-pack-tile__children{display:flex;flex-direction:column;gap:var(--space-1);margin:0;padding:var(--space-2) 0 0 var(--space-4);border:0;border-top:1px solid var(--color-border)}.ac-pack-tile__children:disabled{opacity:.5}.ac-pack-tile__child{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);cursor:pointer}.ac-wizard__module-fields{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-4)}.ac-rtk-row{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);margin-bottom:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md)}.ac-rtk-row__head{display:flex;align-items:center;gap:var(--space-2)}.ac-rtk-row__label{font-weight:var(--font-weight-medium)}.ac-rtk-row__install{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.ac-rtk-row__cmd{display:block;width:100%;padding:var(--space-2) var(--space-3);background:var(--color-surface-alt);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-xs);user-select:all}.ac-council{display:flex;flex-direction:column;gap:var(--space-4)}.ac-council__master{display:flex;align-items:center;gap:var(--space-2);font-weight:var(--font-weight-medium)}.ac-council__section{display:flex;flex-direction:column;gap:var(--space-4);border:0;padding:0;margin:0}.ac-council__section:disabled{opacity:.55}.ac-council__h{margin:var(--space-2) 0 0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.ac-settings-hub__toolbar{display:flex;gap:var(--space-2);align-items:center}.ac-settings-hub__search{flex:1}.ac-chip-toggle{appearance:none;font:inherit;font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);cursor:pointer;white-space:nowrap;transition:background var(--duration-fast) var(--easing-standard),color var(--duration-fast) var(--easing-standard)}.ac-chip-toggle:hover{background:var(--color-surface-hover);color:var(--color-text)}.ac-chip-toggle--active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.ac-settings-hub__empty{color:var(--color-text-muted)}.ac-settings-hub__disclosure{appearance:none;font:inherit;font-size:var(--font-size-sm);color:var(--color-text-muted);background:transparent;border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin-top:var(--space-4);width:100%;cursor:pointer;transition:color var(--duration-fast) var(--easing-standard),border-color var(--duration-fast) var(--easing-standard)}.ac-settings-hub__disclosure:hover{color:var(--color-text);border-color:var(--color-accent)}.ac-field-row{display:flex;gap:var(--space-2);align-items:flex-start;padding-left:var(--space-2);margin-left:calc(-1 * var(--space-2));border-left:3px solid transparent}.ac-field-row--modified{border-left-color:var(--color-accent)}.ac-field-row__body{flex:1;min-width:0}.ac-field-row__meta{display:flex;flex-direction:column;gap:var(--space-1);align-items:flex-end}.ac-badge--source{background:var(--color-surface-alt);color:var(--color-text-subtle);border:1px solid var(--color-border)}.ac-field-row__reset{appearance:none;font:inherit;font-size:var(--font-size-xs);color:var(--color-text-muted);background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:2px var(--space-2);margin-top:var(--space-1);cursor:pointer;white-space:nowrap}.ac-field-row__reset:hover{color:var(--color-danger);border-color:var(--color-danger)}.ac-start{display:grid;grid-template-columns:3fr 2fr;gap:var(--space-4)}@media (max-width: 700px){.ac-start{grid-template-columns:1fr}}.ac-start__card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface)}.ac-start__card--primary{border-color:var(--color-accent)}.ac-start__title{margin:0;font-size:var(--font-size-xl)}.ac-start__desc{margin:0;color:var(--color-text-muted)}.ac-start__facts{margin:0;padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-1);color:var(--color-text-muted);font-size:var(--font-size-sm)}.ac-start__cta{margin-top:auto;align-self:flex-start}.ac-review-summary{border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);background:var(--color-surface);overflow-wrap:anywhere;min-width:0}.ac-review-summary__title{margin:0 0 var(--space-2);font-size:var(--font-size-base)}.ac-review-summary__list{margin:0;padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm)}.ac-review-summary__chips{display:inline-flex;flex-wrap:wrap;gap:var(--space-1);margin-left:var(--space-1);vertical-align:top}.ac-review-summary__chip{white-space:nowrap}.ac-checklist{display:flex;flex-direction:column;gap:var(--space-5)}.ac-checklist__hero{display:flex;flex-direction:column;gap:var(--space-2)}.ac-checklist__headline{margin:0;font-size:var(--font-size-2xl)}.ac-checklist__message{margin:0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.ac-checklist__items{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-3);counter-reset:checklist}.ac-checklist__item{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);counter-increment:checklist}.ac-checklist__text{display:flex;flex-direction:column;gap:2px}.ac-checklist__item-title{font-weight:var(--font-weight-medium)}.ac-checklist__item-title:before{content:counter(checklist) ". ";color:var(--color-text-subtle)}.ac-checklist__item-detail{color:var(--color-text-muted);font-size:var(--font-size-sm)}.ac-checklist__cmd-row{display:flex;gap:var(--space-2);align-items:center}.ac-checklist__cmd{flex:1;padding:var(--space-2) var(--space-3);background:var(--color-surface-alt);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);user-select:all}.ac-checklist__copy{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.ac-checklist__close-hint{margin:0;color:var(--color-text-subtle);font-size:var(--font-size-sm)}.ac-review-removals{border:1px solid var(--color-danger);border-left:3px solid var(--color-danger);border-radius:var(--radius-md);background:var(--color-danger-soft, rgba(239, 68, 68, .08));padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.ac-review-removals__title{margin:0;font-weight:var(--font-weight-medium);color:var(--color-danger)}.ac-review-removals__list{margin:0;padding-left:var(--space-5)}.ac-review-removals__confirm{display:flex;gap:var(--space-2);align-items:flex-start;cursor:pointer;font-size:var(--font-size-sm)}.ac-wizard__review-nav{display:flex;flex-direction:column;gap:var(--space-2)}.ac-wizard__review-nav-label{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.ac-wizard__review-nav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.ac-wizard__review-nav-button{width:100%;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--color-border);border-left:3px solid var(--color-success);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-sm);text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--easing-standard),border-color var(--duration-fast) var(--easing-standard)}.ac-wizard__review-nav-button:hover{background:var(--color-surface);border-color:var(--color-accent);border-left-color:var(--color-success)}.ac-wizard__review-nav-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ac-wizard__review-nav-index{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;height:1.5rem;padding:0 .375rem;background:var(--color-border);border-radius:999px;font-size:var(--font-size-xs);font-weight:600}.ac-wizard__review-nav-text{flex:1}.ac-wizard__review-nav-status{margin-left:auto;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);padding:.125rem .5rem;border-radius:999px;white-space:nowrap}.ac-wizard__review-nav-status--changed{background:var(--color-success-soft, rgba(34, 197, 94, .12));color:var(--color-success)}.ac-wizard__review-nav-status--error{background:var(--color-danger-soft, rgba(239, 68, 68, .12));color:var(--color-danger)}.ac-wizard__review-nav-button--error{border-left-color:var(--color-danger)}.ac-wizard__review-nav-button--error:hover{border-color:var(--color-accent);border-left-color:var(--color-danger)}.ac-user-md-form{display:flex;flex-direction:column;gap:var(--space-5)}.ac-chip-list{list-style:none;margin:0 0 var(--space-2);padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}.ac-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:999px;font-size:var(--font-size-sm)}.ac-chip__remove{appearance:none;background:transparent;border:0;color:var(--color-text-muted);cursor:pointer;font-size:1rem;line-height:1;padding:0 var(--space-1)}.ac-chip__remove:hover:not(:disabled){color:var(--color-text)}.ac-chip__remove:disabled{opacity:.4;cursor:not-allowed}.ac-role-add{display:flex;gap:var(--space-2);align-items:center}.ac-role-add .ac-input{flex:1}.ac-workspace__grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(0,2fr) minmax(260px,1fr);gap:var(--space-4);margin-top:var(--space-4)}@media (max-width: 900px){.ac-workspace__grid{grid-template-columns:1fr}}.ac-workspace__heading{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);margin:0 0 var(--space-2) 0;color:var(--color-text)}.ac-workspace__empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.ac-workspace__role-grid{display:flex;flex-direction:column;gap:var(--space-2)}.ac-workspace__role{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:var(--space-1);color:inherit;font:inherit}.ac-workspace__role:hover{border-color:var(--color-border-strong)}.ac-workspace__role--active{border-color:var(--color-primary, var(--color-text));background:var(--color-surface-alt)}.ac-workspace__role:focus-visible{outline:2px solid var(--color-primary, var(--color-text));outline-offset:2px}.ac-workspace__role-name{font-weight:var(--font-weight-medium)}.ac-workspace__role-status{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.ac-workspace__role-status[data-status=stable]{color:var(--color-success, #15803d)}.ac-workspace__role-status[data-status=beta]{color:var(--color-warn, #b45309)}.ac-workspace__role-status[data-status=draft]{color:var(--color-text-muted)}.ac-workspace__role-tagline{grid-column:1 / -1;color:var(--color-text-muted);font-size:var(--font-size-sm)}.ac-workspace__main{display:flex;flex-direction:column;gap:var(--space-4)}.ac-workspace__task-list,.ac-workspace__session-list,.ac-workspace__doc-list,.ac-workspace__skill-list,.ac-workspace__citation-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2)}.ac-workspace__task{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);background:var(--color-surface)}.ac-workspace__task-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.ac-workspace__task-name{font-weight:var(--font-weight-medium)}.ac-workspace__task-intent{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:var(--space-1) 0 0 0}.ac-workspace__task-prompt{display:inline-block;margin-top:var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-muted)}.ac-workspace__session{display:grid;grid-template-columns:minmax(120px,1fr) minmax(80px,1fr) 2fr;gap:var(--space-2);font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.ac-workspace__session-id{font-family:var(--font-mono, monospace);color:var(--color-text-muted)}.ac-workspace__rail{display:flex;flex-direction:column;gap:var(--space-4)}.ac-workspace__citation{border-left:3px solid var(--color-border);padding:var(--space-1) var(--space-2)}.ac-workspace__citation-marker{font-weight:var(--font-weight-medium);margin-right:var(--space-1)}.ac-workspace__citation-source{text-decoration:none;color:var(--color-text);border-bottom:1px dotted var(--color-border-strong)}.ac-workspace__citation-source:hover{color:var(--color-primary, var(--color-text))}.ac-workspace__citation-pin{margin-left:var(--space-1);color:var(--color-warn, #b45309)}.ac-workspace__citation-excerpt{margin:var(--space-1) 0 0 0;color:var(--color-text-muted);font-size:var(--font-size-xs)}.ac-workspace__doc{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-2);align-items:center;font-size:var(--font-size-sm);padding:var(--space-2);border-radius:var(--radius-sm)}.ac-workspace__doc-type{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--space-1)}.ac-workspace__doc-time{font-family:var(--font-mono, monospace);color:var(--color-text-muted);font-size:var(--font-size-xs)}.ac-workspace__explain{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3)}.ac-workspace__explain legend{padding:0 var(--space-1)}.ac-workspace__explain-option{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;padding:var(--space-1) 0}.ac-workspace__explain-hint{margin:var(--space-2) 0 0 0;color:var(--color-text-muted);font-size:var(--font-size-xs)}.ac-banner--pending{border-left-color:var(--color-warning);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.ac-button--small{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.ac-page__lede{color:var(--color-text-muted);margin:var(--space-1) 0 0 0}.ac-settings-changes__group h2{font-size:var(--font-size-lg);margin:0 0 var(--space-1)}.ac-settings-changes__count{color:var(--color-text-muted);font-weight:var(--font-weight-regular, 400)}.ac-settings-changes__hint{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0 0 var(--space-3)}.ac-settings-changes__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.ac-change-card{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.ac-change-card--must_fix{border-left-color:var(--color-danger)}.ac-change-card--adopt{border-left-color:var(--color-accent)}.ac-change-card--review{border-left-color:var(--color-warning)}.ac-change-card__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap}.ac-change-card__key{font-size:var(--font-size-sm);overflow-wrap:anywhere}.ac-change-card__badge{font-size:var(--font-size-xs);border-radius:var(--radius-sm);padding:0 var(--space-2);border:1px solid var(--color-border);white-space:nowrap;color:var(--color-text-muted)}.ac-change-card__badge--must_fix{color:var(--color-danger);border-color:var(--color-danger)}.ac-change-card__badge--adopt{color:var(--color-accent);border-color:var(--color-accent)}.ac-change-card__badge--review{color:var(--color-warning);border-color:var(--color-warning)}.ac-change-card__desc{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.ac-change-card__detail{font-size:var(--font-size-sm);margin:0;overflow-wrap:anywhere}.ac-change-card__choices{display:flex;flex-direction:column;gap:var(--space-1)}.ac-change-card__choice{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--font-size-sm)}.ac-change-card .ac-input{max-width:24rem}
@@ -8,18 +8,27 @@
8
8
  <script>
9
9
  // Theme boot — set data-theme BEFORE first paint so there is no
10
10
  // flash of the wrong theme (road-to-setup-experience § Phase 4.2).
11
- // Persisted override in localStorage wins; otherwise follow the OS.
11
+ // Precedence: a host-supplied `?theme=light|dark` boot query wins
12
+ // (reciprocal-ecosystem embed contract — the host owns the theme),
13
+ // then a persisted localStorage override, then the OS preference.
12
14
  (function () {
15
+ var query = null;
16
+ try {
17
+ var q = new URLSearchParams(window.location.search).get('theme');
18
+ if (q === 'light' || q === 'dark') query = q;
19
+ } catch (e) { /* older engine */ }
13
20
  var stored = null;
14
21
  try { stored = localStorage.getItem('agent-config-theme'); } catch (e) { /* private mode */ }
15
- var theme = stored === 'light' || stored === 'dark'
16
- ? stored
17
- : (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
22
+ var theme = query
23
+ ? query
24
+ : stored === 'light' || stored === 'dark'
25
+ ? stored
26
+ : (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
18
27
  document.documentElement.setAttribute('data-theme', theme);
19
28
  })();
20
29
  </script>
21
- <script type="module" crossorigin src="/assets/index-BiEZiZ31.js"></script>
22
- <link rel="stylesheet" crossorigin href="/assets/index-BPFMZWUs.css">
30
+ <script type="module" crossorigin src="/assets/index-BpSQt5vm.js"></script>
31
+ <link rel="stylesheet" crossorigin href="/assets/index-jSfMW8_t.css">
23
32
  </head>
24
33
  <body>
25
34
  <main id="app"></main>
package/docs/MIGRATION.md CHANGED
@@ -6,6 +6,22 @@ only the version you are upgrading to.
6
6
 
7
7
  > Symbol legend — 🔄 automatic, ✋ manual, 💡 advisory.
8
8
 
9
+ ## Scheduled deprecations (forward-looking — read before cutting a major)
10
+
11
+ Every section below this one records a change that **already shipped**. This
12
+ table is the opposite: commitments made now, due at a **future** major. It
13
+ exists so a "deprecate at the next major, remove the major after" promise
14
+ cannot decay into folklore — the release runbook's pre-flight (§ 1) sends the
15
+ releaser here on every `release:major`.
16
+
17
+ | Surface | Committed | Deprecation notice due | Removal due | Reversal condition |
18
+ |---|---|---|---|---|
19
+ | `code_graph` native code-graph engine (`code_graph.enabled`, the `code-intelligence` skill's native arm, `code_graph_nudge_hook`) | 2026-07-28 | next major after 9.x | the major after that | A consumer case the graph answers and disciplined grep cannot. Measured null: recall 0.365 vs grep 0.797 (`docs/CLAIMS.md` `code-graph-retrieval-null`). Until then `enabled: false` is permanent. |
20
+
21
+ **Adding a row:** any change that ships a capability as default-off-pending-removal,
22
+ or that promises a future breaking removal, gets a row here in the same commit
23
+ that makes the promise. A promise with no row is not tracked and will be missed.
24
+
9
25
  ## 8.x → 9.0.0 — consumer rule projection scoped by default
10
26
 
11
27
  9.0.0 flips the consumer rule-projection default to **scoped**: fresh
@@ -171,8 +171,10 @@ standard's stated purpose (OOP *is* a deliberate high priority for the operator)
171
171
  Divergence held: the frontend section stays (an intentional FE / backend
172
172
  entry-point + carve-out index, per the operator's explicit "split by FE /
173
173
  backend" ask) — against the anthropic "delete as redundant"; it is a cohesive
174
- index of the existing FE surfaces, not a claim of novel guidance. Trace:
175
- `agents/runtime/council/responses/component-oop-standard.json/` (gitignored, local-only).
174
+ index of the existing FE surfaces, not a claim of novel guidance. The trace is
175
+ the 2026-07-15 session above, not a path: council output is gitignored and
176
+ auto-pruned, and this guideline is a stable artifact that must not carry a link
177
+ which rots (`no-roadmap-references`).
176
178
 
177
179
  ## See also
178
180
 
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
- "version": "9.7.0",
4
- "description": "Universal AI Agent OS — audited skills, governance rules, commands and templates for AI coding tools (Claude Code, Cursor, Windsurf, Copilot).",
3
+ "mcpName": "io.github.event4u-app/agent-config",
4
+ "version": "9.9.0",
5
+ "description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including \"zero runtime daemon\".",
5
6
  "license": "MIT",
6
7
  "private": false,
7
8
  "type": "module",
@@ -22,13 +23,11 @@
22
23
  "copilot",
23
24
  "llm",
24
25
  "agent-governance",
25
- "ai-video",
26
26
  "skills",
27
27
  "prompt-engineering",
28
28
  "typescript",
29
29
  "python",
30
- "agent-skills",
31
- "cinematic-ai-video"
30
+ "agent-skills"
32
31
  ],
33
32
  "files": [
34
33
  "dist/agent-src/",
@@ -36,7 +35,9 @@
36
35
  ".claude-plugin/",
37
36
  "src/config/",
38
37
  "dist/",
39
- "docs/",
38
+ "docs/guidelines/",
39
+ "docs/contracts/persona-schema.md",
40
+ "docs/contracts/provider-lifecycle.md",
40
41
  "src/scripts/",
41
42
  "src/server/schemas/",
42
43
  "src/shared/",
@@ -62,13 +63,19 @@
62
63
  "scripts": {
63
64
  "build:cli": "tsc -p tsconfig.json && chmod +x dist/cli/agent-config.js",
64
65
  "build:install-bundle": "esbuild src/scripts/install.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/install/install.mjs --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);\"",
66
+ "build:hooks": "esbuild src/scripts/hooks/dispatch_entry.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/hooks/dispatch.js --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_HOOKS_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\"",
67
+ "build:mcp-bundle": "esbuild src/scripts/mcp_server/__main__.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/mcp/server.mjs --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_MCP_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\"",
65
68
  "build:ui": "vite build",
69
+ "tokens:build": "node tokens/build-ac.mjs && node tokens/build-as.mjs",
70
+ "tokens:check": "node tokens/build-ac.mjs --check && node tokens/build-as.mjs --check && node tokens/check-contrast.mjs",
66
71
  "build:discovery": "./scripts-run src/scripts/build_discovery_manifest --write --strict",
67
72
  "build:mcp-manifest": "./scripts-run src/scripts/build_mcp_registry_manifest --write --strict",
68
- "build": "npm run build:cli && npm run build:install-bundle && npm run build:ui",
73
+ "build:mcp-catalog": "./scripts-run src/scripts/build_mcp_catalog --write --strict",
74
+ "build": "npm run build:cli && npm run build:install-bundle && npm run build:hooks && npm run build:mcp-bundle && npm run build:ui",
69
75
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.scripts.json",
70
76
  "lint:ts": "eslint 'src/**/*.ts'",
71
77
  "test:ts": "vitest run",
78
+ "lint:publint": "publint",
72
79
  "prepack": "npm run build && npm run build:discovery && npm run build:mcp-manifest && node src/scripts/prepack-check.mjs",
73
80
  "prepublishOnly": "./scripts-run src/scripts/check_release_includes_discovery",
74
81
  "prepare": "[ -d .git ] && bash src/scripts/install-hooks.sh || true"
@@ -89,12 +96,14 @@
89
96
  "eslint": "^9.39.4",
90
97
  "happy-dom": "^20.9.0",
91
98
  "js-tiktoken": "^1.0.21",
99
+ "publint": "^0.3.22",
100
+ "tsx": "^4.22.3",
92
101
  "typescript": "^5.9.3",
93
102
  "vite": "^5.4.21",
94
103
  "vitest": "^2.1.9"
95
104
  },
96
105
  "dependencies": {
97
- "@fastify/static": "^9.1.0",
106
+ "@fastify/static": "^10.1.2",
98
107
  "@modelcontextprotocol/sdk": "^1.29.0",
99
108
  "@preact/signals": "^2.9.0",
100
109
  "commander": "^12.1.0",
@@ -103,9 +112,13 @@
103
112
  "js-yaml": "^4.1.0",
104
113
  "open": "^10.2.0",
105
114
  "preact": "^10.29.0",
106
- "tsx": "^4.22.3",
115
+ "tree-sitter-wasms": "0.1.13",
116
+ "web-tree-sitter": "0.24.7",
107
117
  "yaml": "^2.9.0",
108
118
  "zod": "^3.25.0",
109
119
  "zod-to-json-schema": "^3.25.0"
120
+ },
121
+ "overrides": {
122
+ "@hono/node-server": "^2.0.5"
110
123
  }
111
124
  }
@@ -19,7 +19,7 @@
19
19
  ## Pointers
20
20
 
21
21
  - **Filling out this AGENTS.md** — section templates, capability bullets, multi-agent entry flow, monorepo per-package layout: [`.augment/contexts/contracts/consumer-agents-md-guide.md`](.augment/contexts/contracts/consumer-agents-md-guide.md).
22
- - **Behavior rules (always active)** — Iron Laws and routed rules that fire automatically while you work in this project: [`.augment/rules/`](.augment/rules/).
22
+ - **Behavior rules (always active)** — [`.augment/rules/`](.augment/rules/). Kernel rules are **immutable** — never propose an edit; tighten-only via the override registry.
23
23
  - **Skills (on-demand expertise)** — domain skills surfaced by description; invoked when their trigger fires: [`.augment/skills/`](.augment/skills/).
24
24
  - **Commands (workflows)** — slash-commands the agent runs end-to-end (`/work`, `/implement-ticket`, `/commit`, `/create-pr`, …): [`.augment/commands/`](.augment/commands/).
25
25
  - **Project-specific docs** — your own architecture notes, roadmaps, sessions, contexts: [`agents/`](agents/).
@@ -21,6 +21,10 @@
21
21
  * (same PII-exclusion-by-construction shape as consulted).
22
22
  * "outcomes": ["blocked", "verification_failed", ...] # optional
23
23
  * "tokens_estimate": {"consulted_load": <int>} # optional
24
+ * "cross_source": [{"id": "d1", "type": "text-image", "asked": true}] # optional
25
+ * (road-to-feedback-9.2.0-followups 1.4): per-task ask-rate facet
26
+ * for the cross-source-consistency rule. Structural only — id +
27
+ * a closed type enum + a bool, no free-form fields.
24
28
  * }
25
29
  */
26
30
  import * as fs from 'node:fs';
@@ -55,6 +59,18 @@ export const ALLOWED_OUTCOMES = [
55
59
  ] as const;
56
60
  export const MAX_OUTCOMES_PER_EVENT = ALLOWED_OUTCOMES.length;
57
61
 
62
+ // cross_source facet (road-to-feedback-9.2.0-followups 1.4) — the
63
+ // cross-source-consistency rule's discrepancy taxonomy (a)-(d) from
64
+ // src/rules/cross-source-consistency.md.
65
+ export const ALLOWED_CROSS_SOURCE_TYPES = [
66
+ 'text-image',
67
+ 'silent-needed',
68
+ 'spec-code',
69
+ 'intra-ticket',
70
+ ] as const;
71
+ export const MAX_CROSS_SOURCE_PER_EVENT = 32;
72
+ const _CROSS_SOURCE_KEYS = ['asked', 'id', 'type'] as const;
73
+
58
74
  // Phase 5 redaction validator — keep id fields from leaking paths,
59
75
  // free-text, or filenames.
60
76
  const _FORBIDDEN_ID_CHARS = ['/', '\\', '\n', '\r', '\t'] as const;
@@ -125,6 +141,13 @@ export function check_id_redaction(label: string, value: unknown): void {
125
141
  }
126
142
  }
127
143
 
144
+ /** One surfaced cross-source discrepancy — structural only, no free text. */
145
+ export interface CrossSourceEntry {
146
+ id: string;
147
+ type: string;
148
+ asked: boolean;
149
+ }
150
+
128
151
  export interface EngagementEventInit {
129
152
  ts: string;
130
153
  task_id: string;
@@ -134,6 +157,7 @@ export interface EngagementEventInit {
134
157
  loaded?: Record<string, string[]> | null;
135
158
  outcomes?: string[] | null;
136
159
  tokens_estimate?: Record<string, number> | null;
160
+ cross_source?: CrossSourceEntry[] | null;
137
161
  schema_version?: number;
138
162
  }
139
163
 
@@ -146,6 +170,7 @@ export class EngagementEvent {
146
170
  loaded: Record<string, string[]> | null;
147
171
  outcomes: string[] | null;
148
172
  tokens_estimate: Record<string, number> | null;
173
+ cross_source: CrossSourceEntry[] | null;
149
174
  schema_version: number;
150
175
 
151
176
  constructor(init: EngagementEventInit) {
@@ -157,6 +182,7 @@ export class EngagementEvent {
157
182
  this.loaded = init.loaded ?? null;
158
183
  this.outcomes = init.outcomes ?? null;
159
184
  this.tokens_estimate = init.tokens_estimate ?? null;
185
+ this.cross_source = init.cross_source ?? null;
160
186
  this.schema_version = init.schema_version ?? SCHEMA_VERSION;
161
187
  }
162
188
 
@@ -195,6 +221,9 @@ export class EngagementEvent {
195
221
  if (this.outcomes !== null) {
196
222
  _validate_outcomes(this.outcomes);
197
223
  }
224
+ if (this.cross_source !== null) {
225
+ _validate_cross_source(this.cross_source);
226
+ }
198
227
  if (this.tokens_estimate !== null) {
199
228
  if (!_isPlainObject(this.tokens_estimate)) {
200
229
  throw new EngagementSchemaError(
@@ -236,6 +265,13 @@ export class EngagementEvent {
236
265
  if (this.outcomes && this.outcomes.length > 0) {
237
266
  out['outcomes'] = [...this.outcomes];
238
267
  }
268
+ if (this.cross_source && this.cross_source.length > 0) {
269
+ out['cross_source'] = this.cross_source.map((e) => ({
270
+ id: e.id,
271
+ type: e.type,
272
+ asked: e.asked,
273
+ }));
274
+ }
239
275
  if (this.tokens_estimate && Object.keys(this.tokens_estimate).length > 0) {
240
276
  out['tokens_estimate'] = { ...this.tokens_estimate };
241
277
  }
@@ -317,6 +353,46 @@ function _validate_outcomes(payload: unknown): void {
317
353
  }
318
354
  }
319
355
 
356
+ function _validate_cross_source(payload: unknown): void {
357
+ if (!Array.isArray(payload)) {
358
+ throw new EngagementSchemaError('cross_source must be a list of dict or None');
359
+ }
360
+ if (payload.length > MAX_CROSS_SOURCE_PER_EVENT) {
361
+ throw new EngagementSchemaError(
362
+ `cross_source exceeds ${MAX_CROSS_SOURCE_PER_EVENT} entries`,
363
+ );
364
+ }
365
+ for (const entry of payload) {
366
+ if (!_isPlainObject(entry)) {
367
+ throw new EngagementSchemaError('cross_source entries must be dict[str, ...]');
368
+ }
369
+ const keys = Object.keys(entry);
370
+ const extra = keys.filter((k) => !(_CROSS_SOURCE_KEYS as readonly string[]).includes(k));
371
+ if (extra.length > 0) {
372
+ throw new EngagementSchemaError(
373
+ `cross_source entry has unexpected key(s): ${extra.sort().join(', ')}; `
374
+ + `allowed keys: ${_CROSS_SOURCE_KEYS.join(', ')}`,
375
+ );
376
+ }
377
+ for (const required of _CROSS_SOURCE_KEYS) {
378
+ if (!(required in entry)) {
379
+ throw new EngagementSchemaError(`cross_source entry missing required key '${required}'`);
380
+ }
381
+ }
382
+ check_id_redaction('cross_source.id', entry['id']);
383
+ const type_val = entry['type'];
384
+ if (typeof type_val !== 'string' || !(ALLOWED_CROSS_SOURCE_TYPES as readonly string[]).includes(type_val)) {
385
+ throw new EngagementSchemaError(
386
+ `cross_source.type must be one of ${_reprTuple(ALLOWED_CROSS_SOURCE_TYPES)}, `
387
+ + `got ${_reprScalar(type_val)}`,
388
+ );
389
+ }
390
+ if (typeof entry['asked'] !== 'boolean') {
391
+ throw new EngagementSchemaError('cross_source.asked must be a bool');
392
+ }
393
+ }
394
+ }
395
+
320
396
  export function parse_event(line: string): EngagementEvent {
321
397
  if (typeof line !== 'string' || !line.trim()) {
322
398
  throw new EngagementSchemaError('line must be a non-empty JSONL record');
@@ -342,6 +418,7 @@ export function parse_event(line: string): EngagementEvent {
342
418
  : _orEmptyDict(r['loaded']),
343
419
  outcomes: (r['outcomes'] as string[] | null | undefined) ?? null,
344
420
  tokens_estimate: (r['tokens_estimate'] as Record<string, number> | null | undefined) ?? null,
421
+ cross_source: (r['cross_source'] as CrossSourceEntry[] | null | undefined) ?? null,
345
422
  schema_version: r['schema_version'] === undefined
346
423
  ? SCHEMA_VERSION
347
424
  : (r['schema_version'] as number),
@@ -21,6 +21,7 @@ import * as path from 'node:path';
21
21
  import { record_event } from './telemetry/boundary.js';
22
22
  import {
23
23
  ALLOWED_OUTCOMES,
24
+ type CrossSourceEntry,
24
25
  EngagementEvent,
25
26
  EngagementSchemaError,
26
27
  now_utc_iso,
@@ -58,6 +59,30 @@ function _reprStr(s: string): string {
58
59
  return `'${s}'`;
59
60
  }
60
61
 
62
+ /** Turn `["d1:text-image:ask", ...]` into cross_source entries. Unknown
63
+ * `type` values are left to schema validation (consistent with how
64
+ * `_parse_kv_list` leaves unknown artefact kinds to the schema); only
65
+ * the CLI-only `id:type:ask|warn` shape is checked here. */
66
+ function _parse_cross_source_list(values: string[]): CrossSourceEntry[] {
67
+ const out: CrossSourceEntry[] = [];
68
+ for (const raw of values) {
69
+ const parts = raw.split(':');
70
+ if (parts.length !== 3 || !parts[0] || !parts[1] || !parts[2]) {
71
+ throw new SystemExitError(
72
+ `❌ --cross-source must be 'id:type:ask|warn', got ${_reprStr(raw)}`,
73
+ );
74
+ }
75
+ const [id, type, verdict] = parts as [string, string, string];
76
+ if (verdict !== 'ask' && verdict !== 'warn') {
77
+ throw new SystemExitError(
78
+ `❌ --cross-source verdict must be 'ask' or 'warn', got ${_reprStr(verdict)}`,
79
+ );
80
+ }
81
+ out.push({ id, type, asked: verdict === 'ask' });
82
+ }
83
+ return out;
84
+ }
85
+
61
86
  interface RecordArgs {
62
87
  task_id: string;
63
88
  boundary: string;
@@ -65,6 +90,7 @@ interface RecordArgs {
65
90
  applied: string[] | null;
66
91
  loaded: string[] | null;
67
92
  outcome: string[] | null;
93
+ cross_source: string[] | null;
68
94
  ts: string;
69
95
  payload_file: string | null;
70
96
  stdin: boolean;
@@ -81,6 +107,9 @@ function _build_event_from_args(args: RecordArgs): EngagementEvent {
81
107
  applied: _parse_kv_list(args.applied ?? []),
82
108
  loaded: args.loaded && args.loaded.length > 0 ? _parse_kv_list(args.loaded) : null,
83
109
  outcomes: args.outcome && args.outcome.length > 0 ? [...args.outcome] : null,
110
+ cross_source: args.cross_source && args.cross_source.length > 0
111
+ ? _parse_cross_source_list(args.cross_source)
112
+ : null,
84
113
  });
85
114
  }
86
115
 
@@ -106,6 +135,7 @@ function _build_event_from_payload(raw: string): EngagementEvent {
106
135
  loaded: d['loaded'] === undefined || d['loaded'] === null ? null : _orEmpty(d['loaded']),
107
136
  outcomes: (d['outcomes'] as string[] | null | undefined) ?? null,
108
137
  tokens_estimate: (d['tokens_estimate'] as Record<string, number> | null | undefined) ?? null,
138
+ cross_source: (d['cross_source'] as CrossSourceEntry[] | null | undefined) ?? null,
109
139
  });
110
140
  }
111
141
 
@@ -126,6 +156,7 @@ function _parseArgs(argv: string[]): RecordArgs {
126
156
  applied: null,
127
157
  loaded: null,
128
158
  outcome: null,
159
+ cross_source: null,
129
160
  ts: '',
130
161
  payload_file: null,
131
162
  stdin: false,
@@ -170,7 +201,8 @@ function _parseArgs(argv: string[]): RecordArgs {
170
201
  );
171
202
  }
172
203
  (a.outcome ??= []).push(v);
173
- } else if (tok === '--ts') a.ts = next();
204
+ } else if (tok === '--cross-source') (a.cross_source ??= []).push(next());
205
+ else if (tok === '--ts') a.ts = next();
174
206
  else if (tok === '--payload-file') a.payload_file = next();
175
207
  else if (tok === '--stdin') a.stdin = true;
176
208
  else if (tok === '--settings') a.settings = next();
@@ -40,18 +40,25 @@ profile:
40
40
  # trees (.claude/ .cursor/ .windsurf/) or only the active profile + packs'
41
41
  # artefacts. See docs/decisions/ADR-040 and docs/contracts/capability-packs.md.
42
42
  #
43
- # legacy-all = (DEFAULT, non-breaking) project the full surface, exactly as
44
- # 5.x did. An `npm update` to 6.0.0 changes nothing here.
45
- # scoped = project only the active profile's `packs` unioned with the
46
- # runtime.active_packs overlay, expanded over the `requires`
47
- # graph. Opt in with `agent-config use --profile=<id>`.
43
+ # scoped = (DEFAULT for new installs — road-to-credible-install Phase 2,
44
+ # 2026-07-27) project only the active profile's `packs` unioned
45
+ # with the runtime.active_packs overlay, expanded over the
46
+ # `requires` graph. With the default `profile.id: developer`
47
+ # this ships the engineering surface only; the full catalog is
48
+ # one explicit opt-in away (`legacy-all` below, or
49
+ # `agent-config use --profile=<id>` / packs overlay).
50
+ # legacy-all = project the full surface, exactly as 5.x did. EXISTING
51
+ # installs keep their recorded setting on upgrade (this file is
52
+ # never rewritten by `npm update`); a missing key also still
53
+ # means legacy-all, so only fresh installs get the scoped
54
+ # default. See MIGRATION.md for the flip note.
48
55
  #
49
- # Scoping is opt-in by THIS key alone — never inferred from profile.id (every
50
- # install has `developer` by default). A failed scoped projection restores the
51
- # full tree. The committed plugin marketplace (.claude-plugin/) and the Augment
52
- # tree (.augment/) always project the full set in 6.0.0.
56
+ # Scoping is controlled by THIS key alone — never inferred from profile.id.
57
+ # A failed scoped projection restores the full tree. The committed plugin
58
+ # marketplace (.claude-plugin/) and the Augment tree (.augment/) always
59
+ # project the full set.
53
60
  projection:
54
- mode: legacy-all
61
+ mode: scoped
55
62
  # --- Consumer-scoped RULE projection (road-to-request-scoped-rule-load P1,
56
63
  # opt-in) ---
57
64
  # Workspace scope for the RULE layer only (independent of `mode` above,
@@ -214,6 +221,14 @@ personal:
214
221
  # false = silently investigate, only report the conclusion
215
222
  play_by_play: false
216
223
 
224
+ # Session canary — the name the agent addresses you with at the start of
225
+ # every new task (e.g. "Alex"). Like a canary in a coal mine: when the
226
+ # greeting silently disappears, the context window is degrading and it is
227
+ # time for a fresh conversation. Also keeps the reply-close markers alive
228
+ # (ONE end-summary; PR URL as the literal last line).
229
+ # Empty = feature off. See rules/session-canary.md.
230
+ canary_name: ""
231
+
217
232
  # Prefix PR comment replies with a bot icon 🤖 (true, false)
218
233
  # Personal preference — each developer decides for themselves.
219
234
  pr_comment_bot_icon: false
@@ -546,6 +561,39 @@ consistency:
546
561
  # reading of whichever source it happened to read).
547
562
  cross_source: "on"
548
563
 
564
+ # --- Documentation screenshots ---
565
+ #
566
+ # When the agent creates screenshots for documentation (e.g. generating a docs
567
+ # site) and embeds them, sensitive data visible on the screenshot MUST be
568
+ # anonymized / pixelated before it ships. Consumed by the `doc-screenshot-hygiene`
569
+ # rule and the `screenshot-hygiene` skill. Automated detection is a helper that
570
+ # flags + pre-redacts — never a clearance; the gate for a data-bearing screenshot
571
+ # is human confirmation (routing into `non-destructive-by-default`, since a
572
+ # shipped screenshot is an irreversible published egress).
573
+ screenshots:
574
+ # Public identity tokens that are SAFE to show unredacted — the maintainer's
575
+ # OWN public handles (e.g. a username shown in an admin panel) plus well-known
576
+ # fake-data tokens. This is NOT a general fake-data dictionary and NOT
577
+ # identity-resolution: everything not on this list is treated as sensitive by
578
+ # default. A public handle co-located with a real name does NOT whitelist the
579
+ # real name. Default: [] (nothing auto-allowed; every identity is human-decided).
580
+ identity_allowlist: []
581
+
582
+ # true | false (default: true)
583
+ # true = terminal / CLI / IDE screenshots are FORBIDDEN (highest leak vector:
584
+ # absolute local paths, env tokens). Use text code blocks with text
585
+ # redaction instead.
586
+ # false = allowed, but still subject to the data-bearing human gate.
587
+ forbid_terminal_capture: true
588
+
589
+ # on | off (default: on)
590
+ # on = a data-bearing screenshot embed is gated behind this-turn human
591
+ # confirmation; uncertain/unresolved regions → redact-or-refuse, never
592
+ # ship-and-hope. Illustrative / no-data screenshots (diagrams, logos,
593
+ # placeholder-only UI) may embed with a stated justification.
594
+ # off = no data-bearing gate (legacy; the anonymization taxonomy still applies).
595
+ data_bearing_gate: "on"
596
+
549
597
  code_style:
550
598
  # minimal | full (default: minimal)
551
599
  #
@@ -707,9 +755,12 @@ ai_team:
707
755
 
708
756
  # Per-day cap on team calls. Team calls count into the EXISTING
709
757
  # cli_call_budget openai bucket (~/.event4u/agent-config/cli-calls.json,
710
- # daily UTC reset) — one subscription, one counter, never a parallel
711
- # count. This key is the team-side ceiling read against that shared
712
- # bucket. 0 = block all team calls; raise if you review heavily.
758
+ # daily UTC reset) — the counter tracks MACHINE-WIDE spend across ALL
759
+ # subscriptions/profiles on this machine (an `agent-switch` profile
760
+ # switch does NOT get its own counter; the bucket is deliberately one
761
+ # per machine, never parallel counts). This key is the team-side
762
+ # ceiling read against that shared bucket. 0 = block all team calls;
763
+ # raise if you review heavily.
713
764
  max_calls_per_day: 50
714
765
 
715
766
  # Suppress the one-line wizard/init recommendation to set up the codex
@@ -882,6 +933,17 @@ memory:
882
933
  # on = inject the compact index (spotlighted as DATA).
883
934
  session_index: "off"
884
935
 
936
+ # session_end learning-sidecar aggregation (road-to-reachable-code-memory
937
+ # Phase 4). When true, the session_end hook aggregates
938
+ # agents/memory/intake/*.jsonl through the learning sidecar (30-day decay,
939
+ # ≥2-origin corroboration) into the gitignored .agent-learning.json +
940
+ # LESSONS.md and emits the one-line memory-visibility marker. Local-only,
941
+ # budget-capped (2 s), fail-open; promotion into curated memory stays
942
+ # human via /memory:propose. SHIPS OFF (council 2026-07-27): the default
943
+ # flip is proposed only after the 30-day dogfood shows non-trivial signal
944
+ # AND session-end p95 < 2 s.
945
+ learn_on_session_end: false
946
+
885
947
  # --- Knowledge cards: global cross-project sharing (ADR-100) ---
886
948
  #
887
949
  # Structure-grounding v2. Promote *expensive* (remote) knowledge cards from
@@ -1007,6 +1069,25 @@ hooks:
1007
1069
  design_slop:
1008
1070
  enabled: false
1009
1071
 
1072
+ # PreToolUse code-graph nudge (ADR-124 Phase 4). Default-OFF. When enabled
1073
+ # AND a native code-graph engine has built a cache (or the repo ships a
1074
+ # graph.json / SCIP index), WARNS once per session (exit 2, never blocks) as
1075
+ # the agent is about to Grep/Glob or Read a source file: query the graph
1076
+ # first for "who calls / where used / impact" questions (or rebuild if the
1077
+ # index is stale, or build one if absent). Source G's strict block-first-read
1078
+ # mode is deliberately un-ported. Build the cache with
1079
+ # `agent-config code-graph build`.
1080
+ #
1081
+ # DEPRECATED (honest null, 2026-07-28): the pre-registered 2-arm retrieval
1082
+ # benchmark measured the native graph at recall 0.365 vs grep 0.797 on
1083
+ # graph-shaped questions across 3 real repos (internal/bench/reports/
1084
+ # code-graph-vs-grep.md; claim code-graph-retrieval-null). `enabled: false`
1085
+ # is permanent; deprecation notice lands at the next major, removal the
1086
+ # major after — unless external evidence (a consumer case the graph answers
1087
+ # and grep cannot) appears first.
1088
+ code_graph:
1089
+ enabled: false
1090
+
1010
1091
  # --- Decision engine ---
1011
1092
  #
1012
1093
  # Controllable gates layered over the observability surface. Absent