@event4u/agent-config 9.9.0 → 9.10.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 (384) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +153 -194
  3. package/README.md +1 -1
  4. package/dist/agent-src/commands/agent-status.md +12 -11
  5. package/dist/agent-src/commands/agents/user/accept.md +115 -30
  6. package/dist/agent-src/commands/agents/user/delete.md +147 -0
  7. package/dist/agent-src/commands/agents/user/review.md +65 -28
  8. package/dist/agent-src/commands/agents/user/show.md +82 -29
  9. package/dist/agent-src/commands/agents/user/update.md +2 -2
  10. package/dist/agent-src/commands/agents/user.md +16 -3
  11. package/dist/agent-src/commands/check-current-md.md +0 -10
  12. package/dist/agent-src/commands/condense.md +28 -97
  13. package/dist/agent-src/commands/cost/report.md +7 -0
  14. package/dist/agent-src/commands/fix/portability.md +0 -8
  15. package/dist/agent-src/commands/fix/refs.md +0 -8
  16. package/dist/agent-src/commands/humanize.md +2 -2
  17. package/dist/agent-src/commands/jira-ticket.md +1 -1
  18. package/dist/agent-src/commands/memory/load.md +11 -0
  19. package/dist/agent-src/commands/optimize/skills.md +1 -1
  20. package/dist/agent-src/commands/pr/create.md +4 -4
  21. package/dist/agent-src/commands/profile/show.md +3 -3
  22. package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
  23. package/dist/agent-src/commands/security-audit-config.md +1 -1
  24. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  25. package/dist/agent-src/commands/tdd.md +21 -0
  26. package/dist/agent-src/commands/team/delegate.md +2 -2
  27. package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
  28. package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
  29. package/dist/agent-src/commands/team.md +4 -1
  30. package/dist/agent-src/commands/upstream-contribute.md +0 -1
  31. package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
  32. package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
  33. package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
  34. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
  35. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  36. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
  37. package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
  38. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
  39. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
  40. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
  41. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
  42. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +67 -37
  43. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  44. package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
  45. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
  46. package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
  47. package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
  48. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +24 -0
  49. package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
  50. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
  51. package/dist/agent-src/contexts/execution/subagent-response-contract.md +5 -5
  52. package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
  53. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +13 -13
  54. package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
  55. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  56. package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
  57. package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
  58. package/dist/agent-src/contexts/model-recommendations.md +3 -2
  59. package/dist/agent-src/contexts/subagent-configuration.md +3 -3
  60. package/dist/agent-src/ghostwriter/README.md +2 -2
  61. package/dist/agent-src/packs/README.md +1 -1
  62. package/dist/agent-src/personas/README.md +5 -5
  63. package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
  64. package/dist/agent-src/personas/backend-architect.md +24 -23
  65. package/dist/agent-src/personas/eloquent-tamer.md +30 -30
  66. package/dist/agent-src/personas/frontend-engineer.md +30 -30
  67. package/dist/agent-src/personas/product-owner.md +41 -38
  68. package/dist/agent-src/personas/qa.md +13 -13
  69. package/dist/agent-src/personas/security-engineer.md +22 -22
  70. package/dist/agent-src/presets/README.md +3 -3
  71. package/dist/agent-src/profiles/README.md +3 -3
  72. package/dist/agent-src/rules/active-remediation.md +2 -2
  73. package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
  74. package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
  75. package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
  76. package/dist/agent-src/rules/broken-access-control.md +4 -4
  77. package/dist/agent-src/rules/code-comment-discipline.md +1 -1
  78. package/dist/agent-src/rules/code-provenance.md +2 -2
  79. package/dist/agent-src/rules/commit-policy.md +4 -9
  80. package/dist/agent-src/rules/communication-through-line.md +5 -5
  81. package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
  82. package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
  83. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  84. package/dist/agent-src/rules/domain-safety-pii.md +1 -1
  85. package/dist/agent-src/rules/external-code-graph-interop.md +1 -1
  86. package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
  87. package/dist/agent-src/rules/finance-safety-floor.md +1 -1
  88. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
  89. package/dist/agent-src/rules/history-discipline.md +1 -1
  90. package/dist/agent-src/rules/legal-safety-floor.md +1 -1
  91. package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
  92. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
  93. package/dist/agent-src/rules/media-governance-routing.md +13 -13
  94. package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
  95. package/dist/agent-src/rules/no-cheap-questions.md +7 -7
  96. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
  97. package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
  98. package/dist/agent-src/rules/onboarding-gate.md +14 -4
  99. package/dist/agent-src/rules/persona-governance.md +2 -2
  100. package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
  101. package/dist/agent-src/rules/preservation-guard.md +10 -2
  102. package/dist/agent-src/rules/question-not-instruction.md +1 -1
  103. package/dist/agent-src/rules/roadmap-progress-sync.md +6 -6
  104. package/dist/agent-src/rules/rule-type-governance.md +1 -1
  105. package/dist/agent-src/rules/scale-discipline.md +1 -1
  106. package/dist/agent-src/rules/scope-control.md +1 -1
  107. package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
  108. package/dist/agent-src/rules/security-sensitive-stop.md +17 -11
  109. package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
  110. package/dist/agent-src/rules/session-canary.md +1 -1
  111. package/dist/agent-src/rules/skill-quality.md +1 -1
  112. package/dist/agent-src/rules/source-confidentiality.md +21 -19
  113. package/dist/agent-src/rules/source-of-truth.md +6 -5
  114. package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
  115. package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
  116. package/dist/agent-src/rules/think-before-action.md +5 -5
  117. package/dist/agent-src/rules/token-budget-discipline.md +5 -3
  118. package/dist/agent-src/rules/token-efficiency.md +2 -2
  119. package/dist/agent-src/rules/untrusted-input-defense.md +4 -4
  120. package/dist/agent-src/rules/user-interaction.md +12 -0
  121. package/dist/agent-src/rules/verify-before-complete.md +4 -24
  122. package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
  123. package/dist/agent-src/skills/agent-security-review/SKILL.md +52 -45
  124. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  125. package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
  126. package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
  127. package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
  128. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
  129. package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
  130. package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
  131. package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
  132. package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
  133. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  134. package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
  135. package/dist/agent-src/skills/code-intelligence/SKILL.md +0 -1
  136. package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
  137. package/dist/agent-src/skills/code-review/SKILL.md +6 -6
  138. package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
  139. package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
  140. package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
  141. package/dist/agent-src/skills/context-document/SKILL.md +23 -21
  142. package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
  143. package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
  144. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  145. package/dist/agent-src/skills/design-review/SKILL.md +15 -14
  146. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
  147. package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
  148. package/dist/agent-src/skills/docker/SKILL.md +1 -1
  149. package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
  150. package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
  151. package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
  152. package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
  153. package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
  154. package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
  155. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -5
  156. package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
  157. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
  158. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  159. package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
  160. package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
  161. package/dist/agent-src/skills/grafana/SKILL.md +5 -0
  162. package/dist/agent-src/skills/humanizer/SKILL.md +83 -66
  163. package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
  164. package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
  165. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
  166. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
  167. package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
  168. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
  169. package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
  170. package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
  171. package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
  172. package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
  173. package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
  174. package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
  175. package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
  176. package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
  177. package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
  178. package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
  179. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  180. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
  181. package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
  182. package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
  183. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +7 -7
  184. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +3 -3
  185. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +4 -4
  186. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
  187. package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
  188. package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
  189. package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
  190. package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
  191. package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
  192. package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
  193. package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
  194. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +129 -120
  195. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
  196. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
  197. package/dist/agent-src/skills/project-analysis-core/SKILL.md +4 -4
  198. package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
  199. package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
  200. package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
  201. package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
  202. package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
  203. package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
  204. package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
  205. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +55 -19
  206. package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
  207. package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
  208. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
  209. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -5
  210. package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
  211. package/dist/agent-src/skills/refine-ticket/SKILL.md +20 -2
  212. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  213. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  214. package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
  215. package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -77
  216. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  217. package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
  218. package/dist/agent-src/skills/security-audit/SKILL.md +26 -9
  219. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +38 -16
  220. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +14 -11
  221. package/dist/agent-src/skills/skill-writing/SKILL.md +9 -8
  222. package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
  223. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
  224. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
  225. package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
  226. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +22 -8
  227. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +28 -2
  228. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
  229. package/dist/agent-src/skills/systematic-debugging/SKILL.md +22 -21
  230. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
  231. package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
  232. package/dist/agent-src/skills/terraform/SKILL.md +2 -2
  233. package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
  234. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
  235. package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
  236. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  237. package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
  238. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
  239. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
  240. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
  241. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
  242. package/dist/agent-src/skills/video-director/SKILL.md +7 -7
  243. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +3 -3
  244. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  245. package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
  246. package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
  247. package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
  248. package/dist/agent-src/templates/contexts.md +1 -1
  249. package/dist/agent-src/templates/features.md +1 -1
  250. package/dist/agent-src/templates/roadmaps.md +125 -116
  251. package/dist/agent-src/templates/rule.md +2 -1
  252. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  253. package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  254. package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
  255. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
  256. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
  257. package/dist/agent-src/user-types/README.md +8 -8
  258. package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
  259. package/dist/agent-src/user-types/metalworking-shop.md +35 -34
  260. package/dist/agent-src/user-types/truck-driver.md +22 -20
  261. package/dist/cli/python/workspace_roles.js +2 -2
  262. package/dist/cli/python/workspace_roles.js.map +1 -1
  263. package/dist/discovery/deprecation-report.md +1 -1
  264. package/dist/discovery/discovery-manifest.json +88 -62
  265. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  266. package/dist/discovery/discovery-manifest.summary.md +3 -3
  267. package/dist/discovery/orphan-report.md +1 -1
  268. package/dist/discovery/packs.json +6 -5
  269. package/dist/discovery/trust-report.md +2 -2
  270. package/dist/discovery/workspaces.json +5 -4
  271. package/dist/hooks/dispatch.js +186 -12
  272. package/dist/install/install.mjs +8 -0
  273. package/dist/mcp/registry-manifest.json +3 -3
  274. package/dist/mcp/server.json +2 -2
  275. package/dist/mcp/server.mjs +1199 -857
  276. package/dist/router.json +1 -1
  277. package/dist/scripts/_lib/compile_time_toggles.js +48 -0
  278. package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
  279. package/dist/scripts/condense.js +234 -217
  280. package/dist/scripts/condense.js.map +1 -1
  281. package/dist/server/schemas/settings.js +4 -0
  282. package/dist/server/schemas/settings.js.map +1 -1
  283. package/dist/shared/userMd/utils.js +30 -0
  284. package/dist/shared/userMd/utils.js.map +1 -1
  285. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -1
  286. package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
  287. package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
  288. package/package.json +1 -1
  289. package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  290. package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  291. package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
  292. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
  293. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
  294. package/src/config/agent-settings.template.yml +32 -2
  295. package/src/config/ci-local-parity.yml +142 -0
  296. package/src/config/gate-coverage.yml +127 -0
  297. package/src/config/preamble-payload-budget.json +44 -0
  298. package/src/scripts/_cli/cmd_doctor.ts +78 -2
  299. package/src/scripts/_lib/agent_user_profile.ts +381 -0
  300. package/src/scripts/_lib/agents_overlay.ts +9 -0
  301. package/src/scripts/_lib/anchor_eval.ts +311 -0
  302. package/src/scripts/_lib/cc_transcript.ts +316 -0
  303. package/src/scripts/_lib/compile_time_toggles.ts +79 -0
  304. package/src/scripts/_lib/confusables.ts +101 -0
  305. package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
  306. package/src/scripts/_lib/managed_agents_folder.ts +181 -0
  307. package/src/scripts/_lib/payload_hash_drift.ts +126 -0
  308. package/src/scripts/_lib/preservation_migration.ts +291 -0
  309. package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
  310. package/src/scripts/_lib/scan_scope.ts +115 -0
  311. package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
  312. package/src/scripts/_lib/user_global_observations.ts +830 -0
  313. package/src/scripts/_lib/user_global_revocations.ts +110 -0
  314. package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
  315. package/src/scripts/ai_council/blind_review.ts +0 -0
  316. package/src/scripts/ai_council/budget_guard.ts +90 -11
  317. package/src/scripts/ai_council/bundler.ts +2 -2
  318. package/src/scripts/ai_council/clients.ts +59 -3
  319. package/src/scripts/ai_council/config.ts +38 -0
  320. package/src/scripts/ai_council/orchestrator.ts +54 -9
  321. package/src/scripts/ai_team/team_dispatch.ts +17 -6
  322. package/src/scripts/anchor_eval_falsify.ts +198 -0
  323. package/src/scripts/anchor_scoring_run.ts +239 -0
  324. package/src/scripts/annotate_discovery.ts +1 -65
  325. package/src/scripts/bench_quality_run.ts +168 -4
  326. package/src/scripts/cache_realization_report.ts +782 -0
  327. package/src/scripts/check_artefact_count_messaging.ts +5 -1
  328. package/src/scripts/check_augment_description_cap.ts +15 -4
  329. package/src/scripts/check_ci_local_parity.ts +317 -0
  330. package/src/scripts/check_condensation.ts +96 -191
  331. package/src/scripts/check_context_paths.ts +38 -9
  332. package/src/scripts/check_gate_coverage.ts +299 -0
  333. package/src/scripts/check_iron_law_prominence.ts +22 -1
  334. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  335. package/src/scripts/check_no_new_legacy_path.ts +16 -6
  336. package/src/scripts/check_no_roadmap_refs.ts +22 -9
  337. package/src/scripts/check_originality_freshness.ts +167 -0
  338. package/src/scripts/check_preamble_payload_budget.ts +130 -0
  339. package/src/scripts/check_proposal.ts +0 -0
  340. package/src/scripts/check_references.ts +0 -1
  341. package/src/scripts/check_safety_floor_untouched.ts +171 -24
  342. package/src/scripts/check_site_links.ts +62 -3
  343. package/src/scripts/ci_status.ts +0 -0
  344. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  345. package/src/scripts/code_graph/build.ts +0 -0
  346. package/src/scripts/command_suggester/types.ts +0 -0
  347. package/src/scripts/compile_router.ts +10 -14
  348. package/src/scripts/condense.sh +3 -4
  349. package/src/scripts/condense.ts +247 -228
  350. package/src/scripts/cost/track.mjs +168 -33
  351. package/src/scripts/cost_summary.ts +33 -1
  352. package/src/scripts/council_cli.ts +45 -3
  353. package/src/scripts/discovery_graph.ts +0 -0
  354. package/src/scripts/encoding_corpus.ts +500 -0
  355. package/src/scripts/encoding_corpus_report.ts +216 -0
  356. package/src/scripts/generate_index.ts +19 -2
  357. package/src/scripts/install-hooks.sh +2 -2
  358. package/src/scripts/learning_sidecar.ts +0 -0
  359. package/src/scripts/lint_confusables.ts +10 -72
  360. package/src/scripts/lint_featured_skills.ts +0 -0
  361. package/src/scripts/lint_hidden_unicode.ts +208 -0
  362. package/src/scripts/lint_load_context.ts +17 -5
  363. package/src/scripts/lint_new_skill_gate.ts +9 -3
  364. package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
  365. package/src/scripts/lint_originality.ts +1 -1
  366. package/src/scripts/lint_skill_originality.ts +1 -1
  367. package/src/scripts/lint_ticket_buildable.ts +1 -1
  368. package/src/scripts/mcp_server/tools.ts +4 -4
  369. package/src/scripts/measure_scope_dedup.ts +224 -0
  370. package/src/scripts/memory_lookup.ts +0 -0
  371. package/src/scripts/mine_session.ts +98 -0
  372. package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
  373. package/src/scripts/preamble_byte_census.ts +574 -0
  374. package/src/scripts/probe_skill_registration.ts +2 -2
  375. package/src/scripts/redact_hook_capture.ts +13 -0
  376. package/src/scripts/release.ts +65 -10
  377. package/src/scripts/router_telemetry.ts +1 -1
  378. package/src/scripts/second_brain_retrieval.ts +14 -4
  379. package/src/scripts/skill_linter.ts +5 -0
  380. package/src/scripts/surface-tiers.yml +2 -0
  381. package/src/scripts/validate_pack_yaml.ts +0 -0
  382. package/src/server/schemas/settings.ts +8 -0
  383. package/src/shared/userMd/utils.ts +31 -0
  384. package/dist/agent-src/rules/telegraph-speak.md +0 -87
