@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
@@ -0,0 +1,74 @@
1
+ /**
2
+ * R-A7 growth-budget for Prisma schemas (F7) —
3
+ * road-to-scale-and-history-discipline Phase 5.
4
+ *
5
+ * An append-only-shaped model (name or `@@map` target matching the shared
6
+ * append-only vocabulary: *_logs, *_events, *_history, audits, jobs, queue,
7
+ * sessions, notifications, …) must declare a retention policy as a doc
8
+ * comment on the model (`/// retention: <policy>`) or carry a
9
+ * `/// no-retention: <reason>` waiver. Same semantics as the raw-SQL
10
+ * adapter's R-A7 check, applied to schema.prisma.
11
+ */
12
+ import * as fs from 'node:fs';
13
+ import * as path from 'node:path';
14
+
15
+ import type { Finding } from './types.js';
16
+ import { is_ignored_dir } from './types.js';
17
+ import { is_append_only_name } from './adapter_raw_sql.js';
18
+
19
+ const RETENTION_RE = /\/\/\/?\s*retention\s*:\s*\S/;
20
+ const NO_RETENTION_RE = /\/\/\/?\s*no-retention\s*:\s*(\S.*)$/m;
21
+
22
+ export function detect_prisma_growth(files: Array<{ path: string; content: string }>): Finding[] {
23
+ const findings: Finding[] = [];
24
+ for (const f of files) {
25
+ const lines = f.content.split('\n');
26
+ for (let i = 0; i < lines.length; i += 1) {
27
+ const m = lines[i]!.match(/^\s*model\s+(\w+)\s*\{/);
28
+ if (!m) continue;
29
+ // Model body: find the closing brace (prisma blocks are flat).
30
+ let end = i;
31
+ for (let j = i + 1; j < lines.length; j += 1) {
32
+ if (/^\s*\}/.test(lines[j]!)) {
33
+ end = j;
34
+ break;
35
+ }
36
+ }
37
+ const body = lines.slice(i, end + 1).join('\n');
38
+ const mapped = body.match(/@@map\(\s*["'](\w+)["']\s*\)/);
39
+ const table_name = mapped ? mapped[1]! : m[1]!;
40
+ if (!is_append_only_name(table_name)) continue;
41
+
42
+ // Retention/waiver: doc comments directly above the model or inside it.
43
+ const head = lines.slice(Math.max(0, i - 3), i).join('\n');
44
+ if (RETENTION_RE.test(head) || RETENTION_RE.test(body)) continue;
45
+ const waiver = (head + '\n' + body).match(NO_RETENTION_RE);
46
+ findings.push({
47
+ failure_class: 'F7',
48
+ rule: 'R-A7',
49
+ file: f.path,
50
+ line: i + 1,
51
+ message: `model ${m[1]} (table ${table_name}) looks append-only but declares no retention policy (add "/// retention: <policy>" or a no-retention waiver)`,
52
+ tier: 'gate',
53
+ ...(waiver ? { waived: true, waiver_reason: waiver[1]!.trim() } : {}),
54
+ });
55
+ }
56
+ }
57
+ return findings;
58
+ }
59
+
60
+ export function scan_dir(dir: string): Finding[] {
61
+ const files: Array<{ path: string; content: string }> = [];
62
+ const walk = (d: string): void => {
63
+ for (const e of fs.readdirSync(d, { withFileTypes: true })) {
64
+ const p = path.join(d, e.name);
65
+ if (e.isDirectory()) {
66
+ if (!is_ignored_dir(e.name)) walk(p);
67
+ } else if (e.name.endsWith('.prisma')) {
68
+ files.push({ path: p, content: fs.readFileSync(p, 'utf8') });
69
+ }
70
+ }
71
+ };
72
+ walk(dir);
73
+ return detect_prisma_growth(files);
74
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Offloadable-call catalog for R-A8 (thin-request-path, F9) and R-A10
3
+ * (durable-async, F11) — spike S0.5, road-to-scale-and-history-discipline.
4
+ *
5
+ * The catalog is CONFIG DATA, not detector logic: a positive list of
6
+ * expensive call classes per stack. A single indexed insert or a cache op is
7
+ * never in the catalog — over-application (queueing trivially cheap work) is
8
+ * the failure mode this shape prevents.
9
+ */
10
+
11
+ export interface CatalogEntry {
12
+ /** Regex source matched against a single (masked) code line. */
13
+ pattern: string;
14
+ /** Human label used in the finding message. */
15
+ label: string;
16
+ /**
17
+ * Whether losing this work silently is unacceptable (drives F11 for
18
+ * fire-and-forget shapes): promised emails, billing, webhooks out.
19
+ */
20
+ must_not_lose: boolean;
21
+ }
22
+
23
+ export interface StackCatalog {
24
+ /** Offloadable call classes — firing inside a request handler is F9. */
25
+ offloadable: CatalogEntry[];
26
+ /**
27
+ * Patterns that are the CORRECT offload shape — their presence on the
28
+ * same line neutralizes an offloadable match (e.g. Mail::queue).
29
+ */
30
+ allowed_alternatives: string[];
31
+ }
32
+
33
+ export const ELOQUENT_CATALOG: StackCatalog = {
34
+ offloadable: [
35
+ { pattern: String.raw`\bMail::send\s*\(`, label: 'synchronous mail send', must_not_lose: true },
36
+ { pattern: String.raw`\bMail::to\s*\([^)]*\)\s*->\s*send\s*\(`, label: 'synchronous mail send', must_not_lose: true },
37
+ { pattern: String.raw`\bHttp::`, label: 'outbound HTTP call', must_not_lose: false },
38
+ { pattern: String.raw`\b(PDF|Pdf)::loadView\s*\(`, label: 'PDF generation', must_not_lose: false },
39
+ { pattern: String.raw`\bExcel::store\s*\(`, label: 'spreadsheet export to storage', must_not_lose: false },
40
+ { pattern: String.raw`\bImage::make\s*\(`, label: 'image processing chain', must_not_lose: false },
41
+ { pattern: String.raw`\bBrowsershot::`, label: 'headless-browser rendering', must_not_lose: false },
42
+ { pattern: String.raw`new\s+\\?Stripe\\StripeClient\b|\bStripe\\\w+::`, label: 'payment SDK call', must_not_lose: true },
43
+ { pattern: String.raw`\bTwilio\\|\bnew\s+\\?Twilio\b`, label: 'SMS/voice SDK call', must_not_lose: true },
44
+ { pattern: String.raw`\bOpenAI::|\bAnthropic\\|\bAnthropic::`, label: 'ML/AI inference call', must_not_lose: false },
45
+ ],
46
+ allowed_alternatives: [
47
+ String.raw`\bMail::queue\s*\(`,
48
+ String.raw`->\s*queue\s*\(`,
49
+ ],
50
+ };
51
+
52
+ export const TS_CATALOG: StackCatalog = {
53
+ offloadable: [
54
+ { pattern: String.raw`\.sendMail\s*\(`, label: 'synchronous mail send', must_not_lose: true },
55
+ { pattern: String.raw`\b(fetch|axios(\.\w+)?)\s*\(\s*['"\`]https?://`, label: 'outbound HTTP call', must_not_lose: false },
56
+ { pattern: String.raw`\bpuppeteer\.launch\s*\(|\bchromium\.launch\s*\(`, label: 'headless-browser rendering', must_not_lose: false },
57
+ { pattern: String.raw`\bsharp\s*\([^)]*\)\s*\.`, label: 'image processing chain', must_not_lose: false },
58
+ { pattern: String.raw`\.chat\.completions\.create\s*\(|\banthropic\.messages\.create\s*\(`, label: 'ML/AI inference call', must_not_lose: false },
59
+ { pattern: String.raw`\bstripe\.\w+(\.\w+)*\.create\s*\(`, label: 'payment SDK call', must_not_lose: true },
60
+ { pattern: String.raw`\.updateMany\s*\(\s*\{\s*data\s*:`, label: 'unbounded bulk mutation', must_not_lose: false },
61
+ ],
62
+ allowed_alternatives: [
63
+ String.raw`\bqueue\.add\s*\(`,
64
+ String.raw`\.add\s*\(\s*['"\`]`,
65
+ ],
66
+ };
67
+
68
+ /**
69
+ * Job-class names whose loss is unacceptable — drives the
70
+ * dispatchAfterResponse / fire-and-forget F11 checks.
71
+ */
72
+ export const MUST_NOT_LOSE_NAME_RE =
73
+ /(Mail|Email|Invoice|Webhook|Payment|Billing|Notification|Receipt)/;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Shared types for the persistence-lint substrate (lint_persistence).
3
+ *
4
+ * Failure classes F1–F11 and rule ids R-A1…R-A11 / R-B1…R-B5 are defined in
5
+ * agents/roadmaps/archive/road-to-scale-and-history-discipline.md (roadmap) and,
6
+ * post-merge, in the scale-discipline / history-discipline pack rules.
7
+ *
8
+ * "Deterministic" throughout means: deterministic PATTERN detection with an
9
+ * auditable waiver process — the linter identifies the pattern class
10
+ * mechanically; instance-level correctness is contextual and handled by a
11
+ * reasoned waiver, never by the linter claiming judgment it does not have.
12
+ */
13
+
14
+ export type FailureClass =
15
+ | 'F1' // N+1 queries
16
+ | 'F2' // missing indexes
17
+ | 'F3' // unbounded selects
18
+ | 'F6' // unsafe migrations
19
+ | 'F7' // unbounded table growth
20
+ | 'F8' // missing audit history
21
+ | 'F9' // sync work in request path
22
+ | 'F11'; // non-durable async
23
+
24
+ export type FindingTier = 'gate' | 'advice';
25
+
26
+ export interface Finding {
27
+ failure_class: FailureClass;
28
+ rule: string; // e.g. "R-A6"
29
+ file: string; // repo-relative path
30
+ line: number; // 1-indexed
31
+ message: string;
32
+ tier: FindingTier;
33
+ /** Set when the offending line carries a recognized waiver. */
34
+ waived?: boolean;
35
+ /** The waiver reason text, when present. */
36
+ waiver_reason?: string;
37
+ }
38
+
39
+ export interface ScanResult {
40
+ findings: Finding[];
41
+ /** Files the adapter looked at (for coverage reporting). */
42
+ scanned_files: string[];
43
+ /** Waivers encountered, incl. empty-reason violations. */
44
+ waivers: WaiverRecord[];
45
+ }
46
+
47
+ export interface WaiverRecord {
48
+ file: string;
49
+ line: number;
50
+ kind: string; // 'no-index' | 'sync-required' | 'accepted-loss' | 'no-retention' | 'migration-unsafe'
51
+ reason: string; // empty string = hygiene violation
52
+ }
53
+
54
+ /**
55
+ * Waiver comment grammar (shared across adapters):
56
+ * PHP/TS: // <kind>: <reason> e.g. // no-index: read-heavy analytics column
57
+ * SQL: -- <kind>: <reason>
58
+ * Recognized kinds: no-index, sync-required, accepted-loss, no-retention,
59
+ * migration-unsafe.
60
+ */
61
+ export const WAIVER_KINDS = [
62
+ 'no-index',
63
+ 'sync-required',
64
+ 'accepted-loss',
65
+ 'no-retention',
66
+ 'migration-unsafe',
67
+ ] as const;
68
+
69
+ const WAIVER_RE = new RegExp(
70
+ String.raw`(?://|--|#)\s*(${WAIVER_KINDS.join('|')})\s*:\s*(.*)$`,
71
+ );
72
+
73
+ /** Parse a waiver on the given line (or the line directly above). */
74
+ export function parse_waiver(lines: string[], idx0: number): WaiverRecord | null {
75
+ for (const i of [idx0, idx0 - 1]) {
76
+ if (i < 0 || i >= lines.length) continue;
77
+ const m = lines[i]!.match(WAIVER_RE);
78
+ if (m) {
79
+ return { file: '', line: i + 1, kind: m[1]!, reason: (m[2] ?? '').trim() };
80
+ }
81
+ }
82
+ return null;
83
+ }
84
+
85
+ /** Directory names every persistence walker skips (dependency/build trees). */
86
+ export const IGNORED_DIRS: ReadonlySet<string> = new Set([
87
+ 'vendor',
88
+ 'node_modules',
89
+ 'storage',
90
+ '.git',
91
+ 'bootstrap',
92
+ 'dist',
93
+ 'build',
94
+ '.next',
95
+ 'coverage',
96
+ // Test trees are not production read paths — R-A1/A2/A3/A8 target
97
+ // production code; test-suite queries run against small fixtures. The
98
+ // scan ROOT itself is never name-checked, so pointing the linter AT a
99
+ // fixture tree still works.
100
+ 'tests',
101
+ 'Tests',
102
+ 'test',
103
+ '__tests__',
104
+ 'spec',
105
+ ]);
106
+
107
+ export function is_ignored_dir(name: string): boolean {
108
+ return IGNORED_DIRS.has(name) || name.startsWith('.');
109
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * rtk allowlist for worker tool loops (road-to-lean-agent-init Phase 4).
3
+ *
4
+ * Wraps ONLY the command class with a MEASURED ~55% output saving —
5
+ * `internal/bench/rtk-savings/RESULTS.md` is the single source of the
6
+ * numbers (referenced, never duplicated here). The ~0%-savings class stays
7
+ * unwrapped: wrap overhead without return. Congruence with RESULTS.md is
8
+ * enforced by `tests/scripts/_lib_rtk_allowlist.test.ts`, which parses the
9
+ * results table and asserts every allowlisted pattern measured ≥ the
10
+ * threshold and every excluded pattern measured below it.
11
+ */
12
+
13
+ /** A worker wraps a command with rtk only when its saving measured ≥ this. */
14
+ export const RTK_WRAP_THRESHOLD_PCT = 50;
15
+
16
+ /**
17
+ * Command patterns in the measured high-savings class. Matched against the
18
+ * command a worker is about to run; first match wins.
19
+ */
20
+ export const RTK_WRAP_ALLOWLIST: ReadonlyArray<{ pattern: RegExp; benchCommand: string }> = [
21
+ { pattern: /^git status\b/, benchCommand: 'git status' },
22
+ // Full-format git log (NOT --oneline — that class measured ~0%).
23
+ { pattern: /^git log(?!.*--oneline)\b/, benchCommand: 'git log -10' },
24
+ { pattern: /^ls -la?\b/, benchCommand: 'ls -la src/scripts' },
25
+ ];
26
+
27
+ /**
28
+ * Measured-near-zero class — never wrapped (documented so nobody "helpfully"
29
+ * adds them back without a new measurement).
30
+ */
31
+ export const RTK_NO_WRAP: ReadonlyArray<{ pattern: RegExp; benchCommand: string }> = [
32
+ { pattern: /^git log .*--oneline\b/, benchCommand: 'git log --oneline -50' },
33
+ { pattern: /^git diff .*--stat\b/, benchCommand: 'git diff --stat HEAD~5..HEAD' },
34
+ { pattern: /^git branch\b/, benchCommand: 'git branch -a' },
35
+ { pattern: /^npm ls\b/, benchCommand: 'npm ls --depth=0' },
36
+ { pattern: /^git show .*--stat\b/, benchCommand: 'git show --stat HEAD' },
37
+ ];
38
+
39
+ /** Should a worker wrap this command with rtk? Deterministic, measured-class only. */
40
+ export function shouldWrapWithRtk(command: string): boolean {
41
+ const cmd = command.trim();
42
+ if (RTK_NO_WRAP.some((e) => e.pattern.test(cmd))) return false;
43
+ return RTK_WRAP_ALLOWLIST.some((e) => e.pattern.test(cmd));
44
+ }
@@ -33,6 +33,11 @@ const EXPECTED_KIND: Readonly<Record<string, string>> = {
33
33
  jwt: 'jwt',
34
34
  dburl: 'db-connection-uri',
35
35
  assignment: 'generic-assignment',
36
+ // adversarial-corpus additions (road-to-feedback-9.8.0-followups Phase 3)
37
+ 'github-fine-grained': 'github-pat',
38
+ 'env-db-password': 'generic-assignment',
39
+ 'env-api-key': 'generic-assignment',
40
+ 'dburl-mysql': 'db-connection-uri',
36
41
  };
37
42
 
38
43
  function isReal(f: SecretFinding): boolean {
@@ -66,6 +66,9 @@ const RULES: readonly Rule[] = [
66
66
  { rule: 'aws-access-key', kind: 'aws-access-key', regex: /AKIA[0-9A-Z]{16}/g },
67
67
  { rule: 'google-api-key', kind: 'google-api-key', regex: /AIza[0-9A-Za-z_-]{35}/g },
68
68
  { rule: 'github-pat', kind: 'github-pat', regex: /ghp_[0-9A-Za-z]{36}/g },
69
+ // Fine-grained PATs (github_pat_…) were a measured detector gap: the
70
+ // 2026-07-28 adversarial corpus pass flagged them as missed positives.
71
+ { rule: 'github-fine-grained-pat', kind: 'github-pat', regex: /github_pat_[0-9A-Za-z_]{22,}/g },
69
72
  {
70
73
  rule: 'jwt',
71
74
  kind: 'jwt',
@@ -282,6 +285,12 @@ export function scanText(text: string, opts: ScanOptions = {}): SecretFinding[]
282
285
  if (UUID.test(token)) {
283
286
  continue; // benign identifier
284
287
  }
288
+ if (/^sha(?:256|384|512)-/.test(token)) {
289
+ // SRI / npm-lockfile integrity digest (`sha512-<base64>`) —
290
+ // a hash, not a credential. Measured FP class on the
291
+ // 2026-07-28 adversarial corpus pass.
292
+ continue;
293
+ }
285
294
  const entropy = shannonEntropy(token);
286
295
  const isHex = IS_HEX.test(token);
287
296
  if (isHex && HASH_HEX_LENGTHS.has(token.length)) {
@@ -0,0 +1,116 @@
1
+ // Adversarial precision/recall measurement for the secret detector
2
+ // (road-to-feedback-9.8.0-followups Phase 3). Runs the REAL scanText over
3
+ // the committed fixture corpus plus runtime-constructed multiline cases
4
+ // (assembled from parts so nothing key-shaped beyond the existing corpus
5
+ // convention lands in the tree), computes precision / recall / FP-rate, and
6
+ // publishes the rates to internal/reports/secret-scanner-adversarial.json.
7
+ //
8
+ // Hard floor: recall = 100% on positives, FP-rate = 0% on negative controls.
9
+ // A genuine detector miss must NOT be papered over by weakening a fixture —
10
+ // it gets a known_gap entry excluded from the hard assertion and REPORTED.
11
+ import * as fs from 'node:fs';
12
+ import * as path from 'node:path';
13
+ import { fileURLToPath } from 'node:url';
14
+ import { describe, expect, it } from 'vitest';
15
+
16
+ import { scanText, type SecretFinding } from './secret_detector.js';
17
+
18
+ const HERE = path.dirname(fileURLToPath(import.meta.url));
19
+ const FIXTURES = path.join(HERE, 'fixtures', 'secret-detector');
20
+ const REPO = path.resolve(HERE, '..', '..', '..');
21
+ const REPORT = path.join(REPO, 'internal', 'reports', 'secret-scanner-adversarial.json');
22
+
23
+ /** Measured, documented gaps — excluded from the hard floor, published. */
24
+ const KNOWN_GAPS: string[] = [];
25
+
26
+ const isReal = (f: SecretFinding): boolean => f.confidence === 'high' || f.confidence === 'medium';
27
+
28
+ interface Case { id: string; text: string; expect_hit: boolean }
29
+
30
+ function corpusCases(): Case[] {
31
+ const cases: Case[] = [];
32
+ for (const [file, expectHit] of [['positives.txt', true], ['negatives.txt', false]] as const) {
33
+ const lines = fs.readFileSync(path.join(FIXTURES, file), 'utf-8').split('\n');
34
+ lines.forEach((line, i) => {
35
+ if (line.trim().length === 0 || line.startsWith('#')) return;
36
+ const value = expectHit ? (line.split('|')[1] ?? line) : line;
37
+ cases.push({ id: `${file}:${i + 1}`, text: value, expect_hit: expectHit });
38
+ });
39
+ }
40
+ return cases;
41
+ }
42
+
43
+ /** Multiline / wrapped positives assembled at runtime. */
44
+ function constructedCases(): Case[] {
45
+ // A fake PEM body: base64-ish filler between real BEGIN/END framing.
46
+ const pem = [
47
+ ['-----BEGIN', 'RSA PRIVATE KEY-----'].join(' '),
48
+ 'MIIEpAIBAAKCAQEA7fakebodyfakebodyfakebodyfakebodyfakebody12345678',
49
+ 'q7fakebodyfakebodyfakebodyfakebodyfakebodyfakebodyfakebody901234',
50
+ ['-----END', 'RSA PRIVATE KEY-----'].join(' '),
51
+ ].join('\n');
52
+ // A base64-WRAPPED credential next to a keyword: the wrapped payload is a
53
+ // fake AWS key; the wrapper alone must still trip entropy+keyword.
54
+ const wrapped = `api_key = "${Buffer.from('AKIA' + '1234567890ABCDEF').toString('base64')}"`;
55
+ // .env multiline block (several assignments in one scan call).
56
+ const envBlock = ['APP_ENV=production', 'DB_PASSWORD=q7Xp2Vr9kLm4Nt8wYz3BdF6h', 'MAIL_FROM=noreply@example.com'].join('\n');
57
+ return [
58
+ { id: 'constructed:pem-multiline', text: pem, expect_hit: true },
59
+ { id: 'constructed:base64-wrapped-key', text: wrapped, expect_hit: true },
60
+ { id: 'constructed:env-block', text: envBlock, expect_hit: true },
61
+ // Negative: random base64 with NO credential keyword nearby.
62
+ { id: 'constructed:naked-base64-no-keyword-short', text: 'blob dGhpcyBpcyBmaWxsZXI=', expect_hit: false },
63
+ ];
64
+ }
65
+
66
+ describe('secret detector — adversarial corpus measurement', () => {
67
+ const cases = [...corpusCases(), ...constructedCases()];
68
+ const rows = cases.map((c) => {
69
+ const real = scanText(c.text).filter(isReal);
70
+ return { ...c, hit: real.length > 0, kinds: [...new Set(real.map((f) => f.kind))] };
71
+ });
72
+
73
+ const positives = rows.filter((r) => r.expect_hit);
74
+ const negatives = rows.filter((r) => !r.expect_hit);
75
+ const detected = positives.filter((r) => r.hit);
76
+ const missed = positives.filter((r) => !r.hit).map((r) => r.id);
77
+ const falsePositives = negatives.filter((r) => r.hit).map((r) => r.id);
78
+ const recall = positives.length > 0 ? detected.length / positives.length : 1;
79
+ const fpRate = negatives.length > 0 ? falsePositives.length / negatives.length : 0;
80
+ const precision =
81
+ detected.length + falsePositives.length > 0
82
+ ? detected.length / (detected.length + falsePositives.length)
83
+ : 1;
84
+
85
+ it('publishes the measured rates', () => {
86
+ const report = {
87
+ _doc:
88
+ 'Adversarial fixture measurement of the secret detector (scanText). ' +
89
+ 'Regenerated by src/scripts/_lib/secret_detector_adversarial.test.ts on every run; ' +
90
+ 'hard floor asserted there (recall 100% / FP 0% outside known_gaps).',
91
+ generated: new Date().toISOString().slice(0, 10),
92
+ corpus_size: rows.length,
93
+ positives: positives.length,
94
+ negatives: negatives.length,
95
+ detected: detected.length,
96
+ missed,
97
+ false_positives: falsePositives,
98
+ known_gaps: KNOWN_GAPS,
99
+ precision: +precision.toFixed(3),
100
+ recall: +recall.toFixed(3),
101
+ fp_rate: +fpRate.toFixed(3),
102
+ };
103
+ fs.mkdirSync(path.dirname(REPORT), { recursive: true });
104
+ fs.writeFileSync(REPORT, `${JSON.stringify(report, null, 2)}\n`);
105
+ expect(fs.existsSync(REPORT)).toBe(true);
106
+ });
107
+
108
+ it('recall floor: every positive outside known_gaps is detected', () => {
109
+ const hardMisses = missed.filter((id) => !KNOWN_GAPS.includes(id));
110
+ expect(hardMisses, `detector missed: ${hardMisses.join(', ')}`).toHaveLength(0);
111
+ });
112
+
113
+ it('FP floor: no negative control fires high/medium', () => {
114
+ expect(falsePositives, `false positives: ${falsePositives.join(', ')}`).toHaveLength(0);
115
+ });
116
+ });
@@ -54,6 +54,13 @@ const DENY_EXACT: ReadonlySet<string> = new Set([
54
54
  // attacker-controlled object stores; the GIT_CONFIG* family is handled by
55
55
  // prefix below (it is a general arbitrary-config-injection primitive).
56
56
  'GIT_ALTERNATE_OBJECT_DIRECTORIES',
57
+ // git path-redirection: GIT_DIR / GIT_INDEX_FILE / GIT_NAMESPACE point a
58
+ // child's git at an attacker-controlled repo, index file, or ref namespace
59
+ // — ordinary git ops then read and write attacker state (low severity,
60
+ // same family as GIT_ALTERNATE_OBJECT_DIRECTORIES above).
61
+ 'GIT_DIR',
62
+ 'GIT_INDEX_FILE',
63
+ 'GIT_NAMESPACE',
57
64
  // resolver hijack: HOSTALIASES remaps hostnames via an attacker file,
58
65
  // redirecting any network fetch the child performs (CWE-427-adjacent).
59
66
  'HOSTALIASES',
@@ -0,0 +1,191 @@
1
+ // Shared `node:sqlite` guard — lazy import, availability probe, FTS5 probe,
2
+ // and `PRAGMA user_version` helpers (road-to-reachable-code-memory Phase 6/7).
3
+ //
4
+ // Extracted from the two telemetry twins (mcp_telemetry_store.ts /
5
+ // mcp_telemetry_query.ts) so every derived SQLite store (telemetry, the
6
+ // memory FTS index, the graph store) shares one guard instead of three
7
+ // copies of the same lazy-import + warning-silencer dance.
8
+ //
9
+ // `node:sqlite` ships from Node 22.5 (experimental on 22.x, stable/silent on
10
+ // >= 23); the package's supported floor is `>=20.11` (package.json
11
+ // `engines`), so every caller MUST treat this module's failure modes as
12
+ // expected, not exceptional — lazy import + graceful fallback, never a hard
13
+ // dependency (ADR-129).
14
+ import { createRequire } from 'node:module';
15
+ import type { DatabaseSync } from 'node:sqlite';
16
+ import type * as NodeSqlite from 'node:sqlite';
17
+
18
+ /** Thrown by {@link loadSqlite} when `node:sqlite` cannot be imported here. */
19
+ export class SqliteUnavailableError extends Error {
20
+ constructor(callerName: string, cause: string) {
21
+ super(
22
+ `node:sqlite is unavailable in this runtime (${cause}). ` +
23
+ `${callerName} requires Node with the built-in SQLite module.`,
24
+ );
25
+ this.name = 'SqliteUnavailableError';
26
+ }
27
+ }
28
+
29
+ // Node 22 flags `node:sqlite` experimental and prints an `ExperimentalWarning:
30
+ // SQLite …` line to stderr on first import (stable / silent on Node >= 23).
31
+ // Drop only that specific warning so stderr stays byte-stable across Node
32
+ // versions (CLI intent tests pin exact stderr bytes). Installed once,
33
+ // narrowly matched — every other `emitWarning` call passes through unchanged.
34
+ let _sqliteWarningSilenced = false;
35
+ function _silenceSqliteExperimentalWarning(): void {
36
+ if (_sqliteWarningSilenced) return;
37
+ _sqliteWarningSilenced = true;
38
+ const orig = process.emitWarning.bind(process);
39
+ process.emitWarning = ((warning: string | Error, ...rest: unknown[]): void => {
40
+ const text = typeof warning === 'string' ? warning : (warning?.message ?? '');
41
+ if (/SQLite is an experimental/i.test(text)) return;
42
+ (orig as (w: string | Error, ...a: unknown[]) => void)(warning, ...rest);
43
+ }) as typeof process.emitWarning;
44
+ }
45
+
46
+ /**
47
+ * Lazy `node:sqlite` import — keeps the caller module loadable on a runtime
48
+ * without it. `callerName` (e.g. `"mcp_telemetry_store"`) is folded into the
49
+ * thrown message so each caller's error text stays distinguishable.
50
+ *
51
+ * Throws {@link SqliteUnavailableError} on failure; callers that want a
52
+ * non-throwing check should use {@link isSqliteAvailable} first.
53
+ */
54
+ export async function loadSqlite(callerName: string): Promise<typeof NodeSqlite> {
55
+ _silenceSqliteExperimentalWarning();
56
+ try {
57
+ return await import('node:sqlite');
58
+ } catch (exc) {
59
+ const message = exc instanceof Error ? exc.message : String(exc);
60
+ throw new SqliteUnavailableError(callerName, message);
61
+ }
62
+ }
63
+
64
+ /** Non-throwing availability probe — true iff `node:sqlite` imports cleanly. */
65
+ export async function isSqliteAvailable(): Promise<boolean> {
66
+ _silenceSqliteExperimentalWarning();
67
+ try {
68
+ await import('node:sqlite');
69
+ return true;
70
+ } catch {
71
+ return false;
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Whether this runtime's `node:sqlite` supports FTS5 — probed via an
77
+ * in-memory `CREATE VIRTUAL TABLE ... USING fts5` + `MATCH` round-trip
78
+ * (ADR-129: re-verified live on v25.9.0). Some minimal SQLite builds omit
79
+ * the FTS5 extension even when `node:sqlite` itself loads, so this is a
80
+ * separate probe from {@link isSqliteAvailable}.
81
+ */
82
+ export async function probeFts5(): Promise<boolean> {
83
+ let sqlite: typeof NodeSqlite;
84
+ try {
85
+ sqlite = await loadSqlite('sqlite_guard.probeFts5');
86
+ } catch {
87
+ return false;
88
+ }
89
+ let conn: DatabaseSync | null = null;
90
+ try {
91
+ conn = new sqlite.DatabaseSync(':memory:');
92
+ conn.exec("CREATE VIRTUAL TABLE _fts5_probe USING fts5(body)");
93
+ conn.exec("INSERT INTO _fts5_probe(body) VALUES ('probe')");
94
+ const row = conn.prepare("SELECT body FROM _fts5_probe WHERE _fts5_probe MATCH 'probe'").get();
95
+ return row !== undefined;
96
+ } catch {
97
+ return false;
98
+ } finally {
99
+ try {
100
+ conn?.close();
101
+ } catch {
102
+ /* best-effort */
103
+ }
104
+ }
105
+ }
106
+
107
+ // --- Synchronous variants ---------------------------------------------------
108
+ //
109
+ // `node:sqlite`'s `DatabaseSync` API is itself fully synchronous; the async
110
+ // variants above exist only because the two telemetry twins happen to be
111
+ // async CLIs. A caller that must stay synchronous end-to-end (memory_lookup.ts
112
+ // — `retrieve()` is called synchronously all over the codebase and by tests)
113
+ // uses `createRequire` for a sync `require('node:sqlite')` instead of the
114
+ // dynamic `import()`, mirroring the file's own existing `_lazy_tokenizer()`
115
+ // sync-require pattern for `./_lib/token_count.js`.
116
+ let _require: NodeJS.Require | undefined;
117
+ function _syncRequire(): NodeJS.Require {
118
+ if (_require === undefined) {
119
+ _require = createRequire(import.meta.url);
120
+ }
121
+ return _require;
122
+ }
123
+
124
+ /** Synchronous `node:sqlite` require — see "Synchronous variants" above. */
125
+ export function loadSqliteSync(callerName: string): typeof NodeSqlite {
126
+ _silenceSqliteExperimentalWarning();
127
+ try {
128
+ return _syncRequire()('node:sqlite') as typeof NodeSqlite;
129
+ } catch (exc) {
130
+ const message = exc instanceof Error ? exc.message : String(exc);
131
+ throw new SqliteUnavailableError(callerName, message);
132
+ }
133
+ }
134
+
135
+ /** Non-throwing sync availability probe — true iff `node:sqlite` requires cleanly. */
136
+ export function isSqliteAvailableSync(): boolean {
137
+ _silenceSqliteExperimentalWarning();
138
+ try {
139
+ _syncRequire()('node:sqlite');
140
+ return true;
141
+ } catch {
142
+ return false;
143
+ }
144
+ }
145
+
146
+ /** Sync twin of {@link probeFts5} — see "Synchronous variants" above. */
147
+ export function probeFts5Sync(): boolean {
148
+ let sqlite: typeof NodeSqlite;
149
+ try {
150
+ sqlite = loadSqliteSync('sqlite_guard.probeFts5Sync');
151
+ } catch {
152
+ return false;
153
+ }
154
+ let conn: DatabaseSync | null = null;
155
+ try {
156
+ conn = new sqlite.DatabaseSync(':memory:');
157
+ conn.exec("CREATE VIRTUAL TABLE _fts5_probe USING fts5(body)");
158
+ conn.exec("INSERT INTO _fts5_probe(body) VALUES ('probe')");
159
+ const row = conn.prepare("SELECT body FROM _fts5_probe WHERE _fts5_probe MATCH 'probe'").get();
160
+ return row !== undefined;
161
+ } catch {
162
+ return false;
163
+ } finally {
164
+ try {
165
+ conn?.close();
166
+ } catch {
167
+ /* best-effort */
168
+ }
169
+ }
170
+ }
171
+
172
+ /** Read `PRAGMA user_version` — 0 on a freshly created (never-stamped) DB. */
173
+ export function readUserVersion(conn: DatabaseSync): number {
174
+ const row = conn.prepare('PRAGMA user_version').get();
175
+ const v = row?.['user_version'];
176
+ if (typeof v === 'bigint') return Number(v);
177
+ if (typeof v === 'number') return v;
178
+ return 0;
179
+ }
180
+
181
+ /**
182
+ * Stamp `PRAGMA user_version`. SQLite's `PRAGMA` statements take no bind
183
+ * parameters, so `version` is range-checked (small non-negative 32-bit
184
+ * integer) before string interpolation.
185
+ */
186
+ export function stampUserVersion(conn: DatabaseSync, version: number): void {
187
+ if (!Number.isInteger(version) || version < 0 || version > 2 ** 31 - 1) {
188
+ throw new RangeError(`stampUserVersion: version out of range: ${version}`);
189
+ }
190
+ conn.exec(`PRAGMA user_version = ${version}`);
191
+ }