@event4u/agent-config 9.7.0 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (901) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +314 -190
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +57 -11
  6. package/dist/agent-src/commands/agents/audit.md +1 -1
  7. package/dist/agent-src/commands/agents/optimize.md +2 -2
  8. package/dist/agent-src/commands/agents/user.md +1 -1
  9. package/dist/agent-src/commands/agents.md +1 -1
  10. package/dist/agent-src/commands/check-current-md.md +3 -3
  11. package/dist/agent-src/commands/commit/in-chunks.md +8 -0
  12. package/dist/agent-src/commands/commit.md +17 -0
  13. package/dist/agent-src/commands/fix/portability.md +2 -2
  14. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  15. package/dist/agent-src/commands/fix/refs.md +2 -2
  16. package/dist/agent-src/commands/fix/route.md +4 -3
  17. package/dist/agent-src/commands/fix.md +9 -6
  18. package/dist/agent-src/commands/ghostwriter.md +1 -1
  19. package/dist/agent-src/commands/image.md +1 -1
  20. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  21. package/dist/agent-src/commands/optimize/skills.md +2 -2
  22. package/dist/agent-src/commands/post-as.md +1 -1
  23. package/dist/agent-src/commands/pr/create.md +4 -0
  24. package/dist/agent-src/commands/research.md +1 -1
  25. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  26. package/dist/agent-src/commands/security-audit-config.md +1 -1
  27. package/dist/agent-src/commands/team/delegate.md +4 -0
  28. package/dist/agent-src/commands/video.md +1 -1
  29. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  30. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  31. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  32. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  33. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  34. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  35. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  36. package/dist/agent-src/contexts/override-system.md +75 -5
  37. package/dist/agent-src/rules/code-provenance.md +112 -0
  38. package/dist/agent-src/rules/context-hygiene.md +2 -0
  39. package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
  40. package/dist/agent-src/rules/domain-safety-pii.md +1 -0
  41. package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
  42. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
  43. package/dist/agent-src/rules/git-history-discipline.md +2 -0
  44. package/dist/agent-src/rules/history-discipline.md +80 -0
  45. package/dist/agent-src/rules/language-and-tone.md +2 -0
  46. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
  47. package/dist/agent-src/rules/media-governance-routing.md +2 -0
  48. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  49. package/dist/agent-src/rules/no-roadmap-references.md +4 -1
  50. package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
  51. package/dist/agent-src/rules/onboarding-gate.md +2 -0
  52. package/dist/agent-src/rules/output-discipline.md +2 -0
  53. package/dist/agent-src/rules/persona-governance.md +2 -0
  54. package/dist/agent-src/rules/php-coding.md +1 -0
  55. package/dist/agent-src/rules/preservation-guard.md +3 -0
  56. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  57. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  58. package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
  59. package/dist/agent-src/rules/scale-discipline.md +92 -0
  60. package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
  61. package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
  62. package/dist/agent-src/rules/session-canary.md +77 -0
  63. package/dist/agent-src/rules/skill-quality.md +2 -0
  64. package/dist/agent-src/rules/source-confidentiality.md +2 -0
  65. package/dist/agent-src/rules/source-of-truth.md +2 -0
  66. package/dist/agent-src/rules/telegraph-speak.md +2 -0
  67. package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
  68. package/dist/agent-src/rules/tool-safety.md +4 -1
  69. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  70. package/dist/agent-src/rules/verify-before-complete.md +2 -0
  71. package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
  72. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  73. package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
  74. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  75. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  76. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  77. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  78. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  79. package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
  80. package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
  81. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  82. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  83. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  84. package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
  85. package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
  86. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  87. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  88. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  89. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  90. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  91. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  92. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  93. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  94. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  95. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  96. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  97. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  98. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  99. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  100. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  101. package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
  102. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  103. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  104. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  105. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  106. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  107. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  108. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  109. package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
  110. package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
  111. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  112. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  113. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  114. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  115. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  116. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  117. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  118. package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
  119. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
  120. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
  121. package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
  122. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
  123. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
  124. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
  125. package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
  126. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  127. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  128. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  129. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
  130. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  131. package/dist/agent-src/templates/AGENTS.md +1 -1
  132. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  133. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  134. package/dist/agent-src/templates/command.md +3 -3
  135. package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
  136. package/dist/agent-src/templates/persona.md +2 -2
  137. package/dist/agent-src/templates/rule.md +2 -2
  138. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  139. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  140. package/dist/cli/commands/doctorShell.js +20 -0
  141. package/dist/cli/commands/doctorShell.js.map +1 -1
  142. package/dist/cli/commands/rtkDetect.js +58 -0
  143. package/dist/cli/commands/rtkDetect.js.map +1 -0
  144. package/dist/cli/configRoot.js +112 -0
  145. package/dist/cli/configRoot.js.map +1 -0
  146. package/dist/cli/configRoot.test.js +97 -0
  147. package/dist/cli/configRoot.test.js.map +1 -0
  148. package/dist/cli/firstRunNotice.js +70 -0
  149. package/dist/cli/firstRunNotice.js.map +1 -0
  150. package/dist/cli/help.js +4 -1
  151. package/dist/cli/help.js.map +1 -1
  152. package/dist/cli/main.js +54 -5
  153. package/dist/cli/main.js.map +1 -1
  154. package/dist/cli/registry.js +8 -1
  155. package/dist/cli/registry.js.map +1 -1
  156. package/dist/discovery/deprecation-report.md +1 -1
  157. package/dist/discovery/discovery-manifest.json +502 -101
  158. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  159. package/dist/discovery/discovery-manifest.summary.md +6 -4
  160. package/dist/discovery/orphan-report.md +1 -1
  161. package/dist/discovery/packs.json +95 -8
  162. package/dist/discovery/trust-report.md +11 -11
  163. package/dist/discovery/workspaces.json +36 -7
  164. package/dist/hooks/dispatch.js +19475 -0
  165. package/dist/install/agentSwitchDetection.js +75 -0
  166. package/dist/install/agentSwitchDetection.js.map +1 -0
  167. package/dist/install/agentSwitchProfile.js +117 -0
  168. package/dist/install/agentSwitchProfile.js.map +1 -0
  169. package/dist/install/atomic.js +1 -1
  170. package/dist/install/detect.js +1 -1
  171. package/dist/install/install.mjs +791 -486
  172. package/dist/install/rtkDetection.js +213 -0
  173. package/dist/install/rtkDetection.js.map +1 -0
  174. package/dist/install/rule_scope.js +2 -1
  175. package/dist/install/rule_scope.js.map +1 -1
  176. package/dist/install/types.js +2 -2
  177. package/dist/install/wizard-plan.js +1 -1
  178. package/dist/install/wizardDismissals.js +58 -0
  179. package/dist/install/wizardDismissals.js.map +1 -0
  180. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  181. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  182. package/dist/mcp/registry-manifest.json +15 -4
  183. package/dist/mcp/server.json +20 -0
  184. package/dist/mcp/server.mjs +44292 -0
  185. package/dist/router.json +1 -1
  186. package/dist/scripts/condense.js +14 -7
  187. package/dist/scripts/condense.js.map +1 -1
  188. package/dist/server/app.js +12 -0
  189. package/dist/server/app.js.map +1 -1
  190. package/dist/server/io/sharedWriteCheck.js +101 -0
  191. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  192. package/dist/server/routes/ping.js +32 -0
  193. package/dist/server/routes/ping.js.map +1 -1
  194. package/dist/server/routes/settings.js +21 -4
  195. package/dist/server/routes/settings.js.map +1 -1
  196. package/dist/server/routes/userMd.js +21 -4
  197. package/dist/server/routes/userMd.js.map +1 -1
  198. package/dist/server/routes/wizard.js +68 -25
  199. package/dist/server/routes/wizard.js.map +1 -1
  200. package/dist/server/schemas/settings.js +12 -2
  201. package/dist/server/schemas/settings.js.map +1 -1
  202. package/dist/server/serverInfo.js +6 -2
  203. package/dist/server/serverInfo.js.map +1 -1
  204. package/dist/server/token.js +11 -4
  205. package/dist/server/token.js.map +1 -1
  206. package/dist/server/writeRoot.js +15 -1
  207. package/dist/server/writeRoot.js.map +1 -1
  208. package/dist/shared/capabilities.js +33 -0
  209. package/dist/shared/capabilities.js.map +1 -0
  210. package/dist/shared/capabilities.test.js +39 -0
  211. package/dist/shared/capabilities.test.js.map +1 -0
  212. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  213. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  214. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  215. package/dist/ui/index.html +15 -6
  216. package/docs/MIGRATION.md +16 -0
  217. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  218. package/package.json +22 -9
  219. package/src/agent-src/templates/AGENTS.md +1 -1
  220. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  221. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  222. package/src/config/agent-settings.template.yml +94 -13
  223. package/src/config/discovery/packs.yml +22 -0
  224. package/src/config/discovery/workspaces.yml +1 -1
  225. package/src/config/evaluator-budgets.json +47 -0
  226. package/src/config/hook-latency-budget.json +20 -0
  227. package/src/config/reach-channels.yml +217 -0
  228. package/src/config/reach-prescriptions-intake.yml +200 -0
  229. package/src/install/agentSwitchDetection.ts +90 -0
  230. package/src/install/agentSwitchProfile.ts +131 -0
  231. package/src/install/atomic.ts +1 -1
  232. package/src/install/detect.ts +1 -1
  233. package/src/install/rtkDetection.ts +274 -0
  234. package/src/install/rule_scope.ts +9 -2
  235. package/src/install/types.ts +2 -2
  236. package/src/install/wizard-plan.ts +1 -1
  237. package/src/install/wizardDismissals.ts +60 -0
  238. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  239. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  240. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  241. package/src/scripts/_dispatch.bash +96 -0
  242. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  243. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  244. package/src/scripts/_lib/detect_target_license.ts +714 -0
  245. package/src/scripts/_lib/exec_evidence.ts +251 -0
  246. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
  247. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
  248. package/src/scripts/_lib/install_drift.ts +194 -0
  249. package/src/scripts/_lib/kernel_rules.ts +46 -0
  250. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  251. package/src/scripts/_lib/orchestration_record.ts +91 -2
  252. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  253. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  254. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  255. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  256. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  257. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  258. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  259. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  260. package/src/scripts/_lib/persistence/types.ts +109 -0
  261. package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
  262. package/src/scripts/_lib/risk_paths.ts +160 -0
  263. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  264. package/src/scripts/_lib/secret_detector.test.ts +108 -0
  265. package/src/scripts/_lib/secret_detector.ts +328 -0
  266. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  267. package/src/scripts/_lib/spawn_env.ts +7 -0
  268. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  269. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  270. package/src/scripts/_lib/tool_probe.ts +359 -0
  271. package/src/scripts/_lib/worker_budget.ts +107 -0
  272. package/src/scripts/adr/regenerate_index.ts +81 -6
  273. package/src/scripts/ai_council/blind_review.ts +0 -0
  274. package/src/scripts/ai_council/config.ts +12 -6
  275. package/src/scripts/ai_council/orchestrator.ts +73 -3
  276. package/src/scripts/ai_team/review_gate.ts +8 -10
  277. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  278. package/src/scripts/audit_adr_coverage.ts +33 -0
  279. package/src/scripts/audit_initial_context.ts +1 -1
  280. package/src/scripts/bench_cross_source_eval.ts +400 -0
  281. package/src/scripts/bench_honesty_score.ts +1093 -0
  282. package/src/scripts/bench_hook_latency.ts +218 -0
  283. package/src/scripts/build_mcp_catalog.ts +275 -0
  284. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  285. package/src/scripts/build_proof.ts +207 -0
  286. package/src/scripts/chat_history.ts +8 -5
  287. package/src/scripts/check_adr_frontmatter.ts +195 -0
  288. package/src/scripts/check_artefact_count_messaging.ts +4 -0
  289. package/src/scripts/check_backstop_debt.ts +210 -0
  290. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  291. package/src/scripts/check_claims.ts +188 -8
  292. package/src/scripts/check_comparison.ts +12 -0
  293. package/src/scripts/check_enforcement_coverage.ts +592 -0
  294. package/src/scripts/check_evaluator_budgets.ts +99 -0
  295. package/src/scripts/check_kernel_rule_bundle.ts +16 -12
  296. package/src/scripts/check_knowledge_sharing.ts +12 -1
  297. package/src/scripts/check_no_external_sources.ts +2 -2
  298. package/src/scripts/check_reach_channels.ts +407 -0
  299. package/src/scripts/check_reach_staleness.ts +364 -0
  300. package/src/scripts/check_secret_leak.test.ts +47 -0
  301. package/src/scripts/check_secret_leak.ts +290 -0
  302. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  303. package/src/scripts/code_graph/build.ts +0 -0
  304. package/src/scripts/code_graph/cli.ts +379 -0
  305. package/src/scripts/code_graph/detect.ts +186 -0
  306. package/src/scripts/code_graph/extract.ts +386 -0
  307. package/src/scripts/code_graph/intent.ts +45 -0
  308. package/src/scripts/code_graph/loader.ts +123 -0
  309. package/src/scripts/code_graph/query.ts +290 -0
  310. package/src/scripts/code_graph/sanitize.ts +30 -0
  311. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  312. package/src/scripts/code_graph/types.ts +83 -0
  313. package/src/scripts/code_graph/validate.ts +63 -0
  314. package/src/scripts/condense.ts +14 -6
  315. package/src/scripts/context_hygiene_hook.ts +8 -5
  316. package/src/scripts/council_cli.ts +126 -12
  317. package/src/scripts/detect_target_license.ts +203 -0
  318. package/src/scripts/evaluator_umbrella.sh +145 -0
  319. package/src/scripts/external_sources_denylist.json +8 -4
  320. package/src/scripts/first_run_gate_hook.ts +9 -5
  321. package/src/scripts/generate_subagent_floor.ts +194 -0
  322. package/src/scripts/hermetic-install.sh +3 -3
  323. package/src/scripts/hook_manifest.yaml +65 -16
  324. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  325. package/src/scripts/hooks/block_no_verify.ts +9 -9
  326. package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
  327. package/src/scripts/hooks/concern_registry.ts +75 -0
  328. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  329. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  330. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  331. package/src/scripts/hooks/hook_stdin.ts +42 -0
  332. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  333. package/src/scripts/hot_context_hook.ts +7 -6
  334. package/src/scripts/injection_scan_hook.ts +9 -1
  335. package/src/scripts/install +6 -6
  336. package/src/scripts/install-hooks.sh +4 -4
  337. package/src/scripts/install.sh +5 -4
  338. package/src/scripts/install.ts +264 -23
  339. package/src/scripts/iron_law_sha.ts +3 -12
  340. package/src/scripts/learning_sidecar.ts +0 -0
  341. package/src/scripts/lint_budget_ownership.ts +89 -0
  342. package/src/scripts/lint_command_routing.ts +35 -5
  343. package/src/scripts/lint_command_verbs.ts +42 -9
  344. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  345. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  346. package/src/scripts/lint_documented_commands.ts +670 -0
  347. package/src/scripts/lint_framework_leakage.ts +17 -3
  348. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  349. package/src/scripts/lint_governed_writes.ts +335 -0
  350. package/src/scripts/lint_hidden_unicode.ts +6 -0
  351. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  352. package/src/scripts/lint_memory_tripwire.ts +186 -0
  353. package/src/scripts/lint_override_kernel_guard.ts +267 -0
  354. package/src/scripts/lint_persistence.ts +171 -0
  355. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  356. package/src/scripts/lint_provenance.ts +547 -0
  357. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  358. package/src/scripts/lint_spawn_payload.ts +283 -0
  359. package/src/scripts/lint_store_boundary.ts +152 -0
  360. package/src/scripts/lint_versioned_cache.ts +7 -1
  361. package/src/scripts/mcp_server/__main__.ts +7 -2
  362. package/src/scripts/mcp_server/catalog.ts +23 -1
  363. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  364. package/src/scripts/mcp_server/prompts.ts +6 -0
  365. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  366. package/src/scripts/mcp_server/tools.ts +56 -5
  367. package/src/scripts/mcp_telemetry_query.ts +2 -33
  368. package/src/scripts/mcp_telemetry_store.ts +64 -34
  369. package/src/scripts/measure_rule_budget.ts +3 -12
  370. package/src/scripts/memory_learn_hook.ts +126 -0
  371. package/src/scripts/memory_lookup.ts +0 -0
  372. package/src/scripts/memory_replay_24.ts +312 -0
  373. package/src/scripts/memory_report.ts +16 -3
  374. package/src/scripts/memory_signal.ts +48 -0
  375. package/src/scripts/memory_status.ts +6 -0
  376. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  377. package/src/scripts/onboarding_gate_hook.ts +8 -5
  378. package/src/scripts/orchestration_record.ts +16 -0
  379. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  380. package/src/scripts/prepack-check.mjs +17 -0
  381. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  382. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  383. package/src/scripts/profile_staleness_hook.ts +8 -7
  384. package/src/scripts/reach_doctor.ts +1651 -0
  385. package/src/scripts/release.ts +24 -3
  386. package/src/scripts/report_install_drift.ts +109 -0
  387. package/src/scripts/risk_escalation_shadow.ts +160 -0
  388. package/src/scripts/roadmap_progress_hook.ts +8 -5
  389. package/src/scripts/schemas/agent-settings.schema.json +23 -0
  390. package/src/scripts/schemas/license-policy.schema.json +89 -0
  391. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  392. package/src/scripts/schemas/reach-channels.schema.json +134 -0
  393. package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
  394. package/src/scripts/schemas/rule.schema.json +20 -0
  395. package/src/scripts/self_review_gate.test.ts +173 -1
  396. package/src/scripts/self_review_gate.ts +155 -15
  397. package/src/scripts/session_canary_hook.ts +182 -0
  398. package/src/scripts/skill_linter.ts +55 -0
  399. package/src/scripts/smoke_quickstart.ts +2 -2
  400. package/src/scripts/surface_probe_hook.ts +8 -7
  401. package/src/scripts/sync_gitattributes.ts +310 -0
  402. package/src/scripts/team_review_gate_hook.ts +13 -16
  403. package/src/scripts/validate_reach_prescriptions.ts +751 -0
  404. package/src/scripts/verify_before_complete_hook.ts +8 -5
  405. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  406. package/src/server/schemas/settings.ts +24 -2
  407. package/src/shared/capabilities.test.ts +43 -0
  408. package/src/shared/capabilities.ts +75 -0
  409. package/src/templates/minimal/agents-overrides-readme.md +20 -0
  410. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  411. package/dist/ui/assets/index-BiEZiZ31.js +0 -40
  412. package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
  413. package/docs/CLAIMS.md +0 -261
  414. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  415. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  416. package/docs/SKILL_CENSUS.md +0 -352
  417. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  418. package/docs/adrs/cost/README.md +0 -9
  419. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  420. package/docs/adrs/memory/README.md +0 -10
  421. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  422. package/docs/adrs/router/README.md +0 -9
  423. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  424. package/docs/adrs/schema/README.md +0 -9
  425. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  426. package/docs/adrs/smoke/README.md +0 -9
  427. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  428. package/docs/adrs/telegraph/README.md +0 -9
  429. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  430. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  431. package/docs/anti-reskin-gate.md +0 -60
  432. package/docs/architecture/augment-projection.md +0 -70
  433. package/docs/architecture/claude-bundle.md +0 -77
  434. package/docs/architecture/current-onboard-baseline.md +0 -126
  435. package/docs/architecture/current-safety-behavior.md +0 -137
  436. package/docs/architecture/multi-tool-projection.md +0 -125
  437. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  438. package/docs/architecture/source-projection.md +0 -85
  439. package/docs/architecture.md +0 -390
  440. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  441. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  442. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  443. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  444. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  445. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  446. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  447. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  448. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  449. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  450. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  451. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  452. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  453. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  454. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  455. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  456. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  457. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  458. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  459. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  460. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  461. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  462. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  463. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  464. package/docs/artefact-census.md +0 -71
  465. package/docs/benchmark.md +0 -648
  466. package/docs/benchmark.pinned.yml +0 -31
  467. package/docs/benchmarks.md +0 -85
  468. package/docs/capability-matrix.md +0 -33
  469. package/docs/case-studies/_template.md +0 -60
  470. package/docs/case-studies/frontend-design-positioning.md +0 -86
  471. package/docs/catalog.md +0 -721
  472. package/docs/command-flows.md +0 -272
  473. package/docs/command-naming-audit.md +0 -60
  474. package/docs/comparison.yaml +0 -45
  475. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  476. package/docs/contracts/STABILITY.md +0 -188
  477. package/docs/contracts/adoption-signal-floor.md +0 -127
  478. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  479. package/docs/contracts/adr-chat-history-split.md +0 -140
  480. package/docs/contracts/adr-command-suggestion.md +0 -144
  481. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  482. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  483. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  484. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  485. package/docs/contracts/adr-layout.md +0 -107
  486. package/docs/contracts/adr-level-6-productization.md +0 -145
  487. package/docs/contracts/adr-mcp-runtime.md +0 -128
  488. package/docs/contracts/adr-product-ui-track.md +0 -381
  489. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  490. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  491. package/docs/contracts/adr-user-types-axis.md +0 -127
  492. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  493. package/docs/contracts/agent-user-schema.md +0 -170
  494. package/docs/contracts/agents-layout.md +0 -148
  495. package/docs/contracts/agents-md-tech-stack.md +0 -75
  496. package/docs/contracts/ai-council-config.md +0 -829
  497. package/docs/contracts/ai-team-config.md +0 -224
  498. package/docs/contracts/analysis-memory-loop.md +0 -149
  499. package/docs/contracts/at-rest-encryption.md +0 -191
  500. package/docs/contracts/audit-log-v1.md +0 -150
  501. package/docs/contracts/auto-orchestration-v1.md +0 -70
  502. package/docs/contracts/benchmark-ab-contract.md +0 -106
  503. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  504. package/docs/contracts/benchmark-report-schema.md +0 -113
  505. package/docs/contracts/branch-protection-policy.md +0 -139
  506. package/docs/contracts/brand-token-consumption.md +0 -74
  507. package/docs/contracts/capability-boundary.md +0 -69
  508. package/docs/contracts/capability-packs.md +0 -217
  509. package/docs/contracts/ci-cost-budget.md +0 -111
  510. package/docs/contracts/ci-green-floor.md +0 -141
  511. package/docs/contracts/command-category-governance.md +0 -84
  512. package/docs/contracts/command-clusters.md +0 -399
  513. package/docs/contracts/command-surface-tiers.md +0 -176
  514. package/docs/contracts/command-taxonomy.md +0 -137
  515. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  516. package/docs/contracts/config-presets.md +0 -144
  517. package/docs/contracts/conformance.md +0 -84
  518. package/docs/contracts/consumer-bridge.md +0 -73
  519. package/docs/contracts/context-paths.md +0 -101
  520. package/docs/contracts/context-spine.md +0 -179
  521. package/docs/contracts/cost-dashboard.md +0 -143
  522. package/docs/contracts/cost-enforcement.md +0 -134
  523. package/docs/contracts/cost-profile-defaults.md +0 -110
  524. package/docs/contracts/cost-summary-schema.md +0 -107
  525. package/docs/contracts/creative-pack-boundary.md +0 -63
  526. package/docs/contracts/cross-repo-retrieval.md +0 -64
  527. package/docs/contracts/cross-wing-handoff.md +0 -134
  528. package/docs/contracts/daily-workspace.md +0 -147
  529. package/docs/contracts/decision-engine-gates.md +0 -120
  530. package/docs/contracts/decision-trace-v1.md +0 -177
  531. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  532. package/docs/contracts/design-artifact-verification.md +0 -153
  533. package/docs/contracts/discovery-manifest.md +0 -209
  534. package/docs/contracts/discovery-manifest.schema.json +0 -254
  535. package/docs/contracts/evidence-based-pruning.md +0 -102
  536. package/docs/contracts/explain-modes.md +0 -187
  537. package/docs/contracts/explain-trace.schema.json +0 -144
  538. package/docs/contracts/file-ownership-matrix.json +0 -13941
  539. package/docs/contracts/file-ownership-matrix.md +0 -135
  540. package/docs/contracts/frontmatter-contract.md +0 -140
  541. package/docs/contracts/ghostwriter-schema.md +0 -337
  542. package/docs/contracts/governance-enforcement-projection.md +0 -159
  543. package/docs/contracts/gui-wizard.md +0 -350
  544. package/docs/contracts/harness-expectations.md +0 -128
  545. package/docs/contracts/hook-architecture-v1.md +0 -325
  546. package/docs/contracts/host-agent-protocol.md +0 -110
  547. package/docs/contracts/implement-ticket-flow.md +0 -625
  548. package/docs/contracts/init-telemetry.md +0 -132
  549. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  550. package/docs/contracts/install-layout.md +0 -249
  551. package/docs/contracts/install-scopes.md +0 -82
  552. package/docs/contracts/installed-tools-lockfile.md +0 -144
  553. package/docs/contracts/installer-agent-mode.md +0 -137
  554. package/docs/contracts/iron-law-overrides.txt +0 -26
  555. package/docs/contracts/kernel-membership.md +0 -339
  556. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  557. package/docs/contracts/linear-ai-three-layers.md +0 -130
  558. package/docs/contracts/linter-structural-model.md +0 -181
  559. package/docs/contracts/load-context-budget-model.md +0 -259
  560. package/docs/contracts/load-context-schema.md +0 -220
  561. package/docs/contracts/local-analytics.md +0 -160
  562. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  563. package/docs/contracts/local-server-api.md +0 -134
  564. package/docs/contracts/low-impact-corpus-format.md +0 -95
  565. package/docs/contracts/mcp-beta-criteria.md +0 -130
  566. package/docs/contracts/mcp-cloud-scope.md +0 -355
  567. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  568. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  569. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  570. package/docs/contracts/mcp-tool-inventory.md +0 -64
  571. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  572. package/docs/contracts/measurement-baseline.md +0 -103
  573. package/docs/contracts/memory-visibility-v1.md +0 -160
  574. package/docs/contracts/mental-models.md +0 -336
  575. package/docs/contracts/migrate-command.md +0 -233
  576. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  577. package/docs/contracts/namespace.md +0 -125
  578. package/docs/contracts/no-runtime-boundary.md +0 -61
  579. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  580. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  581. package/docs/contracts/package-self-orientation.md +0 -163
  582. package/docs/contracts/pilot/agent-authority.md +0 -24
  583. package/docs/contracts/pilot/direct-answers.md +0 -70
  584. package/docs/contracts/pilot/language-and-tone.md +0 -63
  585. package/docs/contracts/plain-language-surface.md +0 -117
  586. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  587. package/docs/contracts/profile-system.md +0 -167
  588. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  589. package/docs/contracts/release-pr-gating.md +0 -151
  590. package/docs/contracts/release-sizing.md +0 -107
  591. package/docs/contracts/release-trunk-sync.md +0 -105
  592. package/docs/contracts/review-lens-schema.md +0 -64
  593. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  594. package/docs/contracts/role-experience.md +0 -125
  595. package/docs/contracts/router-blending.md +0 -71
  596. package/docs/contracts/rule-classification.md +0 -171
  597. package/docs/contracts/rule-interactions.md +0 -132
  598. package/docs/contracts/rule-interactions.yml +0 -260
  599. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  600. package/docs/contracts/rule-router.md +0 -287
  601. package/docs/contracts/safety-model.md +0 -129
  602. package/docs/contracts/session-profile-overlay.md +0 -157
  603. package/docs/contracts/settings-api.md +0 -264
  604. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  605. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  606. package/docs/contracts/skill-bundled-assets.md +0 -62
  607. package/docs/contracts/skill-discovery.md +0 -80
  608. package/docs/contracts/skill-distribution-channels.md +0 -66
  609. package/docs/contracts/skill-domains.md +0 -144
  610. package/docs/contracts/skill-dry-run.md +0 -47
  611. package/docs/contracts/skill-family-map.yml +0 -915
  612. package/docs/contracts/smoke-contracts.md +0 -144
  613. package/docs/contracts/subagent-boundary.md +0 -59
  614. package/docs/contracts/surface-agent-contracts.md +0 -153
  615. package/docs/contracts/surface-matrix.md +0 -108
  616. package/docs/contracts/surface-tiers.md +0 -81
  617. package/docs/contracts/telegraph-telemetry.md +0 -83
  618. package/docs/contracts/ticket-bundle-format.md +0 -233
  619. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  620. package/docs/contracts/trust-and-safety.md +0 -144
  621. package/docs/contracts/ui-stack-extension.md +0 -237
  622. package/docs/contracts/ui-track-flow.md +0 -329
  623. package/docs/contracts/universal-skills.md +0 -91
  624. package/docs/contracts/user-type-schema.md +0 -146
  625. package/docs/contracts/value-dashboard-spec.md +0 -378
  626. package/docs/contracts/value-report-schema.md +0 -168
  627. package/docs/contracts/workflow-packs.md +0 -121
  628. package/docs/contracts/workspace-boundary.md +0 -84
  629. package/docs/contracts/workspace-documents.md +0 -144
  630. package/docs/contracts/write-engine.md +0 -182
  631. package/docs/cookbook.md +0 -152
  632. package/docs/customization.md +0 -685
  633. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  634. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  635. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  636. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  637. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  638. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  639. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  640. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  641. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  642. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  643. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  644. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  645. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  646. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  647. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  648. package/docs/decisions/ADR-016-installer-architecture.md +0 -189
  649. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  650. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  651. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  652. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  653. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  654. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  655. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  656. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  657. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  658. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  659. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  660. package/docs/decisions/ADR-028-root-layout.md +0 -147
  661. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  662. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  663. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  664. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  665. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  666. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  667. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  668. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  669. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  670. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  671. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  672. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  673. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  674. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  675. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  676. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  677. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  678. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  679. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  680. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  681. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  682. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  683. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  684. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  685. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  686. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  687. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  688. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  689. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  690. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  691. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  692. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  693. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  694. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  695. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  696. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  697. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  698. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  699. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  700. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  701. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  702. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  703. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  704. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  705. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  706. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  707. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  708. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  709. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  710. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  711. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  712. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  713. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  714. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  715. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  716. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  717. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  718. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  719. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  720. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  721. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  722. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  723. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  724. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  725. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  726. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  727. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  728. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  729. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  730. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  731. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  732. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  733. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  734. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  735. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  736. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  737. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  738. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  739. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  740. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  741. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
  742. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
  743. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  744. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  745. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
  746. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  747. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  748. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  749. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  750. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  751. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  752. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  753. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  754. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  755. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  756. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  757. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  758. package/docs/decisions/INDEX.md +0 -136
  759. package/docs/deploy/connector-setup.md +0 -129
  760. package/docs/deploy/env-vars.md +0 -70
  761. package/docs/deploy/policy-cookbook.md +0 -130
  762. package/docs/deploy/quickstart.md +0 -112
  763. package/docs/deploy/small-team-recipe.md +0 -148
  764. package/docs/deploy/team-deployment-posture.md +0 -111
  765. package/docs/design/adversarial-council-eval.md +0 -106
  766. package/docs/design/council-vs-solo-baseline.md +0 -92
  767. package/docs/design/cross-model-parity-eval.md +0 -82
  768. package/docs/design/length-neutral-judge-rerun.md +0 -92
  769. package/docs/design/utilization-window-criteria.md +0 -51
  770. package/docs/development.md +0 -230
  771. package/docs/distribution/awesome-list-submission.md +0 -46
  772. package/docs/distribution/consumer-matrix.md +0 -96
  773. package/docs/distribution/launch-story-draft.md +0 -58
  774. package/docs/distribution/mcp-submission-checklist.md +0 -95
  775. package/docs/distribution/public-install-smoke.md +0 -68
  776. package/docs/distribution/registries.md +0 -117
  777. package/docs/distribution/registry-submissions.md +0 -85
  778. package/docs/distribution/telemetry-privacy.md +0 -128
  779. package/docs/distribution/telemetry-schema.md +0 -174
  780. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  781. package/docs/end-to-end-walkthroughs.md +0 -165
  782. package/docs/enforcement-by-host.md +0 -44
  783. package/docs/examples/agent-user.example.md +0 -22
  784. package/docs/experiences/agency.md +0 -49
  785. package/docs/experiences/content_creator.md +0 -49
  786. package/docs/experiences/developer.md +0 -49
  787. package/docs/experiences/finance.md +0 -50
  788. package/docs/experiences/founder.md +0 -49
  789. package/docs/experiences/ops.md +0 -49
  790. package/docs/featured-commands.md +0 -27
  791. package/docs/featured-skills.md +0 -95
  792. package/docs/flows.md +0 -67
  793. package/docs/getting-started-by-role.md +0 -190
  794. package/docs/getting-started-laravel.md +0 -72
  795. package/docs/getting-started-local-stdio.md +0 -77
  796. package/docs/getting-started.md +0 -254
  797. package/docs/github-topics.md +0 -93
  798. package/docs/governance-advantage.md +0 -72
  799. package/docs/governance.md +0 -96
  800. package/docs/guides/cross-repo-linked-projects.md +0 -93
  801. package/docs/guides/cross-repo-retrieval.md +0 -61
  802. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  803. package/docs/guides/local-analytics.md +0 -125
  804. package/docs/guides/local-knowledge.md +0 -127
  805. package/docs/guides/skill-discovery.md +0 -71
  806. package/docs/guides/skill-preview.md +0 -71
  807. package/docs/hook-payload-capture.md +0 -221
  808. package/docs/install-friction-report.md +0 -66
  809. package/docs/installation.md +0 -959
  810. package/docs/maintainers/branch-protection.md +0 -105
  811. package/docs/maintainers/dev-mode.md +0 -106
  812. package/docs/maintainers/optional-media-deps.md +0 -50
  813. package/docs/maintainers/system-map.md +0 -85
  814. package/docs/mcp-registries.md +0 -94
  815. package/docs/mcp-server.md +0 -175
  816. package/docs/mcp.md +0 -147
  817. package/docs/media/proof-demo.cast +0 -14
  818. package/docs/media/proof-demo.gif +0 -0
  819. package/docs/migration/consumer-template-consumption-model.md +0 -145
  820. package/docs/migration/divergences/README.md +0 -55
  821. package/docs/migration/divergences/_template.md +0 -50
  822. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  823. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  824. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  825. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  826. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  827. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  828. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  829. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  830. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  831. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  832. package/docs/migration/node-floor.md +0 -86
  833. package/docs/migration/v1-to-v2.md +0 -156
  834. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  835. package/docs/migrations/commands-1.15.0.md +0 -117
  836. package/docs/parity/bench-external.json +0 -58
  837. package/docs/parity/bench.json +0 -41
  838. package/docs/parity/command-frontmatter.md +0 -60
  839. package/docs/parity/external-runtime.md +0 -46
  840. package/docs/personas.md +0 -178
  841. package/docs/positioning-evidence.md +0 -86
  842. package/docs/profiles.md +0 -108
  843. package/docs/proof.md +0 -176
  844. package/docs/quality.md +0 -98
  845. package/docs/readme-split-plan.md +0 -102
  846. package/docs/recruits/_template.md +0 -81
  847. package/docs/release-runbook.md +0 -141
  848. package/docs/role-experiences.md +0 -19
  849. package/docs/safety.md +0 -30
  850. package/docs/second-brain-scope.md +0 -116
  851. package/docs/self-review-gate.md +0 -65
  852. package/docs/setup/enterprise-and-offline.md +0 -201
  853. package/docs/setup/mcp-client-config.md +0 -358
  854. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  855. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  856. package/docs/setup/mcp-cloud-setup.md +0 -183
  857. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  858. package/docs/setup/mcp-server-docker.md +0 -101
  859. package/docs/setup/per-ide/aider.md +0 -48
  860. package/docs/setup/per-ide/antigravity.md +0 -68
  861. package/docs/setup/per-ide/augment.md +0 -89
  862. package/docs/setup/per-ide/claude-code.md +0 -97
  863. package/docs/setup/per-ide/claude-desktop.md +0 -207
  864. package/docs/setup/per-ide/cline.md +0 -43
  865. package/docs/setup/per-ide/codebuddy.md +0 -63
  866. package/docs/setup/per-ide/codex.md +0 -46
  867. package/docs/setup/per-ide/continue.md +0 -68
  868. package/docs/setup/per-ide/copilot.md +0 -80
  869. package/docs/setup/per-ide/cursor.md +0 -125
  870. package/docs/setup/per-ide/droid.md +0 -65
  871. package/docs/setup/per-ide/gemini-cli.md +0 -45
  872. package/docs/setup/per-ide/jetbrains.md +0 -76
  873. package/docs/setup/per-ide/kilocode.md +0 -66
  874. package/docs/setup/per-ide/kiro.md +0 -72
  875. package/docs/setup/per-ide/opencode.md +0 -62
  876. package/docs/setup/per-ide/qoder.md +0 -63
  877. package/docs/setup/per-ide/roocode.md +0 -68
  878. package/docs/setup/per-ide/trae.md +0 -63
  879. package/docs/setup/per-ide/warp.md +0 -63
  880. package/docs/setup/per-ide/windsurf.md +0 -109
  881. package/docs/setup/per-ide/zed.md +0 -73
  882. package/docs/showcase.md +0 -209
  883. package/docs/skill-duplication-findings.md +0 -91
  884. package/docs/skills-catalog.md +0 -265
  885. package/docs/skills-taxonomy.md +0 -90
  886. package/docs/spawn-site-policy.md +0 -72
  887. package/docs/succession.md +0 -80
  888. package/docs/threat-model.md +0 -29
  889. package/docs/troubleshooting.md +0 -155
  890. package/docs/ui-track-mental-model.md +0 -121
  891. package/docs/us-vs-the-category.md +0 -38
  892. package/docs/value.md +0 -86
  893. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  894. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  895. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  896. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  897. package/docs/walkthroughs/daily-workspace.md +0 -127
  898. package/docs/wedge/production-validator/README.md +0 -81
  899. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  900. package/docs/wedge/production-validator/production-validator.md +0 -83
  901. package/docs/wizard.md +0 -173