@@ -109,18 +109,69 @@ different model.
109
109
 
110
110
  ## Claude Code note
111
111
 
112
- In Claude Code, prompt caching is automatic — resending the same context prefix
113
- is cheap, so keeping a stable prefix pays off without any explicit
114
- `cache_control`. The session-level hygiene levers are `/clear` and `/compact` to
115
- shed accumulated context, plus subagent delegation for verbose output so it
116
- never lands in the main context window.
112
+ In Claude Code, prompt caching is automatic for the **main loop** — resending
113
+ the same context prefix is cheap, so keeping a stable prefix pays off without
114
+ any explicit `cache_control`. The session-level hygiene levers are `/clear`
115
+ and `/compact` to shed accumulated context, plus subagent delegation for
116
+ verbose output so it never lands in the main context window.
117
+
118
+ **Subagents and forks pay a different cache economy — verified against host
119
+ version 2.1.220 (2026-07-30), re-check on drift:**
120
+
121
+ - A **named subagent** starts its own conversation with its own system
122
+ prompt and tool set. It builds its own cache from scratch, so its **first
123
+ call has no cache hit** — the entire per-spawn preamble (rules, tools,
124
+ dispatch prompt) is a cold write. Subagents use the **five-minute TTL**
125
+ even on a subscription; there is no per-agent setting to change that (see
126
+ `## Known upstream costs` below).
127
+ - A **fork** inherits the parent's system prompt, tools, and conversation
128
+ history exactly, so its first request **reads the parent's cache** instead
129
+ of writing a fresh one — the only documented mechanism that shares a cache
130
+ across a dispatch boundary. Forking forces background mode, which changes
131
+ the tool set and therefore invalidates the very prefix that motivated the
132
+ fork; weigh that cost before reaching for it — see the fork-vs-subagent
133
+ ordering rule in See also.
134
+ - Either way, the **cold-start preamble is re-written on every spawn** — the
135
+ always-loaded rule set, the tool definitions, and the dispatch prompt are
136
+ not shared across separate subagent instances. Fan-out (many subagents
137
+ from one parent) multiplies this cost by cohort size; see
138
+ `## Known upstream costs` below for the fan-out re-prefill issue this
139
+ package cannot fix.
140
+
141
+ ## Known upstream costs
142
+
143
+ Host-controlled behaviour this package has confirmed but cannot change at
144
+ any layer. Each entry carries the host version observed and the command to
145
+ re-verify it — a stale entry degrades into a dated observation, never a
146
+ false promise, when Anthropic changes the behaviour underneath it.
147
+
148
+ | Cost | Observed on | Re-verify |
149
+ |---|---|---|
150
+ | Fan-out (`do-in-parallel`-shaped dispatch) re-prefills the parent-accumulated context **per child** — the waste scales linearly with fan-out width, worst exactly where fan-out is most valuable (anthropics/claude-code#81389, open). No fix at any layer. | Claude Code 2.1.220, 2026-07-30 | `claude --version`; re-check the linked issue for a status change |
151
+ | Host-dispatched subagents are pinned to the **five-minute** cache TTL regardless of subscription tier or any environment variable; `ENABLE_PROMPT_CACHING_1H` does not apply to them. | Claude Code 2.1.220, 2026-07-30 | `claude --version`; re-check the official caching docs for a subagent-TTL setting |
152
+
153
+ Neither entry implies a package-side fix exists or is planned — both are
154
+ request-construction facts inside the host binary, outside this package's
155
+ reach. This package's own scope is measurement and payload size (what it
156
+ authors), never subagent request construction (what the host authors).
117
157
 
