@event4u/agent-config 14.12.0 → 14.14.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 (521) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +118 -155
  5. package/CONTRIBUTING.md +38 -0
  6. package/CREDITS.md +135 -0
  7. package/NOTICE +13 -0
  8. package/README.md +8 -6
  9. package/dist/agent-src/commands/analyze/inbox.md +145 -2
  10. package/dist/agent-src/commands/feature/dev.md +7 -2
  11. package/dist/agent-src/commands/ghostwriter/write.md +5 -1
  12. package/dist/agent-src/commands/implement-ticket.md +1 -1
  13. package/dist/agent-src/commands/mission/upgrade.md +1 -1
  14. package/dist/agent-src/commands/orchestrate.md +2 -2
  15. package/dist/agent-src/commands/post-as/me.md +5 -1
  16. package/dist/agent-src/commands/pr/merge.md +19 -6
  17. package/dist/agent-src/commands/roadmap/process-full.md +19 -5
  18. package/dist/agent-src/commands/tdd/red.md +12 -2
  19. package/dist/agent-src/commands/work.md +1 -1
  20. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +40 -0
  21. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +5 -2
  22. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +21 -0
  23. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -0
  24. package/dist/agent-src/contexts/execution/subagent-response-contract.md +40 -0
  25. package/dist/agent-src/contexts/execution/subagent-steering.md +13 -1
  26. package/dist/agent-src/contexts/execution/terminal-states.md +96 -0
  27. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  28. package/dist/agent-src/rules/broken-access-control.md +4 -0
  29. package/dist/agent-src/rules/code-comment-discipline.md +6 -0
  30. package/dist/agent-src/rules/code-provenance.md +4 -0
  31. package/dist/agent-src/rules/design-fidelity.md +1 -1
  32. package/dist/agent-src/rules/domain-safety-pii.md +4 -0
  33. package/dist/agent-src/rules/domain-safety-retention.md +4 -0
  34. package/dist/agent-src/rules/engineering-safety-floor.md +2 -0
  35. package/dist/agent-src/rules/external-code-graph-interop.md +14 -12
  36. package/dist/agent-src/rules/improve-before-implement.md +6 -8
  37. package/dist/agent-src/rules/laravel-routing.md +1 -1
  38. package/dist/agent-src/rules/lethal-trifecta-guard.md +4 -0
  39. package/dist/agent-src/rules/secret-vcs-guard.md +2 -0
  40. package/dist/agent-src/rules/security-sensitive-stop.md +2 -0
  41. package/dist/agent-src/rules/source-confidentiality.md +12 -34
  42. package/dist/agent-src/rules/symfony-routing.md +1 -1
  43. package/dist/agent-src/rules/token-efficiency.md +14 -0
  44. package/dist/agent-src/rules/tool-safety.md +4 -0
  45. package/dist/agent-src/rules/untrusted-input-defense.md +4 -0
  46. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +252 -8
  47. package/dist/agent-src/scripts/guarded_baseline.ts +343 -0
  48. package/dist/agent-src/scripts/roadmap_set_step.ts +253 -0
  49. package/dist/agent-src/scripts/stub_queue.ts +82 -0
  50. package/dist/agent-src/scripts/stubs_due.ts +516 -0
  51. package/dist/agent-src/scripts/ticket_bundles.ts +84 -0
  52. package/dist/agent-src/scripts/update_roadmap_progress.ts +16 -12
  53. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +17 -4
  54. package/dist/agent-src/skills/brand-audit/SKILL.md +33 -0
  55. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -0
  56. package/dist/agent-src/skills/database/SKILL.md +8 -0
  57. package/dist/agent-src/skills/dependency-upgrade/SKILL.md +27 -0
  58. package/dist/agent-src/skills/design-review/SKILL.md +1 -1
  59. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
  60. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +17 -1
  61. package/dist/agent-src/skills/feature-planning/SKILL.md +9 -2
  62. package/dist/agent-src/skills/frontend-render-security/SKILL.md +44 -0
  63. package/dist/agent-src/skills/git-workflow/SKILL.md +1 -1
  64. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +38 -4
  65. package/dist/agent-src/skills/judge-artifact-completeness/rubrics/ticket-quality-score.json +2 -2
  66. package/dist/agent-src/skills/laravel/SKILL.md +35 -0
  67. package/dist/agent-src/skills/laravel-migration/SKILL.md +57 -3
  68. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +26 -0
  69. package/dist/agent-src/skills/playbook-authoring/SKILL.md +28 -1
  70. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  71. package/dist/agent-src/skills/skill-writing/references/procedure.md +5 -5
  72. package/dist/agent-src/skills/sql-writing/SKILL.md +7 -1
  73. package/dist/agent-src/skills/standards-from-config/SKILL.md +27 -4
  74. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +11 -4
  75. package/dist/agent-src/skills/symfony-workflow/SKILL.md +35 -0
  76. package/dist/agent-src/skills/test-case-discovery/SKILL.md +85 -0
  77. package/dist/agent-src/skills/test-driven-development/SKILL.md +33 -9
  78. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  79. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +37 -0
  80. package/dist/agent-src/skills/ui-component-architect/SKILL.md +45 -2
  81. package/dist/agent-src/skills/upstream-contribute/SKILL.md +38 -1
  82. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +9 -4
  83. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  84. package/dist/agent-src/templates/roadmaps.md +97 -3
  85. package/dist/agent-src/templates/scripts/check_memory.ts +258 -17
  86. package/dist/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
  87. package/dist/agent-src/templates/scripts/memory_lookup.ts +86 -0
  88. package/dist/agent-src/templates/scripts/memory_signal.ts +44 -0
  89. package/dist/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
  90. package/dist/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
  91. package/dist/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
  92. package/dist/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
  93. package/dist/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
  94. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
  95. package/dist/cli/commands/uiAudit.js +124 -5
  96. package/dist/cli/registry.js +2 -0
  97. package/dist/cli-delegate/{chunk-HYWSRNUX.js → chunk-2DK2VJWG.js} +3 -3
  98. package/dist/cli-delegate/{chunk-JCW7ZLHK.js → chunk-4FS4WRXP.js} +5 -0
  99. package/dist/cli-delegate/{chunk-OMIVVCG2.js → chunk-A4QJ6ENT.js} +24 -0
  100. package/dist/cli-delegate/{chunk-JJA2QEWA.js → chunk-AKJGUQNO.js} +466 -285
  101. package/dist/cli-delegate/{chunk-E46KPN6K.js → chunk-BTWUYDGN.js} +424 -363
  102. package/dist/cli-delegate/{chunk-K4FFODTS.js → chunk-ILMUPLGW.js} +1227 -316
  103. package/dist/cli-delegate/{chunk-FF7WAFMR.js → chunk-KPBWFOPZ.js} +5 -1
  104. package/dist/cli-delegate/cmd_adr_effective.js +102 -0
  105. package/dist/cli-delegate/cmd_conformance.js +80 -11
  106. package/dist/cli-delegate/cmd_doctor.js +3 -3
  107. package/dist/cli-delegate/cmd_export.js +3 -2
  108. package/dist/cli-delegate/cmd_fleet.js +2 -2
  109. package/dist/cli-delegate/cmd_handoff.js +1 -1
  110. package/dist/cli-delegate/cmd_preflight.js +2 -2
  111. package/dist/cli-delegate/cmd_prune.js +3 -2
  112. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  113. package/dist/cli-delegate/cmd_settings_migrate.js +3 -2
  114. package/dist/cli-delegate/cmd_settings_set.js +2 -2
  115. package/dist/cli-delegate/cmd_sync.js +3 -2
  116. package/dist/cli-delegate/cmd_uninstall.js +3 -2
  117. package/dist/cli-delegate/cmd_validate.js +3 -2
  118. package/dist/discovery/deprecation-report.md +1 -1
  119. package/dist/discovery/discovery-manifest.json +58 -58
  120. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  121. package/dist/discovery/discovery-manifest.summary.md +1 -1
  122. package/dist/discovery/dormancy-report.md +1 -1
  123. package/dist/discovery/orphan-report.md +1 -1
  124. package/dist/discovery/packs.json +2 -2
  125. package/dist/discovery/trust-report.md +1 -1
  126. package/dist/discovery/workspaces.json +2 -2
  127. package/dist/hooks/dispatch.js +2900 -1049
  128. package/dist/install/claudeRuleRewrite.js +254 -0
  129. package/dist/install/detect.js +29 -16
  130. package/dist/install/detect_php_shape.js +159 -0
  131. package/dist/install/install.mjs +634 -428
  132. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  133. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  134. package/dist/mcp/registry-manifest.json +3 -3
  135. package/dist/mcp/server.json +3 -3
  136. package/dist/mcp/server.mjs +4895 -2627
  137. package/dist/server/schemas/settings.js +3 -0
  138. package/dist/ui/assets/index-D0jaCRPM.js +29 -0
  139. package/dist/ui/index.html +1 -1
  140. package/docs/MIGRATION.md +1 -1
  141. package/docs/THIRD-PARTY-NOTICES.md +25 -0
  142. package/docs/contracts/provider-lifecycle.md +1 -1
  143. package/docs/contracts/settings-classes.md +10 -4
  144. package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
  145. package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +1 -0
  146. package/docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +58 -3
  147. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +2 -2
  148. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
  149. package/docs/guidelines/agent-infra/break-glass-usage.md +7 -7
  150. package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
  151. package/docs/guidelines/agent-infra/comparison-matrix.md +1 -1
  152. package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
  153. package/docs/guidelines/agent-infra/direct-answers-demos.md +2 -2
  154. package/docs/guidelines/agent-infra/domain-eval-anti-pattern.md +1 -1
  155. package/docs/guidelines/agent-infra/engineering-memory-data-format.md +3 -3
  156. package/docs/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  157. package/docs/guidelines/agent-infra/first-principles.md +2 -2
  158. package/docs/guidelines/agent-infra/framework-neutrality-patterns.md +2 -2
  159. package/docs/guidelines/agent-infra/guarded-baseline.md +39 -0
  160. package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
  161. package/docs/guidelines/agent-infra/language-and-tone-examples.md +1 -1
  162. package/docs/guidelines/agent-infra/layered-settings.md +10 -10
  163. package/docs/guidelines/agent-infra/memory-access.md +1 -1
  164. package/docs/guidelines/agent-infra/mental-models.md +3 -3
  165. package/docs/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  166. package/docs/guidelines/agent-infra/review-routing-data-format.md +7 -7
  167. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +13 -7
  168. package/docs/guidelines/agent-infra/role-contracts.md +2 -2
  169. package/docs/guidelines/agent-infra/role-mode-router.md +3 -3
  170. package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
  171. package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
  172. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +6 -6
  173. package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +2 -2
  174. package/docs/guidelines/agent-infra/six-hats.md +3 -3
  175. package/docs/guidelines/agent-infra/skill-quality-checklist.md +6 -6
  176. package/docs/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  177. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  178. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +2 -2
  179. package/docs/guidelines/augment-portability-patterns.md +6 -4
  180. package/docs/guidelines/code-clarity.md +18 -0
  181. package/docs/guidelines/component-oriented-and-oop-development.md +3 -2
  182. package/docs/guidelines/cross-role-handoff.md +2 -2
  183. package/docs/guidelines/design-fidelity-mechanics.md +1 -1
  184. package/docs/guidelines/docs/readme-size-and-splitting.md +3 -3
  185. package/docs/guidelines/php/database.md +90 -7
  186. package/docs/guidelines/prompt-templates.md +7 -7
  187. package/llms.txt +2 -2
  188. package/package.json +5 -2
  189. package/src/agent-src/scripts/archive_completed_roadmaps.ts +252 -8
  190. package/src/agent-src/scripts/guarded_baseline.ts +343 -0
  191. package/src/agent-src/scripts/roadmap_set_step.ts +253 -0
  192. package/src/agent-src/scripts/stub_queue.ts +82 -0
  193. package/src/agent-src/scripts/stubs_due.ts +516 -0
  194. package/src/agent-src/scripts/ticket_bundles.ts +84 -0
  195. package/src/agent-src/scripts/update_roadmap_progress.ts +16 -12
  196. package/src/agent-src/templates/scripts/check_memory.ts +258 -17
  197. package/src/agent-src/templates/scripts/check_memory_proposal.ts +9 -3
  198. package/src/agent-src/templates/scripts/memory_lookup.ts +86 -0
  199. package/src/agent-src/templates/scripts/memory_signal.ts +44 -0
  200. package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +90 -0
  201. package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +11 -0
  202. package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +23 -1
  203. package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +10 -1
  204. package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +5 -1
  205. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +102 -14
  206. package/src/config/agent-settings.template.yml +32 -3
  207. package/src/config/assurance-capability-registry.json +21 -9
  208. package/src/config/canonical-terms.yml +119 -0
  209. package/src/config/capability-native-outcome-bars.json +81 -0
  210. package/src/config/ci-local-parity.yml +80 -0
  211. package/src/config/drafting-channels.yml +43 -0
  212. package/src/config/estate-count-budget.json +57 -36
  213. package/src/config/evaluator-budgets.json +14 -14
  214. package/src/config/gate-coverage.yml +729 -63
  215. package/src/config/gate-reachability-exemptions.json +21 -0
  216. package/src/config/gate-violation-baselines.json +42 -19
  217. package/src/config/harness-evolution-budget.json +25 -0
  218. package/src/config/lapsed-beta-baseline.json +96 -0
  219. package/src/config/memory-twin-verdicts.yml +129 -0
  220. package/src/config/metric-registry.yml +124 -0
  221. package/src/config/pack-size-budget.json +16 -15
  222. package/src/config/preamble-payload-budget.json +12 -4
  223. package/src/config/profiles/balanced.ini +27 -0
  224. package/src/config/profiles/full.ini +27 -0
  225. package/src/config/profiles/minimal.ini +27 -0
  226. package/src/config/publish-surface.json +9 -2
  227. package/src/config/routing-coverage-seed.json +16 -2
  228. package/src/config/rule-stub-ceilings.json +133 -112
  229. package/src/config/turnaround-budget.json +66 -0
  230. package/src/install/claudeRuleRewrite.ts +288 -0
  231. package/src/install/detect.ts +60 -17
  232. package/src/install/detect_php_shape.ts +191 -0
  233. package/src/scripts/_cli/cmd_doctor.ts +27 -112
  234. package/src/scripts/_dispatch.bash +23 -0
  235. package/src/scripts/_lib/activation_ladder.ts +255 -0
  236. package/src/scripts/_lib/activation_receipt_producer.ts +341 -0
  237. package/src/scripts/_lib/activation_states.ts +88 -0
  238. package/src/scripts/_lib/adherence_detectors.ts +143 -0
  239. package/src/scripts/_lib/adr_frontmatter.ts +26 -0
  240. package/src/scripts/_lib/arith_claims.ts +181 -0
  241. package/src/scripts/_lib/arm_ranking.ts +62 -0
  242. package/src/scripts/_lib/asset_delivery_ledger.ts +303 -0
  243. package/src/scripts/_lib/audit_field_provenance.ts +54 -0
  244. package/src/scripts/_lib/auto_dispatch.ts +32 -3
  245. package/src/scripts/_lib/bench_ab_size_claim.ts +98 -4
  246. package/src/scripts/_lib/benchmark_cache_fields.ts +158 -0
  247. package/src/scripts/_lib/candidate_pair_delta.ts +349 -0
  248. package/src/scripts/_lib/candidate_proposer.ts +402 -0
  249. package/src/scripts/_lib/candidate_record.ts +601 -0
  250. package/src/scripts/_lib/capture_rate.ts +319 -0
  251. package/src/scripts/_lib/carrier_status.ts +118 -0
  252. package/src/scripts/_lib/cascade_stage_enumeration.ts +92 -0
  253. package/src/scripts/_lib/collector_denominator.ts +771 -0
  254. package/src/scripts/_lib/collector_record.ts +340 -0
  255. package/src/scripts/_lib/collector_store.ts +664 -0
  256. package/src/scripts/_lib/collector_supervision.ts +827 -0
  257. package/src/scripts/_lib/concern_estate.ts +77 -0
  258. package/src/scripts/_lib/config_chain.ts +477 -0
  259. package/src/scripts/_lib/config_cost.ts +209 -0
  260. package/src/scripts/_lib/corpus_manifest.ts +726 -0
  261. package/src/scripts/_lib/council_settings_block.ts +6 -0
  262. package/src/scripts/_lib/curator_ops.ts +172 -0
  263. package/src/scripts/_lib/delivery_arm_experiment.ts +282 -0
  264. package/src/scripts/_lib/delivery_criticality.ts +126 -0
  265. package/src/scripts/_lib/doctor_runtime_checks.ts +70 -0
  266. package/src/scripts/_lib/empty_cycles.ts +88 -0
  267. package/src/scripts/_lib/estate_carrier_cases.ts +72 -0
  268. package/src/scripts/_lib/eval_publication.ts +354 -0
  269. package/src/scripts/_lib/evaluation_cascade.ts +452 -0
  270. package/src/scripts/_lib/evaluation_vector.ts +283 -0
  271. package/src/scripts/_lib/evaluator_promotion.ts +225 -0
  272. package/src/scripts/_lib/evidence_basis.ts +118 -0
  273. package/src/scripts/_lib/evolution_roi.ts +562 -0
  274. package/src/scripts/_lib/exec_evidence.ts +8 -0
  275. package/src/scripts/_lib/experience_card.ts +272 -0
  276. package/src/scripts/_lib/experience_report.ts +151 -0
  277. package/src/scripts/_lib/experiment_freeze.ts +112 -0
  278. package/src/scripts/_lib/generated_by.ts +66 -0
  279. package/src/scripts/_lib/harness_evolution_guards.ts +239 -0
  280. package/src/scripts/_lib/hook_effect_probe.ts +141 -0
  281. package/src/scripts/_lib/host_denominator.ts +687 -0
  282. package/src/scripts/_lib/host_projection_reach.ts +157 -0
  283. package/src/scripts/_lib/ignored_blocker.ts +148 -0
  284. package/src/scripts/_lib/install_reach_checks.ts +495 -0
  285. package/src/scripts/_lib/json_duplicate_keys.ts +150 -0
  286. package/src/scripts/_lib/judge_hygiene.ts +228 -0
  287. package/src/scripts/_lib/legacy_boundary_map.ts +228 -0
  288. package/src/scripts/_lib/lexical_shortlist.ts +215 -0
  289. package/src/scripts/_lib/llm_candidate_proposer.ts +461 -0
  290. package/src/scripts/_lib/llm_proposer_transport.ts +153 -0
  291. package/src/scripts/_lib/loop_guards.ts +299 -0
  292. package/src/scripts/_lib/loss_class.ts +129 -0
  293. package/src/scripts/_lib/machine_wake.ts +51 -0
  294. package/src/scripts/_lib/md_prose_lines.ts +177 -0
  295. package/src/scripts/_lib/minimality_tiebreak.ts +168 -0
  296. package/src/scripts/_lib/one_resolver_invariant.ts +449 -0
  297. package/src/scripts/_lib/orchestration_record.ts +253 -5
  298. package/src/scripts/_lib/outcome_envelope.ts +227 -0
  299. package/src/scripts/_lib/outcome_vocabularies.ts +125 -0
  300. package/src/scripts/_lib/paired_stats.ts +245 -0
  301. package/src/scripts/_lib/paired_verdict.ts +226 -0
  302. package/src/scripts/_lib/pathology_archive.ts +393 -0
  303. package/src/scripts/_lib/prefix_stable_surfaces.ts +123 -0
  304. package/src/scripts/_lib/privacy_class.ts +47 -0
  305. package/src/scripts/_lib/promotion_capability.ts +315 -0
  306. package/src/scripts/_lib/promotion_evidence.ts +414 -0
  307. package/src/scripts/_lib/promotion_review.ts +294 -0
  308. package/src/scripts/_lib/prompt_shape.ts +92 -0
  309. package/src/scripts/_lib/regression_neighbourhood.ts +259 -0
  310. package/src/scripts/_lib/release_highlights.ts +70 -1
  311. package/src/scripts/_lib/release_material.ts +125 -2
  312. package/src/scripts/_lib/repeated_failure.ts +105 -0
  313. package/src/scripts/_lib/repo_root.ts +111 -0
  314. package/src/scripts/_lib/review_skipped_record.ts +37 -0
  315. package/src/scripts/_lib/role_split.ts +338 -0
  316. package/src/scripts/_lib/routing_corpus.ts +307 -0
  317. package/src/scripts/_lib/routing_index_input.ts +104 -0
  318. package/src/scripts/_lib/rule_injection.ts +22 -1
  319. package/src/scripts/_lib/runtime_journal.ts +1499 -0
  320. package/src/scripts/_lib/runtime_wiring_checks.ts +430 -0
  321. package/src/scripts/_lib/semantic_noop.ts +167 -0
  322. package/src/scripts/_lib/skill_catalogue.ts +11 -1
  323. package/src/scripts/_lib/source_digest.ts +200 -0
  324. package/src/scripts/_lib/source_redact.ts +260 -0
  325. package/src/scripts/_lib/source_shape.ts +502 -0
  326. package/src/scripts/_lib/source_snapshot_dedup.ts +199 -0
  327. package/src/scripts/_lib/strip_comments.d.mts +8 -0
  328. package/src/scripts/_lib/strip_comments.mjs +65 -0
  329. package/src/scripts/_lib/test_red_state.ts +154 -0
  330. package/src/scripts/_lib/trigger_shift.ts +144 -0
  331. package/src/scripts/_lib/untrusted_content.ts +82 -7
  332. package/src/scripts/activation_receipt.ts +258 -0
  333. package/src/scripts/adoption_report.ts +1 -1
  334. package/src/scripts/adr/evidence_census.ts +1 -1
  335. package/src/scripts/adr/regenerate_index.ts +26 -2
  336. package/src/scripts/adr_cite_check.ts +164 -1
  337. package/src/scripts/ai_council/blind_review.ts +11 -1
  338. package/src/scripts/ai_council/clients.ts +4 -0
  339. package/src/scripts/ai_council/config.ts +3 -0
  340. package/src/scripts/ai_council/consensus.ts +28 -8
  341. package/src/scripts/ai_council/consensus_round.ts +226 -0
  342. package/src/scripts/ai_council/cross_exam.ts +128 -0
  343. package/src/scripts/ai_council/disagreement_signal.ts +338 -0
  344. package/src/scripts/ai_council/explain_route.ts +157 -0
  345. package/src/scripts/ai_council/information_gain.ts +293 -0
  346. package/src/scripts/ai_council/inline_findings.ts +340 -0
  347. package/src/scripts/ai_council/judge_position_bias.ts +197 -0
  348. package/src/scripts/ai_council/leakage_corpus.ts +385 -0
  349. package/src/scripts/ai_council/leakage_patterns.ts +453 -0
  350. package/src/scripts/ai_council/minority_retention.ts +171 -0
  351. package/src/scripts/ai_council/orchestrator.ts +16 -203
  352. package/src/scripts/ai_council/orchestrator_results.ts +23 -3
  353. package/src/scripts/ai_council/pricing.ts +106 -0
  354. package/src/scripts/ai_council/prompts.ts +74 -7
  355. package/src/scripts/ai_council/provider_leakage_bench.ts +327 -0
  356. package/src/scripts/ai_council/py_format.ts +14 -3
  357. package/src/scripts/ai_council/recouncil_guard.ts +293 -0
  358. package/src/scripts/ai_council/recouncil_savings.ts +299 -0
  359. package/src/scripts/ai_council/replay_route.ts +223 -0
  360. package/src/scripts/ai_council/response_record.ts +50 -0
  361. package/src/scripts/ai_council/reviewer_assignment.ts +279 -0
  362. package/src/scripts/ai_council/routing_training_row.ts +197 -0
  363. package/src/scripts/ai_council/synthesis_strategy.ts +159 -0
  364. package/src/scripts/ai_council/topology_bench_manifest.ts +860 -0
  365. package/src/scripts/ai_council/topology_vocabulary.ts +175 -0
  366. package/src/scripts/asset_delivery_ledger.ts +157 -0
  367. package/src/scripts/attest_artifact.ts +193 -0
  368. package/src/scripts/audit_auto_rules.ts +2 -1
  369. package/src/scripts/audit_command_surface.ts +1 -1
  370. package/src/scripts/audit_mcp_tools.ts +2 -2
  371. package/src/scripts/audit_skill_overlap_allowlist.json +6 -1
  372. package/src/scripts/audit_user_type_axis.ts +2 -1
  373. package/src/scripts/bench_ab_clone.ts +215 -10
  374. package/src/scripts/bench_ab_integrity.ts +119 -5
  375. package/src/scripts/bench_ab_v2_stats.ts +40 -213
  376. package/src/scripts/build_archive_index.ts +1 -1
  377. package/src/scripts/build_linear_digest.ts +1 -1
  378. package/src/scripts/build_proof.ts +11 -4
  379. package/src/scripts/build_rule_trigger_matrix.ts +1 -1
  380. package/src/scripts/build_source_digests.ts +157 -0
  381. package/src/scripts/cache_realization_report.ts +103 -0
  382. package/src/scripts/check_adr_frontmatter.ts +131 -10
  383. package/src/scripts/check_benchmark_report_fields.ts +207 -0
  384. package/src/scripts/check_beta_review_markers.ts +235 -6
  385. package/src/scripts/check_bundle_path_leakage.ts +34 -1
  386. package/src/scripts/check_claims.ts +576 -6
  387. package/src/scripts/check_composite_arming.ts +35 -0
  388. package/src/scripts/check_concern_admissions.ts +365 -0
  389. package/src/scripts/check_enforcement_coverage.ts +28 -0
  390. package/src/scripts/check_estate_count.ts +347 -25
  391. package/src/scripts/check_gate_reachability.ts +383 -0
  392. package/src/scripts/check_host_loadability.ts +104 -0
  393. package/src/scripts/check_loss_class_declared.ts +308 -0
  394. package/src/scripts/check_md_language.ts +15 -98
  395. package/src/scripts/check_memory_proposal.ts +18 -11
  396. package/src/scripts/check_no_currency_in_cost_surfaces.ts +225 -0
  397. package/src/scripts/check_no_external_sources.ts +281 -6
  398. package/src/scripts/check_pack_conformance_fixture.ts +11 -1
  399. package/src/scripts/check_pack_size.ts +59 -2
  400. package/src/scripts/check_preamble_payload_budget.ts +114 -3
  401. package/src/scripts/check_prefix_stable_mutation.ts +372 -0
  402. package/src/scripts/check_publish_surface.ts +10 -1
  403. package/src/scripts/check_references.ts +24 -1
  404. package/src/scripts/check_release_highlights.ts +96 -13
  405. package/src/scripts/check_roadmap_trackable.ts +17 -2
  406. package/src/scripts/check_rule_evidence_declaration.ts +316 -0
  407. package/src/scripts/check_rule_projection_integrity.ts +14 -4
  408. package/src/scripts/check_score_contract.ts +26 -3
  409. package/src/scripts/check_static_parity.ts +285 -0
  410. package/src/scripts/check_supervision_claim_atomicity.ts +498 -0
  411. package/src/scripts/check_suppression_hygiene.ts +15 -0
  412. package/src/scripts/ci_settle.ts +39 -2
  413. package/src/scripts/code_graph/build.ts +60 -3
  414. package/src/scripts/code_graph/extract.ts +44 -0
  415. package/src/scripts/code_graph/types.ts +24 -0
  416. package/src/scripts/collector_daemon.ts +714 -0
  417. package/src/scripts/config_cost_report.ts +302 -0
  418. package/src/scripts/consumer_matrix.ts +74 -1
  419. package/src/scripts/corpus_manifest.ts +235 -0
  420. package/src/scripts/cost/budget.mjs +10 -3
  421. package/src/scripts/cost/track.mjs +10 -3
  422. package/src/scripts/council_cli.ts +37 -54
  423. package/src/scripts/dispatch_r2_reviewer.ts +46 -5
  424. package/src/scripts/evolution_lab.ts +1153 -0
  425. package/src/scripts/external_sources_denylist.json +5 -18
  426. package/src/scripts/extract_audit_patterns.ts +21 -0
  427. package/src/scripts/fold_intake.ts +12 -1
  428. package/src/scripts/gen_discovery_baseline.ts +1 -1
  429. package/src/scripts/generate_capabilities_index.ts +12 -5
  430. package/src/scripts/generate_capability_matrix.ts +3 -3
  431. package/src/scripts/generate_command_flows.ts +2 -2
  432. package/src/scripts/generate_cookbook.ts +2 -2
  433. package/src/scripts/generate_index.ts +8 -1
  434. package/src/scripts/generate_knowledge_index.ts +2 -1
  435. package/src/scripts/generate_ownership_matrix.ts +2 -1
  436. package/src/scripts/generate_pack_manifests.ts +10 -2
  437. package/src/scripts/generate_role_experiences_catalog.ts +2 -2
  438. package/src/scripts/generate_settings_reference.ts +1 -1
  439. package/src/scripts/git_authorization_hook.ts +22 -1
  440. package/src/scripts/grade_target_readiness.ts +48 -5
  441. package/src/scripts/hook_effect_doctor.ts +261 -0
  442. package/src/scripts/hook_manifest.json +1 -1
  443. package/src/scripts/hook_manifest.yaml +125 -16
  444. package/src/scripts/hooks/block_speaking_inbox_dir.ts +271 -0
  445. package/src/scripts/hooks/block_unauthorized_git.ts +18 -0
  446. package/src/scripts/hooks/comment_discipline_hook.ts +146 -0
  447. package/src/scripts/hooks/concern_registry.ts +6 -0
  448. package/src/scripts/hooks/dispatch_hook.ts +32 -0
  449. package/src/scripts/hooks/journal_record_hook.ts +345 -0
  450. package/src/scripts/hooks/prepush_metadata_sources.sh +110 -0
  451. package/src/scripts/hooks/run_continuation_hook.ts +44 -9
  452. package/src/scripts/hooks/shims/install.sh +61 -0
  453. package/src/scripts/hooks/shims/php +101 -0
  454. package/src/scripts/hooks/suggestion_capture_hook.ts +10 -0
  455. package/src/scripts/hooks/turn_end_gate_hook.ts +9 -1
  456. package/src/scripts/hot_context_hook.ts +16 -0
  457. package/src/scripts/install-hooks.sh +20 -5
  458. package/src/scripts/install.ts +17 -35
  459. package/src/scripts/inventory_frontmatter.ts +2 -1
  460. package/src/scripts/language_mirror_hook.ts +14 -2
  461. package/src/scripts/lint_adr_sweep_routing.ts +12 -0
  462. package/src/scripts/lint_canonical_terms.ts +604 -0
  463. package/src/scripts/lint_carrier_integrity.ts +820 -0
  464. package/src/scripts/lint_code_comments.ts +643 -0
  465. package/src/scripts/lint_composition_review.ts +619 -0
  466. package/src/scripts/lint_consolidation_lineage.ts +666 -0
  467. package/src/scripts/lint_eval_specs.ts +593 -0
  468. package/src/scripts/lint_hook_manifest.ts +19 -0
  469. package/src/scripts/lint_host_portability.ts +373 -0
  470. package/src/scripts/lint_judge_prompt_expectation.ts +27 -1
  471. package/src/scripts/lint_memory_twin_parity.ts +335 -0
  472. package/src/scripts/lint_metric_consumers.ts +355 -0
  473. package/src/scripts/lint_plan_risk_register.ts +39 -19
  474. package/src/scripts/lint_promotion_paths.ts +779 -0
  475. package/src/scripts/lint_skill_descriptions.ts +18 -1
  476. package/src/scripts/lint_skill_frontmatter_safety.ts +58 -0
  477. package/src/scripts/lint_skill_link_reach.ts +252 -0
  478. package/src/scripts/lint_skill_trigger_corpus.ts +426 -23
  479. package/src/scripts/lint_ticket_buildable.ts +17 -1
  480. package/src/scripts/llm_propose.ts +256 -0
  481. package/src/scripts/mcp_server/consumer_tool_catalog.json +1 -1
  482. package/src/scripts/mcp_server/tool_catalog_source.ts +1 -1
  483. package/src/scripts/measure_delivery_sets.ts +361 -0
  484. package/src/scripts/measure_docs_dead_links.ts +348 -0
  485. package/src/scripts/measure_host_capture.ts +461 -0
  486. package/src/scripts/measure_routing_signal.ts +307 -0
  487. package/src/scripts/migration_status.ts +3 -3
  488. package/src/scripts/model_rule_injection.ts +76 -0
  489. package/src/scripts/orchestration_record.ts +14 -0
  490. package/src/scripts/preamble_byte_census.ts +139 -10
  491. package/src/scripts/prepack-check.mjs +4 -1
  492. package/src/scripts/probe_council_retention.ts +495 -0
  493. package/src/scripts/probe_turnaround.ts +384 -0
  494. package/src/scripts/probe_unblocked_ask.ts +279 -0
  495. package/src/scripts/release.ts +21 -37
  496. package/src/scripts/release_drill.ts +143 -0
  497. package/src/scripts/release_env.ts +35 -0
  498. package/src/scripts/release_publication.ts +84 -0
  499. package/src/scripts/render_benchmark_md.ts +1 -1
  500. package/src/scripts/rule_activation_census.ts +70 -9
  501. package/src/scripts/rule_backlinks.ts +1 -1
  502. package/src/scripts/run_lifecycle_suite.ts +208 -0
  503. package/src/scripts/run_skill_evals.ts +40 -0
  504. package/src/scripts/schemas/delivery-manifest.schema.json +43 -0
  505. package/src/scripts/schemas/drafting-channels.schema.json +43 -0
  506. package/src/scripts/schemas/evals.schema.json +24 -1
  507. package/src/scripts/schemas/rule.schema.json +52 -1
  508. package/src/scripts/schemas/skill.schema.json +17 -2
  509. package/src/scripts/skill_overlap.ts +7 -1
  510. package/src/scripts/skill_tools/run_block_d_eval.ts +8 -1
  511. package/src/scripts/skill_tools/score_skill_relevance.ts +84 -3
  512. package/src/scripts/skill_tools/suggest_skill_for_task.ts +8 -1
  513. package/src/scripts/skill_usage_report.ts +2 -1
  514. package/src/scripts/stubs_due.ts +211 -0
  515. package/src/scripts/sweep_source_surfaces.ts +678 -0
  516. package/src/scripts/sync_pr_branch.ts +3 -3
  517. package/src/scripts/trigger_eval_grandfather.json +202 -222
  518. package/src/scripts/utilization_report.ts +22 -2
  519. package/src/server/schemas/settings.ts +5 -0
  520. package/src/templates/marketing-copy.yml +1 -1
  521. package/dist/ui/assets/index-Cxgy63kz.js +0 -26
