@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
@@ -232,8 +232,11 @@ NEVER A SILENTLY DEGRADED ANSWER. NO LLM CLASSIFIER FALLBACK (CUT C3).
232
232
  **Why rg-first** (council 2026-07-28, 2 rounds): the pre-registered benchmark
233
233
  behind the `code-graph-retrieval-null` claim (`docs/CLAIMS.md`) measured
234
234
  native-graph recall 0.365 vs grep 0.797 on graph-shaped questions — an
235
- indexing gap that keeps `code_graph.enabled` false permanently. The accelerant
236
- clause in the table above is that bound's escape hatch and is inert today.
235
+ indexing gap that keeps `code_graph.enabled` false BY DEFAULT — not
236
+ permanently: the 2026-08-15 withdrawal retracted that, and the figures predate
237
+ the 2026-08-22 extractor repair. The accelerant clause above is that bound's
238
+ escape hatch; `classifyLookup` reads the flag, so turning it on is the whole
239
+ change.
237
240
 
238
241
  **Escalation, not degradation:** a primitive that returns nothing (index miss,
239
242
  pattern too ambiguous, report script absent) — **or an unusable result**
@@ -157,6 +157,27 @@ When validating a single target, run the **specific** check, not a meta-task tha
157
157
 
158
158
  Concrete tool mapping — verify with the narrowest tool that proves the target green: a single `curl` / Playwright spec / browser run for HTTP behavior, the project's test runner with a `--filter` for one test, a debugger / `xdebug` step-through for one frame. Never substitute a meta-pipeline for a tool that pinpoints the failure.
159
159
 
160
+ ### Progress-primary ordering — and why the cap stays
161
+
162
+ Where the objective is **countable** — findings closed, tests passing,
163
+ occurrences remaining — the primary stop signal is **no progress** or a **new
164
+ minimum**, and the N=3 iteration cap is the **backstop**. A counter alone cannot
165
+ tell three attempts that each closed a finding from three that changed nothing.
166
+
167
+ **Do not remove the cap.** A no-progress signal is only as good as the metric
168
+ behind it, and a metric that stops moving because the MEASUREMENT broke looks
169
+ exactly like one that stops moving because the work is done. The cap bounds the
170
+ damage when the primary signal is wrong.
171
+
172
+ The two stops are different outcomes and are reported as different words: the cap
173
+ firing is `exhausted`, a repeating failure signature with budget left is
174
+ `stagnated` — see
175
+ [`terminal-states`](terminal-states.md). Collapsing them invites the wrong
176
+ remedy, because raising a budget helps the first and never the second.
177
+
178
+ Where the objective is NOT countable, the cap is the only signal and the N=3
179
+ budget above applies unchanged.
180
+
160
181
  ## Adaptive effort & stop (RDP)
161
182
 
162
183
  Scale effort to task difficulty, and stop when marginal evidence drops — coupled
@@ -39,6 +39,7 @@ v1 forward-compat rule on unknown fields).
39
39
  |---|---|---|
40
40
  | `task_size_estimate` | int | Pre-dispatch estimate of the task's size (the orchestrator's sizing heuristic). Counts only, no body. |
41
41
  | `spawn_count` | int | Number of subagents dispatched for this task. `0` → handled in-session. |
42
+ | `empty_cycles` | int \| null | Trigger fires suppressed as duplicates since the last outcome record. Reported as its OWN quantity and never folded into a success rate's numerator or denominator: a duplicate is not an outcome, and it is also not nothing — a rising count is what an idle loop looks like from outside. `null` = not tracked by this producer, which is **not** the same as zero duplicates observed. Deduplication rule in `src/scripts/_lib/empty_cycles.ts`: same key AND inside the window, both conjuncts required. |
42
43
  | `tiers` | string[] | Model tiers dispatched to, one entry per spawn class (e.g. `["sonnet","opus"]`). Tier names only, no prompts. |
43
44
  | `token_delta` | int | Net token cost of the dispatch versus the in-session baseline. Positive = orchestration cost more; negative = saved tokens. Counts only. |
44
45
  | `token_delta_provenance` | enum | `"measured"` when sourced from host-reported `usage` metadata (preferred); `"estimated"` when self-estimated from response length (mark always when host usage is unavailable). |
