@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
@@ -22,10 +22,14 @@ import * as fs from 'node:fs';
22
22
  import * as path from 'node:path';
23
23
  import { fileURLToPath, pathToFileURL } from 'node:url';
24
24
  import type { DatabaseSync } from 'node:sqlite';
25
- import type * as NodeSqlite from 'node:sqlite';
26
25
 
27
26
  import { TELEMETRY_FILENAME, TELEMETRY_REL_DIR } from './mcp_server/telemetry.js';
27
+ import { loadSqlite, readUserVersion, stampUserVersion } from './_lib/sqlite_guard.js';
28
28
 
29
+ // cache-invalidation: the path carries no version segment (existing CLI
30
+ // intent tests pin this exact string in stdout); invalidation instead runs
31
+ // through `PRAGMA user_version = SCHEMA_VERSION`, stamped on every connect
32
+ // by `_connect()` below (road-to-reachable-code-memory Phase 7).
29
33
  export const DEFAULT_DB_REL = 'agents/runtime/mcp-telemetry/calls.sqlite3';
30
34
  export const SCHEMA_VERSION = 1;
31
35
 
@@ -173,42 +177,18 @@ export function resolve_db(consumer_root?: string | null): string {
173
177
  return path.join(root, DEFAULT_DB_REL);
174
178
  }
175
179
 