118
158
  ## See also
119
159
 
160
+ - [`cache-economy-refusals`](../../../agents/settings/contexts/cache-economy-refusals.md) —
161
+ the measured cache figures behind the Claude Code note above, plus the
162
+ refusals (no interception proxy, no blanket 1h TTL, no cache-hit auto-tuning)
163
+ recorded so they are not rebuilt.
164
+
120
165
  - [`model-recommendation.md`](model-recommendation.md) — tier routing (the
121
166
  capability band behind lever 3).
122
167
  - [`size-and-scope.md`](size-and-scope.md) — token discipline for the artifacts
123
168
  that become the cached prefix.
169
+ - [`subagent-orchestration/prompts/README.md`](../../../src/skills/subagent-orchestration/prompts/README.md)
170
+ § Prompt-cache discipline — sibling-uniformity rules and the
171
+ fork-vs-subagent dispatch ordering that follow from this cache economy.
172
+ - [`docs/contracts/ai-council-config.md`](../../contracts/ai-council-config.md)
173
+ § `prompt_cache.ttl` — the one surface where this package DOES control a
174
+ cache-control TTL (the council's own Anthropic calls, never host subagents).
124
175
  - The Claude Code `claude-api` plugin skill (external, not vendored here) — the
125
176
  authoritative, versioned API reference these figures derive from; re-check it
126
177
  when Anthropic pricing or the caching/batch surface changes.
@@ -1,3 +1,13 @@
1
+ ---
2
+ demo_for: minimal-safe-diff, think-before-action
3
+ layer: pattern-memory
4
+ prose_delta:
5
+ rule_chars_before: 5927
6
+ rule_chars_after: 6903
7
+ measured_at: lint-examples-shape-conformance-pass
8
+ note: "Counts are of THIS demo file, measured with wc -c before and after the pass. The delta is frontmatter plus the Demo / Wrong shape / Right shape / Failure mode / Why it works headings required by lint_examples — no prose was migrated out of a rule and none was removed; every code block is byte-identical."
9
+ ---
10
+
1
11
  # Simplicity and Goal Discipline — wrong/right demos
2
12
 
3
13
  Recognition surface for [`minimal-safe-diff § Anti-over-engineering`](../../src/rules/minimal-safe-diff.md)
@@ -7,11 +17,13 @@ execution clause in `think-before-action`. Per council convergence
7
17
  the violation cannot recognize it, no matter how crisp the checklist question.
8
18
  Match your diff against the *right* column before presenting.
9
19
 
10
- ## 1. Over-abstraction vs. one function
20
+ ## Demo 1 — Over-abstraction vs. one function
11
21
 
12
22
  **Ask:** "Add a function to calculate a percentage discount."
13
23
 
14
- **Wrong — Strategy pattern for a single caller (PHP):**
24
+ ### Wrong shape
25
+
26
+ Strategy pattern for a single caller (PHP):
15
27
 
16
28
  ```php
17
29
  interface DiscountStrategy { public function calculate(float $amount): float; }
@@ -21,7 +33,13 @@ final readonly class DiscountConfig { /* strategy, minPurchase, maxDiscount */ }
21
33
  final class DiscountCalculator { /* 30+ lines of orchestration */ }
22
34
  ```
23
35
 
24
- **Right — one function until the second discount type is real:**
36
+ **Failure mode:** the wrong version is not "bad code" — it is *premature*
37
+ code: harder to read, more surface to test, and speculative until the
38
+ requirement exists.
39
+
40
+ ### Right shape
41
+
42
+ One function until the second discount type is real:
25
43
 
26
44
  ```php
27
45
  function calculateDiscount(float $amount, float $percent): float
@@ -30,17 +48,19 @@ function calculateDiscount(float $amount, float $percent): float
30
48
  }
31
49
  ```
32
50
 
33
- **Why:** No second caller, no second strategy → no abstraction. When the
51
+ ### Why it works
52
+
53
+ No second caller, no second strategy → no abstraction. When the
34
54
  second type genuinely arrives, refactor then (`prefer-enums-over-literals` /
35
- Strategy sniff test governs that moment). The wrong version is not "bad
36
- code" — it is *premature* code: harder to read, more surface to test, and
37
- speculative until the requirement exists.
55
+ Strategy sniff test governs that moment).
38
56
 