@@ -47,6 +47,46 @@ Direction chosen: **narrow the contract to what the validator already accepts**,
47
47
  not widen the validator. Widening makes every future divergence legal by
48
48
  construction, which is how one contract came to have three states.
49
49
 
50
+ ## Why success is gated, and not accepted
51
+
52
+ ```
53
+ AN UNVERIFIED SELF-REPORT IS INDISTINGUISHABLE FROM A RESULT.
54
+ A RETURN THAT CLAIMS SUCCESS AND SHOWS NO CHANGE AGAINST ITS OWN DECLARED
55
+ OUTPUT CONTRACT IS NOT EVIDENCE OF SUCCESS. IT IS EVIDENCE OF A CLAIM.
56
+ ```
57
+
58
+ **The failure this prevents.** Every downstream aggregation reads the recorded
59
+ outcome, not the return. `src/scripts/extract_audit_patterns.ts` mines repeated
60
+ patterns from it, and the per-asset effectiveness report is built on the same
61
+ stream. A forged `success` does not stay one line: it becomes signal, and the
62
+ report then recommends keeping an asset that never worked and retiring one that
63
+ did. Nothing downstream can detect it, because at that point the forgery is
64
+ indistinguishable from the thing it imitates — which is the whole reason the
65
+ check has to happen where the record is written rather than where it is read.
66
+
67
+ **Why the gate reads the declared output contract and not the diff.** The
68
+ obvious rule — claimed success plus an empty diff is never a success — is wrong
69
+ here, and wrong in a way that is worse than doing nothing. Analysis, review and
70
+ read-only research dispatches are a large share of this repository's subagent
71
+ traffic, and every one of them legitimately produces no diff. The unconditional
72
+ rule would mark them all as failures and poison the same aggregation in the
73
+ opposite direction. **Zero diff may be valid, so "zero diff = failure" must not
74
+ be global.** The gate therefore fires only where the dispatch itself declared
75
+ that a code change was the expected output.
76
+
77
+ **An unmeasured diff is not an empty diff.** Where the producer did not measure,
78
+ the gate does not fire. Treating "not measured" as zero manufactures the same
79
+ forgery with the opposite sign, and an aggregation cannot tell the two apart any
80
+ better than it can tell a forged success from a real one.
81
+
82
+ Implemented by `envelopeOutcome` in `src/scripts/_lib/orchestration_record.ts`,
83
+ the tree's only cross-domain outcome mapping. Because it is the only one, the
84
+ mapping is **versioned**: lines carry `outcome_semantics`, and an absent field
85
+ means the pre-2026-08-30 unconditional semantics. `audit-log-v1` is append-only,
86
+ so a labelling change cannot be rolled back the way a gate can — a reader
87
+ aggregating across the cutover segments on that field rather than inferring from
88
+ a date.
89
+
50
90
  ### Per-field divergence, one row per field
51
91
 
52
92
  | Field | spawn-contract (f) | `team_dispatch` model JSON (`:297`) | `subagent_response.ts` validator | `dispatch_r2_reviewer` |
@@ -104,11 +104,23 @@ doing its job; the orchestrator verifies (or revises) the parent first.
104
104
  ## Rollback guardrails — surfaced, not auto-disabled
105
105
 
106
106
  ```
107
- A CONFIG PACKAGE RUNS NO DAEMON. THERE IS NO AUTOMATIC COHORT-DISABLE.
107
+ A RESIDENT PROCESS HERE IS GOVERNED, NEVER AUTOMATIC. NO COHORT-DISABLE.
108
108
  BREACHES ARE SURFACED FROM THE AUDIT LOG FOR THE MAINTAINER / USER TO ACT ON.
109
109
  THE ONLY AUTOMATIC STOP IS THE PER-TARGET N=3 BUDGET.
110
110
  ```
111
111
 
112
+ > **Amended 2026-08-27 (ADR-249).** The first line used to read *"A CONFIG
113
+ > PACKAGE RUNS NO DAEMON"*, and that premise no longer holds: a **supervised**
114
+ > resident process is permitted in core under four governance conditions
115
+ > (`docs/contracts/resident-process-governance.md`, class P1). The block's force
116
+ > is unchanged, because the daemon clause was never what it governed — the rule
117
+ > here is that a breach never stops a cohort by itself, and that is if anything
118
+ > more load-bearing now than when nothing could be running. The replacement
119
+ > states the adopted constraint rather than an absence, which is the wording rule
120
+ > the same reversal imposes on every surface: name what the repository holds
121
+ > itself to, never a state of the world.
122
+
123
+
112
124
  The guardrail thresholds (`breachedGuardrails()`), read off the
