@event4u/agent-config 9.8.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 (817) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +278 -298
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +55 -9
  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/fix/portability.md +2 -2
  12. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  13. package/dist/agent-src/commands/fix/refs.md +2 -2
  14. package/dist/agent-src/commands/fix/route.md +4 -3
  15. package/dist/agent-src/commands/fix.md +9 -6
  16. package/dist/agent-src/commands/ghostwriter.md +1 -1
  17. package/dist/agent-src/commands/image.md +1 -1
  18. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  19. package/dist/agent-src/commands/optimize/skills.md +2 -2
  20. package/dist/agent-src/commands/post-as.md +1 -1
  21. package/dist/agent-src/commands/research.md +1 -1
  22. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  23. package/dist/agent-src/commands/security-audit-config.md +1 -1
  24. package/dist/agent-src/commands/team/delegate.md +4 -0
  25. package/dist/agent-src/commands/video.md +1 -1
  26. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  27. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  28. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  29. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  30. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  31. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  32. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  33. package/dist/agent-src/rules/code-provenance.md +112 -0
  34. package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
  35. package/dist/agent-src/rules/history-discipline.md +80 -0
  36. package/dist/agent-src/rules/no-roadmap-references.md +1 -1
  37. package/dist/agent-src/rules/php-coding.md +1 -0
  38. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  39. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  40. package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
  41. package/dist/agent-src/rules/scale-discipline.md +92 -0
  42. package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
  43. package/dist/agent-src/rules/session-canary.md +77 -0
  44. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  45. package/dist/agent-src/rules/tool-safety.md +3 -1
  46. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  47. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  48. package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
  49. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  50. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  51. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  52. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  53. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  54. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  55. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  56. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  57. package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
  58. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  59. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  60. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  61. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  62. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  63. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  64. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  65. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  66. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  67. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  68. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  69. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  70. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  71. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  72. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  73. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  74. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  75. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  76. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  77. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  78. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  79. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  80. package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
  81. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  82. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  83. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  84. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  85. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  86. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  87. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  88. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  89. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  90. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  91. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
  92. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  93. package/dist/agent-src/templates/AGENTS.md +1 -1
  94. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  95. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  96. package/dist/agent-src/templates/command.md +3 -3
  97. package/dist/agent-src/templates/persona.md +2 -2
  98. package/dist/agent-src/templates/rule.md +2 -2
  99. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  100. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  101. package/dist/cli/commands/doctorShell.js +20 -0
  102. package/dist/cli/commands/doctorShell.js.map +1 -1
  103. package/dist/cli/commands/rtkDetect.js +58 -0
  104. package/dist/cli/commands/rtkDetect.js.map +1 -0
  105. package/dist/cli/firstRunNotice.js +70 -0
  106. package/dist/cli/firstRunNotice.js.map +1 -0
  107. package/dist/cli/main.js +35 -3
  108. package/dist/cli/main.js.map +1 -1
  109. package/dist/cli/registry.js +7 -1
  110. package/dist/cli/registry.js.map +1 -1
  111. package/dist/discovery/deprecation-report.md +1 -1
  112. package/dist/discovery/discovery-manifest.json +362 -78
  113. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  114. package/dist/discovery/discovery-manifest.summary.md +6 -4
  115. package/dist/discovery/orphan-report.md +1 -1
  116. package/dist/discovery/packs.json +90 -8
  117. package/dist/discovery/trust-report.md +11 -11
  118. package/dist/discovery/workspaces.json +31 -7
  119. package/dist/hooks/dispatch.js +19475 -0
  120. package/dist/install/agentSwitchDetection.js +75 -0
  121. package/dist/install/agentSwitchDetection.js.map +1 -0
  122. package/dist/install/agentSwitchProfile.js +117 -0
  123. package/dist/install/agentSwitchProfile.js.map +1 -0
  124. package/dist/install/atomic.js +1 -1
  125. package/dist/install/detect.js +1 -1
  126. package/dist/install/install.mjs +775 -486
  127. package/dist/install/rtkDetection.js +213 -0
  128. package/dist/install/rtkDetection.js.map +1 -0
  129. package/dist/install/rule_scope.js +2 -1
  130. package/dist/install/rule_scope.js.map +1 -1
  131. package/dist/install/types.js +2 -2
  132. package/dist/install/wizard-plan.js +1 -1
  133. package/dist/install/wizardDismissals.js +58 -0
  134. package/dist/install/wizardDismissals.js.map +1 -0
  135. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  136. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  137. package/dist/mcp/registry-manifest.json +15 -4
  138. package/dist/mcp/server.json +20 -0
  139. package/dist/mcp/server.mjs +44292 -0
  140. package/dist/router.json +1 -1
  141. package/dist/scripts/condense.js +14 -7
  142. package/dist/scripts/condense.js.map +1 -1
  143. package/dist/server/app.js +4 -2
  144. package/dist/server/app.js.map +1 -1
  145. package/dist/server/io/sharedWriteCheck.js +101 -0
  146. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  147. package/dist/server/routes/ping.js +14 -0
  148. package/dist/server/routes/ping.js.map +1 -1
  149. package/dist/server/routes/settings.js +21 -4
  150. package/dist/server/routes/settings.js.map +1 -1
  151. package/dist/server/routes/userMd.js +21 -4
  152. package/dist/server/routes/userMd.js.map +1 -1
  153. package/dist/server/routes/wizard.js +68 -25
  154. package/dist/server/routes/wizard.js.map +1 -1
  155. package/dist/server/schemas/settings.js +4 -2
  156. package/dist/server/schemas/settings.js.map +1 -1
  157. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  158. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  159. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  160. package/dist/ui/index.html +2 -2
  161. package/docs/MIGRATION.md +16 -0
  162. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  163. package/package.json +21 -11
  164. package/src/agent-src/templates/AGENTS.md +1 -1
  165. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  166. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  167. package/src/config/agent-settings.template.yml +52 -14
  168. package/src/config/discovery/packs.yml +22 -0
  169. package/src/config/discovery/workspaces.yml +1 -1
  170. package/src/config/evaluator-budgets.json +47 -0
  171. package/src/config/hook-latency-budget.json +20 -0
  172. package/src/install/agentSwitchDetection.ts +90 -0
  173. package/src/install/agentSwitchProfile.ts +131 -0
  174. package/src/install/atomic.ts +1 -1
  175. package/src/install/detect.ts +1 -1
  176. package/src/install/rtkDetection.ts +274 -0
  177. package/src/install/rule_scope.ts +9 -2
  178. package/src/install/types.ts +2 -2
  179. package/src/install/wizard-plan.ts +1 -1
  180. package/src/install/wizardDismissals.ts +60 -0
  181. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  182. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  183. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  184. package/src/scripts/_dispatch.bash +81 -0
  185. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  186. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  187. package/src/scripts/_lib/detect_target_license.ts +714 -0
  188. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
  189. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
  190. package/src/scripts/_lib/install_drift.ts +194 -0
  191. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  192. package/src/scripts/_lib/orchestration_record.ts +91 -2
  193. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  194. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  195. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  196. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  197. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  198. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  199. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  200. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  201. package/src/scripts/_lib/persistence/types.ts +109 -0
  202. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  203. package/src/scripts/_lib/secret_detector.test.ts +5 -0
  204. package/src/scripts/_lib/secret_detector.ts +9 -0
  205. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  206. package/src/scripts/_lib/spawn_env.ts +7 -0
  207. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  208. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  209. package/src/scripts/_lib/worker_budget.ts +107 -0
  210. package/src/scripts/ai_council/blind_review.ts +0 -0
  211. package/src/scripts/ai_council/config.ts +12 -6
  212. package/src/scripts/ai_council/orchestrator.ts +73 -3
  213. package/src/scripts/ai_team/review_gate.ts +8 -10
  214. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  215. package/src/scripts/audit_initial_context.ts +1 -1
  216. package/src/scripts/bench_cross_source_eval.ts +400 -0
  217. package/src/scripts/bench_honesty_score.ts +1093 -0
  218. package/src/scripts/bench_hook_latency.ts +218 -0
  219. package/src/scripts/build_mcp_catalog.ts +275 -0
  220. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  221. package/src/scripts/build_proof.ts +45 -0
  222. package/src/scripts/chat_history.ts +8 -5
  223. package/src/scripts/check_backstop_debt.ts +23 -13
  224. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  225. package/src/scripts/check_evaluator_budgets.ts +99 -0
  226. package/src/scripts/check_knowledge_sharing.ts +12 -1
  227. package/src/scripts/check_no_external_sources.ts +2 -2
  228. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  229. package/src/scripts/code_graph/build.ts +0 -0
  230. package/src/scripts/code_graph/cli.ts +181 -9
  231. package/src/scripts/code_graph/detect.ts +52 -0
  232. package/src/scripts/code_graph/intent.ts +45 -0
  233. package/src/scripts/code_graph/query.ts +143 -29
  234. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  235. package/src/scripts/condense.ts +14 -6
  236. package/src/scripts/context_hygiene_hook.ts +8 -5
  237. package/src/scripts/council_cli.ts +126 -12
  238. package/src/scripts/detect_target_license.ts +203 -0
  239. package/src/scripts/evaluator_umbrella.sh +145 -0
  240. package/src/scripts/external_sources_denylist.json +5 -3
  241. package/src/scripts/first_run_gate_hook.ts +9 -5
  242. package/src/scripts/hermetic-install.sh +3 -3
  243. package/src/scripts/hook_manifest.yaml +55 -16
  244. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  245. package/src/scripts/hooks/block_no_verify.ts +9 -9
  246. package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
  247. package/src/scripts/hooks/concern_registry.ts +75 -0
  248. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  249. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  250. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  251. package/src/scripts/hooks/hook_stdin.ts +42 -0
  252. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  253. package/src/scripts/hot_context_hook.ts +7 -6
  254. package/src/scripts/injection_scan_hook.ts +9 -1
  255. package/src/scripts/install +6 -6
  256. package/src/scripts/install-hooks.sh +4 -4
  257. package/src/scripts/install.sh +5 -4
  258. package/src/scripts/install.ts +264 -23
  259. package/src/scripts/learning_sidecar.ts +0 -0
  260. package/src/scripts/lint_budget_ownership.ts +89 -0
  261. package/src/scripts/lint_command_routing.ts +35 -5
  262. package/src/scripts/lint_command_verbs.ts +42 -9
  263. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  264. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  265. package/src/scripts/lint_documented_commands.ts +670 -0
  266. package/src/scripts/lint_framework_leakage.ts +17 -3
  267. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  268. package/src/scripts/lint_governed_writes.ts +335 -0
  269. package/src/scripts/lint_hidden_unicode.ts +6 -0
  270. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  271. package/src/scripts/lint_memory_tripwire.ts +186 -0
  272. package/src/scripts/lint_override_kernel_guard.ts +74 -26
  273. package/src/scripts/lint_persistence.ts +171 -0
  274. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  275. package/src/scripts/lint_provenance.ts +547 -0
  276. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  277. package/src/scripts/lint_spawn_payload.ts +283 -0
  278. package/src/scripts/lint_store_boundary.ts +152 -0
  279. package/src/scripts/lint_versioned_cache.ts +7 -1
  280. package/src/scripts/mcp_server/__main__.ts +7 -2
  281. package/src/scripts/mcp_server/catalog.ts +23 -1
  282. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  283. package/src/scripts/mcp_server/prompts.ts +6 -0
  284. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  285. package/src/scripts/mcp_server/tools.ts +56 -5
  286. package/src/scripts/mcp_telemetry_query.ts +2 -33
  287. package/src/scripts/mcp_telemetry_store.ts +64 -34
  288. package/src/scripts/memory_learn_hook.ts +126 -0
  289. package/src/scripts/memory_lookup.ts +0 -0
  290. package/src/scripts/memory_replay_24.ts +312 -0
  291. package/src/scripts/memory_report.ts +16 -3
  292. package/src/scripts/memory_signal.ts +48 -0
  293. package/src/scripts/memory_status.ts +6 -0
  294. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  295. package/src/scripts/onboarding_gate_hook.ts +8 -5
  296. package/src/scripts/orchestration_record.ts +16 -0
  297. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  298. package/src/scripts/prepack-check.mjs +17 -0
  299. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  300. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  301. package/src/scripts/profile_staleness_hook.ts +8 -7
  302. package/src/scripts/report_install_drift.ts +109 -0
  303. package/src/scripts/roadmap_progress_hook.ts +8 -5
  304. package/src/scripts/schemas/license-policy.schema.json +89 -0
  305. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  306. package/src/scripts/schemas/rule.schema.json +10 -0
  307. package/src/scripts/self_review_gate.test.ts +173 -1
  308. package/src/scripts/self_review_gate.ts +155 -15
  309. package/src/scripts/session_canary_hook.ts +182 -0
  310. package/src/scripts/smoke_quickstart.ts +2 -2
  311. package/src/scripts/surface_probe_hook.ts +8 -7
  312. package/src/scripts/sync_gitattributes.ts +310 -0
  313. package/src/scripts/team_review_gate_hook.ts +13 -16
  314. package/src/scripts/verify_before_complete_hook.ts +8 -5
  315. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  316. package/src/server/schemas/settings.ts +8 -2
  317. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  318. package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
  319. package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
  320. package/docs/CLAIMS.md +0 -286
  321. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  322. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  323. package/docs/SKILL_CENSUS.md +0 -352
  324. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  325. package/docs/adrs/cost/README.md +0 -9
  326. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  327. package/docs/adrs/memory/README.md +0 -10
  328. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  329. package/docs/adrs/router/README.md +0 -9
  330. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  331. package/docs/adrs/schema/README.md +0 -9
  332. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  333. package/docs/adrs/smoke/README.md +0 -9
  334. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  335. package/docs/adrs/telegraph/README.md +0 -9
  336. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  337. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  338. package/docs/anti-reskin-gate.md +0 -60
  339. package/docs/architecture/augment-projection.md +0 -70
  340. package/docs/architecture/claude-bundle.md +0 -77
  341. package/docs/architecture/current-onboard-baseline.md +0 -126
  342. package/docs/architecture/current-safety-behavior.md +0 -137
  343. package/docs/architecture/multi-tool-projection.md +0 -125
  344. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  345. package/docs/architecture/source-projection.md +0 -85
  346. package/docs/architecture.md +0 -390
  347. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  348. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  349. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  350. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  351. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  352. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  353. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  354. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  355. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  356. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  357. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  358. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  359. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  360. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  361. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  362. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  363. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  364. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  365. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  366. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  367. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  368. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  369. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  370. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  371. package/docs/artefact-census.md +0 -71
  372. package/docs/benchmark.md +0 -785
  373. package/docs/benchmark.pinned.yml +0 -31
  374. package/docs/benchmarks.md +0 -85
  375. package/docs/capability-matrix.md +0 -33
  376. package/docs/case-studies/_template.md +0 -60
  377. package/docs/case-studies/frontend-design-positioning.md +0 -86
  378. package/docs/catalog.md +0 -726
  379. package/docs/command-flows.md +0 -272
  380. package/docs/command-naming-audit.md +0 -60
  381. package/docs/comparison.yaml +0 -87
  382. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  383. package/docs/contracts/STABILITY.md +0 -188
  384. package/docs/contracts/adoption-signal-floor.md +0 -127
  385. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  386. package/docs/contracts/adr-chat-history-split.md +0 -140
  387. package/docs/contracts/adr-command-suggestion.md +0 -144
  388. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  389. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  390. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  391. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  392. package/docs/contracts/adr-layout.md +0 -107
  393. package/docs/contracts/adr-level-6-productization.md +0 -145
  394. package/docs/contracts/adr-mcp-runtime.md +0 -128
  395. package/docs/contracts/adr-product-ui-track.md +0 -381
  396. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  397. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  398. package/docs/contracts/adr-user-types-axis.md +0 -127
  399. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  400. package/docs/contracts/agent-user-schema.md +0 -170
  401. package/docs/contracts/agents-layout.md +0 -148
  402. package/docs/contracts/agents-md-tech-stack.md +0 -75
  403. package/docs/contracts/ai-council-config.md +0 -829
  404. package/docs/contracts/ai-team-config.md +0 -224
  405. package/docs/contracts/analysis-memory-loop.md +0 -149
  406. package/docs/contracts/at-rest-encryption.md +0 -191
  407. package/docs/contracts/audit-log-v1.md +0 -150
  408. package/docs/contracts/auto-orchestration-v1.md +0 -70
  409. package/docs/contracts/benchmark-ab-contract.md +0 -106
  410. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  411. package/docs/contracts/benchmark-report-schema.md +0 -113
  412. package/docs/contracts/branch-protection-policy.md +0 -139
  413. package/docs/contracts/brand-token-consumption.md +0 -74
  414. package/docs/contracts/capability-boundary.md +0 -69
  415. package/docs/contracts/capability-packs.md +0 -217
  416. package/docs/contracts/ci-cost-budget.md +0 -111
  417. package/docs/contracts/ci-green-floor.md +0 -141
  418. package/docs/contracts/command-category-governance.md +0 -84
  419. package/docs/contracts/command-clusters.md +0 -399
  420. package/docs/contracts/command-surface-tiers.md +0 -176
  421. package/docs/contracts/command-taxonomy.md +0 -137
  422. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  423. package/docs/contracts/config-presets.md +0 -144
  424. package/docs/contracts/conformance.md +0 -84
  425. package/docs/contracts/consumer-bridge.md +0 -73
  426. package/docs/contracts/context-paths.md +0 -101
  427. package/docs/contracts/context-spine.md +0 -179
  428. package/docs/contracts/cost-dashboard.md +0 -143
  429. package/docs/contracts/cost-enforcement.md +0 -134
  430. package/docs/contracts/cost-profile-defaults.md +0 -110
  431. package/docs/contracts/cost-summary-schema.md +0 -107
  432. package/docs/contracts/creative-pack-boundary.md +0 -63
  433. package/docs/contracts/cross-repo-retrieval.md +0 -64
  434. package/docs/contracts/cross-wing-handoff.md +0 -134
  435. package/docs/contracts/daily-workspace.md +0 -147
  436. package/docs/contracts/decision-engine-gates.md +0 -120
  437. package/docs/contracts/decision-trace-v1.md +0 -177
  438. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  439. package/docs/contracts/design-artifact-verification.md +0 -153
  440. package/docs/contracts/discovery-manifest.md +0 -209
  441. package/docs/contracts/discovery-manifest.schema.json +0 -254
  442. package/docs/contracts/evidence-based-pruning.md +0 -102
  443. package/docs/contracts/explain-modes.md +0 -187
  444. package/docs/contracts/explain-trace.schema.json +0 -144
  445. package/docs/contracts/file-ownership-matrix.json +0 -13941
  446. package/docs/contracts/file-ownership-matrix.md +0 -135
  447. package/docs/contracts/frontmatter-contract.md +0 -140
  448. package/docs/contracts/ghostwriter-schema.md +0 -337
  449. package/docs/contracts/governance-enforcement-projection.md +0 -159
  450. package/docs/contracts/gui-wizard.md +0 -350
  451. package/docs/contracts/harness-expectations.md +0 -128
  452. package/docs/contracts/hook-architecture-v1.md +0 -325
  453. package/docs/contracts/host-agent-protocol.md +0 -110
  454. package/docs/contracts/implement-ticket-flow.md +0 -625
  455. package/docs/contracts/init-telemetry.md +0 -132
  456. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  457. package/docs/contracts/install-layout.md +0 -249
  458. package/docs/contracts/install-scopes.md +0 -82
  459. package/docs/contracts/installed-tools-lockfile.md +0 -144
  460. package/docs/contracts/installer-agent-mode.md +0 -137
  461. package/docs/contracts/iron-law-overrides.txt +0 -26
  462. package/docs/contracts/kernel-membership.md +0 -339
  463. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  464. package/docs/contracts/linear-ai-three-layers.md +0 -130
  465. package/docs/contracts/linter-structural-model.md +0 -181
  466. package/docs/contracts/load-context-budget-model.md +0 -259
  467. package/docs/contracts/load-context-schema.md +0 -220
  468. package/docs/contracts/local-analytics.md +0 -160
  469. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  470. package/docs/contracts/local-server-api.md +0 -134
  471. package/docs/contracts/local-server-ports.md +0 -53
  472. package/docs/contracts/low-impact-corpus-format.md +0 -95
  473. package/docs/contracts/mcp-beta-criteria.md +0 -130
  474. package/docs/contracts/mcp-cloud-scope.md +0 -355
  475. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  476. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  477. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  478. package/docs/contracts/mcp-tool-inventory.md +0 -64
  479. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  480. package/docs/contracts/measurement-baseline.md +0 -103
  481. package/docs/contracts/memory-visibility-v1.md +0 -160
  482. package/docs/contracts/mental-models.md +0 -336
  483. package/docs/contracts/migrate-command.md +0 -233
  484. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  485. package/docs/contracts/namespace.md +0 -125
  486. package/docs/contracts/no-runtime-boundary.md +0 -61
  487. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  488. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  489. package/docs/contracts/package-self-orientation.md +0 -163
  490. package/docs/contracts/pilot/agent-authority.md +0 -24
  491. package/docs/contracts/pilot/direct-answers.md +0 -70
  492. package/docs/contracts/pilot/language-and-tone.md +0 -63
  493. package/docs/contracts/plain-language-surface.md +0 -117
  494. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  495. package/docs/contracts/profile-system.md +0 -167
  496. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  497. package/docs/contracts/release-pr-gating.md +0 -151
  498. package/docs/contracts/release-sizing.md +0 -107
  499. package/docs/contracts/release-trunk-sync.md +0 -105
  500. package/docs/contracts/review-lens-schema.md +0 -64
  501. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  502. package/docs/contracts/role-experience.md +0 -125
  503. package/docs/contracts/router-blending.md +0 -71
  504. package/docs/contracts/rule-classification.md +0 -171
  505. package/docs/contracts/rule-interactions.md +0 -132
  506. package/docs/contracts/rule-interactions.yml +0 -260
  507. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  508. package/docs/contracts/rule-router.md +0 -287
  509. package/docs/contracts/safety-model.md +0 -129
  510. package/docs/contracts/session-profile-overlay.md +0 -157
  511. package/docs/contracts/settings-api.md +0 -264
  512. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  513. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  514. package/docs/contracts/skill-bundled-assets.md +0 -62
  515. package/docs/contracts/skill-discovery.md +0 -80
  516. package/docs/contracts/skill-distribution-channels.md +0 -66
  517. package/docs/contracts/skill-domains.md +0 -144
  518. package/docs/contracts/skill-dry-run.md +0 -47
  519. package/docs/contracts/skill-family-map.yml +0 -915
  520. package/docs/contracts/smoke-contracts.md +0 -144
  521. package/docs/contracts/subagent-boundary.md +0 -74
  522. package/docs/contracts/surface-agent-contracts.md +0 -153
  523. package/docs/contracts/surface-matrix.md +0 -108
  524. package/docs/contracts/surface-tiers.md +0 -81
  525. package/docs/contracts/telegraph-telemetry.md +0 -83
  526. package/docs/contracts/ticket-bundle-format.md +0 -233
  527. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  528. package/docs/contracts/trust-and-safety.md +0 -144
  529. package/docs/contracts/ui-stack-extension.md +0 -237
  530. package/docs/contracts/ui-track-flow.md +0 -329
  531. package/docs/contracts/universal-skills.md +0 -91
  532. package/docs/contracts/user-type-schema.md +0 -146
  533. package/docs/contracts/value-dashboard-spec.md +0 -378
  534. package/docs/contracts/value-report-schema.md +0 -168
  535. package/docs/contracts/workflow-packs.md +0 -121
  536. package/docs/contracts/workspace-boundary.md +0 -84
  537. package/docs/contracts/workspace-documents.md +0 -144
  538. package/docs/contracts/write-engine.md +0 -182
  539. package/docs/cookbook.md +0 -152
  540. package/docs/customization.md +0 -696
  541. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  542. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  543. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  544. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  545. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  546. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  547. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  548. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  549. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  550. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  551. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  552. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  553. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  554. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  555. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  556. package/docs/decisions/ADR-016-installer-architecture.md +0 -191
  557. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  558. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  559. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  560. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  561. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  562. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  563. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  564. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  565. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  566. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  567. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  568. package/docs/decisions/ADR-028-root-layout.md +0 -147
  569. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  570. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  571. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  572. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  573. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  574. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  575. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  576. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  577. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  578. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  579. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  580. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  581. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  582. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  583. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  584. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  585. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  586. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  587. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  588. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  589. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  590. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  591. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  592. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  593. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  594. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  595. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  596. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  597. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  598. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  599. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  600. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  601. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  602. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  603. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  604. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  605. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  606. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  607. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  608. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  609. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  610. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  611. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  612. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  613. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  614. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  615. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  616. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  617. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  618. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  619. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  620. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  621. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  622. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  623. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  624. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  625. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  626. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  627. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  628. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  629. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  630. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  631. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  632. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  633. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  634. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  635. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  636. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  637. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  638. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  639. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  640. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  641. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  642. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  643. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  644. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  645. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  646. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  647. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  648. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  649. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
  650. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
  651. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  652. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  653. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
  654. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  655. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  656. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  657. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  658. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  659. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  660. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  661. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  662. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  663. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  664. package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
  665. package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
  666. package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
  667. package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
  668. package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
  669. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  670. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  671. package/docs/decisions/INDEX.md +0 -157
  672. package/docs/decisions/engine-reclassification-2026-07.md +0 -104
  673. package/docs/deploy/connector-setup.md +0 -129
  674. package/docs/deploy/env-vars.md +0 -70
  675. package/docs/deploy/policy-cookbook.md +0 -130
  676. package/docs/deploy/quickstart.md +0 -112
  677. package/docs/deploy/small-team-recipe.md +0 -148
  678. package/docs/deploy/team-deployment-posture.md +0 -111
  679. package/docs/design/adversarial-council-eval.md +0 -106
  680. package/docs/design/council-vs-solo-baseline.md +0 -92
  681. package/docs/design/cross-model-parity-eval.md +0 -82
  682. package/docs/design/length-neutral-judge-rerun.md +0 -92
  683. package/docs/design/utilization-window-criteria.md +0 -51
  684. package/docs/development.md +0 -230
  685. package/docs/distribution/awesome-list-submission.md +0 -46
  686. package/docs/distribution/consumer-matrix.md +0 -96
  687. package/docs/distribution/launch-story-draft.md +0 -58
  688. package/docs/distribution/mcp-submission-checklist.md +0 -95
  689. package/docs/distribution/public-install-smoke.md +0 -68
  690. package/docs/distribution/registries.md +0 -126
  691. package/docs/distribution/registry-submissions.md +0 -85
  692. package/docs/distribution/telemetry-privacy.md +0 -128
  693. package/docs/distribution/telemetry-schema.md +0 -174
  694. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  695. package/docs/end-to-end-walkthroughs.md +0 -165
  696. package/docs/enforcement-by-host.md +0 -51
  697. package/docs/examples/agent-user.example.md +0 -22
  698. package/docs/experiences/agency.md +0 -49
  699. package/docs/experiences/content_creator.md +0 -49
  700. package/docs/experiences/developer.md +0 -49
  701. package/docs/experiences/finance.md +0 -50
  702. package/docs/experiences/founder.md +0 -49
  703. package/docs/experiences/ops.md +0 -49
  704. package/docs/featured-commands.md +0 -27
  705. package/docs/featured-skills.md +0 -95
  706. package/docs/flows.md +0 -67
  707. package/docs/getting-started-by-role.md +0 -190
  708. package/docs/getting-started-laravel.md +0 -72
  709. package/docs/getting-started-local-stdio.md +0 -77
  710. package/docs/getting-started.md +0 -254
  711. package/docs/github-topics.md +0 -93
  712. package/docs/governance-advantage.md +0 -72
  713. package/docs/governance.md +0 -96
  714. package/docs/guides/cross-repo-linked-projects.md +0 -93
  715. package/docs/guides/cross-repo-retrieval.md +0 -61
  716. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  717. package/docs/guides/gated-platform-reads.md +0 -221
  718. package/docs/guides/local-analytics.md +0 -125
  719. package/docs/guides/local-knowledge.md +0 -127
  720. package/docs/guides/skill-discovery.md +0 -71
  721. package/docs/guides/skill-preview.md +0 -71
  722. package/docs/hook-payload-capture.md +0 -221
  723. package/docs/install-friction-report.md +0 -66
  724. package/docs/installation.md +0 -959
  725. package/docs/maintainers/branch-protection.md +0 -105
  726. package/docs/maintainers/dev-mode.md +0 -106
  727. package/docs/maintainers/optional-media-deps.md +0 -50
  728. package/docs/maintainers/system-map.md +0 -85
  729. package/docs/mcp-registries.md +0 -94
  730. package/docs/mcp-server.md +0 -175
  731. package/docs/mcp.md +0 -147
  732. package/docs/media/proof-demo.cast +0 -14
  733. package/docs/media/proof-demo.gif +0 -0
  734. package/docs/migration/consumer-template-consumption-model.md +0 -145
  735. package/docs/migration/divergences/README.md +0 -55
  736. package/docs/migration/divergences/_template.md +0 -50
  737. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  738. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  739. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  740. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  741. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  742. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  743. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  744. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  745. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  746. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  747. package/docs/migration/node-floor.md +0 -86
  748. package/docs/migration/v1-to-v2.md +0 -156
  749. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  750. package/docs/migrations/commands-1.15.0.md +0 -117
  751. package/docs/parity/bench-external.json +0 -58
  752. package/docs/parity/bench.json +0 -41
  753. package/docs/parity/command-frontmatter.md +0 -60
  754. package/docs/parity/external-runtime.md +0 -46
  755. package/docs/personas.md +0 -178
  756. package/docs/positioning-evidence.md +0 -86
  757. package/docs/profiles.md +0 -108
  758. package/docs/proof.md +0 -252
  759. package/docs/quality.md +0 -98
  760. package/docs/readme-split-plan.md +0 -102
  761. package/docs/recruits/_template.md +0 -81
  762. package/docs/release-runbook.md +0 -141
  763. package/docs/role-experiences.md +0 -19
  764. package/docs/safety.md +0 -30
  765. package/docs/second-brain-scope.md +0 -116
  766. package/docs/self-review-gate.md +0 -65
  767. package/docs/setup/enterprise-and-offline.md +0 -201
  768. package/docs/setup/mcp-client-config.md +0 -358
  769. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  770. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  771. package/docs/setup/mcp-cloud-setup.md +0 -183
  772. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  773. package/docs/setup/mcp-server-docker.md +0 -101
  774. package/docs/setup/per-ide/aider.md +0 -48
  775. package/docs/setup/per-ide/antigravity.md +0 -68
  776. package/docs/setup/per-ide/augment.md +0 -89
  777. package/docs/setup/per-ide/claude-code.md +0 -97
  778. package/docs/setup/per-ide/claude-desktop.md +0 -207
  779. package/docs/setup/per-ide/cline.md +0 -43
  780. package/docs/setup/per-ide/codebuddy.md +0 -63
  781. package/docs/setup/per-ide/codex.md +0 -46
  782. package/docs/setup/per-ide/continue.md +0 -68
  783. package/docs/setup/per-ide/copilot.md +0 -80
  784. package/docs/setup/per-ide/cursor.md +0 -125
  785. package/docs/setup/per-ide/droid.md +0 -65
  786. package/docs/setup/per-ide/gemini-cli.md +0 -45
  787. package/docs/setup/per-ide/jetbrains.md +0 -76
  788. package/docs/setup/per-ide/kilocode.md +0 -66
  789. package/docs/setup/per-ide/kiro.md +0 -72
  790. package/docs/setup/per-ide/opencode.md +0 -62
  791. package/docs/setup/per-ide/qoder.md +0 -63
  792. package/docs/setup/per-ide/roocode.md +0 -68
  793. package/docs/setup/per-ide/trae.md +0 -63
  794. package/docs/setup/per-ide/warp.md +0 -63
  795. package/docs/setup/per-ide/windsurf.md +0 -109
  796. package/docs/setup/per-ide/zed.md +0 -73
  797. package/docs/showcase.md +0 -209
  798. package/docs/skill-duplication-findings.md +0 -91
  799. package/docs/skills-catalog.md +0 -265
  800. package/docs/skills-taxonomy.md +0 -90
  801. package/docs/spawn-site-policy.md +0 -72
  802. package/docs/succession.md +0 -80
  803. package/docs/threat-model.md +0 -30
  804. package/docs/troubleshooting.md +0 -155
  805. package/docs/ui-track-mental-model.md +0 -121
  806. package/docs/us-vs-the-category.md +0 -38
  807. package/docs/value.md +0 -86
  808. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  809. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  810. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  811. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  812. package/docs/walkthroughs/daily-workspace.md +0 -127
  813. package/docs/wedge/production-validator/README.md +0 -81
  814. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  815. package/docs/wedge/production-validator/production-validator.md +0 -83
  816. package/docs/wizard.md +0 -173
  817. package/src/scripts/postinstall_gui.ts +0 -129