176
- // Python's stdlib sqlite3 emits nothing on stderr; node:sqlite is flagged
177
- // experimental on node 22 and prints an `ExperimentalWarning: SQLite …` line
178
- // to stderr on first import (stable / silent on node >= 23). Drop only that
179
- // specific warning so stderr stays byte-stable across node versions (tests
180
- // pin the exact bytes). Installed once, narrowly matched.
181
- let _sqliteWarningSilenced = false;
182
- function _silenceSqliteExperimentalWarning(): void {
183
- if (_sqliteWarningSilenced) return;
184
- _sqliteWarningSilenced = true;
185
- const orig = process.emitWarning.bind(process);
186
- process.emitWarning = ((warning: string | Error, ...rest: unknown[]): void => {
187
- const text = typeof warning === 'string' ? warning : (warning?.message ?? '');
188
- if (/SQLite is an experimental/i.test(text)) return;
189
- (orig as (w: string | Error, ...a: unknown[]) => void)(warning, ...rest);
190
- }) as typeof process.emitWarning;
191
- }
192
-
193
- /** Lazy `node:sqlite` import — keeps the module loadable on a runtime without it. */
194
- async function _loadSqlite(): Promise<typeof NodeSqlite> {
195
- _silenceSqliteExperimentalWarning();
196
- try {
197
- return await import('node:sqlite');
198
- } catch (exc) {
199
- const message = exc instanceof Error ? exc.message : String(exc);
200
- throw new Error(
201
- `node:sqlite is unavailable in this runtime (${message}). ` +
202
- 'mcp_telemetry_store requires Node with the built-in SQLite module.',
203
- );
180
+ /** Remove a possibly-corrupt DB file + its WAL/SHM sidecars, best-effort. */
181
+ function _discardDb(db_path: string): void {
182
+ for (const p of [db_path, `${db_path}-wal`, `${db_path}-shm`]) {
183
+ try {
184
+ fs.rmSync(p, { force: true });
185
+ } catch {
186
+ /* best-effort */
187
+ }
204
188
  }
205
189
  }
206
190
 
207
- /** Open + schema-init the DB. Mirrors the Python `_connect` helper. */
208
- async function _connect(db_path: string): Promise<DatabaseSync> {
209
- fs.mkdirSync(path.dirname(db_path), { recursive: true });
210
- const { DatabaseSync } = await _loadSqlite();
211
- const conn = new DatabaseSync(db_path);
191
+ function _createSchema(conn: DatabaseSync): void {
212
192
  conn.exec('PRAGMA journal_mode=WAL');
213
193
  conn.exec(
214
194
  `
@@ -226,6 +206,56 @@ async function _connect(db_path: string): Promise<DatabaseSync> {
226
206
  conn.exec('CREATE INDEX IF NOT EXISTS idx_calls_tool ON calls(tool_name)');
227
207
  conn.exec('CREATE INDEX IF NOT EXISTS idx_calls_ts ON calls(ts)');
228
208
  conn.exec('CREATE INDEX IF NOT EXISTS idx_calls_outcome ON calls(outcome)');
209
+ }
210
+
211
+ /**
212
+ * Open + schema-init the DB. Mirrors the Python `_connect` helper.
213
+ *
214
+ * road-to-reachable-code-memory Phase 7 — fixes the previously never-read
215
+ * `SCHEMA_VERSION` constant: `PRAGMA user_version` is stamped on create AND
216
+ * checked on open.
217
+ *
218
+ * - Absent file, or `user_version == 0` (a pre-Phase-7 DB written before this
219
+ * fix existed — same table shape, just never versioned): create/open
220
+ * normally, then stamp the current version. This is the "legacy-path
221
+ * sweep on first run".
222
+ * - `user_version` present but NOT `SCHEMA_VERSION`: a real future schema
223
+ * change landed. The DB is a derived, idempotently-rebuildable view of the
224
+ * JSONL sink (source of truth) — silently discard it and rebuild fresh
225
+ * rather than attempt an in-place migration for a schema this code
226
+ * doesn't know.
227
+ * - File exists but fails to even OPEN (truncated / corrupt): same
228
+ * discard-and-rebuild path. Corruption is a non-event, not an error the
229
+ * caller has to handle.
230
+ */
231
+ async function _connect(db_path: string): Promise<DatabaseSync> {
232
+ fs.mkdirSync(path.dirname(db_path), { recursive: true });
233
+ const { DatabaseSync } = await loadSqlite('mcp_telemetry_store');
234
+
235
+ if (fs.existsSync(db_path)) {
236
+ let probe: DatabaseSync | null = null;
237
+ let drift = false;
238
+ try {
239
+ probe = new DatabaseSync(db_path);
240
+ const existing = readUserVersion(probe);
241
+ drift = existing !== 0 && existing !== SCHEMA_VERSION;
242
+ } catch {
243
+ drift = true; // corrupt / unreadable → rebuild
244
+ } finally {
245
+ try {
246
+ probe?.close();
247
+ } catch {
248
+ /* best-effort */
249
+ }
250
+ }
251
+ if (drift) {
252
+ _discardDb(db_path);
253
+ }
254
+ }
255
+
256
+ const conn = new DatabaseSync(db_path);
257
+ _createSchema(conn);
258
+ stampUserVersion(conn, SCHEMA_VERSION);
229
259
  return conn;
230
260
  }
231
261
 
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * session_end concern — memory learning sidecar aggregation
4
+ * (road-to-reachable-code-memory Phase 4).
5
+ *
6
+ * Joins the EXISTING `session_end` concern set in hook_manifest.yaml — no
7
+ * new platform hook wiring. On session end it aggregates
8
+ * `agents/memory/intake/signals-*.jsonl` through the learning sidecar
9
+ * (`learning_sidecar.ts`: 30-day decay, ≥2-origin corroboration, dead-end
10
+ * ledger) into the gitignored `agents/memory/.agent-learning.json` +
11
+ * // cache-invalidation: path owned by learning_sidecar.ts (schema_version field inside the JSON; name pinned there)
12
+ * `LESSONS.md`. Local-only, budget-capped, fail-open:
13
+ *
14
+ * - Default-OFF. Fires only when `memory.learn_on_session_end: true` in
15
+ * `.agent-settings.yml` (council decision 2026-07-27: ships off; the
16
+ * default flip is proposed only after the 30-day dogfood shows
17
+ * non-trivial signal AND session-end p95 < 2 s).
18
+ * - Budget-capped: a wall-clock budget (default 2000 ms) aborts the write
19
+ * and exits 0 — a slow aggregation must never tax session teardown.
20
+ * - Fail-open: any error → exit 0, no output. `fail_closed: false`.
21
+ * - Promotion stays human: this hook only refreshes the sidecar; a
22
+ * PROMOTED lesson is surfaced as a one-line visibility marker pointing
23
+ * at the existing /memory:propose flow. Nothing auto-writes curated
24
+ * `agents/memory/*.yml`.
25
+ *
26
+ * Exit codes (dispatcher contract): 0 always (allow).
27
+ */
28
+ import fs from 'node:fs';
29
+ import path from 'node:path';
30
+ import { fileURLToPath, pathToFileURL } from 'node:url';
31
+
32
+ import {
33
+ buildSidecar,
34
+ LESSONS_NAME,
35
+ renderLessonsMd,
36
+ SIDECAR_NAME,
37
+ } from './learning_sidecar.js';
38
+
39
+ const SETTINGS_FILE = '.agent-settings.yml';
40
+ /** Wall-clock budget for the whole aggregation (ms). */
41
+ export const BUDGET_MS = 2000;
42
+
43
+ /**
44
+ * Minimal `.agent-settings.yml` reader for `memory.learn_on_session_end`
45
+ * (same hand-rolled mini-parser pattern as the sibling hooks — no YAML
46
+ * dependency in the hook hot path).
47
+ */
48
+ export function enabled(root: string): boolean {
49
+ const p = path.join(root, SETTINGS_FILE);
50
+ let text: string;
51
+ try {
52
+ text = fs.readFileSync(p, 'utf8');
53
+ } catch {
54
+ return false;
55
+ }
56
+ let inMemory = false;
57
+ for (const rawLine of text.split('\n')) {
58
+ const line = rawLine.replace(/\s+$/u, '');
59
+ if (/^memory:\s*(#.*)?$/u.test(line)) {
60
+ inMemory = true;
61
+ continue;
62
+ }
63
+ if (inMemory) {
64
+ if (/^\S/u.test(line) && line !== '') {
65
+ inMemory = false; // left the memory: block
66
+ continue;
67
+ }
68
+ const m = /^\s{2,}learn_on_session_end:\s*(\S+)/u.exec(line);
69
+ if (m) return m[1] === 'true';
70
+ }
71
+ }
72
+ return false;
73
+ }
74
+
75
+ /** Run the aggregation. Returns the one-line marker to emit, or null. */
76
+ export function runLearn(root: string, nowIso: string, budgetMs: number = BUDGET_MS): string | null {
77
+ const started = Date.now();
78
+ const intakeDir = path.join(root, 'agents', 'memory', 'intake');
79
+ const outDir = path.join(root, 'agents', 'memory');
80
+ if (!fs.existsSync(intakeDir)) return null;
81
+ const sidecar = buildSidecar(intakeDir, nowIso);
82
+ if (Date.now() - started > budgetMs) return null; // over budget — skip the write
83
+ if (sidecar.lessons.length === 0) return null;
84
+ fs.writeFileSync(path.join(outDir, SIDECAR_NAME), `${JSON.stringify(sidecar, null, 2)}\n`, 'utf8');
85
+ fs.writeFileSync(path.join(outDir, LESSONS_NAME), renderLessonsMd(sidecar), 'utf8');
86
+ const promoted = sidecar.lessons.filter((l) => l.verdict === 'preferred').length;
87
+ const deadEnds = sidecar.lessons.filter((l) => l.verdict === 'dead_end').length;
88
+ // Memory-visibility contract shape: one line, ids/counters only, no bodies.
89
+ return (
90
+ `🧠 Memory: sidecar refreshed — ${sidecar.lessons.length} lesson(s) ` +
91
+ `(${promoted} preferred · ${deadEnds} dead-end); promote via /memory:propose`
92
+ );
93
+ }
94
+
95
+ export function main(): number {
96
+ try {
97
+ const root = process.cwd();
98
+ if (!enabled(root)) return 0;
99
+ const marker = runLearn(root, new Date().toISOString());
100
+ if (marker) process.stdout.write(`${marker}\n`);
101
+ } catch {
102
+ // fail-open: session teardown must never break on a learning hook.
103
+ }
104
+ return 0;
105
+ }
106
+
107
+ // Bundle-safety: never auto-run when inlined into an esbuild bundle, where
108
+ // every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
109
+ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
110
+ const _isMain = (() => {
111
+ if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) return false;
112
+ if (process.argv[1] === undefined) return false;
113
+ try {
114
+ return (
115
+ pathToFileURL(fs.realpathSync(path.resolve(process.argv[1]))).href ===
116
+ import.meta.url
117
+ );
118
+ } catch {
119
+ return pathToFileURL(path.resolve(process.argv[1])).href === import.meta.url;
120
+ }
121
+ })();
122
+ if (_isMain) {
123
+ process.exit(main());
124
+ }
125
+
126
+ export const _HERE = fileURLToPath(import.meta.url);
Binary file
@@ -0,0 +1,312 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Rollback-trigger replay for the memory FTS5 index
4
+ * (road-to-reachable-code-memory Phase 6 item 2 / ADR-129).
5
+ *
6
+ * ADR-129 makes the FTS5 substrate ship WITHOUT a ship-gate lift benchmark
7
+ * (the separator-recall gap is a correctness defect, not a ranking question
8
+ * a lift-gate could measure), but it still records a ROLLBACK trigger: this
9
+ * replay reports recall + tie-distribution for the substring `_score`
10
+ * fallback vs the persisted FTS5 index, over a FIXED 24-query set drawn from
11
+ * REAL entry ids in `agents/memory/*.yml` — not the synthetic
12
+ * needed+distractor bench store `measure_lexical_ranking.ts` uses.
13
+ *
14
+ * Two prior baselines are cited (per ADR-129: "the replay must state which
15
+ * baseline artefact it compares against"), but NEITHER is directly
16
+ * comparable to this replay's own numbers — both were measured over
17
+ * `internal/bench/second-brain/retrieval-store/` (a small store engineered
18
+ * with keyword-overlapping distractors specifically to produce ties), not
19
+ * over the real, distractor-free `agents/memory` corpus this script runs
20
+ * against:
21
+ *
22
+ * - `internal/bench/reports/second-brain-retrieval.json`:
23
+ * mean_tie_set_size = 4.111... (live retrieval-precision measurement)
24
+ * - `internal/bench/reports/lexical-ranking.json`: implied mean tie-set
25
+ * 3.333 for the SAME `_score` scorer over the SAME store (a different
26
+ * measurement pass — the cross-artefact discrepancy is a known, already
27
+ * documented finding, see `docs/proof.md`).
28
+ *
29
+ * This replay's own baseline-vs-FTS comparison (computed on the same corpus,
30
+ * same query set, same run) is the load-bearing measurement; the two
31
+ * externals above are context, printed for the record, never averaged in.
32
+ *
33
+ * Usage: memory_replay_24.ts [--write] [--format text|json]
34
+ * --write persist the dated note to agents/evidence/reports/memory-fts-replay.md
35
+ * Exit codes: 0 ok, 1 internal error, 2 usage error.
36
+ */
37
+ import * as fs from 'node:fs';
38
+ import * as path from 'node:path';
39
+ import { fileURLToPath } from 'node:url';
40
+
41
+ import { _iter_curated_entries } from './memory_report.js';
42
+ import { _score } from './memory_lookup.js';
43
+ import { buildIndex, isStale, queryIndex, resolveIndexPath } from './_lib/memory_fts_index.js';
44
+
45
+ const _HERE = fileURLToPath(import.meta.url);
46
+ export const REPO_ROOT = path.resolve(path.dirname(_HERE), '..', '..');
47
+ export const MEMORY_ROOT = path.join(REPO_ROOT, 'agents', 'memory');
48
+ export const INTAKE_ROOT = path.join(MEMORY_ROOT, 'intake');
49
+ export const NOTE_PATH = path.join(REPO_ROOT, 'agents', 'evidence', 'reports', 'memory-fts-replay.md');
50
+
51
+ const CURATED_STATUS_EXCLUDE: ReadonlySet<string> = new Set(['deprecated', 'archived', 'superseded']);
52
+
53
+ /**
54
+ * Fixed 24-query set — real curated entry ids from `agents/memory/*.yml`
55
+ * (2026-07-27 snapshot), deliberately hyphen-heavy so the set exercises the
56
+ * exact separator-recall defect ADR-129 names (`ai_council`-style queries
57
+ * scoring 0 under the literal substring scorer). Each query is the entry's
58
+ * OWN id — "recall" means "does querying by an entry's id retrieve that
59
+ * same entry within the top 5".
60
+ */
61
+ export const REPLAY_QUERIES: readonly string[] = [
62
+ 'adr-number-collision-on-parallel-prs',
63
+ 'agent-config-hooks-need-global-binary',
64
+ 'ai-council-cli-repo-local-only',
65
+ 'auto-commit-empties-roadmaps',
66
+ 'bench-ab-cost-and-activation-mechanics',
67
+ 'capability-matrix-coverage-guard',
68
+ 'claude-plugin-local-install-via-worktree',
69
+ 'command-cluster-ci-surface',
70
+ 'commit-relocates-into-per-branch-worktree',
71
+ 'council-a1-subagent-contract',
72
+ 'council-access-control-and-remediation',
73
+ 'council-agent-memory-sunset',
74
+ 'council-ai-failure-mode-prevention',
75
+ 'council-analysis-workbench',
76
+ 'council-chat-history-consolidation',
77
+ 'council-claude-code-single-surface',
78
+ 'council-command-cluster-phase4',
79
+ 'council-contract-integrity',
80
+ 'council-curl-timeout-fix',
81
+ 'council-decisions-workspace-phases',
82
+ 'council-design-antislop-harvest',
83
+ 'council-design-exploration-skills',
84
+ 'council-discipline-axis-benchmark',
85
+ 'council-ecc-harvest',
86
+ ];
87
+
88
+ const K = 5;
89
+
90
+ interface RankedRow {
91
+ id: string;
92
+ score: number;
93
+ }
94
+
95
+ interface EngineResult {
96
+ rank: number; // 0-based index within the top-K, -1 = not recalled
97
+ tieSet: number; // count of entries sharing the TOP score (over the whole ranking)
98
+ top5: string[];
99
+ }
100
+
101
+ interface QueryResult {
102
+ query: string;
103
+ baseline: EngineResult;
104
+ fts: EngineResult;
105
+ top5Overlap: number; // |baseline.top5 ∩ fts.top5| / K
106
+ }
107
+
108
+ /** Corpus entries (id + searchable text), status-excluded entries dropped — mirrors `retrieve()`'s candidate set. */
109
+ function _corpusEntries(): Array<{ id: string; entry: Record<string, unknown> }> {
110
+ const out: Array<{ id: string; entry: Record<string, unknown> }> = [];
111
+ for (const [, , entry] of _iter_curated_entries()) {
112
+ const status = entry['status'];
113
+ if (typeof status === 'string' && CURATED_STATUS_EXCLUDE.has(status)) continue;
114
+ const id = typeof entry['id'] === 'string' ? entry['id'] : '';
115
+ if (id === '') continue;
116
+ out.push({ id, entry });
117
+ }
118
+ return out;
119
+ }
120
+
121
+ /** Deterministic ordering: score DESC, id ASC — the memory_lookup.ts contract. */
122
+ function _sortRanked(rows: RankedRow[]): void {
123
+ rows.sort((a, b) => (b.score - a.score) || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
124
+ }
125
+
126
+ function _diagnose(ranked: RankedRow[], needed: string): EngineResult {
127
+ const positive = ranked.filter((r) => r.score > 0);
128
+ if (positive.length === 0) return { rank: -1, tieSet: 0, top5: [] };
129
+ const top = positive[0]?.score ?? 0;
130
+ const tieSet = positive.filter((r) => r.score === top).length;
131
+ const top5 = positive.slice(0, K).map((r) => r.id);
132
+ const rank = top5.indexOf(needed);
133
+ return { rank, tieSet, top5 };
134
+ }
135
+
136
+ function _baselineRanked(corpus: Array<{ id: string; entry: Record<string, unknown> }>, keys: string[]): RankedRow[] {
137
+ const rows = corpus.map((c) => ({ id: c.id, score: _score(c.entry, keys) }));
138
+ _sortRanked(rows);
139
+ return rows;
140
+ }
141
+
142
+ function _ftsRanked(indexPath: string, keys: string[]): RankedRow[] {
143
+ const hits = queryIndex(indexPath, keys, []);
144
+ const rows = hits.map((h) => ({ id: h.id, score: h.relevance }));
145
+ _sortRanked(rows);
146
+ return rows;
147
+ }
148
+
149
+ export interface ReplaySummary {
150
+ schema_version: 1;
151
+ kind: 'memory-fts-replay';
152
+ generated_at: string;
153
+ corpus: string;
154
+ corpus_entries: number;
155
+ queries: number;
156
+ k: number;
157
+ baseline_recall_at_k: number;
158
+ fts_recall_at_k: number;
159
+ baseline_mean_tie_set_size: number;
160
+ fts_mean_tie_set_size: number;
161
+ mean_top5_overlap: number;
162
+ compared_against: {
163
+ second_brain_retrieval_json: { path: string; mean_tie_set_size: number };
164
+ lexical_ranking_json: { path: string; note: string };
165
+ comparability_note: string;
166
+ };
167
+ }
168
+
169
+ export function replay(): { results: QueryResult[]; summary: ReplaySummary } {
170
+ const corpus = _corpusEntries();
171
+ const indexPath = resolveIndexPath(REPO_ROOT);
172
+ if (isStale(indexPath, MEMORY_ROOT, INTAKE_ROOT)) {
173
+ buildIndex(indexPath, MEMORY_ROOT, INTAKE_ROOT);
174
+ }
175
+
176
+ const results: QueryResult[] = [];
177
+ for (const query of REPLAY_QUERIES) {
178
+ const baseline = _diagnose(_baselineRanked(corpus, [query]), query);
179
+ const fts = _diagnose(_ftsRanked(indexPath, [query]), query);
180
+ const overlapCount = baseline.top5.filter((id) => fts.top5.includes(id)).length;
181
+ const top5Overlap = K > 0 ? overlapCount / K : 0;
182
+ results.push({ query, baseline, fts, top5Overlap });
183
+ }
184
+
185
+ const n = results.length;
186
+ const mean = (sel: (r: QueryResult) => number): number =>
187
+ n === 0 ? 0 : Math.round((results.reduce((a, r) => a + sel(r), 0) / n) * 1000) / 1000;
188
+ const recallAt = (sel: (r: QueryResult) => EngineResult): number =>
189
+ n === 0 ? 0 : Math.round((results.filter((r) => sel(r).rank >= 0).length / n) * 1000) / 1000;
190
+
191
+ const summary: ReplaySummary = {
192
+ schema_version: 1,
193
+ kind: 'memory-fts-replay',
194
+ generated_at: new Date().toISOString(),
195
+ corpus: 'agents/memory/ (real, distractor-free)',
196
+ corpus_entries: corpus.length,
197
+ queries: n,
198
+ k: K,
199
+ baseline_recall_at_k: recallAt((r) => r.baseline),
200
+ fts_recall_at_k: recallAt((r) => r.fts),
201
+ baseline_mean_tie_set_size: mean((r) => r.baseline.tieSet),
202
+ fts_mean_tie_set_size: mean((r) => r.fts.tieSet),
203
+ mean_top5_overlap: mean((r) => r.top5Overlap),
204
+ compared_against: {
205
+ second_brain_retrieval_json: {
206
+ path: 'internal/bench/reports/second-brain-retrieval.json',
207
+ mean_tie_set_size: 4.111111111111111,
208
+ },
209
+ lexical_ranking_json: {
210
+ path: 'internal/bench/reports/lexical-ranking.json',
211
+ note: 'records ~3.333 mean baseline tie-set for the same _score scorer over the SAME bench store — a different measurement pass, cross-artefact discrepancy documented in docs/proof.md',
212
+ },
213
+ comparability_note:
214
+ 'Both cited artefacts were measured over internal/bench/second-brain/retrieval-store/ (engineered needed+distractor fixture). This replay runs over the real agents/memory/ corpus (no engineered distractors) with a DIFFERENT query set (real entry ids, not curated needed/distractor tasks) — the numbers above are NOT directly comparable to either cited artefact. They are cited per ADR-129\'s instruction to name which baseline artefact a replay compares against; this replay\'s own baseline-vs-FTS delta (computed on one corpus, one run) is the load-bearing number.',
215
+ },
216
+ };
217
+ return { results, summary };
218
+ }
219
+
220
+ function _renderMarkdown(out: { results: QueryResult[]; summary: ReplaySummary }): string {
221
+ const s = out.summary;
222
+ const date = s.generated_at.slice(0, 10);
223
+ const lines: string[] = [];
224
+ lines.push(`# Memory FTS5 replay — ${date}`);
225
+ lines.push('');
226
+ lines.push(
227
+ 'Rollback-trigger measurement for the memory FTS5 index (road-to-reachable-code-memory ' +
228
+ 'Phase 6 item 2 / ADR-129). Compares the substring `_score` fallback against the ' +
229
+ 'persisted FTS5 index over a fixed 24-query set of real `agents/memory/*.yml` entry ids.',
230
+ );
231
+ lines.push('');
232
+ lines.push('## Comparability note');
233
+ lines.push('');
234
+ lines.push(s.compared_against.comparability_note);
235
+ lines.push('');
236
+ lines.push('## Cited baselines (context only — not directly comparable, see above)');
237
+ lines.push('');
238
+ lines.push(
239
+ `- \`${s.compared_against.second_brain_retrieval_json.path}\` — ` +
240
+ `mean_tie_set_size = ${s.compared_against.second_brain_retrieval_json.mean_tie_set_size}`,
241
+ );
242
+ lines.push(`- \`${s.compared_against.lexical_ranking_json.path}\` — ${s.compared_against.lexical_ranking_json.note}`);
243
+ lines.push('');
244
+ lines.push('## This replay');
245
+ lines.push('');
246
+ lines.push(`- Corpus: ${s.corpus} (${s.corpus_entries} entries)`);
247
+ lines.push(`- Queries: ${s.queries}, k=${s.k}`);
248
+ lines.push(`- Recall@${s.k}: baseline=${s.baseline_recall_at_k} fts=${s.fts_recall_at_k}`);
249
+ lines.push(
250
+ `- Mean top tie-set size: baseline=${s.baseline_mean_tie_set_size} fts=${s.fts_mean_tie_set_size}`,
251
+ );
252
+ lines.push(`- Mean top-${s.k} overlap (baseline ∩ fts): ${s.mean_top5_overlap}`);
253
+ lines.push('');
254
+ lines.push('## Per-query detail');
255
+ lines.push('');
256
+ lines.push('| query | baseline rank | baseline tie | fts rank | fts tie | top5 overlap |');
257
+ lines.push('|---|---|---|---|---|---|');
258
+ for (const r of out.results) {
259
+ lines.push(
260
+ `| \`${r.query}\` | ${r.baseline.rank} | ${r.baseline.tieSet} | ${r.fts.rank} | ${r.fts.tieSet} | ${r.top5Overlap} |`,
261
+ );
262
+ }
263
+ lines.push('');
264
+ return lines.join('\n');
265
+ }
266
+
267
+ export function main(argv: string[]): number {
268
+ let write = false;
269
+ let format: 'text' | 'json' = 'text';
270
+ for (let i = 0; i < argv.length; i++) {
271
+ const a = argv[i] as string;
272
+ if (a === '--write') write = true;
273
+ else if (a === '--format') format = (argv[++i] as 'text' | 'json') ?? 'text';
274
+ else if (a === '-h' || a === '--help') {
275
+ process.stdout.write('usage: memory_replay_24.ts [--write] [--format text|json]\n');
276
+ return 0;
277
+ } else {
278
+ process.stderr.write(`memory_replay_24: unknown argument ${a}\n`);
279
+ return 2;
280
+ }
281
+ }
282
+
283
+ let out: { results: QueryResult[]; summary: ReplaySummary };
284
+ try {
285
+ out = replay();
286
+ } catch (exc) {
287
+ process.stderr.write(`memory_replay_24: error: ${String(exc)}\n`);
288
+ return 1;
289
+ }
290
+
291
+ if (write) {
292
+ fs.mkdirSync(path.dirname(NOTE_PATH), { recursive: true });
293
+ fs.writeFileSync(NOTE_PATH, _renderMarkdown(out) + '\n');
294
+ }
295
+
296
+ if (format === 'json') {
297
+ process.stdout.write(JSON.stringify(out, null, 2) + '\n');
298
+ return 0;
299
+ }
300
+ const s = out.summary;
301
+ process.stdout.write(
302
+ `memory-fts-replay (${s.queries} queries, k=${s.k}, corpus=${s.corpus_entries} entries):\n` +
303
+ ` recall@${s.k} baseline=${s.baseline_recall_at_k} fts=${s.fts_recall_at_k}\n` +
304
+ ` mean top tie-set baseline=${s.baseline_mean_tie_set_size} fts=${s.fts_mean_tie_set_size}\n` +
305
+ ` mean top-${s.k} overlap: ${s.mean_top5_overlap}\n`,
306
+ );
307
+ return 0;
308
+ }
309
+
310
+ if (fileURLToPath(import.meta.url) === path.resolve(process.argv[1] ?? '')) {
311
+ process.exit(main(process.argv.slice(2)));
312
+ }
@@ -189,10 +189,17 @@ function _pyYamlDatetimeStr(raw: string): string {
189
189
 
190
190
  // --- curated/intake iteration -----------------------------------------------
191
191
 
192
- type CuratedTuple = [string, string, Record<string, unknown>];
192
+ export type CuratedTuple = [string, string, Record<string, unknown>];
193
193
 
194
- /** Yield [file, type, entry] across both curated layouts. */
195
- function _iter_curated_entries(): CuratedTuple[] {
194
+ /**
195
+ * Yield [file, type, entry] across both curated layouts.
196
+ *
197
+ * Exported for reuse by `_lib/memory_fts_index.ts` (road-to-reachable-code-memory
198
+ * Phase 6) — the FTS index builder repoints `MEMORY_ROOT` via `_setMemoryRoot`
199
+ * before calling this, then restores it, so it never needs a second copy of
200
+ * the curated-layout scan.
201
+ */
202
+ export function _iter_curated_entries(): CuratedTuple[] {
196
203
  const out: CuratedTuple[] = [];
197
204
  for (const mtype of CURATED_TYPES) {
198
205
  const single = path.join(MEMORY_ROOT, `${mtype}.yml`);
@@ -838,7 +845,13 @@ export function main(): number {
838
845
  return 0;
839
846
  }
840
847
 
848
+ // Bundle-safety: never auto-run when inlined into an esbuild bundle, where
849
+ // every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
850
+ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
841
851
  function _isCliEntry(): boolean {
852
+ if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) {
853
+ return false;
854
+ }
842
855
  if (process.argv[1] === undefined) {
843
856
  return false;
844
857
  }
@@ -29,6 +29,7 @@
29
29
 
30
30
  import * as crypto from 'node:crypto';
31
31
  import * as fs from 'node:fs';
32
+ import * as os from 'node:os';
32
33
  import * as path from 'node:path';
33
34
  import process from 'node:process';
34
35
  import { fileURLToPath, pathToFileURL } from 'node:url';
@@ -211,6 +212,49 @@ export interface SignalRecord {
211
212
  body: string;
212
213
  }
213
214
 
215
+ /**
216
+ * Provenance gate at the write edge — invariant 2 of ADR-130 (`subject`
217
+ * axis). A record whose `origin` resolves into the user-global store, or
218
+ * that carries `subject: user`, is REFUSED entry into the tracked project
219
+ * intake (plain path/field check, no model call). `subject: project` is
220
+ * the additive default. Thrown message names the partition rule.
221
+ */
222
+ export class ProvenanceRefusedError extends Error {}
223
+
224
+ // lint-store-boundary: ignore — the provenance gate must RECOGNISE the global root to refuse it
225
+ const _GLOBAL_STORE_MARKER = `.event4u${path.sep}agent-config`;
226
+
227
+ export function _origin_is_global(origin: string): boolean {
228
+ if (!origin.includes('/') && !origin.includes(path.sep) && !origin.startsWith('~')) {
229
+ return false; // symbolic origins ('agent', 'claude', 'cursor', …) are not paths
230
+ }
231
+ const expanded = origin.startsWith('~')
232
+ ? path.join(os.homedir(), origin.slice(1)) // lint-store-boundary: ignore — the gate itself must recognise the global root
233
+ : origin;
234
+ let resolved: string;
235
+ try {
236
+ resolved = path.resolve(expanded);
237
+ } catch {
238
+ return false;
239
+ }
240
+ return resolved.includes(_GLOBAL_STORE_MARKER) || /(^|[\\/])\.event4u([\\/]|$)/.test(origin);
241
+ }
242
+
243
+ export function _assert_project_writable(record: { origin: string; subject?: unknown }): void {
244
+ if (record.subject === 'user') {
245
+ throw new ProvenanceRefusedError(
246
+ 'provenance gate: subject: user records live global-only and may ' +
247
+ 'never be written into a tracked project artifact (ADR-130).',
248
+ );
249
+ }
250
+ if (_origin_is_global(record.origin)) {
251
+ throw new ProvenanceRefusedError(
252
+ `provenance gate: origin resolves into the user-global store ` +
253
+ `(${record.origin}) — refused entry into tracked project intake (ADR-130).`,
254
+ );
255
+ }
256
+ }
257
+
214
258
  /**
215
259
  * Append a signal entry. Returns the written record, or null when skipped.
216
260
  */
@@ -252,6 +296,10 @@ export function emit(
252
296
  }
253
297
  }
254
298
  }
299
+ if (!('subject' in record)) {
300
+ record.subject = 'project'; // additive default (ADR-130)
301
+ }
302
+ _assert_project_writable(record as { origin: string; subject?: unknown });
255
303
  fs.mkdirSync(INTAKE_ROOT, { recursive: true });
256
304
  const target = _monthly_file();
257
305
  fs.appendFileSync(target, `${_jsonDumpsUnicode(record)}\n`, 'utf-8');