113
125
  [`orchestration-telemetry`](orchestration-telemetry.md) audit signals:
114
126
 
@@ -0,0 +1,96 @@
1
+ # Terminal states — what a run REPORTS when it stops
2
+
3
+ > `road-to-skill-ecosystem-runtime-enforcement` Phase 4. Loaded on demand;
4
+ > the obligation surface is [`verify-before-complete`](../../rules/verify-before-complete.md).
5
+
6
+ A run has exactly one terminal state, and reporting the wrong one is not a
7
+ wording problem. **An error or an exhausted budget is never reported as
8
+ success.** The failure this vocabulary exists to stop is the one that reads
9
+ identically to a win: a loop that hit its iteration cap, a gate that could not
10
+ run, an approval that never came — each ending with a summary that says the work
11
+ is done.
12
+
13
+ ## The six states
14
+
15
+ | state | what it means | what it is NOT |
16
+ |---|---|---|
17
+ | `success` | The stated objective is met AND verified by a command run this turn. | Not "the edits landed". Landing is not verifying. |
18
+ | `clean-no-op` | Nothing needed doing, and that was **established**, not assumed. | Not "I found nothing" from a scan that never ran. A dead scope is `blocked`. |
19
+ | `blocked` | An external precondition is missing: a credential, a permission, a service, a decision only the user can make. | Not "hard". A blocker is a thing that is absent, not a thing that is difficult. |
20
+ | `approval-required` | The work is ready and the next action crosses a gate the agent may not cross alone. | Not `blocked`: nothing is missing, and the run produced a deliverable. |
21
+ | `exhausted` | A declared budget ran out — iterations, tokens, spend, wall-clock. | **Never** `success`, whatever partial progress exists. The cap firing IS the outcome. |
22
+ | `stagnated` | The budget has not run out and progress has stopped: the same failure signature is repeating. | Not `exhausted`. Stagnation is detected by a NO-PROGRESS signal, not by a counter. |
23
+
24
+ **Why `exhausted` and `stagnated` are separate**, when both stop a loop: they
25
+ have different remedies and different next actions. `exhausted` says *the work
26
+ may be fine and the budget was too small* — raising it is a legitimate response.
27
+ `stagnated` says *more of the same will not help* — raising the budget is the
28
+ wrong response, and a vocabulary that collapses them invites exactly that.
29
+
30
+ ## The mapping onto roadmap glyphs, and the three states glyphs cannot express
31
+
32
+ Roadmap checkboxes carry four glyphs. They describe a **step's disposition**, not
33
+ a **run's outcome**, and the gap is not an oversight — it is what makes a
34
+ budget-exhausted stop indistinguishable from a completed one in a dashboard.
35
+
36
+ | glyph | meaning | nearest terminal state |
37
+ |---|---|---|
38
+ | `[x]` | done | `success` — and only when a verify clause was met |
39
+ | `[ ]` | open | *(no state — the step has not run)* |
40
+ | `[~]` | deferred | `blocked` or `approval-required`, undistinguished |
41
+ | `[-]` | cancelled | *(a decision, not a run outcome)* |
42
+
43
+ **Three states have no glyph, and they are exactly the ones a validation budget
44
+ and a hard-blocker class produce:**
45
+
46
+ 1. **`exhausted`** — the run stopped at its cap with the step still open. The
47
+ glyph stays `[ ]`, which is identical to *never attempted*. A reader cannot
48
+ tell three failed attempts from zero.
49
+ 2. **`stagnated`** — same `[ ]`, and the distinction that matters (retrying is
50
+ pointless) is invisible.
51
+ 3. **`approval-required`** — collapses into `[~]` alongside `blocked`, so a
52
+ roadmap cannot show that the work is FINISHED and waiting on a human, versus
53
+ not startable at all.
54
+
55
+ **This is recorded rather than fixed.** Adding glyphs would change a format that
56
+ `update_roadmap_progress`, `check_roadmap_trackable`, `lint_empty_roadmaps` and
57
+ every archived roadmap already parse — a migration, not a step. What the
58
+ vocabulary buys today is that a run's CLOSING REPORT can say the word the glyph
59
+ cannot.
60
+
61
+ ## Progress-primary ordering
62
+
63
+ When the objective is **countable** — findings closed, tests passing, occurrences
64
+ remaining — the primary stop signal is **no progress** or a **new minimum**, and
65
+ the iteration cap is the **backstop**.
66
+
67
+ **Do not remove the cap.** A no-progress signal is only as good as the metric
68
+ behind it, and a metric that stops moving because the measurement broke looks
69
+ exactly like a metric that stops moving because the work is done. The cap is what
70
+ bounds the damage when the primary signal is wrong.
71
+
72
+ Where the objective is not countable, the cap is the only signal and the N=3
73
+ validation budget in [`autonomous-execution`](../../rules/autonomous-execution.md)
74
+ applies unchanged.
75
+
76
+ ## Reporting contract
77
+
78
+ A closing report names the state **by one of the six words above**, and where the
79
+ state is not `success` it names what would change it:
80
+
81
+ - `exhausted` — the budget that ran out, its value, and what was achieved inside it.
82
+ - `stagnated` — the repeating failure signature, and the attempts it survived.
83
+ - `blocked` — the missing thing, by name.
84
+ - `approval-required` — the exact action awaiting approval.
85
+ - `clean-no-op` — what was scanned, so "nothing to do" is distinguishable from
86
+ "nothing was read".
87
+
88
+ ## See also
89
+
90
+ - [`verify-before-complete`](../../rules/verify-before-complete.md) — no
91
+ completion claim without fresh evidence; this names what to claim when the
92
+ claim is not completion.
93
+ - [`autonomous-execution`](../../rules/autonomous-execution.md) — the N=3
94
+ validation budget whose firing is `exhausted`.
95
+ - [`autonomy-mechanics`](autonomy-mechanics.md) — the budget's mechanics and the
96
+ adaptive-effort ordering this page's progress-primary section states.
@@ -44,7 +44,7 @@ Fires once per creation task, not once per edit.
44
44
 