@@ -36,6 +36,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
36
36
  // `agents/runtime/state/.dispatcher.lock` discipline (hook-architecture-v1.md
37
37
  // § Concurrency, Phase 7.4).
38
38
  import { atomic_write_json } from "./hooks/state_io.js";
39
+ import { readHookStdin } from "./hooks/hook_stdin.js";
39
40
 
40
41
  // NOTE: the Python docstring says `agents/runtime/state/`, but the code
41
42
  // constant is `agents/state/`. Replicated verbatim — this is a latent
@@ -252,11 +253,7 @@ function parse_args(argv: string[]): ParsedArgs {
252
253
  }
253
254
 
254
255
  function _readStdin(): string {
255
- try {
256
- return fs.readFileSync(0, "utf-8");
257
- } catch {
258
- return "";
259
- }
256
+ return readHookStdin();
260
257
  }
261
258
 
262
259
  export function main(argv?: string[]): number {
@@ -264,7 +261,13 @@ export function main(argv?: string[]): number {
264
261
  return run(_readStdin(), { consumer_root: process.cwd(), verbose: args.verbose });
265
262
  }
266
263
 
264
+ // Bundle-safety: never auto-run when inlined into an esbuild bundle, where
265
+ // every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
266
+ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
267
267
  function _isCliEntry(): boolean {
268
+ if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) {
269
+ return false;
270
+ }
268
271
  if (process.argv[1] === undefined) {
269
272
  return false;
270
273
  }
@@ -117,6 +117,15 @@ import {
117
117
  } from './ai_council/consensus.js';
118
118
  import * as _shadow from './ai_council/shadow_dispatch.js';
119
119
  import * as _lowimpact from './ai_council/low_impact.js';
120
+ import {
121
+ apply_chairman_override,
122
+ assign_stances,
123
+ build_blind_labels,
124
+ OUTSIDER_STANCE_NAME,
125
+ parse_chairman_override,
126
+ render_deanonymization_block,
127
+ with_chairman_fields,
128
+ } from './ai_council/blind_review.js';
120
129
 
121
130
  // ── argparse-style exit plumbing ────────────────────────────────────
122
131
  // Mirror CPython argparse: a `prog: error: …` line on stderr + exit 2.
@@ -1168,16 +1177,36 @@ function _maybe_run_chairman(
1168
1177
  response: null,
1169
1178
  };
1170
1179
  }