39
- ## 2. Speculative features vs. just-what-was-asked
57
+ ## Demo 2 — Speculative features vs. just-what-was-asked
40
58
 
41
59
  **Ask:** "Save user preferences to the database."
42
60
 
43
- **Wrong — options nobody requested (TypeScript):**
61
+ ### Wrong shape
62
+
63
+ Options nobody requested (TypeScript):
44
64
 
45
65
  ```ts
46
66
  class PreferenceManager {
@@ -52,7 +72,13 @@ class PreferenceManager {
52
72
  }
53
73
  ```
54
74
 
55
- **Right — the ask, nothing else:**
75
+ **Failure mode:** every optional parameter with one call site, every
76
+ "flexibility" flag, and every handler for a scenario that cannot occur is
77
+ speculative complexity.
78
+
79
+ ### Right shape
80
+
81
+ The ask, nothing else:
56
82
 
57
83
  ```ts
58
84
  async function savePreferences(db: Db, userId: number, prefs: Prefs) {
@@ -61,66 +87,94 @@ async function savePreferences(db: Db, userId: number, prefs: Prefs) {
61
87
  }
62
88
  ```
63
89
 
64
- **Why:** Every optional parameter with one call site, every "flexibility"
65
- flag, and every handler for a scenario that cannot occur is speculative
66
- complexity. Add caching when performance data demands it, validation when bad
90
+ ### Why it works
91
+
92
+ Add caching when performance data demands it, validation when bad
67
93
  data appears, merging when the requirement lands.