45
45
  ## The three phases
46
46
 
47
- **A — Understand** (≤ 5 clarifying questions: problem, trigger surface, should-trigger examples, near-misses, artifact type) · **B — Research** (mandatory four-surface overlap scan; open + skim the 3 nearest matches; extend-vs-create decision) · **C — Draft** (2-3 description variants first, then the body; live size enforcement). Per-phase procedure + the roadmap batch-mode carve-out: the mechanics guideline below.
47
+ **A — Understand** (≤ 5 clarifying questions: problem, trigger surface, should-trigger examples, near-misses, artifact type) · **B — Research** (mandatory four-surface overlap scan; open + skim the 3 nearest matches; extend-vs-create decision, written into the artifact as `composition_review:`) · **C — Draft** (2-3 description variants first, then the body; live size enforcement). Per-phase procedure + the roadmap batch-mode carve-out: the mechanics guideline below.
48
48
 
49
49
  ## Golden rules
50
50
 
@@ -25,6 +25,10 @@ collision_ok:
25
25
  "tenant": "cross-tenant isolation is this rule's core subject"
26
26
  # obligation: line 55
27
27
  obligation_frequency: "per-edit"
28
+ evidence:
29
+ source_type: external-standard
30
+ verified_on: 2026-08-30
31
+ normative_level: recommended
28
32
  ---
29
33
 
30
34
  # Broken Access Control
@@ -22,6 +22,9 @@ collision_ok:
22
22
  "implement": "fresh implementation is where over-commenting lands"
23
23
  # obligation: line 5
24
24
  obligation_frequency: "per-edit"
25
+ enforced_by:
26
+ - "validator:src/scripts/lint_code_comments.ts"
27
+ - "hook:comment-discipline"
25
28
  ---
26
29
 
27
30
  # Code Comment Discipline
@@ -37,6 +40,9 @@ NO DOCBLOCK THAT ONLY MIRRORS THE NATIVE SIGNATURE.
37
40
  DOCBLOCKS EARN THEIR PLACE ONLY WITH MACHINE-RELEVANT PRECISION
38
41
  (GENERICS, ARRAY SHAPES, NON-TRIVIAL UNIONS) OR GENUINE WHY-CONTEXT.
