@event4u/agent-config 9.7.0 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (901) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +314 -190
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +57 -11
  6. package/dist/agent-src/commands/agents/audit.md +1 -1
  7. package/dist/agent-src/commands/agents/optimize.md +2 -2
  8. package/dist/agent-src/commands/agents/user.md +1 -1
  9. package/dist/agent-src/commands/agents.md +1 -1
  10. package/dist/agent-src/commands/check-current-md.md +3 -3
  11. package/dist/agent-src/commands/commit/in-chunks.md +8 -0
  12. package/dist/agent-src/commands/commit.md +17 -0
  13. package/dist/agent-src/commands/fix/portability.md +2 -2
  14. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  15. package/dist/agent-src/commands/fix/refs.md +2 -2
  16. package/dist/agent-src/commands/fix/route.md +4 -3
  17. package/dist/agent-src/commands/fix.md +9 -6
  18. package/dist/agent-src/commands/ghostwriter.md +1 -1
  19. package/dist/agent-src/commands/image.md +1 -1
  20. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  21. package/dist/agent-src/commands/optimize/skills.md +2 -2
  22. package/dist/agent-src/commands/post-as.md +1 -1
  23. package/dist/agent-src/commands/pr/create.md +4 -0
  24. package/dist/agent-src/commands/research.md +1 -1
  25. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  26. package/dist/agent-src/commands/security-audit-config.md +1 -1
  27. package/dist/agent-src/commands/team/delegate.md +4 -0
  28. package/dist/agent-src/commands/video.md +1 -1
  29. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  30. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  31. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  32. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  33. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  34. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  35. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  36. package/dist/agent-src/contexts/override-system.md +75 -5
  37. package/dist/agent-src/rules/code-provenance.md +112 -0
  38. package/dist/agent-src/rules/context-hygiene.md +2 -0
  39. package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
  40. package/dist/agent-src/rules/domain-safety-pii.md +1 -0
  41. package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
  42. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
  43. package/dist/agent-src/rules/git-history-discipline.md +2 -0
  44. package/dist/agent-src/rules/history-discipline.md +80 -0
  45. package/dist/agent-src/rules/language-and-tone.md +2 -0
  46. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
  47. package/dist/agent-src/rules/media-governance-routing.md +2 -0
  48. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  49. package/dist/agent-src/rules/no-roadmap-references.md +4 -1
  50. package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
  51. package/dist/agent-src/rules/onboarding-gate.md +2 -0
  52. package/dist/agent-src/rules/output-discipline.md +2 -0
  53. package/dist/agent-src/rules/persona-governance.md +2 -0
  54. package/dist/agent-src/rules/php-coding.md +1 -0
  55. package/dist/agent-src/rules/preservation-guard.md +3 -0
  56. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  57. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  58. package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
  59. package/dist/agent-src/rules/scale-discipline.md +92 -0
  60. package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
  61. package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
  62. package/dist/agent-src/rules/session-canary.md +77 -0
  63. package/dist/agent-src/rules/skill-quality.md +2 -0
  64. package/dist/agent-src/rules/source-confidentiality.md +2 -0
  65. package/dist/agent-src/rules/source-of-truth.md +2 -0
  66. package/dist/agent-src/rules/telegraph-speak.md +2 -0
  67. package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
  68. package/dist/agent-src/rules/tool-safety.md +4 -1
  69. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  70. package/dist/agent-src/rules/verify-before-complete.md +2 -0
  71. package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
  72. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  73. package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
  74. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  75. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  76. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  77. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  78. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  79. package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
  80. package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
  81. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  82. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  83. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  84. package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
  85. package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
  86. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  87. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  88. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  89. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  90. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  91. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  92. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  93. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  94. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  95. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  96. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  97. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  98. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  99. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  100. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  101. package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
  102. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  103. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  104. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  105. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  106. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  107. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  108. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  109. package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
  110. package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
  111. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  112. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  113. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  114. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  115. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  116. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  117. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  118. package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
  119. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
  120. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
  121. package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
  122. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
  123. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
  124. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
  125. package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
  126. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  127. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  128. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  129. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
  130. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  131. package/dist/agent-src/templates/AGENTS.md +1 -1
  132. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  133. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  134. package/dist/agent-src/templates/command.md +3 -3
  135. package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
  136. package/dist/agent-src/templates/persona.md +2 -2
  137. package/dist/agent-src/templates/rule.md +2 -2
  138. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  139. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  140. package/dist/cli/commands/doctorShell.js +20 -0
  141. package/dist/cli/commands/doctorShell.js.map +1 -1
  142. package/dist/cli/commands/rtkDetect.js +58 -0
  143. package/dist/cli/commands/rtkDetect.js.map +1 -0
  144. package/dist/cli/configRoot.js +112 -0
  145. package/dist/cli/configRoot.js.map +1 -0
  146. package/dist/cli/configRoot.test.js +97 -0
  147. package/dist/cli/configRoot.test.js.map +1 -0
  148. package/dist/cli/firstRunNotice.js +70 -0
  149. package/dist/cli/firstRunNotice.js.map +1 -0
  150. package/dist/cli/help.js +4 -1
  151. package/dist/cli/help.js.map +1 -1
  152. package/dist/cli/main.js +54 -5
  153. package/dist/cli/main.js.map +1 -1
  154. package/dist/cli/registry.js +8 -1
  155. package/dist/cli/registry.js.map +1 -1
  156. package/dist/discovery/deprecation-report.md +1 -1
  157. package/dist/discovery/discovery-manifest.json +502 -101
  158. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  159. package/dist/discovery/discovery-manifest.summary.md +6 -4
  160. package/dist/discovery/orphan-report.md +1 -1
  161. package/dist/discovery/packs.json +95 -8
  162. package/dist/discovery/trust-report.md +11 -11
  163. package/dist/discovery/workspaces.json +36 -7
  164. package/dist/hooks/dispatch.js +19475 -0
  165. package/dist/install/agentSwitchDetection.js +75 -0
  166. package/dist/install/agentSwitchDetection.js.map +1 -0
  167. package/dist/install/agentSwitchProfile.js +117 -0
  168. package/dist/install/agentSwitchProfile.js.map +1 -0
  169. package/dist/install/atomic.js +1 -1
  170. package/dist/install/detect.js +1 -1
  171. package/dist/install/install.mjs +791 -486
  172. package/dist/install/rtkDetection.js +213 -0
  173. package/dist/install/rtkDetection.js.map +1 -0
  174. package/dist/install/rule_scope.js +2 -1
  175. package/dist/install/rule_scope.js.map +1 -1
  176. package/dist/install/types.js +2 -2
  177. package/dist/install/wizard-plan.js +1 -1
  178. package/dist/install/wizardDismissals.js +58 -0
  179. package/dist/install/wizardDismissals.js.map +1 -0
  180. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  181. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  182. package/dist/mcp/registry-manifest.json +15 -4
  183. package/dist/mcp/server.json +20 -0
  184. package/dist/mcp/server.mjs +44292 -0
  185. package/dist/router.json +1 -1
  186. package/dist/scripts/condense.js +14 -7
  187. package/dist/scripts/condense.js.map +1 -1
  188. package/dist/server/app.js +12 -0
  189. package/dist/server/app.js.map +1 -1
  190. package/dist/server/io/sharedWriteCheck.js +101 -0
  191. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  192. package/dist/server/routes/ping.js +32 -0
  193. package/dist/server/routes/ping.js.map +1 -1
  194. package/dist/server/routes/settings.js +21 -4
  195. package/dist/server/routes/settings.js.map +1 -1
  196. package/dist/server/routes/userMd.js +21 -4
  197. package/dist/server/routes/userMd.js.map +1 -1
  198. package/dist/server/routes/wizard.js +68 -25
  199. package/dist/server/routes/wizard.js.map +1 -1
  200. package/dist/server/schemas/settings.js +12 -2
  201. package/dist/server/schemas/settings.js.map +1 -1
  202. package/dist/server/serverInfo.js +6 -2
  203. package/dist/server/serverInfo.js.map +1 -1
  204. package/dist/server/token.js +11 -4
  205. package/dist/server/token.js.map +1 -1
  206. package/dist/server/writeRoot.js +15 -1
  207. package/dist/server/writeRoot.js.map +1 -1
  208. package/dist/shared/capabilities.js +33 -0
  209. package/dist/shared/capabilities.js.map +1 -0
  210. package/dist/shared/capabilities.test.js +39 -0
  211. package/dist/shared/capabilities.test.js.map +1 -0
  212. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  213. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  214. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  215. package/dist/ui/index.html +15 -6
  216. package/docs/MIGRATION.md +16 -0
  217. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  218. package/package.json +22 -9
  219. package/src/agent-src/templates/AGENTS.md +1 -1
  220. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  221. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  222. package/src/config/agent-settings.template.yml +94 -13
  223. package/src/config/discovery/packs.yml +22 -0
  224. package/src/config/discovery/workspaces.yml +1 -1
  225. package/src/config/evaluator-budgets.json +47 -0
  226. package/src/config/hook-latency-budget.json +20 -0
  227. package/src/config/reach-channels.yml +217 -0
  228. package/src/config/reach-prescriptions-intake.yml +200 -0
  229. package/src/install/agentSwitchDetection.ts +90 -0
  230. package/src/install/agentSwitchProfile.ts +131 -0
  231. package/src/install/atomic.ts +1 -1
  232. package/src/install/detect.ts +1 -1
  233. package/src/install/rtkDetection.ts +274 -0
  234. package/src/install/rule_scope.ts +9 -2
  235. package/src/install/types.ts +2 -2
  236. package/src/install/wizard-plan.ts +1 -1
  237. package/src/install/wizardDismissals.ts +60 -0
  238. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  239. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  240. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  241. package/src/scripts/_dispatch.bash +96 -0
  242. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  243. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  244. package/src/scripts/_lib/detect_target_license.ts +714 -0
  245. package/src/scripts/_lib/exec_evidence.ts +251 -0
  246. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
  247. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
  248. package/src/scripts/_lib/install_drift.ts +194 -0
  249. package/src/scripts/_lib/kernel_rules.ts +46 -0
  250. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  251. package/src/scripts/_lib/orchestration_record.ts +91 -2
  252. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  253. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  254. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  255. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  256. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  257. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  258. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  259. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  260. package/src/scripts/_lib/persistence/types.ts +109 -0
  261. package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
  262. package/src/scripts/_lib/risk_paths.ts +160 -0
  263. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  264. package/src/scripts/_lib/secret_detector.test.ts +108 -0
  265. package/src/scripts/_lib/secret_detector.ts +328 -0
  266. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  267. package/src/scripts/_lib/spawn_env.ts +7 -0
  268. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  269. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  270. package/src/scripts/_lib/tool_probe.ts +359 -0
  271. package/src/scripts/_lib/worker_budget.ts +107 -0
  272. package/src/scripts/adr/regenerate_index.ts +81 -6
  273. package/src/scripts/ai_council/blind_review.ts +0 -0
  274. package/src/scripts/ai_council/config.ts +12 -6
  275. package/src/scripts/ai_council/orchestrator.ts +73 -3
  276. package/src/scripts/ai_team/review_gate.ts +8 -10
  277. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  278. package/src/scripts/audit_adr_coverage.ts +33 -0
  279. package/src/scripts/audit_initial_context.ts +1 -1
  280. package/src/scripts/bench_cross_source_eval.ts +400 -0
  281. package/src/scripts/bench_honesty_score.ts +1093 -0
  282. package/src/scripts/bench_hook_latency.ts +218 -0
  283. package/src/scripts/build_mcp_catalog.ts +275 -0
  284. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  285. package/src/scripts/build_proof.ts +207 -0
  286. package/src/scripts/chat_history.ts +8 -5
  287. package/src/scripts/check_adr_frontmatter.ts +195 -0
  288. package/src/scripts/check_artefact_count_messaging.ts +4 -0
  289. package/src/scripts/check_backstop_debt.ts +210 -0
  290. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  291. package/src/scripts/check_claims.ts +188 -8
  292. package/src/scripts/check_comparison.ts +12 -0
  293. package/src/scripts/check_enforcement_coverage.ts +592 -0
  294. package/src/scripts/check_evaluator_budgets.ts +99 -0
  295. package/src/scripts/check_kernel_rule_bundle.ts +16 -12
  296. package/src/scripts/check_knowledge_sharing.ts +12 -1
  297. package/src/scripts/check_no_external_sources.ts +2 -2
  298. package/src/scripts/check_reach_channels.ts +407 -0
  299. package/src/scripts/check_reach_staleness.ts +364 -0
  300. package/src/scripts/check_secret_leak.test.ts +47 -0
  301. package/src/scripts/check_secret_leak.ts +290 -0
  302. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  303. package/src/scripts/code_graph/build.ts +0 -0
  304. package/src/scripts/code_graph/cli.ts +379 -0
  305. package/src/scripts/code_graph/detect.ts +186 -0
  306. package/src/scripts/code_graph/extract.ts +386 -0
  307. package/src/scripts/code_graph/intent.ts +45 -0
  308. package/src/scripts/code_graph/loader.ts +123 -0
  309. package/src/scripts/code_graph/query.ts +290 -0
  310. package/src/scripts/code_graph/sanitize.ts +30 -0
  311. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  312. package/src/scripts/code_graph/types.ts +83 -0
  313. package/src/scripts/code_graph/validate.ts +63 -0
  314. package/src/scripts/condense.ts +14 -6
  315. package/src/scripts/context_hygiene_hook.ts +8 -5
  316. package/src/scripts/council_cli.ts +126 -12
  317. package/src/scripts/detect_target_license.ts +203 -0
  318. package/src/scripts/evaluator_umbrella.sh +145 -0
  319. package/src/scripts/external_sources_denylist.json +8 -4
  320. package/src/scripts/first_run_gate_hook.ts +9 -5
  321. package/src/scripts/generate_subagent_floor.ts +194 -0
  322. package/src/scripts/hermetic-install.sh +3 -3
  323. package/src/scripts/hook_manifest.yaml +65 -16
  324. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  325. package/src/scripts/hooks/block_no_verify.ts +9 -9
  326. package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
  327. package/src/scripts/hooks/concern_registry.ts +75 -0
  328. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  329. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  330. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  331. package/src/scripts/hooks/hook_stdin.ts +42 -0
  332. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  333. package/src/scripts/hot_context_hook.ts +7 -6
  334. package/src/scripts/injection_scan_hook.ts +9 -1
  335. package/src/scripts/install +6 -6
  336. package/src/scripts/install-hooks.sh +4 -4
  337. package/src/scripts/install.sh +5 -4
  338. package/src/scripts/install.ts +264 -23
  339. package/src/scripts/iron_law_sha.ts +3 -12
  340. package/src/scripts/learning_sidecar.ts +0 -0
  341. package/src/scripts/lint_budget_ownership.ts +89 -0
  342. package/src/scripts/lint_command_routing.ts +35 -5
  343. package/src/scripts/lint_command_verbs.ts +42 -9
  344. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  345. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  346. package/src/scripts/lint_documented_commands.ts +670 -0
  347. package/src/scripts/lint_framework_leakage.ts +17 -3
  348. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  349. package/src/scripts/lint_governed_writes.ts +335 -0
  350. package/src/scripts/lint_hidden_unicode.ts +6 -0
  351. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  352. package/src/scripts/lint_memory_tripwire.ts +186 -0
  353. package/src/scripts/lint_override_kernel_guard.ts +267 -0
  354. package/src/scripts/lint_persistence.ts +171 -0
  355. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  356. package/src/scripts/lint_provenance.ts +547 -0
  357. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  358. package/src/scripts/lint_spawn_payload.ts +283 -0
  359. package/src/scripts/lint_store_boundary.ts +152 -0
  360. package/src/scripts/lint_versioned_cache.ts +7 -1
  361. package/src/scripts/mcp_server/__main__.ts +7 -2
  362. package/src/scripts/mcp_server/catalog.ts +23 -1
  363. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  364. package/src/scripts/mcp_server/prompts.ts +6 -0
  365. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  366. package/src/scripts/mcp_server/tools.ts +56 -5
  367. package/src/scripts/mcp_telemetry_query.ts +2 -33
  368. package/src/scripts/mcp_telemetry_store.ts +64 -34
  369. package/src/scripts/measure_rule_budget.ts +3 -12
  370. package/src/scripts/memory_learn_hook.ts +126 -0
  371. package/src/scripts/memory_lookup.ts +0 -0
  372. package/src/scripts/memory_replay_24.ts +312 -0
  373. package/src/scripts/memory_report.ts +16 -3
  374. package/src/scripts/memory_signal.ts +48 -0
  375. package/src/scripts/memory_status.ts +6 -0
  376. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  377. package/src/scripts/onboarding_gate_hook.ts +8 -5
  378. package/src/scripts/orchestration_record.ts +16 -0
  379. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  380. package/src/scripts/prepack-check.mjs +17 -0
  381. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  382. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  383. package/src/scripts/profile_staleness_hook.ts +8 -7
  384. package/src/scripts/reach_doctor.ts +1651 -0
  385. package/src/scripts/release.ts +24 -3
  386. package/src/scripts/report_install_drift.ts +109 -0
  387. package/src/scripts/risk_escalation_shadow.ts +160 -0
  388. package/src/scripts/roadmap_progress_hook.ts +8 -5
  389. package/src/scripts/schemas/agent-settings.schema.json +23 -0
  390. package/src/scripts/schemas/license-policy.schema.json +89 -0
  391. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  392. package/src/scripts/schemas/reach-channels.schema.json +134 -0
  393. package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
  394. package/src/scripts/schemas/rule.schema.json +20 -0
  395. package/src/scripts/self_review_gate.test.ts +173 -1
  396. package/src/scripts/self_review_gate.ts +155 -15
  397. package/src/scripts/session_canary_hook.ts +182 -0
  398. package/src/scripts/skill_linter.ts +55 -0
  399. package/src/scripts/smoke_quickstart.ts +2 -2
  400. package/src/scripts/surface_probe_hook.ts +8 -7
  401. package/src/scripts/sync_gitattributes.ts +310 -0
  402. package/src/scripts/team_review_gate_hook.ts +13 -16
  403. package/src/scripts/validate_reach_prescriptions.ts +751 -0
  404. package/src/scripts/verify_before_complete_hook.ts +8 -5
  405. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  406. package/src/server/schemas/settings.ts +24 -2
  407. package/src/shared/capabilities.test.ts +43 -0
  408. package/src/shared/capabilities.ts +75 -0
  409. package/src/templates/minimal/agents-overrides-readme.md +20 -0
  410. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  411. package/dist/ui/assets/index-BiEZiZ31.js +0 -40
  412. package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
  413. package/docs/CLAIMS.md +0 -261
  414. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  415. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  416. package/docs/SKILL_CENSUS.md +0 -352
  417. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  418. package/docs/adrs/cost/README.md +0 -9
  419. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  420. package/docs/adrs/memory/README.md +0 -10
  421. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  422. package/docs/adrs/router/README.md +0 -9
  423. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  424. package/docs/adrs/schema/README.md +0 -9
  425. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  426. package/docs/adrs/smoke/README.md +0 -9
  427. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  428. package/docs/adrs/telegraph/README.md +0 -9
  429. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  430. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  431. package/docs/anti-reskin-gate.md +0 -60
  432. package/docs/architecture/augment-projection.md +0 -70
  433. package/docs/architecture/claude-bundle.md +0 -77
  434. package/docs/architecture/current-onboard-baseline.md +0 -126
  435. package/docs/architecture/current-safety-behavior.md +0 -137
  436. package/docs/architecture/multi-tool-projection.md +0 -125
  437. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  438. package/docs/architecture/source-projection.md +0 -85
  439. package/docs/architecture.md +0 -390
  440. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  441. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  442. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  443. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  444. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  445. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  446. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  447. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  448. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  449. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  450. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  451. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  452. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  453. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  454. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  455. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  456. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  457. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  458. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  459. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  460. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  461. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  462. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  463. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  464. package/docs/artefact-census.md +0 -71
  465. package/docs/benchmark.md +0 -648
  466. package/docs/benchmark.pinned.yml +0 -31
  467. package/docs/benchmarks.md +0 -85
  468. package/docs/capability-matrix.md +0 -33
  469. package/docs/case-studies/_template.md +0 -60
  470. package/docs/case-studies/frontend-design-positioning.md +0 -86
  471. package/docs/catalog.md +0 -721
  472. package/docs/command-flows.md +0 -272
  473. package/docs/command-naming-audit.md +0 -60
  474. package/docs/comparison.yaml +0 -45
  475. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  476. package/docs/contracts/STABILITY.md +0 -188
  477. package/docs/contracts/adoption-signal-floor.md +0 -127
  478. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  479. package/docs/contracts/adr-chat-history-split.md +0 -140
  480. package/docs/contracts/adr-command-suggestion.md +0 -144
  481. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  482. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  483. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  484. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  485. package/docs/contracts/adr-layout.md +0 -107
  486. package/docs/contracts/adr-level-6-productization.md +0 -145
  487. package/docs/contracts/adr-mcp-runtime.md +0 -128
  488. package/docs/contracts/adr-product-ui-track.md +0 -381
  489. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  490. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  491. package/docs/contracts/adr-user-types-axis.md +0 -127
  492. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  493. package/docs/contracts/agent-user-schema.md +0 -170
  494. package/docs/contracts/agents-layout.md +0 -148
  495. package/docs/contracts/agents-md-tech-stack.md +0 -75
  496. package/docs/contracts/ai-council-config.md +0 -829
  497. package/docs/contracts/ai-team-config.md +0 -224
  498. package/docs/contracts/analysis-memory-loop.md +0 -149
  499. package/docs/contracts/at-rest-encryption.md +0 -191
  500. package/docs/contracts/audit-log-v1.md +0 -150
  501. package/docs/contracts/auto-orchestration-v1.md +0 -70
  502. package/docs/contracts/benchmark-ab-contract.md +0 -106
  503. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  504. package/docs/contracts/benchmark-report-schema.md +0 -113
  505. package/docs/contracts/branch-protection-policy.md +0 -139
  506. package/docs/contracts/brand-token-consumption.md +0 -74
  507. package/docs/contracts/capability-boundary.md +0 -69
  508. package/docs/contracts/capability-packs.md +0 -217
  509. package/docs/contracts/ci-cost-budget.md +0 -111
  510. package/docs/contracts/ci-green-floor.md +0 -141
  511. package/docs/contracts/command-category-governance.md +0 -84
  512. package/docs/contracts/command-clusters.md +0 -399
  513. package/docs/contracts/command-surface-tiers.md +0 -176
  514. package/docs/contracts/command-taxonomy.md +0 -137
  515. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  516. package/docs/contracts/config-presets.md +0 -144
  517. package/docs/contracts/conformance.md +0 -84
  518. package/docs/contracts/consumer-bridge.md +0 -73
  519. package/docs/contracts/context-paths.md +0 -101
  520. package/docs/contracts/context-spine.md +0 -179
  521. package/docs/contracts/cost-dashboard.md +0 -143
  522. package/docs/contracts/cost-enforcement.md +0 -134
  523. package/docs/contracts/cost-profile-defaults.md +0 -110
  524. package/docs/contracts/cost-summary-schema.md +0 -107
  525. package/docs/contracts/creative-pack-boundary.md +0 -63
  526. package/docs/contracts/cross-repo-retrieval.md +0 -64
  527. package/docs/contracts/cross-wing-handoff.md +0 -134
  528. package/docs/contracts/daily-workspace.md +0 -147
  529. package/docs/contracts/decision-engine-gates.md +0 -120
  530. package/docs/contracts/decision-trace-v1.md +0 -177
  531. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  532. package/docs/contracts/design-artifact-verification.md +0 -153
  533. package/docs/contracts/discovery-manifest.md +0 -209
  534. package/docs/contracts/discovery-manifest.schema.json +0 -254
  535. package/docs/contracts/evidence-based-pruning.md +0 -102
  536. package/docs/contracts/explain-modes.md +0 -187
  537. package/docs/contracts/explain-trace.schema.json +0 -144
  538. package/docs/contracts/file-ownership-matrix.json +0 -13941
  539. package/docs/contracts/file-ownership-matrix.md +0 -135
  540. package/docs/contracts/frontmatter-contract.md +0 -140
  541. package/docs/contracts/ghostwriter-schema.md +0 -337
  542. package/docs/contracts/governance-enforcement-projection.md +0 -159
  543. package/docs/contracts/gui-wizard.md +0 -350
  544. package/docs/contracts/harness-expectations.md +0 -128
  545. package/docs/contracts/hook-architecture-v1.md +0 -325
  546. package/docs/contracts/host-agent-protocol.md +0 -110
  547. package/docs/contracts/implement-ticket-flow.md +0 -625
  548. package/docs/contracts/init-telemetry.md +0 -132
  549. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  550. package/docs/contracts/install-layout.md +0 -249
  551. package/docs/contracts/install-scopes.md +0 -82
  552. package/docs/contracts/installed-tools-lockfile.md +0 -144
  553. package/docs/contracts/installer-agent-mode.md +0 -137
  554. package/docs/contracts/iron-law-overrides.txt +0 -26
  555. package/docs/contracts/kernel-membership.md +0 -339
  556. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  557. package/docs/contracts/linear-ai-three-layers.md +0 -130
  558. package/docs/contracts/linter-structural-model.md +0 -181
  559. package/docs/contracts/load-context-budget-model.md +0 -259
  560. package/docs/contracts/load-context-schema.md +0 -220
  561. package/docs/contracts/local-analytics.md +0 -160
  562. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  563. package/docs/contracts/local-server-api.md +0 -134
  564. package/docs/contracts/low-impact-corpus-format.md +0 -95
  565. package/docs/contracts/mcp-beta-criteria.md +0 -130
  566. package/docs/contracts/mcp-cloud-scope.md +0 -355
  567. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  568. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  569. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  570. package/docs/contracts/mcp-tool-inventory.md +0 -64
  571. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  572. package/docs/contracts/measurement-baseline.md +0 -103
  573. package/docs/contracts/memory-visibility-v1.md +0 -160
  574. package/docs/contracts/mental-models.md +0 -336
  575. package/docs/contracts/migrate-command.md +0 -233
  576. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  577. package/docs/contracts/namespace.md +0 -125
  578. package/docs/contracts/no-runtime-boundary.md +0 -61
  579. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  580. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  581. package/docs/contracts/package-self-orientation.md +0 -163
  582. package/docs/contracts/pilot/agent-authority.md +0 -24
  583. package/docs/contracts/pilot/direct-answers.md +0 -70
  584. package/docs/contracts/pilot/language-and-tone.md +0 -63
  585. package/docs/contracts/plain-language-surface.md +0 -117
  586. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  587. package/docs/contracts/profile-system.md +0 -167
  588. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  589. package/docs/contracts/release-pr-gating.md +0 -151
  590. package/docs/contracts/release-sizing.md +0 -107
  591. package/docs/contracts/release-trunk-sync.md +0 -105
  592. package/docs/contracts/review-lens-schema.md +0 -64
  593. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  594. package/docs/contracts/role-experience.md +0 -125
  595. package/docs/contracts/router-blending.md +0 -71
  596. package/docs/contracts/rule-classification.md +0 -171
  597. package/docs/contracts/rule-interactions.md +0 -132
  598. package/docs/contracts/rule-interactions.yml +0 -260
  599. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  600. package/docs/contracts/rule-router.md +0 -287
  601. package/docs/contracts/safety-model.md +0 -129
  602. package/docs/contracts/session-profile-overlay.md +0 -157
  603. package/docs/contracts/settings-api.md +0 -264
  604. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  605. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  606. package/docs/contracts/skill-bundled-assets.md +0 -62
  607. package/docs/contracts/skill-discovery.md +0 -80
  608. package/docs/contracts/skill-distribution-channels.md +0 -66
  609. package/docs/contracts/skill-domains.md +0 -144
  610. package/docs/contracts/skill-dry-run.md +0 -47
  611. package/docs/contracts/skill-family-map.yml +0 -915
  612. package/docs/contracts/smoke-contracts.md +0 -144
  613. package/docs/contracts/subagent-boundary.md +0 -59
  614. package/docs/contracts/surface-agent-contracts.md +0 -153
  615. package/docs/contracts/surface-matrix.md +0 -108
  616. package/docs/contracts/surface-tiers.md +0 -81
  617. package/docs/contracts/telegraph-telemetry.md +0 -83
  618. package/docs/contracts/ticket-bundle-format.md +0 -233
  619. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  620. package/docs/contracts/trust-and-safety.md +0 -144
  621. package/docs/contracts/ui-stack-extension.md +0 -237
  622. package/docs/contracts/ui-track-flow.md +0 -329
  623. package/docs/contracts/universal-skills.md +0 -91
  624. package/docs/contracts/user-type-schema.md +0 -146
  625. package/docs/contracts/value-dashboard-spec.md +0 -378
  626. package/docs/contracts/value-report-schema.md +0 -168
  627. package/docs/contracts/workflow-packs.md +0 -121
  628. package/docs/contracts/workspace-boundary.md +0 -84
  629. package/docs/contracts/workspace-documents.md +0 -144
  630. package/docs/contracts/write-engine.md +0 -182
  631. package/docs/cookbook.md +0 -152
  632. package/docs/customization.md +0 -685
  633. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  634. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  635. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  636. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  637. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  638. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  639. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  640. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  641. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  642. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  643. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  644. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  645. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  646. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  647. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  648. package/docs/decisions/ADR-016-installer-architecture.md +0 -189
  649. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  650. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  651. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  652. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  653. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  654. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  655. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  656. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  657. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  658. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  659. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  660. package/docs/decisions/ADR-028-root-layout.md +0 -147
  661. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  662. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  663. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  664. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  665. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  666. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  667. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  668. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  669. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  670. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  671. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  672. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  673. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  674. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  675. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  676. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  677. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  678. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  679. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  680. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  681. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  682. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  683. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  684. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  685. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  686. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  687. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  688. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  689. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  690. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  691. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  692. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  693. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  694. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  695. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  696. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  697. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  698. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  699. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  700. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  701. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  702. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  703. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  704. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  705. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  706. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  707. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  708. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  709. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  710. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  711. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  712. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  713. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  714. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  715. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  716. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  717. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  718. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  719. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  720. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  721. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  722. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  723. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  724. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  725. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  726. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  727. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  728. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  729. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  730. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  731. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  732. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  733. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  734. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  735. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  736. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  737. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  738. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  739. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  740. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  741. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
  742. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
  743. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  744. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  745. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
  746. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  747. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  748. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  749. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  750. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  751. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  752. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  753. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  754. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  755. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  756. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  757. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  758. package/docs/decisions/INDEX.md +0 -136
  759. package/docs/deploy/connector-setup.md +0 -129
  760. package/docs/deploy/env-vars.md +0 -70
  761. package/docs/deploy/policy-cookbook.md +0 -130
  762. package/docs/deploy/quickstart.md +0 -112
  763. package/docs/deploy/small-team-recipe.md +0 -148
  764. package/docs/deploy/team-deployment-posture.md +0 -111
  765. package/docs/design/adversarial-council-eval.md +0 -106
  766. package/docs/design/council-vs-solo-baseline.md +0 -92
  767. package/docs/design/cross-model-parity-eval.md +0 -82
  768. package/docs/design/length-neutral-judge-rerun.md +0 -92
  769. package/docs/design/utilization-window-criteria.md +0 -51
  770. package/docs/development.md +0 -230
  771. package/docs/distribution/awesome-list-submission.md +0 -46
  772. package/docs/distribution/consumer-matrix.md +0 -96
  773. package/docs/distribution/launch-story-draft.md +0 -58
  774. package/docs/distribution/mcp-submission-checklist.md +0 -95
  775. package/docs/distribution/public-install-smoke.md +0 -68
  776. package/docs/distribution/registries.md +0 -117
  777. package/docs/distribution/registry-submissions.md +0 -85
  778. package/docs/distribution/telemetry-privacy.md +0 -128
  779. package/docs/distribution/telemetry-schema.md +0 -174
  780. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  781. package/docs/end-to-end-walkthroughs.md +0 -165
  782. package/docs/enforcement-by-host.md +0 -44
  783. package/docs/examples/agent-user.example.md +0 -22
  784. package/docs/experiences/agency.md +0 -49
  785. package/docs/experiences/content_creator.md +0 -49
  786. package/docs/experiences/developer.md +0 -49
  787. package/docs/experiences/finance.md +0 -50
  788. package/docs/experiences/founder.md +0 -49
  789. package/docs/experiences/ops.md +0 -49
  790. package/docs/featured-commands.md +0 -27
  791. package/docs/featured-skills.md +0 -95
  792. package/docs/flows.md +0 -67
  793. package/docs/getting-started-by-role.md +0 -190
  794. package/docs/getting-started-laravel.md +0 -72
  795. package/docs/getting-started-local-stdio.md +0 -77
  796. package/docs/getting-started.md +0 -254
  797. package/docs/github-topics.md +0 -93
  798. package/docs/governance-advantage.md +0 -72
  799. package/docs/governance.md +0 -96
  800. package/docs/guides/cross-repo-linked-projects.md +0 -93
  801. package/docs/guides/cross-repo-retrieval.md +0 -61
  802. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  803. package/docs/guides/local-analytics.md +0 -125
  804. package/docs/guides/local-knowledge.md +0 -127
  805. package/docs/guides/skill-discovery.md +0 -71
  806. package/docs/guides/skill-preview.md +0 -71
  807. package/docs/hook-payload-capture.md +0 -221
  808. package/docs/install-friction-report.md +0 -66
  809. package/docs/installation.md +0 -959
  810. package/docs/maintainers/branch-protection.md +0 -105
  811. package/docs/maintainers/dev-mode.md +0 -106
  812. package/docs/maintainers/optional-media-deps.md +0 -50
  813. package/docs/maintainers/system-map.md +0 -85
  814. package/docs/mcp-registries.md +0 -94
  815. package/docs/mcp-server.md +0 -175
  816. package/docs/mcp.md +0 -147
  817. package/docs/media/proof-demo.cast +0 -14
  818. package/docs/media/proof-demo.gif +0 -0
  819. package/docs/migration/consumer-template-consumption-model.md +0 -145
  820. package/docs/migration/divergences/README.md +0 -55
  821. package/docs/migration/divergences/_template.md +0 -50
  822. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  823. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  824. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  825. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  826. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  827. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  828. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  829. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  830. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  831. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  832. package/docs/migration/node-floor.md +0 -86
  833. package/docs/migration/v1-to-v2.md +0 -156
  834. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  835. package/docs/migrations/commands-1.15.0.md +0 -117
  836. package/docs/parity/bench-external.json +0 -58
  837. package/docs/parity/bench.json +0 -41
  838. package/docs/parity/command-frontmatter.md +0 -60
  839. package/docs/parity/external-runtime.md +0 -46
  840. package/docs/personas.md +0 -178
  841. package/docs/positioning-evidence.md +0 -86
  842. package/docs/profiles.md +0 -108
  843. package/docs/proof.md +0 -176
  844. package/docs/quality.md +0 -98
  845. package/docs/readme-split-plan.md +0 -102
  846. package/docs/recruits/_template.md +0 -81
  847. package/docs/release-runbook.md +0 -141
  848. package/docs/role-experiences.md +0 -19
  849. package/docs/safety.md +0 -30
  850. package/docs/second-brain-scope.md +0 -116
  851. package/docs/self-review-gate.md +0 -65
  852. package/docs/setup/enterprise-and-offline.md +0 -201
  853. package/docs/setup/mcp-client-config.md +0 -358
  854. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  855. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  856. package/docs/setup/mcp-cloud-setup.md +0 -183
  857. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  858. package/docs/setup/mcp-server-docker.md +0 -101
  859. package/docs/setup/per-ide/aider.md +0 -48
  860. package/docs/setup/per-ide/antigravity.md +0 -68
  861. package/docs/setup/per-ide/augment.md +0 -89
  862. package/docs/setup/per-ide/claude-code.md +0 -97
  863. package/docs/setup/per-ide/claude-desktop.md +0 -207
  864. package/docs/setup/per-ide/cline.md +0 -43
  865. package/docs/setup/per-ide/codebuddy.md +0 -63
  866. package/docs/setup/per-ide/codex.md +0 -46
  867. package/docs/setup/per-ide/continue.md +0 -68
  868. package/docs/setup/per-ide/copilot.md +0 -80
  869. package/docs/setup/per-ide/cursor.md +0 -125
  870. package/docs/setup/per-ide/droid.md +0 -65
  871. package/docs/setup/per-ide/gemini-cli.md +0 -45
  872. package/docs/setup/per-ide/jetbrains.md +0 -76
  873. package/docs/setup/per-ide/kilocode.md +0 -66
  874. package/docs/setup/per-ide/kiro.md +0 -72
  875. package/docs/setup/per-ide/opencode.md +0 -62
  876. package/docs/setup/per-ide/qoder.md +0 -63
  877. package/docs/setup/per-ide/roocode.md +0 -68
  878. package/docs/setup/per-ide/trae.md +0 -63
  879. package/docs/setup/per-ide/warp.md +0 -63
  880. package/docs/setup/per-ide/windsurf.md +0 -109
  881. package/docs/setup/per-ide/zed.md +0 -73
  882. package/docs/showcase.md +0 -209
  883. package/docs/skill-duplication-findings.md +0 -91
  884. package/docs/skills-catalog.md +0 -265
  885. package/docs/skills-taxonomy.md +0 -90
  886. package/docs/spawn-site-policy.md +0 -72
  887. package/docs/succession.md +0 -80
  888. package/docs/threat-model.md +0 -29
  889. package/docs/troubleshooting.md +0 -155
  890. package/docs/ui-track-mental-model.md +0 -121
  891. package/docs/us-vs-the-category.md +0 -38
  892. package/docs/value.md +0 -86
  893. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  894. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  895. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  896. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  897. package/docs/walkthroughs/daily-workspace.md +0 -127
  898. package/docs/wedge/production-validator/README.md +0 -81
  899. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  900. package/docs/wedge/production-validator/production-validator.md +0 -83
  901. package/docs/wizard.md +0 -173