1171
- // Transcript WITH identities (the chairman judges attributed positions) +
1172
- // the lens synthesis template as the authoring instruction.
1173
- const transcript = responses
1174
- .filter((r) => r.error === null && r.text.trim() !== '')
1175
- .map((r) => `## ${r.provider} - ${r.model}\n\n${r.text.trim()}`)
1176
- .join('\n\n---\n\n');
1177
- const synth_prompt =
1178
- `You are the council CHAIRMAN. You did not deliberate. Author the synthesis ` +
1179
- `of the attributed member positions below, following the template.\n\n` +
1180
- `${synthesis_template(question.mode)}\n\n---\n\n${transcript}`;
1180
+ // road-to-council-blind-review Phase 1 (Ü1): --blind-chairman shuffles the
1181
+ // transcript deterministically (seeded by the question text) and strips
1182
+ // identity to Response-A/B/… labels, reusing the EXISTING
1183
+ // `consensus.anonymize_responses` seam. The default path below (transcript
1184
+ // WITH identities — "the chairman judges attributed positions") is
1185
+ // byte-identical to today.
1186
+ const blind = args.blind_chairman === true;
1187
+ let transcript: string;
1188
+ let blind_label_to_source: Map<string, string> | null = null;
1189
+ const successful = responses.filter((r) => r.error === null && r.text.trim() !== '');
1190
+ if (blind) {
1191
+ const pairs: Array<[string, string]> = successful.map((r) => [`${r.provider}:${r.model}`, r.text]);
1192
+ const built = build_blind_labels(question.user_prompt, pairs);
1193
+ transcript = built.transcript;
1194
+ blind_label_to_source = built.label_to_source;
1195
+ } else {
1196
+ transcript = successful
1197
+ .map((r) => `## ${r.provider} - ${r.model}\n\n${r.text.trim()}`)
1198
+ .join('\n\n---\n\n');
1199
+ }
1200
+ // Ü3: --chairman-fields appends the two mandatory trailing sections.
1201
+ const template =
1202
+ args.chairman_fields === true ? with_chairman_fields(synthesis_template(question.mode)) : synthesis_template(question.mode);
1203
+ const synth_prompt = blind
1204
+ ? `You are the council CHAIRMAN. You did not deliberate. Author the synthesis ` +
1205
+ `of the anonymized member positions below (labels A–E). Do not guess ` +
1206
+ `identities.\n\n${template}\n\n---\n\n${transcript}`
1207
+ : `You are the council CHAIRMAN. You did not deliberate. Author the synthesis ` +
1208
+ `of the attributed member positions below, following the template.\n\n` +
1209
+ `${template}\n\n---\n\n${transcript}`;
1181
1210
  const synthQ = new CouncilQuestion({
1182
1211
  mode: question.mode,
1183
1212
  user_prompt: synth_prompt,
@@ -1197,7 +1226,13 @@ function _maybe_run_chairman(
1197
1226
  response: r,
1198
1227
  };
1199
1228
  }
1200
- return { member: sel.member, annotation: sel.annotation, text: r.text, response: r };
1229
+ // Blind is only at decision time — de-anonymization lands in the audit
1230
+ // artifact immediately after the verdict, never fed back into a prompt.
1231
+ const final_text =
1232
+ blind && blind_label_to_source !== null
1233
+ ? `${r.text.trim()}\n\n${render_deanonymization_block('### De-anonymization (post-verdict)', blind_label_to_source)}`
1234
+ : r.text;
1235
+ return { member: sel.member, annotation: sel.annotation, text: final_text, response: r };
1201
1236
  }