39
42
  WHEN IN DOUBT: NO COMMENT. SHORTER IS BETTER. NONE IS OFTEN BEST.
43
+ A COMMENT NAMING WHERE THE CODE CAME FROM — A ROADMAP PATH, A PHASE AND STEP,
44
+ A PROTOTYPE — IS EVIDENCE IN THE WRONG PLACE. PROVENANCE IS NOT A WHY.
45
+ A ROADMAP CANNOT LICENSE A COMMENT THIS RULE FORBIDS.
40
46
  ```
41
47
 
42
48
  ## What a comment is FOR
@@ -25,6 +25,10 @@ enforced_by:
25
25
  - "instruction-only: close-the-source-and-re-derive is a pre-write reasoning step only the model observes; CI checks the ledger, never the derivation"
26
26
  # obligation: line 40
27
27
  obligation_frequency: "per-edit"
28
+ evidence:
29
+ source_type: external-research
30
+ verified_on: 2026-08-30
31
+ normative_level: informative
28
32
  ---
29
33
 
30
34
  # Code Provenance
@@ -98,7 +98,7 @@ MANDATE, NEVER A **PIXEL** MANDATE — WHATEVER `design.fidelity_mode` SAYS.
98
98
  REPRODUCING A WIREFRAME'S GREYS 1:1 HONOURS THE WRONG HALF OF THE ARTEFACT.
99
99
  ```
100
100
 
101
- `strict` means *do not redesign*; never *reproduce a wireframe's placeholder greys*, which
101
+ `strict` means *do not redesign*; never *reproduce a wireframe's placeholder grays*, which
102
102
  are **non-decisions** ([`wireframe`](../skills/wireframe/SKILL.md) § Gotchas).
103
103
  **The discriminator reads the ARTEFACT, never the prose.** A finished comp whose prose
104
104
  mentions a wireframe it replaces routes **strictly** — a reference to a previous artefact,