68
94
 
69
- ## 3. Drive-by refactor vs. surgical diff
95
+ ## Demo 3 — Drive-by refactor vs. surgical diff
70
96
 
71
97
  **Ask:** "Fix the bug where an empty email crashes the validator."
72
98
 
73
- **Wrong:** the fix PLUS improved email regex, new username length checks,
99
+ ### Wrong shape
100
+
101
+ The fix PLUS improved email regex, new username length checks,
74
102
  rewritten comments, and a fresh docstring — four changes, one was asked.
75
103
 
76
- **Right:** only the lines that make the empty-email case safe change; every
104
+ **Failure mode:** the "improvements" belong in a follow-up proposed via
105
+ `active-remediation`'s note-and-ask ladder — not smuggled into the bug fix.
106
+
107
+ ### Right shape
108
+
109
+ Only the lines that make the empty-email case safe change; every
77
110
  other line of the function is byte-identical.
78
111
 
79
- **Why:** Every changed line must trace to the stated task
80
- (`minimal-safe-diff`). The "improvements" belong in a follow-up proposed via
81
- `active-remediation`'s note-and-ask ladder — not smuggled into the bug fix.
112
+ ### Why it works
82
113
 
83
- ## 4. Style drift vs. match-existing-style
114
+ Every changed line must trace to the stated task
115
+ (`minimal-safe-diff`).
116
+
117
+ ## Demo 4 — Style drift vs. match-existing-style
84
118
 
85
119
  **Ask:** "Add logging to the upload function."
86
120
 
87
- **Wrong:** the diff adds logging AND flips quote style, adds type hints,
121
+ ### Wrong shape
122
+
123
+ The diff adds logging AND flips quote style, adds type hints,
88
124
  reshapes the boolean return, reflows whitespace — the reviewer can no longer
89
125
  see the logging change.
90
126
 
91
- **Right:** logger import + three log lines, inserted in the file's existing
127
+ **Failure mode:** a diff that reformats while changing behavior hides the
128
+ behavior change.
129
+
130
+ ### Right shape
131
+
132
+ Logger import + three log lines, inserted in the file's existing
92
133
  style (its quoting, its spacing, its return pattern), even where you would
93
134
  personally write it differently.