1202
1237
 
1203
1238
  function _maybe_run_peer_review(
@@ -1840,6 +1875,15 @@ function _apply_solo_dispatch(members: ExternalAIClient[]): [ExternalAIClient[],
1840
1875
  ];
1841
1876
  }
1842
1877
 
1878
+ /** `--chairman` value → parsed override, or `ArgumentTypeError` on malformed input. */
1879
+ function _resolved_chairman_override(raw: string | null) {
1880
+ try {
1881
+ return parse_chairman_override(raw);
1882
+ } catch (exc) {
1883
+ throw new ArgumentTypeError(exc instanceof Error ? exc.message : String(exc));
1884
+ }
1885
+ }
1886
+
1843
1887
  function cmd_run(
1844
1888
  args: Args,
1845
1889
  opts: { settings?: Dict | null; members?: ExternalAIClient[] | null; table?: PriceTable | null } = {},
@@ -1850,7 +1894,12 @@ function cmd_run(
1850
1894
  if (settings === null) {
1851
1895
  settings = load_settings();
1852
1896
  }
1853
- const ai_cfg = _isDict(settings) ? ((settings['ai_council'] as Dict) || {}) : {};
1897
+ // road-to-council-blind-review Phase 1: `--chairman host|auto|member:NAME`
1898
+ // is a pure runtime override, never a config write.
1899
+ const ai_cfg = apply_chairman_override(
1900
+ _isDict(settings) ? ((settings['ai_council'] as Dict) || {}) : {},
1901
+ _resolved_chairman_override(_getattr<string | null>(args, 'chairman', null)),
1902
+ ) as Dict;
1854
1903
  const advisor_plans = _build_advisor_plans(ai_cfg, REPO_ROOT);
1855
1904
  const explicit_overrides = _parse_model_overrides(_getattr<string[] | null>(args, 'model', null));
1856
1905
  const skipped: Dict[] = [];
@@ -1978,6 +2027,21 @@ function cmd_run(
1978
2027
  _isDict(ai_cfg) &&
1979
2028
  _isDict(ai_cfg['stance_tally']) &&
1980
2029
  (ai_cfg['stance_tally'] as Dict)['enabled'] === true;
2030
+ // road-to-council-blind-review Phase 1 (Ü2): five orthogonal stances
2031
+ // rotated deterministically over the config-ordered member list; the
2032
+ // outsider seat additionally drops project_context. Default off.
2033
+ const stances_on = args.stances === true;
2034
+ const stance_assignment = stances_on ? assign_stances(members.map((m) => m.name), question.user_prompt) : null;
2035
+ const member_prompt_suffix = stance_assignment
2036
+ ? new Map(Array.from(stance_assignment.entries()).map(([name, s]) => [name, s.prompt]))
2037
+ : null;
2038
+ const no_project_context_members = stance_assignment
2039
+ ? new Set(
2040
+ Array.from(stance_assignment.entries())
2041
+ .filter(([, s]) => s.name === OUTSIDER_STANCE_NAME)
2042
+ .map(([name]) => name),
2043
+ )
2044
+ : null;
1981
2045
  const stance_repairs: CouncilResponse[] = [];
1982
2046
  const responses = consult(members, question, budget, {
1983
2047
  table,
@@ -1986,6 +2050,8 @@ function cmd_run(
1986
2050
  rounds,
1987
2051
  advisor_plans,
1988
2052
  stance_tally: stance_tally_on,
2053
+ member_prompt_suffix,
2054
+ no_project_context_members,
1989
2055
  // Interactive one-line confirm (cmd_run has no --auto-continue); the
1990
2056
  // repaired-call cost is collected so cost_usd_actual stays honest.
1991
2057
  on_stance_repair: stance_tally_on
@@ -2009,6 +2075,22 @@ function cmd_run(
2009
2075
  );
2010
2076
  const consensus = _maybe_run_consensus(ai_cfg, question, members, responses, budget, table, project, args);
2011
2077
  const chairman = _maybe_run_chairman(ai_cfg, question, members, responses, budget, table, project, args);
2078
+ // road-to-council-blind-review Phase 1 (Ü1), host-path only: when no
2079
+ // member chairman ran (mode === 'host'), the blind mapping is computed
2080
+ // here (seeded from the question text) and persisted for a later
2081
+ // `council:render` to blind the response headers. The member-chairman
2082
+ // path (below, inside `_maybe_run_chairman`) blinds inline instead.
2083
+ const blind_chairman_on = args.blind_chairman === true;
2084
+ const chairman_fields_on = args.chairman_fields === true;
2085
+ let blind_review_map: Map<string, string> | null = null;
2086
+ if (blind_chairman_on && chairman === null) {
2087
+ const pairs: Array<[string, string]> = responses
2088
+ .filter((r) => r.error === null && r.text.trim() !== '')
2089
+ .map((r) => [`${r.provider}:${r.model}`, r.text]);
2090
+ if (pairs.length > 0) {
2091
+ blind_review_map = build_blind_labels(question.user_prompt, pairs).label_to_source;
2092
+ }
2093
+ }
2012
2094
  const estimated_total = estimates.reduce((acc, e) => acc + _total_usd(e), 0.0);
2013
2095
  let actual_total = 0.0;
2014
2096
  const all_responses: CouncilResponse[] = [...responses];
@@ -2043,6 +2125,9 @@ function cmd_run(
2043
2125
  cost_usd_estimated: _pyRound(estimated_total, 6),
2044
2126
  cost_usd_actual: _pyRound(actual_total, 6),
2045
2127
  stance_tally: stance_tally_on,
2128
+ stances: stances_on,
2129
+ blind_chairman: blind_chairman_on,
2130
+ chairman_fields: chairman_fields_on,
2046
2131
  responses: _serialise_responses(responses),
2047
2132
  };
2048
2133
  if (peer_review !== null) {
@@ -2054,6 +2139,9 @@ function cmd_run(
2054
2139
  if (chairman !== null) {
2055
2140
  payload['chairman'] = { member: chairman.member, annotation: chairman.annotation, text: chairman.text };
2056
2141
  }
2142
+ if (blind_review_map !== null) {
2143
+ payload['blind_review_map'] = _mapToObject(blind_review_map);
2144
+ }
2057
2145
  const out_path = _validate_council_output_path(args.output as string, {
2058
2146
  kind: 'responses',
2059
2147
  subcommand: 'run',
@@ -2452,12 +2540,18 @@ function cmd_render(args: Args): number {
2452
2540
  }
2453
2541
  const consensus = _deserialise_consensus(payload['consensus'] as Dict);
2454
2542
  const peer_review = _deserialise_peer_review(payload['peer_review'] as Dict);
2543
+ // road-to-council-blind-review Phase 1: a persisted `blind_review_map`
2544
+ // means `--blind-chairman` ran on the host path (no member chairman) —
2545
+ // blind the response headers + append the de-anonymization map.
2546
+ const blind_map_raw = payload['blind_review_map'];
2455
2547
  const body = render(_deserialise_responses(items), {
2456
2548
  mode: mode ?? null,
2457
2549
  prose_synthesis: prose,
2458
2550
  consensus,
2459
2551
  peer_review,
2460
2552
  stance_tally: payload['stance_tally'] === true,
2553
+ chairman_fields: payload['chairman_fields'] === true,
2554
+ blind: _isDict(blind_map_raw) ? { label_to_source: _objToMap(blind_map_raw as Dict) } : null,
2461
2555
  chairman: _isDict(payload['chairman'])
2462
2556
  ? (payload['chairman'] as { member: string | null; annotation: string; text: string | null })
2463
2557
  : null,
@@ -2672,6 +2766,11 @@ interface Args {
2672
2766
  auto_continue: boolean;
2673
2767
  restate?: boolean;
2674
2768
  continue_as_debate: string | null;
2769
+ // road-to-council-blind-review Phase 1 — flag-gated, default-off (`run` only)
2770
+ chairman: string | null;
2771
+ blind_chairman: boolean;
2772
+ stances: boolean;
2773
+ chairman_fields: boolean;
2675
2774
  // render / replay
2676
2775
  responses?: string | null;
2677
2776
  include_member_arguments: boolean | null;
@@ -2726,6 +2825,15 @@ function _defaultArgs(): Args {
2726
2825
  prose_synthesis: null,
2727
2826
  auto_continue: false,
2728
2827
  continue_as_debate: null,
2828
+ chairman: null,
2829
+ // Ü1 ADOPTED (road-to-council-blind-review Phase 3, 2026-07-28):
2830
+ // blind synthesis is the default — 0/10 + 0/10 pre-registered
2831
+ // degradation triggers on the n=10 A/B; opt out per-invocation
2832
+ // with --no-blind-chairman (the audit artifact always keeps the
2833
+ // post-verdict de-anonymization map either way).
2834
+ blind_chairman: true,
2835
+ stances: false,
2836
+ chairman_fields: false,
2729
2837
  responses: null,
2730
2838
  include_member_arguments: null,
2731
2839
  low_impact_stats: false,
@@ -2788,6 +2896,12 @@ function _specsFor(cmd: string): { positionals: string[]; opts: OptSpec[]; requi
2788
2896
  { flag: '--single', takesValue: false, apply: (o) => (o.single = true) },
2789
2897
  { flag: '--prose-synthesis', takesValue: false, apply: (o) => (o.prose_synthesis = true) },
2790
2898
  { flag: '--no-prose-synthesis', takesValue: false, apply: (o) => (o.prose_synthesis = false) },
2899
+ // road-to-council-blind-review Phase 1 — flag-gated, default-off.
2900
+ { flag: '--chairman', takesValue: true, apply: (o, v) => (o.chairman = v) },
2901
+ { flag: '--blind-chairman', takesValue: false, apply: (o) => (o.blind_chairman = true) },
2902
+ { flag: '--no-blind-chairman', takesValue: false, apply: (o) => (o.blind_chairman = false) },
2903
+ { flag: '--stances', takesValue: false, apply: (o) => (o.stances = true) },
2904
+ { flag: '--chairman-fields', takesValue: false, apply: (o) => (o.chairman_fields = true) },
2791
2905
  ],
2792
2906
  requiredOpts: ['--output'],
2793
2907
  };
@@ -0,0 +1,203 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * detect_target_license — deterministic SPDX license detection + derived
4
+ * borrow-compatibility policy (road-to-provenance-and-license-governance
5
+ * S1.2). CLI wrapper — the actual detection/matrix/invalidation/override
6
+ * logic lives in `./_lib/detect_target_license.ts` (that module does the
7
+ * filesystem I/O too; detection is inherently a file-read job). This file
8
+ * owns only argv parsing, stdout/stderr shaping, schema validation, and the
9
+ * `--write` side effect.
10
+ *
11
+ * Usage:
12
+ * npx tsx src/scripts/detect_target_license.ts [repo-path] [--write] [--json]
13
+ * npx tsx src/scripts/detect_target_license.ts --help
14
+ *
15
+ * Default (no --write): report only, nothing written to disk.
16
+ * --write create/update license-policy.yaml in the target repo, unless
17
+ * escalation is required or the existing file is derived_from: manual.
18
+ *
19
+ * Exit codes: 0 success (including the warn-only "nothing detectable"
20
+ * path); 1 usage/IO/schema error; 2 escalation required — a human decision,
21
+ * never an auto-pick (source disagreement, or a divergent workspace license).
22
+ */
23
+
24
+ import * as fs from 'node:fs';
25
+ import * as path from 'node:path';
26
+ import { pathToFileURL } from 'node:url';
27
+
28
+ import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
29
+
30
+ import {
31
+ buildLicensePolicyDocument,
32
+ checkInvalidation,
33
+ detectTargetLicense,
34
+ mergeOverride,
35
+ type LicensePolicyDoc,
36
+ } from './_lib/detect_target_license.js';
37
+ import { load_schema, validate, type YamlValue } from './validate_frontmatter.js';
38
+
39
+ export const POLICY_FILENAME = 'license-policy.yaml';
40
+
41
+ const USAGE = `usage: detect_target_license [repo-path] [--write] [--json] [-h|--help]
42
+
43
+ Deterministic SPDX license detection + derived borrow-compatibility policy.
44
+
45
+ repo-path target repo root (default: .)
46
+ --write write/update ${POLICY_FILENAME} in the target repo (skipped on
47
+ escalation, or when the existing file is derived_from: manual)
48
+ --json machine-readable report on stdout
49
+
50
+ Exit codes: 0 success, 1 usage/IO/schema error, 2 escalation required.
51
+ `;
52
+
53
+ export interface CliArgs {
54
+ repoPath: string;
55
+ write: boolean;
56
+ json: boolean;
57
+ help: boolean;
58
+ }
59
+
60
+ export function parseArgs(argv: string[]): CliArgs {
61
+ let repoPath = '.';
62
+ let write = false;
63
+ let json = false;
64
+ let help = false;
65
+ for (const a of argv) {
66
+ if (a === '-h' || a === '--help') help = true;
67
+ else if (a === '--write') write = true;
68
+ else if (a === '--json') json = true;
69
+ else if (!a.startsWith('--')) repoPath = a;
70
+ }
71
+ return { repoPath, write, json, help };
72
+ }
73
+
74
+ export function serializeLicensePolicy(doc: LicensePolicyDoc): string {
75
+ return stringifyYaml(doc, { indent: 2 });
76
+ }
77
+
78
+ export function parseLicensePolicyFile(text: string): LicensePolicyDoc {
79
+ return parseYaml(text) as LicensePolicyDoc; // caller schema-validates before trusting this
80
+ }
81
+
82
+ export function main(argv: string[] = process.argv.slice(2)): number {
83
+ const args = parseArgs(argv);
84
+ if (args.help) {
85
+ process.stdout.write(USAGE);
86
+ return 0;
87
+ }
88
+
89
+ const repoRoot = path.resolve(args.repoPath);
90
+ if (!fs.existsSync(repoRoot) || !fs.statSync(repoRoot).isDirectory()) {
91
+ process.stderr.write(`detect_target_license: error: not a directory: ${repoRoot}\n`);
92
+ return 1;
93
+ }
94
+
95
+ const detection = detectTargetLicense(repoRoot);
96
+
97
+ if (detection.escalate) {
98
+ if (args.json) {
99
+ process.stdout.write(JSON.stringify({
100
+ escalate: true,
101
+ reason: detection.escalateReason,
102
+ spdx_id: detection.spdxId,
103
+ warnings: detection.warnings,
104
+ }) + '\n');
105
+ } else {
106
+ process.stdout.write(`detect_target_license: ESCALATE — ${detection.escalateReason ?? 'unspecified'}\n`);
107
+ for (const w of detection.warnings) process.stdout.write(` warning: ${w}\n`);
108
+ process.stdout.write(`No ${POLICY_FILENAME} written. This needs a human decision, never an auto-pick.\n`);
109
+ }
110
+ return 2;
111
+ }
112
+
113
+ const nowIso = new Date().toISOString();
114
+ const freshDoc = buildLicensePolicyDocument(detection, nowIso);
115
+ const policyPath = path.join(repoRoot, POLICY_FILENAME);
116
+
117
+ let finalDoc: LicensePolicyDoc = freshDoc;
118
+ let rejectedOverrides: string[] = [];
119
+ let action: 'derived' | 'kept-manual' | 're-derived' | 'merged' | 'unchanged' = 'derived';
120
+
121
+ if (fs.existsSync(policyPath)) {
122
+ let existing: LicensePolicyDoc | null = null;
123
+ try {
124
+ existing = parseLicensePolicyFile(fs.readFileSync(policyPath, 'utf8'));
125
+ } catch (err) {
126
+ process.stderr.write(
127
+ `detect_target_license: warning: failed to parse existing ${POLICY_FILENAME}, ` +
128
+ `treating as absent: ${err instanceof Error ? err.message : String(err)}\n`,
129
+ );
130
+ }
131
+
132
+ if (existing) {
133
+ const invalidation = checkInvalidation(existing, detection);
134
+ if (invalidation.action === 'escalate') {
135
+ if (args.json) {
136
+ process.stdout.write(JSON.stringify({ escalate: true, reason: invalidation.reason }) + '\n');
137
+ } else {
138
+ process.stdout.write(`detect_target_license: ESCALATE — ${invalidation.reason}\n`);
139
+ process.stdout.write(`${POLICY_FILENAME} left unchanged. This needs a human decision, never an auto-pick.\n`);
140
+ }
141
+ return 2;
142
+ }
143
+ if (existing.derived_from === 'manual') {
144
+ finalDoc = existing;
145
+ action = 'kept-manual';
146
+ } else if (invalidation.action === 're-derive') {
147
+ finalDoc = freshDoc;
148
+ action = 're-derived';
149
+ } else {
150
+ const merge = mergeOverride(existing, freshDoc);
151
+ finalDoc = merge.doc;
152
+ rejectedOverrides = merge.rejectedOverrides;
153
+ action = rejectedOverrides.length > 0 || JSON.stringify(merge.doc.policy) !== JSON.stringify(existing.policy)
154
+ ? 'merged'
155
+ : 'unchanged';
156
+ }
157
+ }
158
+ }
159
+
160
+ if (action !== 'kept-manual') {
161
+ const schema = load_schema('license-policy');
162
+ const errors = validate(finalDoc as unknown as YamlValue, schema);
163
+ if (errors.length > 0) {
164
+ process.stderr.write('detect_target_license: refused — derived policy fails schema validation:\n');
165
+ for (const e of errors) process.stderr.write(` - ${e.format()}\n`);
166
+ return 1;
167
+ }
168
+ }
169
+
170
+ const willWrite = args.write && action !== 'kept-manual';
171
+ if (willWrite) {
172
+ fs.writeFileSync(policyPath, serializeLicensePolicy(finalDoc), 'utf8');
173
+ }
174
+
175
+ if (args.json) {
176
+ process.stdout.write(JSON.stringify({
177
+ escalate: false,
178
+ action,
179
+ wrote: willWrite,
180
+ policy_path: policyPath,
181
+ doc: finalDoc,
182
+ rejected_overrides: rejectedOverrides,
183
+ }) + '\n');
184
+ } else {
185
+ process.stdout.write(
186
+ `detect_target_license: detected ${detection.spdxId ?? '(none)'} -> ` +
187
+ `target_class=${detection.targetClass} workspace_scope=${detection.workspaceScope}\n`,
188
+ );
189
+ for (const w of detection.warnings) process.stdout.write(` warning: ${w}\n`);
190
+ for (const r of rejectedOverrides) process.stdout.write(` rejected override: ${r}\n`);
191
+ process.stdout.write(
192
+ willWrite
193
+ ? `wrote ${policyPath} (${action})\n`
194
+ : `(dry run — pass --write to update ${policyPath}; action would be: ${action})\n`,
195
+ );
196
+ }
197
+ return 0;
198
+ }
199
+
200
+ if (process.argv[1] !== undefined) {
201
+ const invokedUrl = pathToFileURL(path.resolve(process.argv[1])).href;
202
+ if (import.meta.url === invokedUrl) process.exit(main());
203
+ }
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env bash
2
+ # evaluator_umbrella.sh — the external evaluator's "first five minutes" as
3
+ # ONE suite over the PACKED artifact (road-to-credible-install Phase 6).
4
+ #
5
+ # Runs in a clean container (see .github/workflows/evaluator-umbrella.yml)
6
+ # on every release PR and nightly — never against the checkout's working
7
+ # tree: every check below exercises the tarball `npm pack` produces or the
8
+ # clean consumer install made from it.
9
+ #
10
+ # Checks (each individually red-testable via its own gate/tests):
11
+ # 1. audit gate npm audit --omit=dev --audit-level=high
12
+ # 2. tarball integrity publint + prepack script-target assertion
13
+ # (lifecycle gate: tests/scripts/prepack_lifecycle_check.test.ts)
14
+ # 3. headless install npm install --omit=dev <tarball> in a scratch project
15
+ # 4. staleness lints lint_pre_migration_refs (+ consumer-internal refs
16
+ # lint when present)
17
+ # 5. hook-latency bench bench_hook_latency --gate (budget + regression)
18
+ # 6. cold-start budgets CLI --version, mcp-server boot-to-initialize
19
+ # 7. size budgets unpacked, node_modules, dep count (>10% regression
20
+ # fails even under budget)
21
+ # 8. surface budgets CLI registry command count, MCP tools/list count
22
+ # (frozen post-Phase-3 values, ADR-132: 19)
23
+ # 9. npx smoke first-touch paths (--version, --help, mcp initialize)
24
+ # 6-8 feed src/scripts/check_evaluator_budgets.ts against
25
+ # src/config/evaluator-budgets.json (owner + review date lint-enforced).
26
+ #
27
+ # Usage: bash src/scripts/evaluator_umbrella.sh [--skip-pack <tarball>]
28
+ set -euo pipefail
29
+
30
+ ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
31
+ cd "$ROOT"
32
+
33
+ TARBALL=""
34
+ if [[ "${1:-}" == "--skip-pack" && -n "${2:-}" ]]; then
35
+ TARBALL="$2"
36
+ fi
37
+
38
+ step() { printf '\n=== umbrella: %s ===\n' "$1"; }
39
+
40
+ # ---------------------------------------------------------------- 1. audit
41
+ step "npm audit (runtime deps, high+)"
42
+ npm audit --omit=dev --audit-level=high
43
+
44
+ # ------------------------------------------------------------- 2. pack + shape
45
+ if [[ -z "$TARBALL" ]]; then
46
+ step "npm pack (prepack chain: build + discovery + manifest + prepack-check)"
47
+ TARBALL="$(npm pack --silent | tail -1)"
48
+ else
49
+ step "using pre-packed tarball: $TARBALL"
50
+ fi
51
+ [[ -f "$TARBALL" ]] || { echo "❌ tarball missing: $TARBALL" >&2; exit 1; }
52
+
53
+ step "publint (published-package shape)"
54
+ npm run lint:publint --silent
55
+
56
+ # `--ignore-scripts` is NOT honoured for `prepare` by every npm version: on the
57
+ # node-20 container npm still runs it, and this repo's prepare installs the git
58
+ # hooks and prints a banner — straight into the `--json` stdout we parse. Slice
59
+ # from the first `[` so any lifecycle banner ahead of the payload is tolerated
60
+ # instead of turning into `SyntaxError: Unexpected token '✅'`.
61
+ UNPACKED_BYTES="$(npm pack --dry-run --json --ignore-scripts --silent 2>/dev/null \
62
+ | node -e 'let b="";process.stdin.on("data",c=>b+=c).on("end",()=>{const i=b.indexOf("[");const j=JSON.parse(i>=0?b.slice(i):b);console.log(j[0].unpackedSize)})')"
63
+
64
+ # ------------------------------------------------------- 3. headless install
65
+ step "headless consumer install from the tarball"
66
+ WORK="$(mktemp -d)"
67
+ trap 'rm -rf "$WORK"' EXIT
68
+ ( cd "$WORK" && npm init -y >/dev/null 2>&1 \
69
+ && npm install --omit=dev --no-audit --no-fund --silent "$ROOT/$TARBALL" )
70
+ PKG_DIR="$WORK/node_modules/@event4u/agent-config"
71
+ [[ -d "$PKG_DIR" ]] || { echo "❌ install did not produce the package dir" >&2; exit 1; }
72
+
73
+ # --------------------------------------------------------- 4. staleness lints
74
+ step "staleness lints (pre-migration refs)"
75
+ ./scripts-run src/scripts/lint_pre_migration_refs
76
+ if [[ -f src/scripts/lint_consumer_internal_refs.ts ]]; then
77
+ ./scripts-run src/scripts/lint_consumer_internal_refs
78
+ fi
79
+
80
+ # ------------------------------------------------------ 5. hook-latency bench
81
+ step "hook-latency bench (pre-registered budget gate)"
82
+ ./scripts-run src/scripts/bench_hook_latency --gate
83
+
84
+ # ----------------------------------------------- 6-8. measured budget metrics
85
+ step "cold-start + size + surface measurements"
86
+ MEASURE_TMP="$WORK/measurements.json"
87
+ CLI_BIN="$WORK/node_modules/.bin/agent-config"
88
+
89
+ CLI_MS="$(node -e '
90
+ const {execFileSync}=require("node:child_process");
91
+ const t=Date.now();
92
+ execFileSync(process.argv[1],["--version"],{stdio:"ignore"});
93
+ console.log(Date.now()-t);' "$CLI_BIN")"
94
+
95
+ MCP_MS="$(node -e '
96
+ const {spawnSync}=require("node:child_process");
97
+ const t=Date.now();
98
+ const p=spawnSync("node",[process.argv[1]+"/dist/mcp/server.mjs"],{input:JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2024-11-05",capabilities:{},clientInfo:{name:"p",version:"0"}}})+"\n",encoding:"utf-8",timeout:30000});
99
+ if(!(p.stdout||"").includes("serverInfo")){console.error(p.stderr);process.exit(1)}
100
+ console.log(Date.now()-t);' "$PKG_DIR")"
101
+
102
+ NM_MB="$(du -sm "$WORK/node_modules" | awk '{print $1}')"
103
+ DEP_COUNT="$(node -e '
104
+ const j=require(process.argv[1]);
105
+ console.log(Object.keys(j.packages||{}).length-1);' "$WORK/package-lock.json")"
106
+
107
+ CLI_COUNT="$(node -e '
108
+ const fs=require("node:fs");
109
+ const t=fs.readFileSync(process.argv[1],"utf-8");
110
+ console.log((t.match(/\{ name: /g)||[]).length);' "$ROOT/src/cli/registry.ts")"
111
+
112
+ MCP_TOOLS="$(node -e '
113
+ const {spawnSync}=require("node:child_process");
114
+ const reqs=[{jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2024-11-05",capabilities:{},clientInfo:{name:"p",version:"0"}}},{jsonrpc:"2.0",method:"notifications/initialized"},{jsonrpc:"2.0",id:2,method:"tools/list"}];
115
+ const p=spawnSync("node",[process.argv[1]+"/dist/mcp/server.mjs"],{input:reqs.map(r=>JSON.stringify(r)).join("\n")+"\n",encoding:"utf-8",timeout:30000});
116
+ const lines=(p.stdout||"").trim().split("\n").map(l=>{try{return JSON.parse(l)}catch{return null}}).filter(Boolean);
117
+ const resp=lines.find(l=>l.id===2);
118
+ if(!resp||!resp.result||!Array.isArray(resp.result.tools)){console.error("no tools/list result");process.exit(1)}
119
+ console.log(resp.result.tools.length);' "$PKG_DIR")"
120
+
121
+ node -e '
122
+ const fs=require("node:fs");
123
+ const m={
124
+ unpacked_size_mb: Number(process.argv[2])/1e6,
125
+ node_modules_mb: Number(process.argv[3]),
126
+ runtime_dep_count: Number(process.argv[4]),
127
+ cli_version_cold_ms: Number(process.argv[5]),
128
+ mcp_boot_to_initialize_ms: Number(process.argv[6]),
129
+ cli_help_command_count: Number(process.argv[7]),
130
+ mcp_public_tool_count: Number(process.argv[8]),
131
+ };
132
+ fs.writeFileSync(process.argv[1], JSON.stringify(m, null, 2));
133
+ console.log(JSON.stringify(m, null, 1));' \
134
+ "$MEASURE_TMP" "$UNPACKED_BYTES" "$NM_MB" "$DEP_COUNT" "$CLI_MS" "$MCP_MS" "$CLI_COUNT" "$MCP_TOOLS"
135
+
136
+ step "budget gate (absolute + >regression_pct creep)"
137
+ ./scripts-run src/scripts/check_evaluator_budgets --measurements "$MEASURE_TMP"
138
+
139
+ # ------------------------------------------------------------- 9. npx smoke
140
+ step "first-touch smoke (installed bin)"
141
+ "$CLI_BIN" --version >/dev/null
142
+ "$CLI_BIN" --help >/dev/null
143
+
144
+ echo
145
+ echo "✅ evaluator umbrella green — the first five minutes hold on the packed artifact."
@@ -57,7 +57,9 @@
57
57
  "\\bskillui\\b",
58
58
  "\\bgraphify\\b",
59
59
  "graphify-labs",
60
- "penpax"
60
+ "penpax",
61
+ "\\bagent-reach\\b",
62
+ "panniantong"
61
63
  ],
62
64
  "skip_paths": [
63
65
  "src/scripts/check_no_external_sources.py",
@@ -89,15 +91,17 @@
89
91
  "agents/roadmaps/archive/road-to-final-state-and-market-readiness.md",
90
92
  "agents/roadmaps/archive/road-to-image-brand-typography.md",
91
93
  "agents/roadmaps/archive/road-to-subagent-value-realization.md",
92
- "agents/roadmap-assets/road-to-image-brand-typography.assets.md"
94
+ "agents/roadmap-assets/road-to-image-brand-typography.assets.md",
95
+ "CREDITS.md",
96
+ "agents/roadmaps/archive/road-to-ecosystem-harvest-index.md"
93
97
  ],
94
98
  "skip_reason": {
95
- "vendored_cluster": "design-intelligence/corpus-grounding/design-tokens/react-shadcn-ui/tailwind-engineer + cost/*.mjs ship vendored Apache/MIT code; their upstream attribution is license-required and must NOT be stripped (ADR-061).",
99
+ "vendored_cluster": "design-intelligence/corpus-grounding/design-tokens/react-shadcn-ui/tailwind-engineer + cost/*.mjs ship vendored Apache/MIT code; their upstream attribution is license-required and must NOT be stripped (ADR-061). CREDITS.md is the repo-level attribution file FOR that same cluster — it names the upstreams because the licenses require it, which is the one case source-confidentiality explicitly exempts. It was missing here, so the gate flagged the very attribution the rule mandates.",
96
100
  "recommendation_docs": "mcp.md, mcp-registries.md, DISTRIBUTION_CHECKLIST.md, ADR-086, marketing-copy.yml reference registries (Smithery/Glama) as recommendations/distribution targets — allowed.",
97
101
  "generated_bundles": "content.json* bundle the vendored-cluster skill bodies above.",
98
102
  "self": "the linter + its denylist + the source-confidentiality rule necessarily contain the deny tokens as data.",
99
103
  "validate_safe_paths": "telegraph-derived (MIT) ported code; upstream attribution is license-required.",
100
- "archived_roadmaps_newly_tracked": "Archived roadmaps (and their assets) that predate the source-confidentiality sweep became tracked via the 2026-07 agents-dir gitignore hygiene change. They are frozen historical records; the claudekit mentions are ADR-061 license-attribution work and the remaining names are historical planning references. New roadmaps stay subject to the gate."
104
+ "archived_roadmaps_newly_tracked": "Archived roadmaps (and their assets) that predate the source-confidentiality sweep became tracked via the 2026-07 agents-dir gitignore hygiene change. They are frozen historical records; the claudekit mentions are ADR-061 license-attribution work and the remaining names are historical planning references. New roadmaps stay subject to the gate. road-to-ecosystem-harvest-index.md is the sharpest case: the flagged line is its own acceptance criterion, 'No harvest-family artifact names a real external source' — it quotes the names in order to assert their absence, so the gate fires on the sentence that records the cleanup. road-to-opt-retrieval-and-memory.md was REMOVED from this list on 2026-07-28 (road-to-native-code-intelligence Phase 6): its two clear-text mentions named a gitignored borrow-catalogue inbox file, which carries no historical value that a neutral descriptor loses — so the mentions were rewritten and the exception retired rather than kept. Retiring an exception is preferred over holding one whenever the named token is not license-required attribution and not load-bearing for the record."
101
105
  },
102
106
  "_excluded_tokens": {
103
107
  "agent-os": "collides with our own coined 'Agent-OS primitive' term (universal-skills) — too FP-prone to auto-deny; scrub external 'agent-os' mentions by review.",