@@ -44,6 +44,10 @@ workspaces: [agent-config-maintainer, construction, engineering, finance, founde
44
44
  packs: [meta]
45
45
  # obligation: line 52
46
46
  obligation_frequency: "per-task"
47
+ evidence:
48
+ source_type: external-standard
49
+ verified_on: 2026-08-30
50
+ normative_level: mandatory
47
51
  ---
48
52
 
49
53
  # Domain Safety — PII Redaction
@@ -29,6 +29,10 @@ workspaces: [agent-config-maintainer, construction, engineering, finance, founde
29
29
  packs: [meta]
30
30
  # obligation: line 47
31
31
  obligation_frequency: "per-turn"
32
+ evidence:
33
+ source_type: external-standard
34
+ verified_on: 2026-08-30
35
+ normative_level: mandatory
32
36
  ---
33
37
 
34
38
  # Domain Safety — Data Retention
@@ -30,6 +30,8 @@ collision_ok:
30
30
  "migration": "a prod migration is a hard-floor evidence surface (rollback path, blast radius)"
31
31
  # obligation: line 49
32
32
  obligation_frequency: "per-commit"
33
+ evidence:
34
+ source_type: own-analysis
33
35
  ---
34
36
 
35
37
  # Engineering Safety Floor
@@ -24,13 +24,12 @@ obligation_frequency: "per-turn"
24
24
  # External Code-Graph Interop
25
25
 
26
26
  Some repos commit a pre-built code-intelligence index — a `graph.json`-shaped
27
- artifact or a SCIP index (`index.scip`, `*.scip`). When one exists, it already
28
- answers "who calls X", "where is Y used", "what does this import" far more
29
- precisely than a fresh `grep`. This suite is an **orchestrator first, owner
30
- where it wins** (ADR-124): query a consumer-shipped index when it is present
31
- and fresh; where none is shipped or ours is measurably better, the suite's own
32
- native code-graph engine (default-off, benchmark-gated) covers the gap. Either
33
- way — query first, grep as fallback, and name which source answered.
27
+ artifact or a SCIP index (`index.scip`, `*.scip`). One that exists is already
28
+ built and structured, so it is the cheap first question for "who calls X",
29
+ "where is Y used", "what does this import". This suite is an **orchestrator
30
+ first, owner where it wins** (ADR-124): query a consumer-shipped index when it
31
+ is present and fresh; where none is shipped, the native engine (default-off,
32
+ benchmark-gated) covers the gap.
34
33
 
35
34
  ## The rule
36
35
 
@@ -59,6 +58,11 @@ AND the repo contains a detectable index:
59
58
  3. **Fall back to `grep`/read** only for what the index does not cover, and say
60
59
  so ("the index has no entry for X, so I grepped").
61
60
 
61
+ Query-first is an **ordering** heuristic, never a claim the index answers better:
62
+ measured 2026-08-28, zero of four graph-shaped classes beat `grep`, so no class
63
+ is graph-first. Routing changes; permission does not. Figures:
64
+ [`code-intelligence`](../skills/code-intelligence/SKILL.md) § Measured.
65
+
62
66
  ## When NOT to fire
63
67
 
64
68
  - No such index in the repo — normal `grep`/read is the right first move.
@@ -67,11 +71,9 @@ AND the repo contains a detectable index:
67
71
  ## See also
68
72
 
69
73
  - [`code-intelligence`](../skills/code-intelligence/SKILL.md) — the executable
70
- routing skill: `agent-config code-graph detect|query|affected|path` over the
71
- native engine or a consumer-shipped index, grep as the stated fallback. On
72
- hook-capable hosts the PreToolUse `code-graph` nudge surfaces this once per
73
- session; on instruction-file hosts this rule is the surface. Which of the two
74
- you are on is `agent-config hooks:status`, not a guess from the host name.
74
+ routing skill (`agent-config code-graph detect|query|affected|path`), the
75
+ measured per-class figures, and the hook-vs-instruction-file surface question
76
+ (`agent-config hooks:status`, never a guess from the host name).
75
77
  - [`discovery_graph`](../scripts/discovery_graph.ts) — this suite's OWN artefact
76
78
  relation-graph (`affected`/`explain`); the external code-graph is the
77
79
  *source-code* analogue this rule defers to for code questions.
@@ -64,16 +64,14 @@ Trigger-set above activates this routing on demand, independent of the disciplin
64
64
  **Challenge to improve, never to refuse.**
65
65
 
66
66
  The agent is a thought partner, not a gatekeeper. After presenting concerns:
67
- - User picks an option → execute immediately
68
- - User says "just do it" → execute immediately
67
+ - User picks an option, or says "just do it" → execute immediately
69
68
  - Never argue twice about the same point
70
69
  - Never block work — delay is only justified if it prevents a clear mistake
71
70
 
72
71
  ## Creating new agent artifacts
73
72
 
74
- When the request is to create or significantly rewrite a skill, rule, command,
75
- or guideline, the "fit the existing architecture" check is handled by
76
- [`artifact-drafting-protocol`](artifact-drafting-protocol.md)'s Phase B
77
- (Research). Follow that protocol instead of improvising a one-shot check — it
78
- scans `src/` for overlap and reports candidates to extend
79
- before creating a new file.
73
+ When the request is to create or significantly rewrite a skill, rule, command, or
74
+ guideline, the "fit the existing architecture" check is handled by
75
+ [`artifact-drafting-protocol`](artifact-drafting-protocol.md)'s Phase B (Research).
76
+ Follow that protocol instead of improvising a one-shot check — it scans `src/` for
77
+ overlap and reports candidates to extend before creating a new file.
@@ -26,7 +26,7 @@ obligation_frequency: "none"
26
26
 
27
27
  # Laravel Routing
28
28
 
29
- **Iron Law.** Laravel-flavoured PHP (Eloquent, Artisan, FormRequest, jobs, events, policies) → load the `laravel` skill, not `symfony-workflow` and not `php-coder`.
29
+ **Iron Law.** Laravel-flavoured PHP → `laravel`. Discriminator: entry point and router, not the dependency list — `illuminate/*` with no skeleton marker is the third verdict.
30
30
 
31
31
  Body migrated to `skill:laravel`. Disambiguates the laravel ↔ symfony-workflow cluster head per [`adr-architectural-consensus-mechanism`](../docs/contracts/adr-architectural-consensus-mechanism.md).
32
32
  Trigger-set above activates this routing on demand, independent of the discipline profile (ADR-110).
@@ -22,6 +22,10 @@ collision_ok:
22
22
  "src/agent-src/commands/": "command authoring reviews the three trifecta legs"
23
23
  # obligation: line 60
24
24
  obligation_frequency: "per-edit"
25
+ evidence:
26
+ source_type: external-standard
27
+ verified_on: 2026-08-30
28
+ normative_level: recommended
25
29
  ---
26
30
 
27
31
  # Lethal-Trifecta Guard
@@ -29,6 +29,8 @@ collision_ok:
29
29
  "commit": "committing is the credential-leak moment this guard exists for"
30
30
  # obligation: line 43
31
31
  obligation_frequency: "per-edit"
32
+ evidence:
33
+ source_type: own-analysis
32
34
  ---
33
35
 
34
36
  # Secret-in-VCS Guard
@@ -28,6 +28,8 @@ collision_ok:
28
28
  "tenant": "tenancy is a threat-model-before-edit surface"
29
29
  # obligation: line 36
30
30
  obligation_frequency: "per-edit"
31
+ evidence:
32
+ source_type: own-analysis
31
33
  ---
32
34
 
33
35
  # Security-Sensitive Stop Rule
@@ -91,43 +91,21 @@ substitute for not writing the attribution in the first place.
91
91
 
92
92
  ## Why this rule is not path-scoped
93
93
 
94
- Under ADR-236 (`docs/decisions/ADR-236-one-artefact-one-layer.md`) this rule is
95
- delivered by the PROJECT layer only — it exists to maintain this package, so the
96
- global layer no longer carries an unscoped twin of it. A `paths:`-scoped rule is
97
- **not re-injected after `/compact`** (ADR-227:79-80), so scoping it would mean the
98
- obligation silently disappears mid-session with nothing left to reload it.
99
-
100
- It is therefore delivered unconditionally, and the path triggers were removed
101
- rather than worked around. **This section is the shared record for all four such
102
- rules** — `no-roadmap-references`, `rule-type-governance` and `skill-quality` carry
103
- the same change and no note of their own. Two reasons: four copies of the rationale
104
- cost more standing context than the decision they explain, and the other three are
105
- migrated POINTER stubs held at their pointer's size by
106
- `check_rule_stub_ceiling` — prose added there is prose in the wrong place by that
107
- gate's own contract, which is what caught the first attempt to duplicate it.
108
-
109
- AI council 2026-08-20, 2/2 convergent on this option over three alternatives, with
110
- two independent decisive arguments. First: the obligation governs an **authoring
111
- decision**, which happens before any file exists for a path trigger to match — so
112
- path-scoping fails at greenfield creation whether or not a compaction ever occurs.
113
- Second: the measured cost is small against what the partition returns. Keeping an
114
- unscoped global copy was rejected because it re-creates the duplication the
115
- partition exists to remove; splitting the four by "has a CI gate" was rejected by
116
- both seats as the wrong axis — a validator observes an outcome, it does not hold an
117
- obligation during the session, and `rule-type-governance` has no gate at all.
118
-
119
- **Cost, measured and corrected.** An earlier revision of this note claimed 1,754
120
- tokens (1.8 % of the partition's 96,584-token saving). That figure was a
121
- `chars / 4` proxy over the projected files and **understated the real cost by about
122
- half**: `check_rule_activation_census`, which counts with the exact BPE tokenizer,
123
- measures the unconditional corpus growing **108,130 → 111,642, i.e. +3,512 tokens
124
- (3.6 %)** — and that number includes this rationale, which is why it lives in one
125
- place instead of four. The verdict does not depend on the figure: one seat argued
126
- the token axis was the wrong one entirely, the other that cost is a legitimate axis
127
- which simply loses this particular comparison. Both readings survive 3.6 %.
94
+ Delivered unconditionally by the PROJECT layer, with no `paths:` triggers: the
95
+ obligation governs an **authoring decision** taken before any file exists for a
96
+ path trigger to match, and a path-scoped rule is not re-injected after
97
+ `/compact`, so scoping it would make the obligation vanish mid-session. The
98
+ measurement, the AI-council record of 2026-08-20, the three rejected
99
+ alternatives and the +3,512-token cost this shared note carries for four rules
100
+ live in
101
+ [`source-confidentiality-mechanics`](../docs/guidelines/agent-infra/source-confidentiality-mechanics.md)
102
+ § Why these four rules are unconditional — moved there 2026-08-29 because a
103
+ rationale paid on every subagent spawn is the most expensive place to keep an
104
+ argument nobody re-reads.
128
105
 
129
106
  ## See also
130
107
 
108
+ - [`source-confidentiality-mechanics`](../docs/guidelines/agent-infra/source-confidentiality-mechanics.md) — the claim/residual honesty clause, the two-class split by path, and the gate's shape checks and tiering.
131
109
  - [`source-of-truth`](source-of-truth.md) — edit `src/`, never the projections.
132
110
  - [`augment-edit-discipline`](augment-edit-discipline.md) — portability + cross-ref sync.
133
111
  - `src/scripts/_lib/link_crypto.ts` — encrypted link storage.
@@ -22,7 +22,7 @@ obligation_frequency: "none"
22
22
 
23
23
  # Symfony Routing
24
24
 
25
- **Iron Law.** Symfony-flavoured PHP (DI container, bundles, Doctrine entities, Messenger, Security voters, console commands) → load the `symfony-workflow` skill, not `laravel` and not `php-coder`.
25
+ **Iron Law.** Symfony-flavoured PHP → `symfony-workflow`. Discriminator: entry point and router, not the dependency list — `symfony/*` with no skeleton marker is the third verdict.
26
26
 
27
27
  Body migrated to `skill:symfony-workflow`. Disambiguates the laravel ↔ symfony-workflow cluster head per [`adr-architectural-consensus-mechanism`](../docs/contracts/adr-architectural-consensus-mechanism.md).
28
28
  Trigger-set above activates this routing on demand, independent of the discipline profile (ADR-110).
@@ -28,6 +28,20 @@ NEVER CALL THE SAME TOOL >2 TIMES IN A ROW WITH SIMILAR PARAMETERS.
28
28
  IF YOU CATCH YOURSELF REPEATING → STOP, RETHINK, ASK.
29
29
  ```
30
30
 
31
+ ## Independent calls go in ONE block
32
+
33
+ ```
34
+ CALLS WITH NO DEPENDENCY BETWEEN THEM GO IN THE SAME BLOCK.
35
+ A CALL THAT DOES NOT READ THE PREVIOUS RESULT IS NOT A SECOND TURN.
36
+ ```
37
+
38
+ The ceiling above forbids repetition; this forbids splitting work that had no
39
+ reason to be split — measured mean batch size **1.01**, i.e. fully serial. The
40
+ discriminator is the dependency, never the count. NOT "write shorter commands":
41
+ the long commands are already the batching. `instruction-only` — nothing can
42
+ observe a call that was not batched. Evidence + the absent-cause finding:
43
+ [`token-efficiency-mechanics`](../contexts/communication/rules-auto/token-efficiency-mechanics.md).
44
+
31
45
  ## Enumerated file sets are ONE operation, not N repetitions
32
46
 
33
47
  The same-tool ceiling counts *repetition without new information* — the loop where the agent re-runs a tool because it did not learn from the last result. Reading N **declared, enumerated** files is the opposite: each read returns different content and the set was known before the first call. Counting it as N repetitions puts this rule in direct conflict with [`downstream-changes`](downstream-changes.md) ("find **ALL** callers, tests, imports") and with [`source-discovery-gate`](source-discovery-gate.md), which cannot be satisfied in two calls.
@@ -12,6 +12,10 @@ enforced_by:
12
12
  - "validator:src/scripts/lint_agent_security.ts"
13
13
  # obligation: line 19
14
14
  obligation_frequency: "per-edit"
15
+ evidence:
16
+ source_type: external-standard
17
+ verified_on: 2026-08-30
18
+ normative_level: recommended
15
19
  ---
16
20
 
17
21
  # Tool Safety
@@ -21,6 +21,10 @@ enforced_by:
21
21
  - "instruction-only: no deterministic gate inspects fetched content for injected instructions; injection_scan_hook is warn-only and default-OFF"
22
22
  # obligation: line 38
23
23
  obligation_frequency: "per-event"
24
+ evidence:
25
+ source_type: external-standard
26
+ verified_on: 2026-08-30
27
+ normative_level: recommended
24
28
  ---
25
29
 
26
30
  <!-- security-lint: allow instruction-smuggling "defense rule: quotes role-takeover phrases (ignore previous instructions, you are now, <IMPORTANT>) to teach refusal" -->