@@ -77,6 +77,7 @@ import * as installed_lock from './_lib/installed_lock.js';
77
77
  import * as surface_tiers from './_lib/surface_tiers.js';
78
78
  import * as global_deploy_inventory from './_lib/global_deploy_inventory.js';
79
79
  import * as installed_tools from './_lib/installed_tools.js';
80
+ import { collect_drift, format_drift_report } from './_lib/install_drift.js';
80
81
  import * as user_global_paths from './_lib/user_global_paths.js';
81
82
  import * as claude_desktop_bundler from './_lib/claude_desktop_bundler.js';
82
83
  import * as claude_settings_hooks from './_lib/claude_settings_hooks.js';
@@ -2892,7 +2893,11 @@ export function _apply_claude_flat_command_wrappers(
2892
2893
  current_files.delete(`commands/${fname}`);
2893
2894
  reserved.push(slug);
2894
2895
  }
2895
- // Tier-0/1 visible command slugs from the locked discovery manifest.
2896
+ // Visible command slugs from the locked discovery manifest. `visibility`
2897
+ // is the source of truth (ADR-090/092); the integer `tier` stays only as
2898
+ // the fallback for a manifest published before `visibility` was emitted,
2899
+ // so an older locked manifest keeps resolving. Neither key present → the
2900
+ // artefact is skipped rather than silently treated as visible.
2896
2901
  const eligible = new Set<string>(_CLAUDE_FLAT_WRAPPER_EXTRA);