94
135
 
95
- **Why:** Style consistency is a repo property, not a per-diff taste decision.
96
- A diff that reformats while changing behavior hides the behavior change.
136
+ ### Why it works
97
137
 
98
- ## 5. Own-orphan vs. pre-existing dead code
138
+ Style consistency is a repo property, not a per-diff taste decision.
139
+
140
+ ## Demo 5 — Own-orphan vs. pre-existing dead code
99
141
 
100
142
  **Ask:** "Replace the legacy formatter call in `processA` with the new one."
101
143
 
102
- **Wrong (too little):** `processA` no longer calls `legacyFormat()`, but the
144
+ ### Wrong shape
145
+
146
+ **Too little:** `processA` no longer calls `legacyFormat()`, but the
103
147
  now-unused import and the helper it alone referenced stay behind — the diff
104
148
  shipped its own litter.
105
149
 
106
- **Wrong (too much):** while in the file, the agent also deletes
150
+ **Too much:** while in the file, the agent also deletes
107
151
  `oldHelper()`, which `processB` — untouched by this diff — still references
108
152
  in another module, or which was already orphaned *before* this task.
109
153
 
110
- **Right:** remove exactly the imports/variables/functions whose **last
154
+ **Failure mode:** two directions of the same error — the diff shipped its own
155
+ litter (too little), or it deleted code that untouched files still reference,
156
+ or that was already orphaned before this task (too much).
157
+
158
+ ### Right shape
159
+
160
+ Remove exactly the imports/variables/functions whose **last
111
161
  reference disappeared in a file this diff touched**; anything still
112
162
  referenced from untouched files — or orphaned before the task — is
113
163
  pre-existing debt: mention it, don't delete it.
114
164
 
115
- **Why:** The boundary is mechanical (grep after editing), so there is no
165
+ ### Why it works
166
+
167
+ The boundary is mechanical (grep after editing), so there is no
116
168
  judgment call to rationalize — see
117
169
  [`minimal-safe-diff § Own-orphan cleanup`](../../src/rules/minimal-safe-diff.md#own-orphan-cleanup).
118
170
 
119
- ## 6. Vague plan vs. verifiable per-step plan
171
+ ## Demo 6 — Vague plan vs. verifiable per-step plan
120
172
 
121
173
  **Ask:** "Add rate limiting to the API."
122
174
 
123
- **Wrong — unverifiable narration:**
175
+ ### Wrong shape
176
+
177
+ Unverifiable narration:
124
178
 
125
179
  ```
126
180
  1. Review the code
@@ -129,7 +183,11 @@ judgment call to rationalize — see
129
183
  4. Test the changes
130
184
  ```
131
185
 
132
- **Right — every step carries its check:**
186
+ **Failure mode:** a step without a `verify:` is an assumption.
187
+
188
+ ### Right shape
189
+
190
+ Every step carries its check:
133
191
 
134
192
  ```
135
193
  1. In-memory limit on one endpoint → verify: 11th request in a minute → 429 (test)
@@ -137,7 +195,9 @@ judgment call to rationalize — see
137
195
  3. Shared store backend → verify: counter survives app restart; two instances share the count
138
196
  ```
139
197
 
140
- **Why:** A step without a `verify:` is an assumption. Strong criteria let the
198
+ ### Why it works
199
+
200
+ Strong criteria let the
141
201
  loop run independently (`verify-before-complete` then has something to
142
202
  check); "make it work" guarantees clarification churn after the fact instead
143
203
  of before.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
3
  "mcpName": "io.github.event4u-app/agent-config",
4
- "version": "9.9.0",
4
+ "version": "9.10.0",
5
5
  "description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including \"zero runtime daemon\".",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -234,7 +234,7 @@ function _within_window(ts_bucket: string, window_days: number | null): boolean
234
234
  return ms >= Date.now() - window_days * 24 * 60 * 60 * 1000;
235
235
  }
236
236
 