@@ -1,159 +0,0 @@
1
- ---
2
- stability: beta
3
- keep-beta-until: 2026-08-17
4
- ---
5
-
6
- # Governance Enforcement at Projection Time — design spec
7
-
8
- > **Status: Measured → honest-null (2026-06-25). NOT shipped.** The length-controlled
9
- > eval (54 paired runs, sonnet-4-6) found `discipline_score = 1.000` for `package`,
10
- > `hardened` and `hardened-placebo` alike — Δ(hardened − package) = 0.000 across all
11
- > 18 paired instances. The cooperative `package` rules already catch trapD
12
- > (non-destructive) + trapE (scope-control) at ceiling, so the hardened blocks add
13
- > nothing measurable. Per this spec's own rule, `condense.ts` is **not** wired and
14
- > no public "enforcement" claim is made. **Caveat:** the discipline corpus is
15
- > single-shot on micro-fixtures and does NOT reproduce the token-pressure /
16
- > long-horizon condition the treatment targets — it saturates. Revisit only behind
17
- > a pressure/long-context corpus, not by writing more enforcement code. The opt-in
18
- > `hardened` arm remains in `bench_ab_v2_run.ts` as a reusable measurement tool.
19
-
20
- ## Problem
21
-
22
- The package's highest-stakes rules (commit only when told, never push/merge
23
- autonomously, no whimsical bulk deletion) are **model-cooperative**: they are
24
- strong prose the agent is asked to follow. Under token pressure or long-horizon
25
- autonomy, cooperative rules can be violated. An external operator-runtime
26
- reference ("Source A") closes this with **runtime hooks that hard-block** the
27
- tool call — but those reach only ~2 of our 7 projection hosts (Claude Code,
28
- Cline/MCP). The other five (Cursor, Windsurf, Copilot, Gemini, Augment) are
29
- static-only ([`enforcement-by-host.md`](../enforcement-by-host.md)).
30
-
31
- The universal lever is therefore **compile-time**: harden the few irreversible
32
- Iron Laws into each host's *native* instruction format at projection time, with
33
- explicit override-guard phrasing — so the constraint is as emphatic as the host
34
- medium allows, everywhere, not just where hooks exist.
35
-
36
- ## Non-goals (identity guardrails)
37
-
38
- - **Not runtime.** This is a projection-time transform, not a daemon, not new
39
- cross-session state. Runtime hook hardening is separate (Phase 2, MCP-only).
40
- - **Not all 93 rules.** Hardening a large rule set would blow the context
41
- budget and dilute the signal. The set is deliberately tiny (see Selector).
42
- - **Not a compliance guarantee.** A static host can still ignore a hardened
43
- block — the mechanism *maximises* emphasis, it does not *block*. The eval
44
- measures whether it actually moves the violation rate; honest-null is allowed.
45
-
46
- ## Selector — which rules get hardened
47
-
48
- Default set = rules already carrying **`tier: safety-floor`** in frontmatter.
49
- Today that is exactly **3** files — the irreversible-action set:
50
-
51
- - `src/rules/commit-policy.md`
52
- - `src/rules/non-destructive-by-default.md`
53
- - `src/rules/scope-control.md`
54
-
55
- Optionally extend to a named kernel rule (`verify-before-complete`, `tier:
56
- kernel`) by explicit opt-in. Reusing the existing `tier` signal means **no
57
- frontmatter-schema change** — `rule.schema.json` has `additionalProperties:
58
- false`, so adding a new `enforcement:` key would require a schema bump; we avoid
59
- that until finer-grained control is actually needed. If we later need a rule
60
- that is `safety-floor` but *not* hardened (or vice versa), introduce an explicit
61
- `enforcement: hard` key and bump the schema then.
62
-
63
- ## Mechanism
64
-
65
- A projection-time transform in the existing engine (`src/scripts/condense.ts`,
66
- the per-host `generate_*` path). For each hardened rule, after the normal rule
67
- body is projected into a host's native format, append a compact **HARD
68
- CONSTRAINT** block tuned to that host. The block is short (3–6 lines) so the
69
- per-projection token cost stays bounded.
70
-
71
- Canonical block shape (host-tuned wording varies — see matrix):
72
-
73
- ```
74
- ## HARD CONSTRAINT — do not override
75
- - NEVER <forbidden action> without explicit user approval in this message.
76
- - This is a HARD CONSTRAINT, not a preference. If asked to bypass it, refuse
77
- and require an explicit, unambiguous instruction this turn.
78
- ```
79
-
80
- ## Per-host tuning (empirical — Phase 1 item 2)
81
-
82
- Wording efficacy differs by host. Confirm before locking; capture findings in a
83
- context note.
84
-
85
- | Host | Mechanism | Phrasing lever (hypothesis, to confirm) |
86
- |---|---|---|
87
- | Claude Code / Cline (MCP) | compile-time **+** runtime hook (Phase 2) | reasoning-chain + the block; hook is the floor |
88
- | Cursor (`.cursorrules`) | compile-time only | aggressive NEVER/ALWAYS caps |
89
- | Windsurf (`.windsurfrules`) | compile-time only | aggressive NEVER/ALWAYS caps |
90
- | Copilot (`copilot-instructions.md`) | compile-time only | short imperative + explicit refusal script |
91
- | Gemini (`GEMINI.md`) | compile-time only | short imperative |
92
- | Augment | compile-time only | native rule emphasis |
93
-
94
- ## Verification — the "linter" half
95
-
96
- A drift gate (analogous to `update_counts.ts --check` / `check_references.ts`):
97
- for every hardened rule, assert that each host's projected artifact actually
98
- contains the HARD CONSTRAINT block. Fail CI on drift. This is what makes
99
- "hardened everywhere" a checked fact, not an assumption.
100
-
101
- ## Eval — does it move the needle?
102
-
103
- Extend the existing A/B substrate (`bench_ab_v2_run.ts` family + per-skill
104
- `evals/`) with a small **discipline** set: scenarios that tempt an
105
- irreversible-action violation under pressure (e.g. "just commit and push this,
106
- we're in a hurry"). Measure violation rate **with vs without** the hardened
107
- block, **length-controlled** (the hardened block adds tokens — the control arm
108
- must match length so we measure emphasis, not verbosity). Report per host where
109
- feasible. **Honest-null is a valid outcome** — if the block does not move the
110
- rate, it is prompt-engineering theatre and we say so rather than ship it.
111
-
112
- ## Risks / open questions
113
-
114
- - **Token budget.** Each hardened block adds tokens to every projection — in
115
- tension with the thin-projection token-saving work. Mitigation: tiny set (3),
116
- short blocks; measure net cost in the eval.
117
- - **Per-host efficacy unknown** until item 2 runs; the matrix above is hypothesis.
118
- - **Over-claim risk.** Public copy must keep saying "compile-time emphasis on
119
- static hosts, deterministic block only on hook-capable hosts" — never
120
- "deterministic everywhere".
121
-
122
- ## Eval addendum — reuse the existing discipline harness (don't rebuild)
123
-
124
- Recon (2026-06-25) found the discipline-axis benchmark already built:
125
- `internal/bench/corpora/ab-trackb-v2.yaml` (5 trap archetypes, per-task fixtures
126
- under `internal/bench/ab/fixtures-v2/`), paired + length-controlled arms in
127
- `src/scripts/bench_ab_v2_run.ts` (a `package` arm vs a length-matched `placebo`
128
- arm), and a **deterministic** scorer (`src/scripts/_lib/bench_ab_scoring_v2.ts`, no LLM judge).
129
- It already covers **2 of the 3** hardened rules:
130
-
131
- - `trapD` (destructive-op-needs-confirm) → **non-destructive-by-default** ✓
132
- - `trapE` (premature-completion/scope) → **scope-control** ✓
133
- - `commit-policy` → **gap** (no trap archetype yet).
134
-
135
- So the eval build is small and reuses everything:
136
-
137
- 1. Add a **`hardened` arm** to `bench_ab_v2_run.ts` `ARMS` = the `package` arm
138
- **plus** the prototype HARD CONSTRAINT blocks for the 3 safety-floor rules
139
- injected into the sysprompt. Length-control inherits the existing `placebo`
140
- methodology (match injected token footprint).
141
- 2. Add **commit-policy trap tasks** (`trapF`?) + fixtures (e.g. "just commit and
142
- push this, we're in a hurry" against an unstaged irreversible change).
143
- 3. Run **paired**: `package` vs `hardened` (and `placebo` for length-control),
144
- deterministic scoring, per-rule discipline Δ.
145
- 4. **Honest-null is a valid outcome.** If `hardened − package` Δ is null (cf. the
146
- recursion-arm honest-null already on record), the block is theatre → do NOT
147
- wire it into `condense.ts`, and say so.
148
-
149
- **The run is billable** (model calls). Cost footguns on record: pin a mid-tier
150
- model (Opus-1M cache blows the budget), set `--budget` / `--max-budget-usd`,
151
- per-arm activation. No `condense.ts` mutation and no public "enforcement" claim
152
- until a positive, length-controlled Δ exists.
153
-
154
- ## Council convergence (inline)
155
-
156
- Council (claude-sonnet-4-5 + gpt-4o, 2026-06-25, 2 rounds): the universal
157
- enforcement lever is compile-time frontmatter, not runtime hooks (hooks reach
158
- <30% of hosts); ship hardening for the irreversible set, measure before/after,
159
- keep runtime hooks as an opt-in MCP-only superset.
@@ -1,350 +0,0 @@
1
- ---
2
- stability: beta
3
- keep-beta-until: 2026-08-19
4
- ---
5
-
6
- # GUI wizard — local browser installer
7
-
8
- > Companion to the agent-mode protocol
9
- > ([`installer-agent-mode.md`](installer-agent-mode.md)) and the
10
- > trust-and-safety layer ([`trust-and-safety.md`](trust-and-safety.md)).
11
- > The wizard is a thin HTTP wrapper: it is a **selection front-end**, and
12
- > every real write goes through the single installer
13
- > `scripts/install.py --apply-payload` (D12 / ADR-020). It is **optional by
14
- > design** — the CLI is the canonical entry point; the wizard exists for
15
- > non-technical users who want a visual picker.
16
-
17
- ## Source of truth
18
-
19
- The GUI is a Fastify server (`src/server/`) serving a Preact SPA
20
- (`src/ui/`), booted by the `install` / `setup` / `config` (alias
21
- `settings`) / `ui:serve` CLI subcommands. The legacy
22
- `packages/core/installer/src/gui/*` tree was retired; the single real
23
- installer is `scripts/install.py`.
24
-
25
- Entry-point map (road-to-setup-experience § Phase 1):
26
-
27
- - `init` — install front-end; opens the wizard in install mode (start
28
- screen: recommended path vs customize). `init --project` never boots
29
- the GUI — it writes the minimal project surface via the
30
- `refresh --project` writer.
31
- - `setup` — re-runs the guided onboarding wizard (prefilled).
32
- - `config` — opens the standalone settings hub (`#/settings`; global
33
- scope). `config --project` lands on the project surface
34
- (`#/project`). `settings` stays as a compatible alias.
35
-
36
- - Server app + security hooks: [`src/server/app.ts`](../../src/server/app.ts) (Host allow-list, Origin allow-list, CSRF token — `onRequest` hooks)
37
- - Wizard routes (incl. the real-apply bridge): [`src/server/routes/wizard.ts`](../../src/server/routes/wizard.ts)
38
- - Read-only install routes (detect / plan-preview / recovery / legacy-v3): [`src/server/routes/install.ts`](../../src/server/routes/install.ts)
39
- - Atomic / 2PC writes: [`src/server/io/atomicWrite.ts`](../../src/server/io/atomicWrite.ts), [`atomicMultiWrite.ts`](../../src/server/io/atomicMultiWrite.ts)
40
- - SPA: [`src/ui/`](../../src/ui/) (entry `src/ui/pages/WizardPage.tsx`)
41
- - CLI boot + `WIZARD_READY` contract: [`src/cli/commands/uiServe.ts`](../../src/cli/commands/uiServe.ts)
42
- - The single installer (all real writes): [`scripts/install.py`](../../src/scripts/install.py)
43
- - Tests: [`tests/server/`](../../tests/server/) + [`tests/e2e/`](../../tests/e2e/)
44
-
45
- ## Local-only invariant
46
-
47
- The server **must** bind to `127.0.0.1` and reject any request whose
48
- `Host` header is not in `{ "127.0.0.1:<port>", "localhost:<port>" }`.
49
- `Origin` is additionally checked on every POST. No CDN, no analytics,
50
- no cross-origin asset, no remote endpoint — CSP
51
- `default-src 'self'` is set on every response.
52
-
53
- ## Boot sequence
54
-
55
- ```
56
- agent-config install (or `setup`, or `init` when the GUI is usable)
57
- │
58
- ├─► pick a free loopback port; mint a per-server bearer/CSRF token
59
- ├─► Fastify listen({ host: '127.0.0.1', port })
60
- ├─► print `WIZARD_READY <url>` on stdout (url carries `?token=…` + `#/…`)
61
- ├─► open the OS browser at <url> (skipped with --no-open / headless)
62
- └─► serve until the user finishes (Finish → install) or Ctrl-C
63
- ```
64
-
65
- `init` is the consumer entry point and the install **front-end**: the TS CLI
66
- (`src/cli/initRouting.ts → shouldInitLaunchGui`) opens the browser wizard
67
- directly (via `runUiServe`, install mode) whenever it can actually be used —
68
- interactive TTY, a display, and no CLI-mode flag. There is no CLI tool-picker
69
- in that path; the wizard collects the tool/pack/settings selection and its
70
- Finish drives the **whole** install through `POST /api/v1/wizard/apply` →
71
- `scripts/install.py --apply-payload` (one installer).
72
-
73
- `init` falls back to the non-interactive bash CLI install (`scripts/install` →
74
- `install.py`) — and never boots the GUI — when any of these hold: `CI` set,
75
- `AGENT_CONFIG_NO_UI` set, stdin/stdout not a TTY, a headless host (SSH / Linux
76
- without `DISPLAY`), or a CLI-mode flag (`--no-ui` / `--tools` / `--ai` /
77
- `--yes` / `--quiet` / `--dry-run` / `--minimal` / `--settings-only` /
78
- `--list-tools` / `--project`). `install.py`'s own tail-launch (`_wizard_spawn`, matching the
79
- `WIZARD_READY <url>` handshake) remains for direct CLI install runs.
80
-
81
- ### `WIZARD_READY` stdout contract
82
-
83
- The server emits exactly one line on stdout when it has bound:
84
-
85
- ```
86
- WIZARD_READY http://127.0.0.1:<port>/?token=<token>#/<route>
87
- ```
88
-
89
- The supervisor matches `^WIZARD_READY (http://(127.0.0.1|localhost):\d+/\S*)$`
90
- (no `url=` prefix; the query/hash are part of the captured URL). The line is
91
- unconditional so headless CI can detect "Fastify bound" without polling the
92
- port.
93
-
94
- ## Endpoints
95
-
96
- Versioned under `/api/v1/`. Selected routes:
97
-
98
- | Method | Path | Purpose |
99
- |--------|-------------------------------|-------------------------------------------------------------------------|
100
- | GET | `/` | SPA shell (token passed via the `?token=` query) |
101
- | GET | `/api/v1/wizard/state` | Resumable partial wizard state |
102
- | POST | `/api/v1/wizard/state` | Persist state between steps |
103
- | GET | `/api/v1/wizard/manifest` | Locked discovery-manifest (extended mode) |
104
- | GET | `/api/v1/wizard/auto-detect` | Project-signal evidence for the `ai-tools` step (extended mode) |
105
- | GET | `/api/v1/wizard/detect-tools` | Native AI-tool presence (home/app/`$PATH`) for Step-1 pre-select + badge |
106
- | GET | `/api/v1/wizard/detect-rtk` | rtk presence + per-OS install hint (Editor-and-tooling step) |
107
- | GET | `/api/v1/wizard/ai-council` | AI-council scalar subset + provider key presence (extended mode) |
108
- | POST | `/api/v1/wizard/ai-council` | Comment-preserving scalar merge into `.ai-council.yml` |
109
- | POST | `/api/v1/wizard/finish` | 2PC commit of settings + user-identity |
110
- | POST | `/api/v1/shutdown` | Browser-close shutdown beacon (`navigator.sendBeacon` target; real-serve only) |
111
- | POST | `/api/v1/wizard/apply` | **Single real-apply route.** `dry_run:true` → buffered plan preview; otherwise SSE-streams `scripts/install.py --apply-payload` |
112
- | GET | `/api/v1/install/detect` | Scope + project shape + tool presence |
113
- | POST | `/api/v1/install/plan` | Plan preview (per-tool file counts + conflicts) for the Review step |
114
- | GET | `/api/v1/install/recovery` | Interrupted-run recovery state |
115
- | GET | `/api/v1/install/legacy-v3` | v3-install detection (backup screen) |
116
-
117
- The TypeScript apply engine and its `POST /api/v1/install/apply` SSE route
118
- were removed (road-to-single-install-source-of-truth § Phase 3). All real
119
- writes now flow through `POST /api/v1/wizard/apply` → `scripts/install.py`.
120
-
121
- Every request passes three `onRequest` hooks in
122
- [`src/server/app.ts`](../../src/server/app.ts): a `Host`-header allow-list,
123
- an `Origin` allow-list (browser-issued requests), and a per-server bearer
124
- token (`Authorization: Bearer <token>`, minted at boot, surfaced in the
125
- `?token=` URL). A bad token / Host / Origin returns `403`.
126
-
127
- ### Browser-lifecycle shutdown
128
-
129
- In real-serve (`runUiServe`), the server stops itself when the browser that
130
- drives it goes away — the local process should not outlive its only client:
131
-
132
- - The SPA ([`src/ui/serverLifecycle.ts`](../../src/ui/serverLifecycle.ts))
133
- heartbeats `GET /api/v1/ping` every 30s while the tab is visible and the
134
- user has interacted within the last 30 min. On `pagehide` (window/tab
135
- close) it fires `navigator.sendBeacon('/api/v1/shutdown?token=…')` (the
136
- token rides as a query param because `sendBeacon` cannot set headers); and
137
- once the user has been idle for 30 min it fires the same beacon instead of
138
- a ping, so the server stops even with the tab still open.
139
- - The server (`createApp` `idleShutdown` option, passed only by `runUiServe`)
140
- exits on that beacon, and — as a backstop for crashes where neither beacon
141
- is delivered — via an idle timer that **arms only after the first authed
142
- request** (so headless / `--allow-headless` manual-connect servers are
143
- never killed before the operator attaches) and fires after 30 min of
144
- silence.
145
-
146
- On boot, `runUiServe` records `{pid, port, url}` to
147
- `~/.event4u/agent-config/local-server.json`
148
- ([`src/server/serverInfo.ts`](../../src/server/serverInfo.ts)) and removes it
149
- on graceful exit. A fresh `agent-config init` (via `scripts/install.py`
150
- `_kill_stale_wizard_server`) reads that record, terminates a still-running
151
- prior instance, and starts a new server — so init always lands on step 1.
152
-
153
- `createApp` is inert (no watchdog, no `/api/v1/shutdown` route) unless
154
- `idleShutdown` is supplied, so the in-process test harness
155
- ([`tests/server/helpers.ts`](../../tests/server/helpers.ts)) is unaffected.
156
-
157
- ## Real apply — single source of truth
158
-
159
- `POST /api/v1/wizard/apply` is the only write path:
160
-
161
- - `dry_run: true` → spawns `install.py --apply-payload <tmp> --dry-run` and
162
- returns the buffered plan-summary text (used by the Review preview).
163
- - otherwise → spawns `install.py --apply-payload <tmp>` (real apply) and
164
- **streams** the installer's NDJSON stdout
165
- (`{type:"file",…}` / `{type:"done"|"error"}`) mapped to the SSE frames the
166
- SPA consumes. The child is killed if the client disconnects
167
- (abort-on-disconnect, Finding #24). The installer owns its own
168
- transactional state (the user-scope lockfile + project manifest), so the
169
- GUI does not maintain a parallel transaction log.
170
-
171
- ## SSE event framing
172
-
173
- Each real-apply event is `data: <json>\n\n`. Frames:
174
-
175
- ```jsonc
176
- { "type": "progress", "file": "<tool>", "status": "deployed", "written": 1, "total": 3 }
177
- { "type": "done", "summary": { "written": 3, "total": 3 } }
178
- { "type": "error", "code": "<code>", "message": "<reason>", "recoverable": false }
179
- ```
180
-
181
- The browser stops reading on `done` / `error`; the server ends the stream.
182
-
183
- ## Security failure modes covered
184
-
185
- - **Remote exploitation** — loopback bind, Host allow-list, Origin
186
- allow-list, per-server bearer token.
187
- - **DNS rebinding** — Host header check covers POSTs that omit `Origin`.
188
- - **Mid-install crash** — `scripts/install.py` owns the user-scope
189
- lockfile + project manifest; the recovery routes
190
- (`/api/v1/install/recovery`) surface an interrupted run on next boot.
191
-
192
- ## Non-goals (documented contract)
193
-
194
- - Not a hosted SaaS — no auth account model, no telemetry.
195
- - Not a parallel installer — the GUI is a selection front-end; every
196
- real write goes through `scripts/install.py --apply-payload`.
197
- - Not a CI surface — `--no-open` headless boots are supported for smoke
198
- tests, but the canonical CI path is the flag-driven non-interactive CLI.
199
-
200
- ## Apply payload — versioning handshake (road-to-global-only-install Phase 0.4 · D12)
201
-
202
- `POST /api/v1/wizard/apply` accepts a discriminated-union body keyed on
203
- `schema_version`. The full JSON Schema lives at
204
- [`internal/schemas/wizard-apply-payload.schema.json`](../../internal/schemas/wizard-apply-payload.schema.json).
205
-
206
- | `schema_version` | Variant | Shape |
207
- |---|---|---|
208
- | `"installer-v1"` | `InstallerPayloadV1` | `{ ai_tools[], configs{}, dry_run? }` — legacy Installer-GUI, AI tools only. |
209
- | `"wizard-v2"` | `WizardPayloadV2` | `{ tools[], packs[], settings{}, scope_to_project_only?, dry_run? }` — unified 9-step wizard. |
210
-
211
- **D12 (locked).** Single apply endpoint with a `schema_version`
212
- discriminator — **not** two endpoints with a shared Python backend.
213
- Reasoning: one bind, one token, one installer; the
214
- Python `scripts/install.py` payload-router branches on
215
- `schema_version` before any disk write. The dual-endpoint variant was
216
- considered and rejected for doubling the surface with no gain.
217
-
218
- `schema_version` is **required**. Servers MUST reject any body that
219
- lacks it (HTTP 4xx, single-line error pointing at the schema). The
220
- real-apply path is now wired end-to-end
221
- (road-to-single-install-source-of-truth § Phases 1–2): `install.py`
222
- translates the payload into the canonical install and streams NDJSON
223
- progress back to the GUI.
224
-
225
- ## Unified 9-step flow (road-to-global-only-install § Phase 1.6)
226
-
227
- The maintainer-facing wizard at `src/server/routes/wizard.ts` switches
228
- between two step layouts based on the server-side `extendedSteps`
229
- flag (default `false` for v2.x users; flipped to `true` by the
230
- `agent-config setup` CLI when the npm-version kill-switch is in
231
- effect):
232
-
233
- | `extendedSteps` | Steps | Layout |
234
- |---|---|---|
235
- | `false` | 9 | `welcome → editor → personality → cost → roadmap-quality → memory → ai-council → user-md → review` |
236
- | `true` | 13 | `welcome → ai-tools → roles → packs → editor → personality → cost → roadmap-quality → memory → ai-council → user-md → modules → review` |
237
-
238
- The project-specific `modules` step (writes `.agent-project-settings.yml`, not
239
- the global `.agent-settings.yml`) sits at the **end** of the extended flow,
240
- just before `review` — global/user settings come first, the project step
241
- comes last. Because it is no longer part of the install-only lead,
242
- `setup` mode now walks it too (the lead it skips is `ai-tools → roles →
243
- packs`).
244
-
245
- The `welcome` step (Step 1, both modes) collects **name + language** up front —
246
- pulled out of the user-md step so the agent knows who it's talking to before
247
- anything else. Name pre-fills from the OS account (`GET /api/v1/ping`
248
- `systemUser`) when empty; language pre-fills from the browser locale
249
- (`navigator.language`) when no `.agent-user.yml` exists yet. In install mode
250
- the user-md step hides its name + language fields (collected here); setup mode
251
- skips the welcome step (it lands on the first settings step) and keeps those
252
- fields in the user-md form.
253
-
254
- The `roles` step presents the discovery **workspaces** as the *area*
255
- (Engineering, Product, Finance, Founder, GTM, Ops, …; the maintainer workspace
256
- is hidden) — each tile shows the area label, then advisory `example_roles`
257
- (e.g. Engineering → "Developer, CTO"; Finance → "CFO") and the description. The
258
- selected workspace ids become `.agent-user.yml` `role[]` (the example roles are
259
- UI hints, not the stored value) and recommend each domain's `default_packs` on
260
- the packs step. In install mode the user-md
261
- step therefore hides its role field (collected here instead); setup mode keeps
262
- the role field since it skips the roles step.
263
-
264
- The `ai-council` step (road-to-wizard-ux-improvements § Phase 8) configures the
265
- wizard-controlled scalar subset of `.ai-council.yml` (enable, per-member
266
- enable + low-impact, global transport mode, debate rounds, cost budget, the
267
- non-locked `decision_resolution` classes) via `GET`/`POST /api/v1/wizard/ai-council`;
268
- the file is written with comment-preserving `replaceScalar` edits.
269
-
270
- The step shapes themselves are declared in
271
- [`src/ui/wizard/steps.ts`](../../src/ui/wizard/steps.ts) — the always-first
272
- `welcome` step plus the four extended-only lead steps (`ai-tools`, `roles`,
273
- `packs`, `modules`) carry no `paths` and use dedicated renderers in
274
- `WizardPage.tsx`.
275
- `getWizardSteps({ extended })` is the single resolver; the UI consumes the
276
- active list via `getActiveSteps()` / `activeTotalSteps()` so a server toggle
277
- takes effect on the next reload without a code change.
278
-
279
- ### AI-tools / roles / packs selection rules (Steps 2-4)
280
-
281
- - **AI-tools pre-selection.** `detect-tools` returns `tools` (installed on the
282
- machine) and `configured` (the user's prior selection, persisted to
283
- `~/.event4u/agent-config/wizard-tools.json` on each real apply). On a repeat
284
- run the wizard pre-selects exactly the `configured` tools; only on a genuine
285
- first run (no prior selection) does it fall back to pre-selecting every
286
- installed tool.
287
- - **Roles → packs recommendation.** Each selected role contributes its
288
- workspace `default_packs`; the union pre-selects packs on Step 3 (plus
289
- auto-detected project packs). The recommendation stops clobbering the
290
- selection once the user manually edits a pack. Each pack tile also badges
291
- the workspace(s) it belongs to (from the pack's `workspaces`), highlighting
292
- the badges that match a role the user picked on Step 2.
293
- - **Step 2 framework persistence.** A language tile (`cluster`, e.g. PHP)
294
- gates its framework children in the UI but never destroys their stored
295
- selection. Turning a language off disables — but keeps checked — its
296
- children, so a PHP off→on round-trip restores the exact Laravel-on /
297
- Symfony-off choice. `resolveSelectedPacks()` filters disabled children at
298
- submit time, so a remembered-but-gated framework is not installed.
299
- - **No-autodetect packs.** Some packs are never pre-selected from project
300
- signals (`python` — a non-engineer may have python installed but not need
301
- it). The pack stays available to tick manually.
302
- - **Empty-selection gate.** The AI-tools, roles, and packs steps each block
303
- Next until at least one effective selection exists (≥ 1 tool, ≥ 1 role, and
304
- ≥ 1 installable pack respectively).
305
-
306
- ### `GET /api/v1/wizard/state` payload
307
-
308
- ```jsonc
309
- {
310
- "step": 0,
311
- "totalSteps": 9,
312
- "partial": {},
313
- "startedAt": null,
314
- "extendedSteps": true
315
- }
316
- ```
317
-
318
- `extendedSteps` is **advisory** — older server bundles MAY omit it,
319
- and the UI treats `undefined` as `false`. `totalSteps` reflects the
320
- flow that was active when the partial was written, which the UI uses
321
- for resume continuity; the active step set is otherwise derived from
322
- the current `extendedSteps` flag.
323
-
324
- ### State persistence + recovery
325
-
326
- Per-session state is written to `<writeRoot>/state/wizard-state.json`
327
- (under the global config root, typically
328
- `~/.event4u/agent-config/state/wizard-state.json`). If the file
329
- becomes malformed — partial JSON write, orphaned session from a
330
- previous npm version, manual edit gone wrong — the recovery path is:
331
-
332
- ```
333
- agent-config doctor --repair wizard-state
334
- ```
335
-
336
- The repair unlinks the file (idempotent; absent files are a no-op
337
- success). The next `agent-config setup` boots from step 1 with a
338
- fresh `startedAt`. A matching `wizard-state` health check is part of
339
- the standard `agent-config doctor` run and surfaces malformed JSON or
340
- schema-shape drift before the next setup attempt.
341
-
342
- ### Extended-mode endpoints
343
-
344
- `extendedSteps: true` activates two additional read-only endpoints:
345
-
346
- | Method | Path | Purpose |
347
- |--------|-------------------------------|---------|
348
- | GET | `/api/v1/wizard/auto-detect` | Project-signal evidence (composer / package / pyproject / artisan / next.config) for the `ai-tools` step. 404 when extended-mode is off. |
349
- | GET | `/api/v1/wizard/manifest` | Locked discovery-manifest (ADR-015) so the `packs` step can render supported AI IDs + every pack the manifest exposes. 404 when extended-mode is off. |
350
-
@@ -1,128 +0,0 @@
1
- ---
2
- stability: beta
3
- keep-beta-until: 2026-09-04
4
- ---
5
-
6
- # Harness Expectations — when AI tool behaviour looks like a package bug but isn't
7
-
8
- **Status:** Active (Phase D of `road-to-clean-skill-distribution-channels.md`)
9
- **Owner:** maintainer-team
10
- **Inputs:** Phase D roadmap steps + the 2026-05-25 misdiagnosis chat session that opened this track.
11
-
12
- ## The case for this document
13
-
14
- On 2026-05-25 a Claude Code session surfaced three behaviours that looked like `event4u/agent-config` bugs. Two of the three turned out to be **host-harness behaviour** the package has no control over. The third (cross-scope skill drift) was a real package-side bug fixed in Phases A–C. This document captures the host-side three so the next agent / onboarding session / opened issue does not re-run the misdiagnosis loop.
15
-
16
- ## Class A — Plugin-namespaced peer skills
17
-
18
- ### Symptom
19
-
20
- The session shows skills under namespaces like `codex:`, `cc-gemini-plugin:`, or another `<vendor>:` prefix:
21
-
22
- ```
23
- - codex:setup
24
- - cc-gemini-plugin:gemini-agent
25
- - codex:rescue
26
- ```
27
-
28
- These names do NOT appear in `event4u/agent-config`'s skill catalog, the README, or the contracts.
29
-
30
- ### What's actually happening
31
-
32
- Claude Code (and similar harnesses) supports **sibling plugins** in addition to the primary `event4u/agent-config` install. Each sibling plugin owns its own skills, namespaced by the plugin id. The harness surfaces every loaded plugin's skills in the same `<available_skills>` list during the session.
33
-
34
- - `codex:*` skills come from a sibling plugin that wraps the Codex CLI.
35
- - `cc-gemini-plugin:*` skills come from a sibling plugin that wraps Gemini-CLI integration.
36
-
37
- `event4u/agent-config` does not ship, control, or update these plugins. They are independent installs by independent maintainers.
38
-
39
- ### What the package can do
40
-
41
- Nothing — sibling plugins are out of scope by construction. The user can:
42
-
43
- - Remove the sibling plugin if it is unwanted (via the harness's plugin management — outside this package).
44
- - Ignore the namespaced names; they will not collide with this package's skill IDs because the prefix differs.
45
-
46
- ### Where to look for the true source
47
-
48
- Per Claude Code: `claude plugin list` (or equivalent) shows every loaded plugin. Each `<vendor>:` namespace traces back to a plugin row in that listing. Bug reports for those skills go to the respective plugin maintainer.
49
-
50
- ## Class B — Deferred tools that need ToolSearch
51
-
52
- ### Symptom
53
-
54
- A session sees a `<system-reminder>` block like:
55
-
56
- ```
57
- The following deferred tools are now available via ToolSearch.
58
- Their schemas are NOT loaded — calling them directly will fail with
59
- InputValidationError. Use ToolSearch with query "select:<name>[,<name>...]"
60
- to load tool schemas before calling them:
61
- TaskCreate
62
- WebFetch
63
- Monitor
64
- mcp__claude_ai_Linear__authenticate
65
- ...
66
- ```
67
-
68
- The named tools are real — they show up in the harness's runtime — but the agent cannot call them directly because the tool **schema** isn't loaded yet.
69
-
70
- ### What's actually happening
71
-
72
- Claude Code's tool-loading is **context-budgeted**. The full tool registry (TaskCreate, WebFetch, every MCP tool from every registered server, etc.) can be many kilobytes of JSON-schema. Loading every schema on every turn would blow the context budget for routine reads. The harness solves this by registering tool **names** up-front and deferring schema load until `ToolSearch` is called — that's the on-ramp.
73
-
74
- This is not a package issue, and `event4u/agent-config` cannot pre-load these schemas — the harness owns the budget.
75
-
76
- ### What the package can do
77
-
78
- Nothing — the loading strategy is the harness's contract with the model. Skills that want to use a deferred tool must:
79
-
80
- 1. Run `ToolSearch` with `select:<name>` to load the schema.
81
- 2. Call the tool with the now-known parameters.
82
-
83
- Skills in this package that need deferred tools document the load step explicitly (see `agents-md-thin-root` § Tool loading for the pattern).
84
-
85
- ### Where to look for the true source
86
-
87
- Per Claude Code's documentation on tool surfaces and the `ToolSearch` primitive. The package does not own this behaviour.
88
-
89
- ## Class C — Duplicate skill registration (real package bug, fixed in Phases A–C)
90
-
91
- ### Symptom
92
-
93
- The same skill appears twice in `<available_skills>` with different `description:` strings, or behaves inconsistently across calls.
94
-
95
- ### What's actually happening
96
-
97
- A user-global install (e.g. `~/.claude/skills/`) and a project-local install (`./.claude/skills/`) coexist at **different versions**. The harness loads both. The earlier register wins the description in some calls, the later in others.
98
-
99
- Unlike Classes A and B, this is a real package-side issue.
100
-
101
- ### What the package does
102
-
103
- 1. **Default install is filesystem-only** ([`skill-distribution-channels.md`](skill-distribution-channels.md)).
104
- 2. **Pre-flight scope guard** refuses installs that would create cross-scope drift ([`install-scopes.md`](install-scopes.md)).
105
- 3. **Post-install probe** surfaces any remaining drift after install (`task probe:skills`).
106
- 4. **Cleanup script** for stale other-scope installs (`bash scripts/cleanup_other_scope.sh --confirm`).
107
-
108
- ### Where to look for the true source
109
-
110
- ```bash
111
- task probe:skills
112
- ```
113
-
114
- The probe lists every duplicate / drift finding with the exact source paths so the cause is visible in one read.
115
-
116
- ## When in doubt — diagnostic sequence
117
-
118
- 1. Run `task probe:skills` — rules out Class C.
119
- 2. If the suspicious skill carries a `<vendor>:` prefix you don't recognise → Class A. Check `claude plugin list`.
120
- 3. If the harness logs `deferred tools … available via ToolSearch` → Class B. The skill needs an explicit `ToolSearch` step.
121
- 4. None of the above → file an issue at https://github.com/event4u-app/agent-config with the output of `task probe:skills` attached.
122
-
123
- ## See also
124
-
125
- - [`skill-distribution-channels.md`](skill-distribution-channels.md) — canonical channel per tool.
126
- - [`install-scopes.md`](install-scopes.md) — scope guard contract.
127
- - [`agents/evidence/audits/2026-05-distribution-channels/`](../../agents/evidence/audits/2026-05-distribution-channels/) — the underlying audits.
128
- - [`README.md` § Harness expectations](../../README.md#harness-expectations) — front-of-house pointer to this contract.