2897
2902
  try {
2898
2903
  const manifest = JSON.parse(
@@ -2900,7 +2905,13 @@ export function _apply_claude_flat_command_wrappers(
2900
2905
  ) as { artefacts?: Array<{ category?: string; slug?: string; tier?: number; visibility?: string }> };
2901
2906
  for (const a of manifest.artefacts ?? []) {
2902
2907
  if (a.category !== 'command' || typeof a.slug !== 'string') continue;
2903
- if ((a.tier ?? 2) <= 1 && a.visibility !== 'internal') eligible.add(a.slug);
2908
+ const visible =
2909
+ typeof a.visibility === 'string'
2910
+ ? a.visibility !== 'internal'
2911
+ : typeof a.tier === 'number'
2912
+ ? a.tier <= 1
2913
+ : false;
2914
+ if (visible) eligible.add(a.slug);
2904
2915
  }
2905
2916
  } catch {
2906
2917
  // No manifest → wrap only the hardcoded essentials.
@@ -3136,34 +3147,36 @@ function _verify_deploy_targets(anchor: string, plan: ReadonlyArray<readonly [st
3136
3147
  }
3137
3148
 
3138
3149
  /**
3139
- * Remove lab-tier skills/commands from a completed deploy (core-only).
3150
+ * Remove skills/commands matching `is_pruned` from a completed deploy.
3140
3151
  *
3141
- * road-to-install-contract-stability Phase 2 Step 2. Skills are pruned by
3142
- * whole directory (tier decided by the skill's `SKILL.md` frontmatter);
3143
- * commands by file (own frontmatter). Rules / personas / contexts / templates
3144
- * are core/shared and left intact. Returns `[pruned_count, adjusted_results]`
3145
- * with the lab paths removed from each tool's `written_paths` so the manifest
3146
- * never records them.
3152
+ * road-to-install-contract-stability Phase 2 Step 2 (generalized in
3153
+ * road-to-credible-install Phase 2 to back both the core-only lab prune and
3154
+ * the scoped-projection pack prune off the same mechanics). Skills are
3155
+ * pruned by whole directory (tier decided by the skill's `SKILL.md`
3156
+ * frontmatter); commands by file (own frontmatter). Rules / personas /
3157
+ * contexts / templates are core/shared and left intact. Returns
3158
+ * `[pruned_count, adjusted_results]` with the pruned paths removed from each
3159
+ * tool's `written_paths` so the manifest never records them.
3147
3160
  */
3148
- function _prune_lab_modules(
3161
+ function _prune_modules_by(
3149
3162
  deploy_results: Record<string, DeployResult>,
3150
- lab_ids: Set<string>,
3163
+ is_pruned: (md_path: string) => boolean,
3151
3164
  ): [number, Record<string, DeployResult>] {
3152
3165
  let pruned = 0;
3153
3166
  const adjusted: Record<string, DeployResult> = {};
3154
3167
  for (const tool_id of Object.keys(deploy_results)) {
3155
3168
  const [written, skipped, status, paths] = deploy_results[tool_id] as DeployResult;
3156
- const lab_skill_dirs = new Set<string>();
3169
+ const pruned_skill_dirs = new Set<string>();
3157
3170
  for (const p of paths) {
3158
3171
  const parts = p.split(path.sep);
3159
3172
  if (parts.includes('skills')) {
3160
3173
  const i = parts.indexOf('skills');
3161
3174
  if (i + 1 < parts.length) {
3162
3175
  const skill_root = parts.slice(0, i + 2).join(path.sep);
3163
- if (!lab_skill_dirs.has(skill_root)) {
3176
+ if (!pruned_skill_dirs.has(skill_root)) {
3164
3177
  const skillmd = path.join(skill_root, 'SKILL.md');
3165
- if (pathExists(skillmd) && surface_tiers.is_lab_artefact(skillmd, lab_ids)) {
3166
- lab_skill_dirs.add(skill_root);
3178
+ if (pathExists(skillmd) && is_pruned(skillmd)) {
3179
+ pruned_skill_dirs.add(skill_root);
3167
3180
  }
3168
3181
  }
3169
3182
  }
@@ -3173,22 +3186,22 @@ function _prune_lab_modules(
3173
3186
  const delete_files: string[] = [];
3174
3187
  for (const p of paths) {
3175
3188
  const parts = p.split(path.sep);
3176
- let is_lab = false;
3189
+ let is_target = false;
3177
3190
  if (parts.includes('skills')) {
3178
3191
  const i = parts.indexOf('skills');
3179
- if (i + 1 < parts.length && lab_skill_dirs.has(parts.slice(0, i + 2).join(path.sep))) {
3180
- is_lab = true;
3192
+ if (i + 1 < parts.length && pruned_skill_dirs.has(parts.slice(0, i + 2).join(path.sep))) {
3193
+ is_target = true;
3181
3194
  }
3182
3195
  } else if (
3183
3196
  parts.includes('commands') &&
3184
3197
  path.extname(p) === '.md' &&
3185
- surface_tiers.is_lab_artefact(p, lab_ids)
3198
+ is_pruned(p)
3186
3199
  ) {
3187
- is_lab = true;
3200
+ is_target = true;
3188
3201
  }
3189
- (is_lab ? delete_files : keep).push(p);
3202
+ (is_target ? delete_files : keep).push(p);
3190
3203
  }
3191
- for (const d of lab_skill_dirs) {
3204
+ for (const d of pruned_skill_dirs) {
3192
3205
  fs.rmSync(d, { recursive: true, force: true });
3193
3206
  }
3194
3207
  for (const p of delete_files) {
@@ -3206,6 +3219,175 @@ function _prune_lab_modules(
3206
3219
  return [pruned, adjusted];
3207
3220
  }
3208
3221
 
3222
+ /**
3223
+ * Remove lab-tier skills/commands from a completed deploy (core-only).
3224
+ *
3225
+ * road-to-install-contract-stability Phase 2 Step 2. Thin wrapper over
3226
+ * `_prune_modules_by` — see that function for the mechanics.
3227
+ */
3228
+ function _prune_lab_modules(
3229
+ deploy_results: Record<string, DeployResult>,
3230
+ lab_ids: Set<string>,
3231
+ ): [number, Record<string, DeployResult>] {
3232
+ return _prune_modules_by(deploy_results, (p) => surface_tiers.is_lab_artefact(p, lab_ids));
3233
+ }
3234
+
3235
+ // --- Scoped-projection prune (road-to-credible-install Phase 2) ----------
3236
+ //
3237
+ // `projection.mode: scoped` narrows a GLOBAL deploy to the active profile's
3238
+ // packs (workspaces `engineering` + `agent-config-maintainer` by default,
3239
+ // unioned with a `runtime.active_packs` overlay, expanded over the packs.yml
3240
+ // `requires` graph). Mirrors the core-only lab prune above — same
3241
+ // `_prune_modules_by` mechanics, a different predicate.
3242
+
3243
+ /** `workspaces` values whose packs are ALWAYS active under `scoped` mode. */
3244
+ const SCOPED_ACTIVE_WORKSPACES: ReadonlySet<string> = new Set(['engineering', 'agent-config-maintainer']);
3245
+
3246
+ interface PackRecord {
3247
+ id: string;
3248
+ workspaces: string[];
3249
+ requires: string[];
3250
+ }
3251
+
3252
+ /**
3253
+ * Parse `src/config/discovery/packs.yml` into `{id, workspaces, requires}`
3254
+ * records. `requires` falls back to the legacy `requires_hint` field name
3255
+ * when `requires` is absent.
3256
+ *
3257
+ * Deliberately THROWS on a missing file or a parse result that is not a
3258
+ * list — an empty active-pack set would be the LEAST safe fallback here
3259
+ * (it would prune every tagged artefact, the opposite of the fail-safe
3260
+ * contract). The caller wraps this in a try/catch that restores the full
3261
+ * tree on any error instead.
3262
+ */
3263
+ function _load_packs_registry(package_root: string): PackRecord[] {
3264
+ const vocab_path = path.join(package_root, 'src', 'config', 'discovery', 'packs.yml');
3265
+ const data = yamlSafeLoad(readText(vocab_path));
3266
+ if (!Array.isArray(data)) {
3267
+ throw new Error(`packs.yml did not parse to a list: ${vocab_path}`);
3268
+ }
3269
+ const out: PackRecord[] = [];
3270
+ for (const entry of data) {
3271
+ if (!_isPlainObject(entry)) continue;
3272
+ const id = entry['id'];
3273
+ if (typeof id !== 'string' || id === '') continue;
3274
+ const workspaces_raw = entry['workspaces'];
3275
+ const workspaces = Array.isArray(workspaces_raw)
3276
+ ? workspaces_raw.filter((w): w is string => typeof w === 'string')
3277
+ : [];
3278
+ const requires_raw = entry['requires'] ?? entry['requires_hint'];
3279
+ const requires = Array.isArray(requires_raw)
3280
+ ? requires_raw.filter((r): r is string => typeof r === 'string')
3281
+ : [];
3282
+ out.push({ id, workspaces, requires });
3283
+ }
3284
+ return out;
3285
+ }
3286
+
3287
+ /**
3288
+ * Active pack id set for `scoped` mode: every pack whose `workspaces`
3289
+ * intersects `SCOPED_ACTIVE_WORKSPACES`, unioned with `runtime_active_packs`,
3290
+ * expanded over the `requires` graph (transitive closure).
3291
+ */
3292
+ function _compute_active_pack_ids(
3293
+ packs: readonly PackRecord[],
3294
+ runtime_active_packs: readonly string[],
3295
+ ): Set<string> {
3296
+ const by_id = new Map<string, PackRecord>();
3297
+ for (const p of packs) by_id.set(p.id, p);
3298
+
3299
+ const active = new Set<string>();
3300
+ for (const p of packs) {
3301
+ if (p.workspaces.some((w) => SCOPED_ACTIVE_WORKSPACES.has(w))) {
3302
+ active.add(p.id);
3303
+ }
3304
+ }
3305
+ for (const id of runtime_active_packs) {
3306
+ active.add(id);
3307
+ }
3308
+
3309
+ let frontier = [...active];
3310
+ while (frontier.length > 0) {
3311
+ const next: string[] = [];
3312
+ for (const id of frontier) {
3313
+ const rec = by_id.get(id);
3314
+ if (rec === undefined) continue;
3315
+ for (const dep of rec.requires) {
3316
+ if (!active.has(dep)) {
3317
+ active.add(dep);
3318
+ next.push(dep);
3319
+ }
3320
+ }
3321
+ }
3322
+ frontier = next;
3323
+ }
3324
+ return active;
3325
+ }
3326
+
3327
+ /**
3328
+ * Read the GLOBAL settings document that governs a global deploy, if one
3329
+ * already exists on disk — the wizard's canonical typed-subdir location
3330
+ * (`<event4u_root>/settings/.agent-settings.yml`, matching
3331
+ * `src/server/routes/settings.ts`'s `SETTINGS_RELATIVE`) first, the legacy
3332
+ * flat root (`<event4u_root>/.agent-settings.yml`) second. Returns `null`
3333
+ * when neither exists — a genuinely fresh machine with no prior settings
3334
+ * artefact of any kind.
3335
+ */
3336
+ function _resolve_global_settings_doc(): Record<string, unknown> | null {
3337
+ const root = user_global_paths.event4u_root();
3338
+ const canonical = path.join(root, 'settings', SETTINGS_FILE);
3339
+ if (pathExists(canonical)) return _load_yaml_doc(canonical);
3340
+ const legacy = path.join(root, SETTINGS_FILE);
3341
+ if (pathExists(legacy)) return _load_yaml_doc(legacy);
3342
+ return null;
3343
+ }
3344
+
3345
+ /**
3346
+ * Resolve the effective `projection.mode` + `runtime.active_packs` overlay
3347
+ * for THIS global install.
3348
+ *
3349
+ * An EXISTING global settings file (any prior install, wizard-written or
3350
+ * hand-edited) is authoritative: a missing `projection.mode` key, an
3351
+ * unreadable file, or an explicit non-`scoped` value ALL resolve to
3352
+ * `legacy-all` — the upgrade-compat contract (an install that never opted in
3353
+ * stays unscoped). Only when NO global settings file exists yet — before the
3354
+ * wizard's `/api/v1/wizard/finish` route has ever written one on this
3355
+ * machine — does resolution fall through to the packaged template's own
3356
+ * default, the value a fresh install is about to receive.
3357
+ */
3358
+ function _resolve_scoped_projection(
3359
+ package_root: string,
3360
+ ): { mode: 'scoped' | 'legacy-all'; active_packs: string[] } {
3361
+ const doc = _resolve_global_settings_doc() ?? _load_default_settings(package_root);
3362
+ const projection = _isPlainObject(doc['projection']) ? (doc['projection'] as Record<string, unknown>) : {};
3363
+ const mode: 'scoped' | 'legacy-all' = projection['mode'] === 'scoped' ? 'scoped' : 'legacy-all';
3364
+ const runtime = _isPlainObject(doc['runtime']) ? (doc['runtime'] as Record<string, unknown>) : {};
3365
+ const active_packs_raw = runtime['active_packs'];
3366
+ const active_packs = Array.isArray(active_packs_raw)
3367
+ ? active_packs_raw.filter((v): v is string => typeof v === 'string')
3368
+ : [];
3369
+ return { mode, active_packs };
3370
+ }
3371
+
3372
+ /**
3373
+ * Prune every skill/command artefact whose `packs:` frontmatter is
3374
+ * non-empty AND has no intersection with `active_ids`. Untagged artefacts
3375
+ * (empty `packs:` frontmatter) are core/shared and always kept.
3376
+ */
3377
+ function _prune_scoped_modules(
3378
+ deploy_results: Record<string, DeployResult>,
3379
+ active_ids: ReadonlySet<string>,
3380
+ ): [number, Record<string, DeployResult>] {
3381
+ return _prune_modules_by(deploy_results, (p) => {
3382
+ const packs = surface_tiers.frontmatter_packs(p);
3383
+ if (packs.size === 0) return false;
3384
+ for (const id of packs) {
3385
+ if (active_ids.has(id)) return false;
3386
+ }
3387
+ return true;
3388
+ });
3389
+ }
3390
+
3209
3391
  function install_global(
3210
3392
  tools: Set<string>,
3211
3393
  force: boolean,
@@ -3283,6 +3465,27 @@ function install_global(
3283
3465
  info(` tools=${merged_tools.join(',')}`);
3284
3466
  }
3285
3467
 
3468
+ // Installer drift report (measurement only, never a gate — see
3469
+ // `_lib/install_drift.ts`). Printed here because this is the only
3470
+ // moment the information is actionable: right before the redeploy below
3471
+ // overwrites whatever the consumer may have locally edited since the
3472
+ // last install. Same project-scoping the manifest update further below
3473
+ // uses (skipped inside the agent-config source repo itself, where the
3474
+ // manifest would be untracked noise).
3475
+ if (
3476
+ project_root !== null &&
3477
+ pathExists(_resolve_settings_read(project_root)) &&
3478
+ !isDir(path.join(project_root, '.agent-src.uncondensed'))
3479
+ ) {
3480
+ const drift = collect_drift(project_root);
3481
+ if (!state.QUIET) {
3482
+ process.stdout.write('\n');
3483
+ for (const line of format_drift_report(drift).replace(/\n$/, '').split('\n')) {
3484
+ info(line);
3485
+ }
3486
+ }
3487
+ }
3488
+
3286
3489
  const package_root = _resolve_package_root_for_global();
3287
3490
  let deploy_results = _deploy_global_content(tools, force, package_root, written);
3288
3491
 
@@ -3303,6 +3506,35 @@ function install_global(
3303
3506
  }
3304
3507
  }
3305
3508
 
3509
+ // Scoped-projection prune (road-to-credible-install Phase 2 default
3510
+ // flip): when the GLOBAL settings governing this install resolve to
3511
+ // `projection.mode: scoped` (fresh installs; an EXISTING install without
3512
+ // the key, or with any other value, stays untouched — see
3513
+ // `_resolve_scoped_projection`), drop every skill/command artefact whose
3514
+ // `packs:` frontmatter carries no intersection with the active pack set.
3515
+ // A failed resolution (corrupt packs.yml, any thrown error) is caught
3516
+ // here and restores the full tree — never a partial or crashed prune.
3517
+ try {
3518
+ const { mode, active_packs } = _resolve_scoped_projection(package_root);
3519
+ if (mode === 'scoped') {
3520
+ const packs_registry = _load_packs_registry(package_root);
3521
+ const active_ids = _compute_active_pack_ids(packs_registry, active_packs);
3522
+ let scoped_pruned: number;
3523
+ [scoped_pruned, deploy_results] = _prune_scoped_modules(deploy_results, active_ids);
3524
+ if (!state.QUIET) {
3525
+ info(
3526
+ `🧹 Scoped install: pruned ${scoped_pruned} non-active-pack artefact(s) ` +
3527
+ `(active packs: ${[...active_ids].sort().join(', ') || '(none)'}). ` +
3528
+ 'Set projection.mode: legacy-all in .agent-settings.yml to restore the full surface.',
3529
+ );
3530
+ }
3531
+ }
3532
+ } catch (e) {
3533
+ if (!state.QUIET) {
3534
+ warn(`Scoped-projection prune failed — restoring full tree (${String(e)}).`);
3535
+ }
3536
+ }
3537
+
3306
3538
  const failed_tools = new Set<string>(
3307
3539
  Object.keys(deploy_results).filter(
3308
3540
  (tool_id) => (deploy_results[tool_id] as DeployResult)[2] === 'deploy_failed',
@@ -4794,5 +5026,14 @@ export {
4794
5026
  ensure_cline_bridge,
4795
5027
  ensure_windsurf_bridge,
4796
5028
  ensure_gemini_bridge,
5029
+ // road-to-credible-install Phase 2: exported for the scoped-projection
5030
+ // prune unit tests.
5031
+ _prune_modules_by,
5032
+ _prune_lab_modules,
5033
+ _prune_scoped_modules,
5034
+ _load_packs_registry,
5035
+ _compute_active_pack_ids,
5036
+ _resolve_global_settings_doc,
5037
+ _resolve_scoped_projection,
4797
5038
  };
4798
- export type { Options };
5039
+ export type { Options, PackRecord, DeployResult };
Binary file
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * lint_budget_ownership — every gate budget carries an owner and a review
4
+ * date (road-to-credible-install Phase 6.2, anti-ossification).
5
+ *
6
+ * A budget without a named owner and an annual review date fossilizes: the
7
+ * number outlives its rationale and the gate becomes ritual. This lint
8
+ * fails the build when any budget config under src/config/ lacks:
9
+ * - `owner` (non-empty string)
10
+ * - `review_by` (YYYY-MM-DD; may be past — a PAST date is a WARN-level
11
+ * reminder printed to stderr, not a failure, so an overdue
12
+ * review never blocks unrelated PRs; a MISSING date fails)
13
+ *
14
+ * Scope: src/config/*budget*.json (top-level fields). Per-entry overrides
15
+ * are allowed but not required — the top-level owner/review_by covers the
16
+ * file.
17
+ *
18
+ * Exit codes: 0 clean · 1 findings · 2 internal error.
19
+ */
20
+ import * as fs from 'node:fs';
21
+ import * as path from 'node:path';
22
+ import { fileURLToPath } from 'node:url';
23
+
24
+ const REPO_ROOT = path.resolve(fileURLToPath(import.meta.url), '..', '..', '..');
25
+ const CONFIG_DIR = path.join(REPO_ROOT, 'src', 'config');
26
+
27
+ const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
28
+
29
+ export function checkBudgetDoc(relPath: string, doc: Record<string, unknown>): string[] {
30
+ const errors: string[] = [];
31
+ const owner = doc['owner'];
32
+ if (typeof owner !== 'string' || owner.trim() === '') {
33
+ errors.push(`${relPath}: missing non-empty top-level \`owner\``);
34
+ }
35
+ const review = doc['review_by'];
36
+ if (typeof review !== 'string' || !DATE_RE.test(review)) {
37
+ errors.push(`${relPath}: missing/invalid top-level \`review_by\` (YYYY-MM-DD)`);
38
+ }
39
+ return errors;
40
+ }
41
+
42
+ export function budgetFiles(dir: string = CONFIG_DIR): string[] {
43
+ try {
44
+ return fs
45
+ .readdirSync(dir)
46
+ .filter((f) => f.endsWith('.json') && f.toLowerCase().includes('budget'))
47
+ .map((f) => path.join(dir, f));
48
+ } catch {
49
+ return [];
50
+ }
51
+ }
52
+
53
+ export function main(): number {
54
+ const files = budgetFiles();
55
+ if (files.length === 0) {
56
+ process.stdout.write('ℹ️ no budget configs under src/config/ — nothing to lint\n');
57
+ return 0;
58
+ }
59
+ const errors: string[] = [];
60
+ const today = new Date().toISOString().slice(0, 10);
61
+ for (const abs of files) {
62
+ const rel = path.relative(REPO_ROOT, abs);
63
+ let doc: Record<string, unknown>;
64
+ try {
65
+ doc = JSON.parse(fs.readFileSync(abs, 'utf-8')) as Record<string, unknown>;
66
+ } catch (e) {
67
+ errors.push(`${rel}: unparseable JSON (${(e as Error).message})`);
68
+ continue;
69
+ }
70
+ errors.push(...checkBudgetDoc(rel, doc));
71
+ const review = doc['review_by'];
72
+ if (typeof review === 'string' && DATE_RE.test(review) && review < today) {
73
+ process.stderr.write(
74
+ `⚠️ ${rel}: review_by ${review} is overdue — re-affirm or adjust the budget\n`,
75
+ );
76
+ }
77
+ }
78
+ if (errors.length > 0) {
79
+ for (const e of errors) process.stderr.write(`❌ budget ownership: ${e}\n`);
80
+ return 1;
81
+ }
82
+ process.stdout.write(`✅ budget ownership OK (${files.length} budget config(s))\n`);
83
+ return 0;
84
+ }
85
+
86
+ const _selfPath = fileURLToPath(import.meta.url);
87
+ if (process.argv[1] !== undefined && path.resolve(process.argv[1]) === path.resolve(_selfPath)) {
88
+ process.exit(main());
89
+ }
@@ -34,6 +34,9 @@ const ROOT = path.resolve(path.dirname(_HERE), '..', '..');
34
34
  // anchors to string start and `.*?` is non-greedy across newlines.
35
35
  const FM_RE = /^---\n([\s\S]*?)\n---/;
36
36
  const VISIBLE_TIERS: ReadonlySet<number> = new Set([0, 1]);
37
+ // ADR-090/092: `visibility` is the source of truth; the integer `tier` is the
38
+ // back-compat alias kept only as a fallback until it is removed.
39
+ const VISIBLE_VISIBILITIES: ReadonlySet<string> = new Set(['visible', 'advanced']);
37
40
  const MIN_CASES = 5; // roadmap Step 5: "5–10 example prompts"
38
41
 
39
42
  interface Violation {
@@ -41,6 +44,26 @@ interface Violation {
41
44
  reason: string;
42
45
  }
43
46
 
47
+ /**
48
+ * Is this command part of the gated visible surface?
49
+ *
50
+ * Reads `visibility` first, falls back to the deprecated `tier` alias.
51
+ * `null` = NEITHER key present — the silent-default hole this linter used to
52
+ * have (absent tier → 2 → skipped), which callers must report rather than
53
+ * treat as internal.
54
+ */
55
+ function _isVisible(fm: Record<string, unknown>): boolean | null {
56
+ const vis = fm['visibility'];
57
+ if (typeof vis === 'string') {
58
+ return VISIBLE_VISIBILITIES.has(vis);
59
+ }
60
+ const tier = fm['tier'];
61
+ if (typeof tier === 'number') {
62
+ return VISIBLE_TIERS.has(tier);
63
+ }
64
+ return null;
65
+ }
66
+
44
67
  function _isDir(p: string): boolean {
45
68
  try {
46
69
  return fs.statSync(p).isDirectory();
@@ -170,11 +193,19 @@ function _isNonEmptyString(v: unknown): v is string {
170
193
 
171
194
  function check(md: string): Violation[] {
172
195
  const fm = _frontmatter(fs.readFileSync(md, 'utf-8'));
173
- const tier = 'tier' in fm ? (fm['tier'] as unknown) : 2;
174
- if (typeof tier !== 'number' || !VISIBLE_TIERS.has(tier)) {
196
+ const visible = _isVisible(fm);
197
+ const rel = _relTo(md, ROOT);
198
+ if (visible === null) {
199
+ return [
200
+ {
201
+ file: rel,
202
+ reason: 'missing `visibility` (and no `tier` alias) — cannot determine whether routing metadata is required',
203
+ },
204
+ ];
205
+ }
206
+ if (!visible) {
175
207
  return [];
176
208
  }
177
- const rel = _relTo(md, ROOT);
178
209
  const vio: Violation[] = [];
179
210
 
180
211
  const intent = fm['intent'];
@@ -310,8 +341,7 @@ function main(): number {
310
341
  continue;
311
342
  }
312
343
  const fm = _frontmatter(fs.readFileSync(md, 'utf-8'));
313
- const tier = 'tier' in fm ? (fm['tier'] as unknown) : 2;
314
- if (typeof tier === 'number' && VISIBLE_TIERS.has(tier)) {
344
+ if (_isVisible(fm) === true) {
315
345
  visible += 1;
316
346
  }
317
347
  violations.push(...check(md));
@@ -10,7 +10,8 @@
10
10
  * visible command under `--all`), and the same sorted iteration order.
11
11
  * snake_case kept. Historical quirks are preserved deliberately — tests and downstream consumers pin the exact behaviour.
12
12
  *
13
- * A VISIBLE command (tier 0/1) must have a leading token drawn from the
13
+ * A VISIBLE command (`visibility: visible|advanced`, i.e. the legacy tier 0/1)
14
+ * must have a leading token drawn from the
14
15
  * approved verb allowlist in `src/config/discovery/command-verbs.yml`.
15
16
  * `create-*` is a banned leading token for new visible commands
16
17
  * (`create-pr` is grandfathered).
@@ -32,8 +33,13 @@ const VERBS_YML = path.join(ROOT, 'src', 'config', 'discovery', 'command-verbs.y
32
33
  const _CMD_PATH_RE = /\.agent-src\.uncondensed\/commands\/.+\.md$/;
33
34
  const NAME_RE = /^name:\s*(.*)$/m;
34
35
  const TIER_RE = /^tier:\s*(\d+)/m;
36
+ const VISIBILITY_RE = /^visibility:\s*['"]?([A-Za-z-]+)/m;
35
37
  const SUB_RE = /^sub:\s*(.*)$/m;
36
38
  const VISIBLE_TIERS: ReadonlySet<number> = new Set([0, 1]);
39
+ // ADR-090/092: `visibility` is the source of truth; the integer `tier` is the
40
+ // back-compat alias. `visible`/`advanced` are the two gated (non-internal)
41
+ // values — the named equivalent of VISIBLE_TIERS {0, 1}.
42
+ const VISIBLE_VISIBILITIES: ReadonlySet<string> = new Set(['visible', 'advanced']);
37
43
 
38
44
  interface Violation {
39
45
  file: string;
@@ -109,15 +115,31 @@ function _git(args: string[], tolerant = false): string {
109
115
  return r.stdout;
110
116
  }
111
117
 
112
- /** (name, tier, sub) from frontmatter text; tier defaults to 2 (internal). */
113
- function _parse(text: string): { name: string | null; tier: number; sub: string | null } {
118
+ /**
119
+ * (name, visible, sub) from frontmatter text.
120
+ *
121
+ * `visible` reads `visibility` first and falls back to the deprecated integer
122
+ * `tier` alias, which is what PAST git revisions carry — the promotion check
123
+ * below parses pre-ADR-090 blobs, so the alias fallback must stay until those
124
+ * revisions age out. `null` means NEITHER key was present: that is the
125
+ * silent-default hole this linter used to have (absent tier → 2 → skipped, so
126
+ * the gate quietly stopped gating), and callers must treat it as a violation
127
+ * rather than as "internal".
128
+ */
129
+ function _parse(text: string): { name: string | null; visible: boolean | null; sub: string | null } {
114
130
  const nm = NAME_RE.exec(text);
115
131
  const name = nm ? _stripQuotes(nm[1]!.trim()) : null;
132
+ const vm = VISIBILITY_RE.exec(text);
116
133
  const tm = TIER_RE.exec(text);
117
- const tier = tm ? parseInt(tm[1]!, 10) : 2;
134
+ let visible: boolean | null = null;
135
+ if (vm) {
136
+ visible = VISIBLE_VISIBILITIES.has(vm[1]!);
137
+ } else if (tm) {
138
+ visible = VISIBLE_TIERS.has(parseInt(tm[1]!, 10));
139
+ }
118
140
  const sm = SUB_RE.exec(text);
119
141
  const sub = sm ? _stripQuotes(sm[1]!.trim()) : null;
120
- return { name, tier, sub };
142
+ return { name, visible, sub };
121
143
  }
122
144
 
123
145
  function changed_command_files(baseline: string): Record<string, string> {
@@ -223,16 +245,27 @@ function check(
223
245
  if (!_exists(abs_path)) {
224
246
  return []; // deleted
225
247
  }
226
- const { name, tier, sub } = _parse(fs.readFileSync(abs_path, 'utf-8'));
227
- if (name === null || !VISIBLE_TIERS.has(tier)) {
248
+ const { name, visible, sub } = _parse(fs.readFileSync(abs_path, 'utf-8'));
249
+ if (visible === null) {
250
+ // Neither `visibility` nor the `tier` alias — fail loudly instead of
251
+ // defaulting to internal, which would silently un-gate the command.
252
+ return [
253
+ {
254
+ file: relpath,
255
+ rule: 'visibility',
256
+ reason: 'missing `visibility` (and no `tier` alias) — cannot determine whether this command is gated',
257
+ },
258
+ ];
259
+ }
260
+ if (name === null || !visible) {
228
261
  return []; // internal / unnamed — not gated
229
262
  }
230
263
  if (kind === 'M') {
231
264
  // Only a PROMOTION into visibility counts as a new visible surface.
232
265
  const prev = _git(['show', `${baseline}:${relpath}`], true);
233
266
  if (prev) {
234
- const { tier: prev_tier } = _parse(prev);
235
- if (VISIBLE_TIERS.has(prev_tier)) {
267
+ const { visible: prev_visible } = _parse(prev);
268
+ if (prev_visible === true) {
236
269
  return []; // already visible before — grandfathered
237
270
  }
238
271
  }