package/CREDITS.md ADDED
@@ -0,0 +1,135 @@
1
+ # Credits
2
+
3
+ Attribution for derived work and external contributions. Two kinds of entries
4
+ live here: **license-required attribution** for vendored/derived material
5
+ (Apache-2.0 / MIT obligations) and **community credit** for external
6
+ contributors whose skills, rules or commands were merged.
7
+
8
+ ## License-required attribution (vendored / derived material)
9
+
10
+ | Artefact | Upstream | License | Detail |
11
+ |---|---|---|---|
12
+ | `design-intelligence` (corpus + grounding engine) | Next Level Builder — `ui-ux-pro-max-skill` | MIT | [`src/skills/design-intelligence/ATTRIBUTION.md`](src/skills/design-intelligence/ATTRIBUTION.md) |
13
+ | `design-intelligence` (`ui-styling`-derived assets) | "claudekit" | Apache-2.0 | [`LICENSE.apache-2.0.txt`](src/skills/design-intelligence/LICENSE.apache-2.0.txt) + modified-file markers per §4b |
14
+ | `corpus-grounding`, `design-tokens`, `react-shadcn-ui`, `tailwind-engineer` (derived slices) | see per-skill notices | MIT / Apache-2.0 | ADR-061 — the per-skill attribution notice is authoritative |
15
+ | `src/scripts/cost/budget.mjs`, `src/scripts/cost/track.mjs` | ruvnet/ruflo — `plugins/ruflo-cost-tracker` | MIT | full notice below; transformation record in [`provenance/borrows.jsonl`](provenance/borrows.jsonl) and [`docs/THIRD-PARTY-NOTICES.md`](docs/THIRD-PARTY-NOTICES.md) |
16
+
17
+ #### MIT notice — ruvnet/ruflo
18
+
19
+ Reproduced in full rather than by reference, because MIT requires the copyright
20
+ notice AND the permission notice to travel with copies or substantial portions
21
+ of the Software. This file ships in the npm package (`package.json` → `files`),
22
+ which is what discharges the obligation for a consumer who receives
23
+ `src/scripts/cost/` from the registry — the source files themselves carry no
24
+ in-file source name, per
25
+ [`source-confidentiality`](src/rules/source-confidentiality.md), and MIT does not
26
+ require one.
27
+
28
+ ```
29
+ Copyright (c) 2024-2026 ruvnet
30
+
31
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
32
+ this software and associated documentation files (the "Software"), to deal in
33
+ the Software without restriction, including without limitation the rights to
34
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
35
+ the Software, and to permit persons to whom the Software is furnished to do so,
36
+ subject to the following conditions:
37
+
38
+ The above copyright notice and this permission notice shall be included in all
39
+ copies or substantial portions of the Software.
40
+
41
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
42
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
43
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
44
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
45
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
46
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
47
+ ```
48
+
49
+ ### Comparators (benchmark baselines, no vendored material)
50
+
51
+ | Comparator | Pinned at | License | Where it is used |
52
+ |---|---|---|---|
53
+ | `Source A` — an external agent-instruction suite | `2ed6c52c` | MIT | benchmark comparator arm: [`agents/roadmaps/stubs/road-to-solution-minimalism-full-tier-run.md`](agents/roadmaps/stubs/road-to-solution-minimalism-full-tier-run.md) § The published comparator |
54
+
55
+ Nothing is vendored from it — no code, no oracle text, no prose. What is used is
56
+ its **published baseline numbers** as the external column of a two-arm report,
57
+ and four mechanism ideas folded (never copied) into
58
+ `road-to-trigger-delivered-rule-bodies`. It is credited under an anonymised label
59
+ because [`source-confidentiality`](src/rules/source-confidentiality.md) forbids
60
+ the tracked tree recording which third-party package seeded an idea; the real
61
+ identifier resolves from the encrypted token in that roadmap's § Provenance.
62
+
63
+ Per [ADR-061](docs/decisions/ADR-061-corpus-grounding-layer.md), vendored
64
+ material keeps its upstream notice inside the skill directory; this table is
65
+ the aggregate pointer, never a replacement for the per-skill notice.
66
+
67
+ ### Runtime dependencies — code-graph engine (ADR-124)
68
+
69
+ **No longer shipped to consumers.** The native code-graph engine
70
+ (`src/scripts/code_graph/`, Class-A per
71
+ [ADR-124](docs/decisions/ADR-124-embedded-engine-doctrine.md)) once added two
72
+ exact-pinned *runtime* dependencies. The engine returned an honest null (recall
73
+ 0.365 vs grep 0.797) and is permanently `enabled: false`, so the pair moved out
74
+ of `dependencies` rather than shipping to every consumer for a path none of them
75
+ can reach — ~51 MB unpacked, the largest single install item in the set.
76
+
77
+ They are now `devDependencies`: npm does not install those for consumers, so a
78
+ consumer install resolves neither, while the engine's own test suite still runs
79
+ in CI. The exact pins live there, which keeps the ABI lock machine-checked (the
80
+ dependency-floor gate scans only `dependencies` and no longer sees the pair):
81
+
82
+ | Dependency | Version | License | Role |
83
+ |---|---|---|---|
84
+ | `web-tree-sitter` | 0.24.7 (exact) | MIT | WASM tree-sitter runtime — parses PHP/TS/JS with no native toolchain |
85
+ | `tree-sitter-wasms` | 0.1.13 (exact) | Unlicense | prebuilt grammar `.wasm` (ABI 14; the pair is ABI-locked and must move together) |
86
+
87
+ Re-enabling as a consumer means installing them yourself:
88
+ `npm i web-tree-sitter@0.24.7 tree-sitter-wasms@0.1.13`.
89
+
90
+ ## Method lineage — inspiration, not incorporated material
91
+
92
+ Three external sources shaped the *method* behind this package's AI-council
93
+ topology: how a multi-model council is staged, how its advisor personas frame a
94
+ question, and how the CLI is packaged. **No code or text from any of them is
95
+ incorporated**, which is why they appear here rather than in the
96
+ license-required section above — nothing about them is license-required, and
97
+ recording them anyway is an epistemic obligation rather than a legal one
98
+ (`code-provenance` § the knowledge layer: an artefact asserting an
99
+ externally-sourced claim either cites a harvest id or labels the statement as
100
+ own analysis).
101
+
102
+ They are named **anonymously**, per `source-confidentiality`: a shipped artifact
103
+ in this tree does not carry derivation attribution to a named external project.
104
+ The maintainer-side record holds the real identities; the links are retained as
105
+ `ENC1:` tokens, which are opaque here and decryptable only with the key in the
106
+ maintainer's user-global settings.
107
+
108
+ | Label | What it contributed | Link |
109
+ |---|---|---|
110
+ | **Source A** <!-- harvest:council-topology-three-stage-shape --> | The three-stage method shape: independent generation → blind peer evaluation → synthesis. | `ENC1:` (pending maintainer encryption) |
111
+ | **Source B** <!-- harvest:council-advisor-lens-framing --> | The thinking-lens framing that informed the shipped advisor personas. | `ENC1:` (pending maintainer encryption) |
112
+ | **Source C** <!-- harvest:council-cli-first-packaging --> | CLI-first / fallback packaging ergonomics. | `ENC1:` (pending maintainer encryption) |
113
+
114
+ **What the `ENC1:` placeholder means, stated rather than left to look like a
115
+ finished token.** The real links are held maintainer-side and are not encrypted
116
+ into this file yet; `src/scripts/_lib/link_crypto.ts` needs
117
+ `secrets.link_encryption_key`, which is deliberately absent from any tracked
118
+ tree and from an agent's reach. The rows in `provenance/harvests.jsonl` carry
119
+ `source_ref: opaque:…` instead, which is that ledger's own sanctioned form for a
120
+ source that cannot be pinned to a public revision — so the record is complete on
121
+ the ledger's terms while this column stays a placeholder.
122
+
123
+ ## Community contributions
124
+
125
+ External contributions merged into the catalog are credited here and carry
126
+ `provenance: community` in their frontmatter — the public catalog
127
+ ([`docs/catalog.md`](docs/catalog.md)) renders that as `community` in the
128
+ `source` column.
129
+
130
+ | Artefact | Contributor | Merged in |
131
+ |---|---|---|
132
+ | _none yet — yours could be the first_ | | |
133
+
134
+ If your work appears in this package unattributed, please open an issue —
135
+ attribution gaps are treated as bugs.
package/NOTICE ADDED
@@ -0,0 +1,13 @@
1
+ event4u/agent-config
2
+ Copyright (c) 2026 event4u
3
+
4
+ This product includes material derived from the following third-party
5
+ projects:
6
+
7
+ openai/codex-plugin-cc (https://github.com/openai/codex-plugin-cc)
8
+ Copyright OpenAI
9
+ Licensed under the Apache License, Version 2.0
10
+ (http://www.apache.org/licenses/LICENSE-2.0)
11
+ - The team-review system prompt and findings shape in
12
+ src/scripts/ai_team/team_dispatch.ts are derived from the plugin's
13
+ adversarial-review findings shape.
package/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  <p align="center"><a href="https://event4u.app"><img alt="event4u Agent Config" src=".github/assets/banner.png"></a></p>
2
2
 
3
- # Agent Config — every claim machine-checked, including "zero runtime daemon"
3
+ # Agent Config — every claim machine-checked, including the counts in these badges
4
4
 
5
5
  [![Smoke](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [![Public install smoke (3 OS × 2 Node)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml/badge.svg)](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [![npm](https://img.shields.io/npm/v/@event4u/agent-config?style=flat-square&label=npm&color=orange)](https://www.npmjs.com/package/@event4u/agent-config) [![agent-config MCP server](https://glama.ai/mcp/servers/event4u-app/agent-config/badges/score.svg)](https://glama.ai/mcp/servers/event4u-app/agent-config) [![MCP Toplist](https://mcptoplist.com/badge/glama%2Fevent4u-app%2Fagent-config.svg)](https://mcptoplist.com/server/glama%2Fevent4u-app%2Fagent-config)
6
6
 
7
- [![Skills](https://img.shields.io/badge/Skills-299-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-120-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-202-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-114-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-29-orange?style=flat-square)](dist/agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](dist/agent-src/personas/advisors/)
7
+ [![Skills](https://img.shields.io/badge/Skills-299-orange?style=flat-square)](dist/agent-src/skills/) [![Rules](https://img.shields.io/badge/Rules-120-orange?style=flat-square)](dist/agent-src/rules/) [![Commands](https://img.shields.io/badge/Commands-202-orange?style=flat-square)](dist/agent-src/commands/) [![Guidelines](https://img.shields.io/badge/Guidelines-118-orange?style=flat-square)](docs/guidelines/) [![Personas](https://img.shields.io/badge/Personas-29-orange?style=flat-square)](dist/agent-src/personas/) [![Advisors](https://img.shields.io/badge/Advisors-5-orange?style=flat-square)](dist/agent-src/personas/advisors/) <!-- claim:published-artifact-counts -->
8
+
9
+ <sub>**How these are counted** — one canonical counter, `agent-config` → `update_counts --check`, re-derives all six from the tree and fails CI on a drift of one. Two bases are not what the linked directory shows, so they are stated here rather than left to be inferred: **Commands 202** counts every command file **recursively** (the linked directory holds 61 at its top level), and **Rules 120** counts the **source** rules while the linked projection holds 119 — one rule is dormant and is not projected. **Personas 29** excludes the directory README. Counts are of files and directories: none of them measures quality, activation, or adoption. <!-- claim:published-artifact-counts --></sub>
8
10
 
9
11
  **Try it in 30 seconds** — drop one read-only subagent into any repo and watch it gate "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step. Start at the proof, not the catalog: **[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/)**.
10
12
 
@@ -14,7 +16,7 @@
14
16
 
15
17
  > **Choose your experience — developer · founder · content · agency · finance · ops. Add packs. Get a focused command set, not a 500-artefact dump.** Bring your own AI provider.
16
18
 
17
- **A deep library of skills, commands and governed rules** — plus a capability router that loads the right skill on intent and multi-agent orchestration with consensus review. The whole layer is compiled into **20 host agents** — of 23 detected, 3 being export-only<!-- claim:host-agent-count --> (Claude Code, Cursor, Augment, Cline, Windsurf, Copilot, Gemini CLI, Codex, Continue, Zed, JetBrains, Aider and more) — with **zero runtime daemon**.<!-- claim:no-runtime-daemon --> Six role-shaped entry paths sit on top, so any host becomes a reliable team member — without locking you to a single model or vendor.
19
+ **A deep library of skills, commands and governed rules** — plus a capability router that loads the right skill on intent and multi-agent orchestration with consensus review. The whole layer is compiled into **20 host agents** — of 23 detected, 3 being export-only<!-- claim:host-agent-count --> (Claude Code, Cursor, Augment, Cline, Windsurf, Copilot, Gemini CLI, Codex, Continue, Zed, JetBrains, Aider and more). **Resident processes are permitted only under the supervision contract ADR-249 establishes** — a policy this repository adopted on 2026-08-27, not a description of anything running today. Six role-shaped entry paths sit on top, so any host becomes a reliable team member — without locking you to a single model or vendor.
18
20
 
19
21
  ### What's different
20
22
 
@@ -86,7 +88,7 @@ is platform operation, not a user-work flow.)
86
88
 
87
89
  <p align="center">
88
90
  <a href="CHANGELOG.md">CHANGELOG</a> ·
89
- <a href="MIGRATION.md">Upgrade to 6.0</a> ·
91
+ <a href="MIGRATION.md">Upgrade to 14.x</a> ·
90
92
  <a href="CHANGELOG.md#breaking--v400-unified-setup-road-to-unified-setup">Breaking changes</a> ·
91
93
  <a href="https://github.com/event4u-app/agent-config/releases/latest">Latest release</a> ·
92
94
  <a href="https://github.com/event4u-app/agent-config/discussions">Discussions</a>
@@ -324,7 +326,7 @@ task mcp:cloud:secret-put # opt in to bearer-auth (recommended for private de
324
326
 
325
327
  → Operator walkthrough: [`mcp-cloud-setup`](docs/setup/mcp-cloud-setup.md) · Per-client config: [`mcp-client-config`](docs/setup/mcp-client-config.md) · Endpoints: [`mcp-cloud-endpoints`](docs/setup/mcp-cloud-endpoints.md).
326
328
 
327
- > **Scope — Lite, not Full.** The Worker serves read-only governance (skills · commands · rules · guidelines · contexts) as MCP prompts and resources, plus small read-only tools (`memory_lookup`, `chat_history_read`, `list_*`). It does **not** execute the ~112 Python scripts (linters, audits, `task ci`, work-engine hooks) — those require local install per [Quickstart](#quickstart).
329
+ > **Scope — Lite, not Full.** The Worker serves read-only governance (skills · commands · rules · guidelines · contexts) as MCP prompts and resources, plus small read-only tools (`memory_lookup`, `chat_history_read`, `list_*`). It does **not** execute the repository's local scripts (linters, audits, `task ci`, work-engine hooks) — those require local install per [Quickstart](#quickstart).
328
330
 
329
331
  > The built-in **local stdio** server is listed for discovery in the [Glama MCP Registry](https://glama.ai/mcp/servers/event4u-app/agent-config) (agent developers / contributors; requires a local checkout, not a turnkey install — see [ADR-067](docs/decisions/ADR-067-glama-registry-listing.md)).
330
332
 
@@ -597,7 +599,7 @@ task dev:setup # boot the onboarding wizard against the working tree
597
599
 
598
600
  **Invoking the CLI from a source checkout:** `./agent-config <command>` (the maintainer shim at the repo root → `scripts/agent-config` → `dist/cli/agent-config.js`). `npx @event4u/agent-config` doesn't resolve in the source repo without a prior `npm link`, since there's no `node_modules/.bin/agent-config` symlink — use `./agent-config` instead. Build the TS binary with `npm run build:cli` if `dist/cli/agent-config.js` is missing.
599
601
 
600
- → Full project structure and commands: [**docs/development.md**](docs/development.md) · [CONTRIBUTING.md](CONTRIBUTING.md). Stack: **TypeScript** CLI/UI + **Python 3.10+** build/lint scripts. MCP registry payloads render under `dist/mcp/` ([submission checklist](docs/distribution/mcp-submission-checklist.md)).
602
+ → Full project structure and commands: [**docs/development.md**](docs/development.md) · [CONTRIBUTING.md](CONTRIBUTING.md). Stack: **TypeScript** throughout — CLI, UI, and the build / lint scripts. MCP registry payloads render under `dist/mcp/` ([submission checklist](docs/distribution/mcp-submission-checklist.md)).
601
603
 
602
604
  ---
603
605
 
@@ -121,11 +121,75 @@ Resolve the argument. Directory mode: list files with size and line count, and
121
121
  say up front how many there are. **A large inbox is a triage problem, not a
122
122
  throughput problem** — never open ten files at full depth in one pass.
123
123
 
124
+ #### The inbox directory name is opaque, or the whole chain leaks
125
+
126
+ ```
127
+ AN INBOX DIRECTORY UNDER agents/tmp/ CARRIES AN OPAQUE ROUND IDENTIFIER.
128
+ NEVER NAME IT AFTER THE SOURCE. THE TRUE SOURCE IS RECORDED ONCE, `ENC1:`
129
+ ENCRYPTED, IN THE ROUND'S OWN INTAKE NOTE. ROADMAP `Source:` LINES CITE THE
130
+ CODENAME ONLY.
131
+ ```
132
+
133
+ `agents/tmp/` is gitignored, so a speaking directory name looks free. It is not:
134
+ the name gets **quoted** into a tracked roadmap `Source:` header, into an
135
+ evidence artefact, into a review-snapshot filename and into a PR body, and each
136
+ quote republishes it in a public repository. Measured at
137
+ `road-to-source-silence` Phase 0: 190 block-tier occurrences of quoted
138
+ non-opaque `agents/tmp(.old)/<name>/` paths across the tracked tree, plus one
139
+ tracked findings file named after a round. **The directory name is the root of
140
+ the leak chain — if it is opaque, nothing readable exists to be quoted.**
141
+
142
+ Accepted forms — `isOpaqueRoundId` in `src/scripts/_lib/source_shape.ts` is the
143
+ authority, and the gate enforces the same predicate:
144
+
145
+ | Form | Example |
146
+ |---|---|
147
+ | round-dated, optional 1-3 char disambiguator | `inbox-2026-08-h` |
148
+ | content-free hex | `round-a91f3c`, `set-a91f3c` |
149
+ | set number | `S17` |
150
+
151
+ Anything that reads is speaking by construction. If a round arrives under a
152
+ speaking name, **rename the directory before Phase 2** and record the mapping as
153
+ below; renaming after the first quote lands means chasing the quotes.
154
+
155
+ **Record the true source exactly once, encrypted.** In the round's intake note
156
+ (`agents/tmp/<round-id>/intake.md`):
157
+
158
+ ```bash
159
+ printf '%s' '<the real source, url or description>' \
160
+ | ./scripts-run src/scripts/_lib/link_crypto encrypt
161
+ ```
162
+
163
+ Paste the `ENC1:` token into the intake note. That token, and the codename map at
164
+ `agents/evidence/reports/source-codename-map.md`, are the only places the
165
+ correspondence may exist. Never a second plaintext copy — not in the roadmap, not
166
+ in the PR body, not in a commit message.
167
+
124
168
  ### Phase 2 — Triage (cheap, all files)
125
169
 
126
170
  One pass per file, shallow, producing a table before any deep read:
127
171
 
128
- | file | genre | age | drafted-against | recurrence | first-impression disposition |
172
+ | file | genre | age | drafted-against | recurrence | lineage | first-impression disposition |
173
+
174
+ `lineage` is `n/a` for a file that claims no consolidation, `complete` for one
175
+ whose declared parent set matches the siblings present, or `omits: <names>` /
176
+ `ghost: <name>` / `undeclared`. Fill it from one command over the folder, not by
177
+ reading:
178
+
179
+ ```bash
180
+ ./scripts-run src/scripts/lint_consolidation_lineage --root <the inbox folder>
181
+ ```
182
+
183
+ The column exists because a consolidating artifact is the one genre that reads
184
+ as *finished* while being incomplete: it presents its content as adjudicated —
185
+ parents named, conflicts resolved, a kill register for what was rejected — so a
186
+ parent missing from that list is not *killed*, it is *undiscussed*, and nothing
187
+ in the artifact distinguishes those two states. Measured over four inbox folders
188
+ carrying a declared consolidation, four had an incomplete lineage
189
+ (`agents/evidence/analysis/consolidation-lineage-census-2026-08-26.md`). It sits
190
+ in the triage table rather than in a deep read for the same reason `recurrence`
191
+ does: it is one command, and by the time a deep read starts the artifact has
192
+ already been believed.
129
193
 
130
194
  `recurrence` is `first-seen` or a pointer to the earlier artifact — the marker in
131
195
  the file's own words, or a hit in `agents/tmp.old/` on the same subject (Phase
@@ -400,6 +464,16 @@ visibly not a new one, and the resulting learning is emitted as an artefact in
400
464
  Phase 5 like any other survivor — never as a line in the reply that nothing reads
401
465
  again.
402
466
 
467
+ **A status-update prediction naming a concrete mechanism becomes a stub or a
468
+ roadmap in the SAME run, never a line in a file about to be consumed.** That is
469
+ the "right, never recorded" outcome caught at its source: the round before
470
+ `inbox-2026-08-g` already named the hook-concern axis as the next ratchet
471
+ candidate at 68→69, the sentence sat in an untracked inbox file, the file was
472
+ consumed, and nothing under `agents/roadmaps/` inherited it — so the same
473
+ recommendation arrived again a round later, correct both times and durable
474
+ neither. A prediction that names a mechanism is already an artefact; the only
475
+ question is whether anyone writes it down before its carrier disappears.
476
+
403
477
  ### Phase 5 — Map survivors onto this suite's artefact types
404
478
 
405
479
  The question is never "what does the file say" but **"what does it become here"**:
@@ -413,6 +487,65 @@ The question is never "what does the file say" but **"what does it become here"*
413
487
  | reference material read on demand | a `guideline` or `context` |
414
488
  | a measured finding | a `decision-record`/ADR, not a rule |
415
489
  | a defect claim | a roadmap item, once verified |
490
+ | a claim that maps onto an existing stub | **not a fresh artifact — a stub-blocked finding, see below** |
491
+ | a consolidation omitting a parent | **not an artifact — a discharge, see below** |
492
+
493
+ **An omitted parent is discharged, never left silent.** When Phase 2's `lineage`
494
+ column read anything but `n/a` or `complete`, this phase says what happened to
495
+ each omitted parent. Exactly three discharges are legal, and the choice is the
496
+ operator's:
497
+
498
+ 1. **Fold it in** — read the omitted parent and carry its surviving items into
499
+ the consolidation, marking them as coming from it.
500
+ 2. **Record a kill ID for it** — the consolidation's kill register gains a row
501
+ naming the parent and why its content does not survive.
502
+ 3. **State that it was read and adds nothing** — one sentence, in the artifact,
503
+ naming the parent.
504
+
505
+ **Silence is the failure mode; any of the three is a complete discharge.** The
506
+ obligation is to *name* it, never to consolidate it — whether the omission was
507
+ correct is a judgement the operator makes and this command does not. A finding
508
+ that is usually wrong gets ignored, which is why a false positive costs one
509
+ sentence (discharge 3) rather than a re-run.
510
+
511
+ A `ghost:` reading — a declared parent with no matching file — has the same three
512
+ discharges plus a fourth that is really a correction: fix the name. A lineage
513
+ naming a plan nobody can open is the cheaper half of the same defect.
514
+
515
+ **A survivor that maps onto an existing stub is never resolved into a verdict
516
+ line.** When a verified claim lands on something `agents/roadmaps/stubs/` already
517
+ holds, the mapping is neither "a defect claim → a roadmap item" nor "nothing to
518
+ do": the plan exists, and something is holding it. Before this row the table had
519
+ no entry for that state, so a run that found one had no prescribed output and
520
+ wrote a summary sentence instead. The round that produced this row closed exactly
521
+ so — *"Not a neglected guard: the cost of an unmade owner decision. On the owner's
522
+ desk."* That sentence is accurate, and it is why nine feedback rounds on one guard
523
+ produced no executable item: it names a state and hands nobody anything to do.
524
+
525
+ The run's output MUST carry all four of these, per stub matched. Three of them
526
+ are the difference between a finding and a shrug, and the fourth is already
527
+ computed upstream:
528
+
529
+ 1. **The stub path** — `agents/roadmaps/stubs/<slug>.md`, so a reader opens it
530
+ instead of searching for it.
531
+ 2. **Its blocker slug** — the `### blocker: <slug>` holding it, named. Where the
532
+ hold is recorded outside any blocker section, say so in those words and name
533
+ the section; "waiting on a decision" with nothing named is the verdict line
534
+ again, one word longer.
535
+ 3. **Its age in days** — days since the file first appeared under
536
+ `agents/roadmaps/stubs/`, from
537
+ `git log --diff-filter=A --format=%ad --date=short -- <path> | tail -1`. A
538
+ stub parked eleven days and one parked two hundred are different findings and
539
+ a reader cannot tell them apart from the path.
540
+ 4. **The recurrence count from Phase 4c** — how many earlier rounds raised the
541
+ same subject. A first arrival and a ninth are different findings, 4c has
542
+ already counted it, and dropping it here is what let one subject arrive nine
543
+ times as if each were new.
544
+
545
+ Missing any of the four leaves the survivor undischarged. This row does not
546
+ decide what happens to the stub — promotion is the estate's question and this
547
+ command does not answer it — it only forbids resolving the survivor into prose
548
+ that names no artifact.
416
549
 
417
550
  Three hard defaults, from this repo's own scar tissue:
418
551
 
@@ -449,10 +582,20 @@ transcription. Phase 4b states this obligation for Phases 5 and 6 both; it is
449
582
  repeated here because this is the phase that writes the artefact, and an
450
583
  obligation named only upstream is one a Phase-6 executor never sees.
451
584
 
585
+ **The `Source:` line carries the codename, never the source.** Per Phase 1's
586
+ naming rule the round directory is already opaque, so
587
+ `> **Source:** \`agents/tmp.old/inbox-2026-08-h/\`` is a compliant header and a
588
+ speaking one is not. The gate's `source-header` and `tmp-quote` classes both
589
+ block inside `agents/**`, so a speaking value fails CI rather than merely
590
+ reading badly. If the roadmap needs to say *what kind* of source it was, describe
591
+ the class ("an external acceptance-pipeline reference") and put the identity in
592
+ the encrypted intake note.
593
+
452
594
  Then the inbox contract from
453
595
  [`agents-layout`](../../../../docs/contracts/agents-layout.md), in the **same
454
596
  reply**: `mv` the consumed file to `agents/tmp.old/`, point the roadmap's
455
- `Source:` line at its new path, and regenerate the dashboard. A consumed file
597
+ `Source:` line at its new path — still the codename — and regenerate the
598
+ dashboard. A consumed file
456
599
  left in `agents/tmp/` is a rule violation, not untidiness. Move only the files
457
600
  actually processed — never sweep the rest of the inbox.
458
601
 
@@ -7,7 +7,7 @@ cluster: feature
7
7
  sub: dev
8
8
  description: Full 7-phase feature development workflow for complex features.
9
9
  argument-hint: "[description]"
10
- skills: [laravel, php-coder]
10
+ skills: [laravel, php-coder, test-driven-development]
11
11
  suggestion:
12
12
  eligible: false
13
13
  rationale: "Cluster sub-command — reached via its cluster head's routing or its explicit /cluster:sub name; not independently suggested (surface-consolidation)."
@@ -88,7 +88,12 @@ Do NOT use for single-line fixes, trivial changes, or urgent hotfixes.
88
88
  3. Follow chosen architecture from Phase 4.
89
89
  4. Follow codebase conventions strictly (read guidelines).
90
90
  5. Update task list as progress is made.
91
- 6. Write tests alongside the implementation.
91
+ 6. Work **one behavior at a time**: write the failing test for that behavior,
92
+ observe it fail, write the minimum code that makes that one behavior pass,
93
+ then take the next behavior. A test phase followed by a code phase is
94
+ batch-TDD, not test-first — it buys the ordering and loses the feedback.
95
+ The only exceptions are the Do-NOT list in the `test-driven-development`
96
+ skill; a skipped test-first cycle is recorded in the decision log, never silent.
92
97
 
93
98
  ### Phase 6: Quality Review
94
99
 
@@ -81,7 +81,11 @@ Style fidelity may be lower."* Non-blocking.
81
81
  Per [`write-engine § 2`](../../../docs/contracts/write-engine.md).
82
82
  Flag form: `--tone=<formal|casual|neutral>`,
83
83
  `--length=<words>`, `--channel=<linkedin-post|tweet|blog|freeform>`,
84
- `--audience=<text>`. Missing flags → interactive prompt, **one
84
+ `--audience=<text>`. The channel values and their length defaults are
85
+ the schema-validated set in `src/config/drafting-channels.yml` — edit
86
+ that file and `write-engine.md` together, never one alone;
87
+ `tests/scripts/drafting_channels_schema.test.ts` fails on drift, and on
88
+ the short form `linkedin`, which is not a value. Missing flags → interactive prompt, **one
85
89
  question per turn**, in the order Topic → Tone → Length → Channel →
86
90
  Audience. Tone / length defaults derive from the per-channel table
87
91
  and the vocab-register → tone mapping in the engine contract.
@@ -7,7 +7,7 @@ routes_to: [refine-ticket, feature-planning]
7
7
  replaces: []
8
8
  visibility: visible
9
9
  skills: [refine-ticket, feature-planning]
10
- description: Drive a ticket end-to-end through refine → memory → analyze → plan → implement → test → verify → report — Option-A loop over the `work_engine` engine, block-on-ambiguity, no auto-git.
10
+ description: Drive a ticket end-to-end through refine → memory → analyze → plan → implement → test → verify → report — Option-A loop over `work_engine`, block-on-ambiguity, no auto-git, test-first enforced.
11
11
  argument-hint: "[ticket-key | url | bundle-path | pasted-text]"
12
12
  suggestion:
13
13
  eligible: true
@@ -122,7 +122,7 @@ catalog fixes are test-driven — a bounded generate→run→revise→re-run loo
122
122
  a numeric threshold (then a judge confirms), reusing the same N=3 cap. Use
123
123
  test/quality verdicts only; the live-app Playwright verdict stays deferred. The
124
124
  loop is multi-turn reasoning, not a runtime — it honors
125
- [`no-runtime-boundary`](../../docs/contracts/no-runtime-boundary.md) exactly as
125
+ [`resident-process-governance`](../../docs/contracts/resident-process-governance.md) exactly as
126
126
  the mission does.
127
127
 
128
128
  Handle exit codes per the `/work` contract:
@@ -5,7 +5,7 @@ pack: meta
5
5
  visibility: internal
6
6
  cluster: orchestrate
7
7
  skills: [subagent-orchestration]
8
- description: Run a YAML pipeline defined under `.agent-config/orchestrations/` — chains personas / skills / commands / sub-agents per the orchestration-dsl-v1 contract
8
+ description: Run a YAML pipeline defined under `.agent-config/orchestrations/` — chains personas / skills / commands / subagents per the orchestration-dsl-v1 contract
9
9
  argument-hint: "<pipeline-name | path> [key=value ...]"
10
10
  suggestion:
11
11
  eligible: true
@@ -23,7 +23,7 @@ packs:
23
23
 
24
24
  Execute a YAML pipeline file from `.agent-config/orchestrations/`
25
25
  against the current workspace. Pipelines are deterministic chains of
26
- personas, skills, commands, and sub-agents pinned by the
26
+ personas, skills, commands, and subagents pinned by the
27
27
  [`orchestration-dsl-v1`](../docs/contracts/orchestration-dsl-v1.md)
28
28
  contract.
29
29
 
@@ -75,7 +75,11 @@ operator notes, not voice signal.
75
75
  Per [`write-engine § 2`](../../../docs/contracts/write-engine.md).
76
76
  Flag form: `--tone=<formal|casual|neutral>`,
77
77
  `--length=<words>`, `--channel=<linkedin-post|tweet|blog|freeform>`,
78
- `--audience=<text>`. Missing flags → interactive prompt, **one
78
+ `--audience=<text>`. The channel values and their length defaults are
79
+ the schema-validated set in `src/config/drafting-channels.yml` — edit
80
+ that file and `write-engine.md` together, never one alone;
81
+ `tests/scripts/drafting_channels_schema.test.ts` fails on drift, and on
82
+ the short form `linkedin`, which is not a value. Missing flags → interactive prompt, **one
79
83
  question per turn**, in the order Topic → Tone → Length → Channel →
80
84
  Audience. Defaults inherit from the engine's per-channel table and
81
85
  the pace mapping above.
@@ -287,9 +287,9 @@ built bundle.
287
287
  ## 7. Expiry is a reported state, never a stall
288
288
 
289
289
  ```
290
- WHEN THE AUTHORIZATION WINDOW CLOSES WITH WORK LEFT, THE RUN STOPS CLEANLY
291
- AND REPORTS. IT NEVER RETRIES THE GUARD, AND IT NEVER EDITS THE GUARD,
292
- ITS SOURCE, OR ITS BUNDLES — READ-ONLY VERIFICATION ONLY.
290
+ WHEN THE AUTHORIZATION WINDOW CLOSES WITH WORK LEFT, THE RUN PAUSES, REPORTS,
291
+ AND ASKS FOR RE-AUTHORIZATION. IT NEVER RETRIES THE GUARD, AND IT NEVER EDITS
292
+ THE GUARD, ITS SOURCE, OR ITS BUNDLES — READ-ONLY VERIFICATION ONLY.
293
293
  ```
294
294
 
295
295
  **Unreachable while the merge step is gated**, and stated rather than left for
@@ -298,9 +298,22 @@ operation (`push` and `commit` are `WARN_OPS`), so the window governs nothing
298
298
  it does. This section is the contract for when the gate opens.
299
299
 
300
300
  Write the summary as-is with a `window-expired` disposition per unprocessed PR
301
- and name the exact re-authorization needed. Widening `LEDGER_MAX_AGE_MS` is
302
- forbidden practice: on 2026-08-21 it was patched to six hours for a drain run
303
- and the widening reached the trunk.
301
+ and name the exact re-authorization needed. Then STOP and wait — do not end the
302
+ run, and do not proceed to the next PR. ADR-251 (2026-08-30) decided this
303
+ shape: expiry is a pause, not a termination.
304
+
305
+ **The operator's reply is what resumes it, and it renews the window through the
306
+ path that already exists.** `git_authorization_hook.ts` rewrites this session's
307
+ ledger with a fresh `detected_at` on every human-typed prompt, so a reply
308
+ carrying the re-authorization you named resets the age the guard compares
309
+ against — no new mechanism, and the signal still comes from text the user typed.
310
+ Re-verify the manifest entry (number and head SHA) before resuming, exactly as
311
+ § 8 requires: the pause is a window in which the world can move.
312
+
313
+ Widening `LEDGER_MAX_AGE_MS` is still forbidden practice, and ADR-251 kept the
314
+ 30-minute value deliberately rather than by omission: on 2026-08-21 it was
315
+ patched to six hours for a drain run and the widening reached the trunk. The run proposes no value for it, edits neither it nor its bundles,
316
+ and treats a refusal as the answer.
304
317
 
305
318
  ## 8. Kill switches, and what happens after a merge
306
319
 
@@ -313,11 +313,25 @@ branch setting, push, open a PR, re-run CI, update a merge base, fix a failing
313
313
  test, authorise spend inside a budget — is machine-executable by the agent, and
314
314
  is therefore remediation work rather than a blocker.
315
315
 
316
- | Outcome | When | Success? |
317
- |---|---|---|
318
- | `complete` | `count_open == 0` and the PR is open | yes — archival check runs |
319
- | `blocked` | every remaining open step is **externally impossible** for the agent | **no** — partial progress, labelled as such |
320
- | a halt | one of the five conditions fired | **no** — the halt is reported |
316
+ | Outcome | When | Success? | terminal state |
317
+ |---|---|---|---|
318
+ | `complete` | `count_open == 0` and the PR is open | yes — archival check runs | `success` |
319
+ | `blocked` | every remaining open step is **externally impossible** for the agent | **no** — partial progress, labelled as such | `blocked`, or `approval-required` where the work is finished and waiting on a human |
320
+ | a halt | one of the five conditions fired | **no** — the halt is reported | `exhausted` when a declared budget ran out; `stagnated` when the same failure signature repeated with budget left |
321
+
322
+ **The closing report names the terminal state by word**, from
323
+ [`terminal-states`](../../../../src/agent-src/contexts/execution/terminal-states.md).
324
+ The reason is the failure that vocabulary exists to stop: a run that stopped at
325
+ its iteration cap and one that finished both leave the roadmap looking the same,
326
+ because the checkbox glyphs cannot express `exhausted`, `stagnated` or
327
+ `approval-required` — they collapse into `[ ]` and `[~]`. Three of the six states
328
+ are therefore invisible in the dashboard and visible only in the report, which is
329
+ why the report has to say the word.
330
+
331
+ `exhausted` and `stagnated` are **never** reported as `complete`, whatever
332
+ partial progress exists, and they are kept apart on purpose: `exhausted` says the
333
+ budget may have been too small and raising it is a legitimate response;
334
+ `stagnated` says more of the same will not help and raising it is the wrong one.
321
335
 
322
336
  `blocked-preflight` no longer exists. A run always starts.
323
337
 
@@ -6,7 +6,7 @@ visibility: internal
6
6
  cluster: tdd
7
7
  sub: red
8
8
  skills: [test-driven-development]
9
- description: TDD red phase — enumerate cases, write ONE failing test, watch it fail at an assertion (not an import error)
9
+ description: TDD red phase — enumerate cases, write ONE failing test, watch it fail for a reason that is about the behaviour under test
10
10
  argument-hint: "[behavior to test]"
11
11
  suggestion:
12
12
  eligible: false
@@ -26,6 +26,16 @@ Drives the **Design → Test-Red** phases of
26
26
 
27
27
  1. State the behavior in one sentence; enumerate the cases (happy / boundary / error).
28
28
  2. Write ONE failing test for the first case.
29
- 3. Run it; confirm it fails at an **assertion**, not an import/collection error.
29
+ 3. Run it; confirm the failure is **about the behavior under test**. Valid:
30
+ a failing **assertion** · a **missing target** (class-not-found, or a
31
+ compile/type error naming the unimplemented symbol) · a **contract
32
+ failure**. Invalid: a broken **fixture** · a **syntax error** in the test ·
33
+ a missing **unrelated dependency** · a **runner or environment** fault —
34
+ those would fail identically with the behavior fully implemented, so they
35
+ measure nothing. A symbol that does not exist yet can only fail at load;
36
+ demanding an assertion there would force a production stub first, which is
37
+ what this phase exists to prevent. Taxonomy owner:
38
+ [`test-driven-development`](../../../skills/test-driven-development/SKILL.md)
39
+ § What makes a RED valid.
30
40
  4. Honor the Test-Red Forbidden block: **no production edits** (diff = `tests/**` only).
31
41
  5. Output: the failing test + its observed failure reason. Hand to `/tdd green`.
@@ -7,7 +7,7 @@ routes_to: [refine-prompt, command-routing]
7
7
  replaces: []
8
8
  visibility: visible
9
9
  skills: [refine-prompt, command-routing]
10
- description: Drive a free-form prompt end-to-end through refine → score → plan → implement → test → verify → report — Option-A loop over the `work_engine` engine, confidence-band gated, no auto-git.
10
+ description: Drive a free-form prompt end-to-end through refine → score → plan → implement → test → verify → report — Option-A loop over `work_engine`, confidence-band gated, no auto-git, test-first.
11
11
  argument-hint: "[prompt]"
12
12
  suggestion:
13
13
  eligible: true
@@ -115,3 +115,43 @@ the enumerated-set carve-out.
115
115
  - User explicitly asks for full output — show it.
116
116
 
117
117
  → Detailed patterns: `docs/guidelines/agent-infra/output-patterns.md`
118
+
119
+ ## Independent calls go in ONE block — the evidence
120
+
121
+ ```
122
+ CALLS WITH NO DEPENDENCY BETWEEN THEM GO IN THE SAME BLOCK.
123
+ A SECOND CALL THAT DOES NOT READ THE FIRST ONE'S RESULT IS NOT A SECOND TURN.
124
+ BEFORE EMITTING A SINGLE CALL, ASK WHAT ELSE IS ALREADY KNOWN TO BE NEEDED.
125
+ ```
126
+
127
+ The ceiling above forbids repetition; this forbids the opposite failure —
128
+ splitting work that had no reason to be split. It is stated because it is
129
+ **measured, not suspected**: over ten sessions of this package,
130
+ `probe_turnaround` reports a mean tool-call batch size of **1.01**, with 27 of
131
+ 2,889 tool-using requests (0.93 %) carrying more than one call. At a 4.7 s
132
+ median generation latency, a request that fans out to 42 calls spends about five
133
+ minutes on serialization before a single tool runs.
134
+
135
+ **Nothing in this package caused that, and nothing in it can fix it.** The cause
136
+ was looked for and is recorded as absent
137
+ (`agents/evidence/analysis/agent-turnaround-2026-08-30.md` § E2): no rule, skill
138
+ or template forbids parallel calls, and parallel calls do occur — so 1.01 is a
139
+ tendency, not a floor with a mechanism behind it.
140
+
141
+ **The discriminator is the dependency, never the count.** Two greps over
142
+ different files, a status and a log, three independent reads named before the
143
+ first one runs — one block. A read whose path comes out of the previous result —
144
+ two blocks, and batching them would be guessing.
145
+
146
+ **Do not read this as "write shorter commands".** In the same corpus, 98.1 % of
147
+ `Bash` calls are already compound or heredoc, and the 18 % that exceed 1,500
148
+ characters carry 75 % of all command bytes — those are one-shot scripts that each
149
+ replace three to six round-trips. Splitting them trades one expensive call for
150
+ several cheap ones and makes the number worse while looking like a fix.
151
+
152
+ **Honest enforcement — `instruction-only`.** No gate can observe a call that was
153
+ not batched: a transcript records the calls that happened, never the block they
154
+ could have shared. `probe_turnaround` reports the rate afterwards and refuses to
155
+ gate on a store CI does not have. This paragraph is the whole mechanism, and the
156
+ roadmap that added it pre-committed to recording a null if the rate does not
157
+ move rather than repeating the reminder more loudly.