237
- type BucketKey = string; // `${tier}${command}` — composite (tier, command) key.
237
+ type BucketKey = string; // `${tier}\0${command}` — composite (tier, command) key.
238
238
  interface RowStats {
239
239
  count: number;
240
240
  distinct_users: number;
@@ -274,7 +274,7 @@ function aggregate(log_path: string, window_days: number): AggregateResult {
274
274
  }
275
275
  kept += 1;
276
276
  const tier = Math.trunc(rec.tier);
277
- const key = `${tier}${rec.command}`;
277
+ const key = `${tier}\0${rec.command}`;
278
278
  if (!keyMeta.has(key)) {
279
279
  keyMeta.set(key, { tier, command: rec.command });
280
280
  counts.set(key, 0);
@@ -336,7 +336,7 @@ function _classify_token_violations(
336
336
  tokens: Record<string, Any>,
337
337
  ): [Record<string, Any>[], Record<string, Any>[]] {
338
338
  const matched: Record<string, Any>[] = [];
339
- // Insertion-ordered map keyed by `${category}${value}` to mirror the
339
+ // Insertion-ordered map keyed by `${category}\0${value}` to mirror the
340
340
  // Python `dict[tuple[str, str], int]` insertion order.
341
341
  const unmatched_counts = new Map<string, { category: string; value: string; count: number }>();
342
342
  for (const finding of findings) {
@@ -356,7 +356,7 @@ function _classify_token_violations(
356
356
  matched.push(finding);
357
357
  continue;
358
358
  }
359
- const key = `${category}${value}`;
359
+ const key = `${category}\0${value}`;
360
360
  const existing = unmatched_counts.get(key);
361
361
  if (existing) {
362
362
  existing.count += 1;
@@ -294,7 +294,7 @@ function _filter_known(violations: Any[], known: Any[]): Any[] {
294
294
  * scalars, mirroring Python tuple-equality in a JS `Set`.
295
295
  */
296
296
  function _keyOf(rule: Any, selector: Any): string {
297
- return `${_tag(rule)}${_tag(selector)}`;
297
+ return `${_tag(rule)}\0${_tag(selector)}`;
298
298
  }
299
299
 
300
300
  function _tag(v: Any): string {
@@ -145,6 +145,36 @@ rule_loading_tier: __RULE_LOADING_TIER__
145
145
  lean_projection:
146
146
  mode: eager-all
147
147
 
148
+ # --- Telegraph condensation (output-side) ---
149
+ #
150
+ # speak_scope: off | prose_only | aggressive (QUOTE the value — bare `off` is a
151
+ # YAML 1.1 boolean, not the string)
152
+ #
153
+ # `off` is the shipped default per docs/adrs/telegraph/0001-default-off-until-bench.md
154
+ # (Status: accepted) and docs/contracts/condensation-default-kill-criterion.md.
155
+ # Reason it is off: the only output-side bench (telegraph-v1, n=10, 2026-05-16)
156
+ # measured median vs_terse -9.27% (API counts) / -5.47% (exact cl100k_base
157
+ # re-analysis) — telegraph emits MORE tokens than a plain "be terse" instruction.
158
+ # The kill-criterion table therefore lands on "criterion not met — defer" and the
159
+ # telemetry multiplier stays suspended (0.9155 < 1.0).
160
+ #
161
+ # NOTE: `speak_scope: off` disables the BEHAVIOUR but not the COST — the projector
162
+ # gates this rule on `telegraph.speak`, never on speak_scope, so under
163
+ # `lean_projection.mode: eager-all` the ~982-token body still ships every session.
164
+ # Set `speak: false` for zero-cost dormancy.
165
+ #
166
+ # Stated explicitly here because until 2026-07-29 this default existed only in
167
+ # prose — and two prose sources disagreed (the rule said prose_only, the accepted
168
+ # ADR said off). Do not flip without a passing output-side bench.
169
+ telegraph:
170
+ # speak: false = DORMANT (the shipped default per docs/adrs/telegraph/0002).
171
+ # The rule is omitted from dist/router.json entirely, so its ~982-token body
172
+ # never ships. This — not speak_scope — is the lever that stops the cost:
173
+ # compile_router gates on `speak` and never reads speak_scope.
174
+ # Set true only after an output-side bench clears the kill-criterion bar.
175
+ speak: false
176
+ speak_scope: "off"
177
+
148
178
  # --- Token-rich skills governance ---
149
179
  #
150
180
  # Skills marked `token_budget_class: rich` in their frontmatter are exempt
@@ -642,7 +672,7 @@ subagents:
642
672
  # delegate frontier-priced or speculative work. `resolveShippedDefault()`
643
673
  # remains the telemetry-driven DEMOTION gate: a measured regression demotes
644
674
  # back to `ask`.
645
- auto: on
675
+ auto: "on"
646
676
 
647
677
  # Route delegable sub-tasks to the lowest-capable model tier (cost + speed
648
678
  # via model downshift). true (default) = downshift per declared model_tier;
@@ -1114,7 +1144,7 @@ decision_engine:
1114
1144
  # low = refuse to advance when band is below low
1115
1145
  # medium = refuse when below medium
1116
1146
  # high = refuse when below high
1117
- min_confidence: off
1147
+ min_confidence: "off"
1118
1148
 
1119
1149
  # Risk-class ceiling for Phase=Implement.
1120
1150
  # off = no ceiling (default)
@@ -0,0 +1,142 @@
1
+ # CI ↔ local parity manifest — the input to `check_ci_local_parity.ts`.
2
+ #
3
+ # WHY THIS EXISTS
4
+ # ---------------
5
+ # The local aggregate (`task ci`) and the CI workflows drifted apart in BOTH
6
+ # directions, and each direction cost real defects:
7
+ #
8
+ # CI-only — a gate CI runs that no local chain reaches. The contributor pushes,
9
+ # CI goes red, and the fix costs a round trip. Measured 2026-07-30:
10
+ # check_portability and check_adr_frontmatter turned a PR red that a
11
+ # local run would have caught, twice in one session.
12
+ #
13
+ # local-only — a gate `task ci` runs that no workflow does. Nothing enforces it
14
+ # remotely, so a defect merges. Measured: check-index had verified the
15
+ # artefact index for a long time and ran in no workflow, which is how
16
+ # 16 stale rows in agents/index.md + docs/catalog.md reached main.
17
+ # check_bridge_derivation is the same shape.
18
+ #
19
+ # A gate that exists on one side only drifts silently on the other. This manifest
20
+ # plus the checker makes each direction a declared, reviewable choice instead of an
21
+ # accident.
22
+ #
23
+ # THE CONTRACT
24
+ # ------------
25
+ # The checker DERIVES both sides — it never trusts a hand-maintained list of gates:
26
+ #
27
+ # CI side parsed from .github/workflows/*.yml — every `./scripts-run
28
+ # src/scripts/<name>`, `npx tsx src/scripts/<name>`, `node <path>` and
29
+ # `task <name>` invocation.
30
+ # local side the transitive closure of the `task ci` / `task consistency` chains
31
+ # plus the pre-push hook, resolved through taskfiles/*.yml.
32
+ #
33
+ # Anything present on one side and absent on the other must appear below with a
34
+ # reason, or the checker fails. That is the whole mechanism: drift is allowed, but
35
+ # only on the record.
36
+ #
37
+ # Parity is by gate ID, not by argv. Three gates run locally in a cheap variant and
38
+ # in CI in a strict one (check_release_published bare vs --strict --check-npm,
39
+ # build_cloud_bundle --check vs --all --clean, build_linear_digest offline vs live).
40
+ # They need no declaration: the parity question is "can a contributor run this before
41
+ # pushing at all", and the answer is yes. Declaring them anyway produced exactly the
42
+ # dead exemption the stale-declaration check exists to catch — it was removed rather
43
+ # than kept, because an exemption nothing needs is one the next reader trusts.
44
+ #
45
+ # WHY NOT JUST "RUN task ci BEFORE EVERY PUSH"
46
+ # --------------------------------------------
47
+ # Because a pre-push gate that is red for a reason the contributor did not cause
48
+ # either blocks every push or trains people to ignore it, and the second is worse
49
+ # than no gate. Two measured bounds from the same sweep:
50
+ #
51
+ # bucket A (repo-content gates) sum to ~14.5s → affordable before a push
52
+ # check_enforcement_coverage alone is 30.7s → belongs in the post-CI loop
53
+ #
54
+ # So `pre_push_budget_seconds` below is a real budget, not a wish. A gate declared
55
+ # `local_only` or `both` that exceeds it is reported, not silently added to the hook.
56
+
57
+ # Wall-clock ceiling for the pre-push gate set, in seconds. Derived from the
58
+ # measured bucket-A sum (14.5s) plus headroom; the existing hook already costs
59
+ # `task consistency` + eslint + tsc, so this is a bounded increase, not a new tax.
60
+ pre_push_budget_seconds: 25
61
+
62
+ # Gates CI runs that no local chain reaches — each needs a reason it cannot or
63
+ # should not run locally. `reason` is free text; `class` is one of:
64
+ # network needs a token, a registry, or a live API
65
+ # release verifies tag / release / published-package state
66
+ # artifact needs something only CI builds (site, tarball, bundle)
67
+ # benchmark it is a measurement, timing-sensitive or paid
68
+ # matrix needs an OS or Node version this machine is not
69
+ ci_only:
70
+ - id: adoption_snapshot
71
+ class: network
72
+ reason: "live api.npmjs.org + api.github.com calls, reads GITHUB_TOKEN"
73
+ - id: sync_github_metadata
74
+ class: network
75
+ reason: "hard-fails without GITHUB_TOKEN; mutates repo topics/description via the API"
76
+ - id: check_release_pr_shape
77
+ class: release
78
+ reason: "shells out to `gh pr diff <n>` — needs a live PR and a token"
79
+ - id: check_release_adjacent_health
80
+ class: release
81
+ reason: "queries GitHub Actions run history via gh"
82
+ - id: bench_drift_check
83
+ class: benchmark
84
+ reason: "consumes rolling bench reports that only a bench run produces"
85
+ - id: bench_baseline_ready
86
+ class: benchmark
87
+ reason: "same — no local baseline to compare against"
88
+ - id: bench_hook_latency
89
+ class: benchmark
90
+ reason: "a latency measurement; 24.0s measured and timing-sensitive on a loaded machine"
91
+ - id: check_site_links
92
+ class: artifact
93
+ reason: "needs the built Starlight site; exits 2 unbuilt or stale (registered in gate-coverage.yml with unavailable_exit: 2)"
94
+ - id: pack_mcp_content
95
+ class: artifact
96
+ reason: "writes the tracked internal/workers/mcp/content.json deploy artifact — a local run dirties the tree"
97
+ - id: consumer_matrix
98
+ class: matrix
99
+ reason: "consumes the npm pack tarball across a Node version matrix"
100
+ - id: cross_model_smoke
101
+ class: network
102
+ reason: "paid cross-model canary calls, secret-gated"
103
+ - id: trigger_eval_rotation
104
+ class: network
105
+ reason: "paid model calls"
106
+ - id: self_review_gate
107
+ class: network
108
+ reason: "--dry-run in the PR job; the live variant is a paid model call on the PR diff"
109
+ - id: bench_run
110
+ class: benchmark
111
+ reason: "paid model calls against a corpus"
112
+ - id: bench_runner
113
+ class: benchmark
114
+ reason: "the runner behind bench_run — same paid calls"
115
+ - id: skill_trigger_eval
116
+ class: benchmark
117
+ reason: "paid cross-model trigger-activation eval; the offline structural half is check_trigger_evals, which IS local"
118
+ - id: evaluator_umbrella
119
+ class: artifact
120
+ reason: "shell umbrella over CI-only evaluator fixtures"
121
+ - id: smoke_host_loadability
122
+ class: artifact
123
+ reason: "temp-HOME install + `claude plugin validate`; measured >100s, did not finish inside a 2-minute budget"
124
+ - id: install
125
+ class: matrix
126
+ reason: "the installer end-to-end against a scratch HOME on the OS matrix; a local run would rewrite this machine's own agent config"
127
+ - id: release
128
+ class: release
129
+ reason: "tags, bumps, publishes, opens the release PR — the release itself"
130
+
131
+ # Gates a local chain runs that no workflow does — each needs a reason it is not
132
+ # worth remote enforcement, OR it should simply be added to a workflow. Prefer
133
+ # adding it: a local-only gate is the direction that let real defects merge.
134
+ local_only:
135
+ - id: check_knowledge_sharing
136
+ class: staging-scoped
137
+ reason: >
138
+ Inspects the STAGED set (a gitignored intake file staged anyway via `git add -f`),
139
+ and CI has no staged set — the commit already happened by the time a workflow
140
+ runs. The committed-tree equivalent ("a file that should be gitignored is
141
+ tracked") is a different invariant and would need its own mode, so this is not
142
+ the local-only-by-neglect case the manifest warns about.