@event4u/agent-config 16.2.0 → 16.4.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 (651) 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 +337 -234
  5. package/README.md +15 -13
  6. package/agents/templates/.ai-council.yml.example +26 -8
  7. package/dist/agent-src/commands/analyze/inbox.md +11 -8
  8. package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
  9. package/dist/agent-src/commands/bug/fix.md +17 -2
  10. package/dist/agent-src/commands/bug/investigate.md +1 -1
  11. package/dist/agent-src/commands/commit/in-chunks.md +40 -31
  12. package/dist/agent-src/commands/commit.md +72 -33
  13. package/dist/agent-src/commands/condense.md +2 -8
  14. package/dist/agent-src/commands/council/debate.md +11 -7
  15. package/dist/agent-src/commands/council/default.md +10 -9
  16. package/dist/agent-src/commands/council.md +1 -1
  17. package/dist/agent-src/commands/estimate-ticket.md +1 -1
  18. package/dist/agent-src/commands/feature/explore.md +3 -3
  19. package/dist/agent-src/commands/feature/plan.md +2 -2
  20. package/dist/agent-src/commands/feature/roadmap.md +1 -1
  21. package/dist/agent-src/commands/fix/ci.md +18 -4
  22. package/dist/agent-src/commands/fix/commit-messages.md +48 -23
  23. package/dist/agent-src/commands/fix/pr-comments.md +3 -6
  24. package/dist/agent-src/commands/implement-ticket.md +4 -4
  25. package/dist/agent-src/commands/jira-ticket.md +1 -1
  26. package/dist/agent-src/commands/memory/add.md +4 -16
  27. package/dist/agent-src/commands/memory/load.md +5 -6
  28. package/dist/agent-src/commands/memory/promote.md +3 -16
  29. package/dist/agent-src/commands/mission/upgrade.md +3 -2
  30. package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
  31. package/dist/agent-src/commands/optimize/deep.md +4 -2
  32. package/dist/agent-src/commands/optimize/rtk.md +4 -26
  33. package/dist/agent-src/commands/pr/create/description-only.md +18 -15
  34. package/dist/agent-src/commands/pr/create.md +42 -34
  35. package/dist/agent-src/commands/pr/merge.md +136 -9
  36. package/dist/agent-src/commands/prepare-for-review.md +13 -11
  37. package/dist/agent-src/commands/project/analyze.md +7 -35
  38. package/dist/agent-src/commands/refine-ticket.md +1 -1
  39. package/dist/agent-src/commands/review/changes.md +14 -19
  40. package/dist/agent-src/commands/roadmap/create.md +1 -1
  41. package/dist/agent-src/commands/roadmap/materialize.md +1 -1
  42. package/dist/agent-src/commands/roadmap/next.md +10 -1
  43. package/dist/agent-src/commands/roadmap/process-full.md +56 -42
  44. package/dist/agent-src/commands/roadmap/resolve-blockers.md +411 -0
  45. package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
  46. package/dist/agent-src/commands/roadmap.md +18 -4
  47. package/dist/agent-src/commands/tests/create.md +17 -3
  48. package/dist/agent-src/commands/tests/execute.md +22 -5
  49. package/dist/agent-src/commands/worktree/create.md +7 -3
  50. package/dist/agent-src/commands/worktree/verify.md +2 -1
  51. package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
  52. package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
  53. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
  54. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
  55. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
  56. package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
  57. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +7 -7
  58. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
  59. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  60. package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
  61. package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
  62. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
  63. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +99 -54
  64. package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
  65. package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
  66. package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
  67. package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
  68. package/dist/agent-src/contexts/execution/toolchain-resolver.md +95 -7
  69. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  70. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  71. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  72. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  73. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  74. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
  75. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  76. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  77. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
  78. package/dist/agent-src/guidelines/php/git.md +15 -2
  79. package/dist/agent-src/rules/active-remediation.md +1 -2
  80. package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
  81. package/dist/agent-src/rules/architecture.md +0 -1
  82. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
  83. package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
  84. package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
  85. package/dist/agent-src/rules/autonomous-execution.md +1 -1
  86. package/dist/agent-src/rules/brand-consistency.md +0 -1
  87. package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
  88. package/dist/agent-src/rules/broken-access-control.md +1 -1
  89. package/dist/agent-src/rules/cli-output-handling.md +0 -1
  90. package/dist/agent-src/rules/code-comment-discipline.md +0 -1
  91. package/dist/agent-src/rules/code-provenance.md +0 -1
  92. package/dist/agent-src/rules/command-suggestion-policy.md +1 -1
  93. package/dist/agent-src/rules/commit-conventions.md +1 -2
  94. package/dist/agent-src/rules/communication-through-line.md +1 -2
  95. package/dist/agent-src/rules/content-quoting-floor.md +1 -2
  96. package/dist/agent-src/rules/context-hygiene.md +6 -6
  97. package/dist/agent-src/rules/copilot-routing.md +1 -2
  98. package/dist/agent-src/rules/council-availability.md +4 -4
  99. package/dist/agent-src/rules/cross-source-consistency.md +4 -6
  100. package/dist/agent-src/rules/decision-revisit-gate.md +17 -35
  101. package/dist/agent-src/rules/delegation-policy.md +2 -3
  102. package/dist/agent-src/rules/design-fidelity.md +12 -16
  103. package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
  104. package/dist/agent-src/rules/devcontainer-routing.md +1 -2
  105. package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
  106. package/dist/agent-src/rules/docker-commands.md +0 -1
  107. package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
  108. package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -1
  109. package/dist/agent-src/rules/domain-safety-pii.md +1 -1
  110. package/dist/agent-src/rules/domain-safety-retention.md +1 -1
  111. package/dist/agent-src/rules/downstream-changes.md +0 -1
  112. package/dist/agent-src/rules/engineering-safety-floor.md +1 -1
  113. package/dist/agent-src/rules/evaluator-independence.md +3 -2
  114. package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
  115. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
  116. package/dist/agent-src/rules/fast-path-marker-visibility.md +2 -2
  117. package/dist/agent-src/rules/finance-safety-floor.md +1 -1
  118. package/dist/agent-src/rules/fix-what-you-see.md +6 -32
  119. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
  120. package/dist/agent-src/rules/git-history-discipline.md +2 -2
  121. package/dist/agent-src/rules/guidelines.md +0 -1
  122. package/dist/agent-src/rules/history-discipline.md +0 -1
  123. package/dist/agent-src/rules/icon-consistency.md +0 -1
  124. package/dist/agent-src/rules/image-likeness-and-rights.md +1 -1
  125. package/dist/agent-src/rules/improve-before-implement.md +0 -1
  126. package/dist/agent-src/rules/invite-challenge.md +0 -1
  127. package/dist/agent-src/rules/laravel-routing.md +1 -2
  128. package/dist/agent-src/rules/laravel-translations.md +0 -1
  129. package/dist/agent-src/rules/legal-safety-floor.md +3 -3
  130. package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -1
  131. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
  132. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -1
  133. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  134. package/dist/agent-src/rules/media-governance-routing.md +13 -17
  135. package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
  136. package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
  137. package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
  138. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  139. package/dist/agent-src/rules/model-recommendation.md +0 -1
  140. package/dist/agent-src/rules/neighbour-precedence.md +64 -0
  141. package/dist/agent-src/rules/no-attribution-footers.md +0 -1
  142. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
  143. package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
  144. package/dist/agent-src/rules/no-roadmap-references.md +0 -1
  145. package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
  146. package/dist/agent-src/rules/onboarding-gate.md +0 -1
  147. package/dist/agent-src/rules/output-discipline.md +0 -1
  148. package/dist/agent-src/rules/package-ci-checks.md +0 -1
  149. package/dist/agent-src/rules/persona-governance.md +4 -5
  150. package/dist/agent-src/rules/php-coding.md +0 -1
  151. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
  152. package/dist/agent-src/rules/preservation-guard.md +0 -1
  153. package/dist/agent-src/rules/provider-lifecycle-discipline.md +3 -4
  154. package/dist/agent-src/rules/question-not-instruction.md +1 -1
  155. package/dist/agent-src/rules/reviewer-awareness.md +0 -1
  156. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
  157. package/dist/agent-src/rules/roadmap-progress-sync.md +4 -7
  158. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  159. package/dist/agent-src/rules/rule-type-governance.md +0 -1
  160. package/dist/agent-src/rules/runtime-safety.md +1 -1
  161. package/dist/agent-src/rules/scale-discipline.md +0 -1
  162. package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
  163. package/dist/agent-src/rules/security-sensitive-stop.md +3 -3
  164. package/dist/agent-src/rules/self-repair-loop.md +0 -1
  165. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
  166. package/dist/agent-src/rules/session-canary.md +7 -62
  167. package/dist/agent-src/rules/settings-ask-protocol.md +6 -6
  168. package/dist/agent-src/rules/size-enforcement.md +0 -1
  169. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
  170. package/dist/agent-src/rules/skill-quality.md +0 -1
  171. package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
  172. package/dist/agent-src/rules/source-confidentiality.md +1 -1
  173. package/dist/agent-src/rules/source-discovery-gate.md +0 -1
  174. package/dist/agent-src/rules/source-of-truth.md +0 -1
  175. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
  176. package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
  177. package/dist/agent-src/rules/symfony-routing.md +1 -2
  178. package/dist/agent-src/rules/think-before-action.md +0 -1
  179. package/dist/agent-src/rules/token-budget-discipline.md +12 -46
  180. package/dist/agent-src/rules/token-efficiency.md +0 -1
  181. package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
  182. package/dist/agent-src/rules/tool-safety.md +1 -1
  183. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  184. package/dist/agent-src/rules/untrusted-input-defense.md +1 -1
  185. package/dist/agent-src/rules/upstream-proposal.md +0 -1
  186. package/dist/agent-src/rules/user-interaction.md +0 -1
  187. package/dist/agent-src/rules/user-interrupt-priority.md +1 -1
  188. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
  189. package/dist/agent-src/scripts/deferral_carry.ts +339 -0
  190. package/dist/agent-src/scripts/gate_budget.ts +47 -23
  191. package/dist/agent-src/scripts/gate_execute.ts +12 -4
  192. package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
  193. package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
  194. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
  195. package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
  196. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  197. package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
  198. package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
  199. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  200. package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
  201. package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
  202. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
  203. package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
  204. package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
  205. package/dist/agent-src/skills/database/data/manifest.json +2 -2
  206. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
  207. package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
  208. package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
  209. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  210. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +2 -2
  211. package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
  212. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  213. package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
  214. package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
  215. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
  216. package/dist/agent-src/skills/iconography/SKILL.md +1 -1
  217. package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
  218. package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
  219. package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
  220. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  221. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  222. package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
  223. package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
  224. package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
  225. package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
  226. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  227. package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
  228. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
  229. package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
  230. package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
  231. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +4 -2
  232. package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
  233. package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
  234. package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
  235. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  236. package/dist/agent-src/skills/ui-component-architect/SKILL.md +2 -2
  237. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  238. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  239. package/dist/agent-src/templates/AGENTS.md +1 -1
  240. package/dist/agent-src/templates/agent-settings.md +46 -129
  241. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  242. package/dist/agent-src/templates/command.md +2 -2
  243. package/dist/agent-src/templates/roadmaps.md +6 -1
  244. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  245. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  246. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
  247. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  248. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  249. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  250. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  251. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  252. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
  253. package/dist/agent-src/templates/skill.md +1 -1
  254. package/dist/cli/registry.js +2 -1
  255. package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
  256. package/dist/cli-delegate/check_update_banner.js +207 -120
  257. package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
  258. package/dist/cli-delegate/{chunk-FP36SWJD.js → chunk-5GPULQBE.js} +2797 -338
  259. package/dist/cli-delegate/{chunk-IGD6ERX6.js → chunk-6SRJTYJS.js} +42 -176
  260. package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
  261. package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
  262. package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
  263. package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
  264. package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
  265. package/dist/cli-delegate/{chunk-YJ72UIAK.js → chunk-AED2VQGM.js} +1245 -249
  266. package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
  267. package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
  268. package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
  269. package/dist/cli-delegate/chunk-F3QDG2GT.js +2569 -0
  270. package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-G5VVIZRC.js} +3 -3
  271. package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-H76PHZBI.js} +149 -61
  272. package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
  273. package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
  274. package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
  275. package/dist/cli-delegate/{chunk-7RQP4UDH.js → chunk-KR6EM23A.js} +235 -1455
  276. package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-KXXWJTDO.js} +6 -11
  277. package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
  278. package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-MDPPKQCQ.js} +58 -9
  279. package/dist/cli-delegate/{chunk-4XFP2Y3E.js → chunk-MSUL5NYP.js} +5 -5
  280. package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
  281. package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
  282. package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
  283. package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-PWX7CKMD.js} +4 -4
  284. package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
  285. package/dist/cli-delegate/{chunk-7XGBX6ZH.js → chunk-T7XSJSUQ.js} +1144 -589
  286. package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
  287. package/dist/cli-delegate/chunk-WQWXGIWB.js +1779 -0
  288. package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-XQTPXKFA.js} +1 -1
  289. package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
  290. package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
  291. package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
  292. package/dist/cli-delegate/cmd_analyze_session.js +223 -43
  293. package/dist/cli-delegate/cmd_brand_status.js +3 -2
  294. package/dist/cli-delegate/cmd_conformance.js +1252 -249
  295. package/dist/cli-delegate/cmd_converge.js +3 -3
  296. package/dist/cli-delegate/cmd_doctor.js +19 -9
  297. package/dist/cli-delegate/cmd_doctor_neighbours.js +30 -0
  298. package/dist/cli-delegate/cmd_explain.js +45 -21
  299. package/dist/cli-delegate/cmd_export.js +13 -10
  300. package/dist/cli-delegate/cmd_fleet.js +3 -3
  301. package/dist/cli-delegate/cmd_git_convention.js +1851 -0
  302. package/dist/cli-delegate/cmd_handoff.js +44 -22
  303. package/dist/cli-delegate/cmd_mcp_available.js +3 -2
  304. package/dist/cli-delegate/cmd_memory_get.js +3 -1
  305. package/dist/cli-delegate/cmd_migrate.js +3 -3
  306. package/dist/cli-delegate/cmd_packs_active.js +5 -4
  307. package/dist/cli-delegate/cmd_preflight.js +6 -6
  308. package/dist/cli-delegate/cmd_prune.js +14 -11
  309. package/dist/cli-delegate/cmd_refresh.js +2 -1
  310. package/dist/cli-delegate/cmd_route_audit.js +10 -8
  311. package/dist/cli-delegate/cmd_route_explain.js +4 -4
  312. package/dist/cli-delegate/cmd_session_recycle.js +10 -7
  313. package/dist/cli-delegate/cmd_settings_check.js +54 -7
  314. package/dist/cli-delegate/cmd_settings_get.js +18 -8
  315. package/dist/cli-delegate/cmd_settings_migrate.js +13 -10
  316. package/dist/cli-delegate/cmd_settings_set.js +4 -4
  317. package/dist/cli-delegate/cmd_sync.js +14 -11
  318. package/dist/cli-delegate/cmd_uninstall.js +15 -12
  319. package/dist/cli-delegate/cmd_update.js +7 -7
  320. package/dist/cli-delegate/cmd_upgrade.js +9 -8
  321. package/dist/cli-delegate/cmd_validate.js +15 -12
  322. package/dist/cli-delegate/cmd_versions.js +5 -5
  323. package/dist/cli-delegate/deferral_carry.js +16 -0
  324. package/dist/cli-delegate/gate_budget.js +1 -1
  325. package/dist/cli-delegate/gate_execute.js +3 -3
  326. package/dist/cli-delegate/roadmap_gates.js +6 -6
  327. package/dist/cli-delegate/update_roadmap_progress.js +1 -1
  328. package/dist/discovery/deprecation-report.md +1 -1
  329. package/dist/discovery/discovery-manifest.json +232 -141
  330. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  331. package/dist/discovery/discovery-manifest.summary.md +3 -3
  332. package/dist/discovery/dormancy-report.md +1 -1
  333. package/dist/discovery/orphan-report.md +1 -1
  334. package/dist/discovery/packs.json +26 -9
  335. package/dist/discovery/trust-report.md +3 -3
  336. package/dist/discovery/workspaces.json +7 -4
  337. package/dist/hooks/dispatch.js +5655 -6623
  338. package/dist/hooks/dispatch.sha256 +1 -1
  339. package/dist/install/claudePathsPlan.js +47 -6
  340. package/dist/install/claudeRuleRewrite.js +7 -0
  341. package/dist/install/emit_host_rules_cli.js +39 -36
  342. package/dist/install/globalRuleScope.js +87 -0
  343. package/dist/install/host_rule_ownership.js +160 -0
  344. package/dist/install/install.mjs +2336 -1249
  345. package/dist/install/installThinLayer.js +289 -0
  346. package/dist/install/installedRuleLinks.js +262 -0
  347. package/dist/install/wizard-plan.js +24 -0
  348. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  349. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
  350. package/dist/mcp/registry-manifest.json +5 -5
  351. package/dist/mcp/server.json +2 -2
  352. package/dist/mcp/server.mjs +36504 -30986
  353. package/dist/router.json +1 -1
  354. package/dist/scripts/_lib/agent_settings.js +26 -120
  355. package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
  356. package/dist/scripts/_lib/compile_time_toggles.js +12 -21
  357. package/dist/scripts/_lib/git_convention.js +232 -0
  358. package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
  359. package/dist/scripts/_lib/installed_layer.js +704 -0
  360. package/dist/scripts/_lib/lean_projection_mode.js +218 -15
  361. package/dist/scripts/_lib/package_root.js +68 -0
  362. package/dist/scripts/_lib/rule_consequence_class.js +45 -0
  363. package/dist/scripts/_lib/rule_injection.js +67 -10
  364. package/dist/scripts/_lib/rule_law_section.js +122 -0
  365. package/dist/scripts/_lib/settings_removed_keys.js +168 -0
  366. package/dist/scripts/_lib/thin_rules.js +535 -0
  367. package/dist/scripts/_lib/windsurf_render.js +60 -0
  368. package/dist/scripts/condense.js +14 -26
  369. package/dist/scripts/project_thin_rules.js +14 -294
  370. package/dist/server/app.js +2 -1
  371. package/dist/server/gitKeysGate.js +105 -0
  372. package/dist/server/routes/settings.js +67 -8
  373. package/dist/server/routes/wizard.js +4 -0
  374. package/dist/server/schemas/settings.js +29 -81
  375. package/dist/shared/skillRanking.js +103 -16
  376. package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
  377. package/dist/ui/index.html +1 -1
  378. package/docs/MIGRATION.md +72 -1
  379. package/docs/contracts/settings-classes.md +39 -67
  380. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  381. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  382. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  383. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  384. package/docs/guidelines/agent-infra/layered-settings.md +13 -1
  385. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  386. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  387. package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
  388. package/docs/guidelines/php/git.md +15 -2
  389. package/package.json +1 -1
  390. package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
  391. package/src/agent-src/scripts/deferral_carry.ts +339 -0
  392. package/src/agent-src/scripts/gate_budget.ts +47 -23
  393. package/src/agent-src/scripts/gate_execute.ts +12 -4
  394. package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
  395. package/src/agent-src/templates/AGENTS.md +1 -1
  396. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  397. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  398. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +48 -6
  399. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  400. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  401. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  402. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  403. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  404. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
  405. package/src/config/agent-settings.template.yml +141 -334
  406. package/src/config/agents-paths.yml +16 -0
  407. package/src/config/assurance-capability-registry.json +7 -3
  408. package/src/config/ci-local-parity.yml +3 -0
  409. package/src/config/continuity-surface.json +10 -3
  410. package/src/config/discovery/packs.yml +17 -1
  411. package/src/config/evaluator-budgets.json +23 -10
  412. package/src/config/gate-coverage.yml +138 -3
  413. package/src/config/gate-violation-baselines.json +64 -16
  414. package/src/config/gitignore-block.txt +19 -0
  415. package/src/config/hook-bundle-budget.json +25 -0
  416. package/src/config/hook-token-budget.json +6 -1
  417. package/src/config/host-instruction-limits.json +33 -0
  418. package/src/config/release-gate-locality.yml +2 -1
  419. package/src/config/routing-coverage-seed.json +67 -4
  420. package/src/config/rule-activation-census.json +7 -3
  421. package/src/config/rule-consequence-class.json +161 -0
  422. package/src/config/rule-law-ceilings.json +105 -0
  423. package/src/config/rule-obligations.json +833 -0
  424. package/src/install/claudePathsPlan.ts +46 -4
  425. package/src/install/claudeRuleRewrite.ts +10 -1
  426. package/src/install/emit_host_rules_cli.ts +43 -34
  427. package/src/install/globalRuleScope.ts +109 -0
  428. package/src/install/host_rule_ownership.ts +170 -0
  429. package/src/install/installThinLayer.ts +378 -0
  430. package/src/install/installedRuleLinks.ts +308 -0
  431. package/src/install/wizard-plan.ts +24 -0
  432. package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
  433. package/src/scripts/_cli/cmd_conformance.ts +13 -2
  434. package/src/scripts/_cli/cmd_doctor.ts +33 -81
  435. package/src/scripts/_cli/cmd_doctor_neighbours.ts +426 -0
  436. package/src/scripts/_cli/cmd_explain.ts +72 -14
  437. package/src/scripts/_cli/cmd_git_convention.ts +637 -0
  438. package/src/scripts/_cli/cmd_settings_check.ts +66 -8
  439. package/src/scripts/_cli/cmd_settings_get.ts +18 -3
  440. package/src/scripts/_cli/doctor_execution.ts +72 -1
  441. package/src/scripts/_dispatch.bash +53 -4
  442. package/src/scripts/_lib/agent_settings.ts +26 -124
  443. package/src/scripts/_lib/blocked_by_marker.ts +1 -1
  444. package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
  445. package/src/scripts/_lib/compile_time_toggles.ts +12 -21
  446. package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
  447. package/src/scripts/_lib/estate_offsets.ts +241 -0
  448. package/src/scripts/_lib/exemption_shape.ts +143 -0
  449. package/src/scripts/_lib/fnv.ts +23 -0
  450. package/src/scripts/_lib/foreign_scan.ts +106 -0
  451. package/src/scripts/_lib/git_base_ref.ts +92 -0
  452. package/src/scripts/_lib/git_convention.ts +291 -0
  453. package/src/scripts/_lib/git_convention_carrier.ts +389 -0
  454. package/src/scripts/_lib/git_convention_grammar.ts +246 -0
  455. package/src/scripts/_lib/git_convention_measure.ts +344 -0
  456. package/src/scripts/_lib/gitignore_block.ts +314 -0
  457. package/src/scripts/_lib/global_deploy_inventory.ts +106 -0
  458. package/src/scripts/_lib/graph_feeder_record.ts +437 -0
  459. package/src/scripts/_lib/hook_settings.ts +73 -0
  460. package/src/scripts/_lib/host_capability.ts +40 -19
  461. package/src/scripts/_lib/host_hook_merge.ts +165 -0
  462. package/src/scripts/_lib/installed_layer.ts +963 -0
  463. package/src/scripts/_lib/json_merge.ts +82 -0
  464. package/src/scripts/_lib/json_pointers.ts +93 -11
  465. package/src/scripts/_lib/knowledge_global.ts +14 -1
  466. package/src/scripts/_lib/lean_projection_mode.ts +275 -15
  467. package/src/scripts/_lib/machine_wake.ts +16 -3
  468. package/src/scripts/_lib/module_reach.ts +456 -0
  469. package/src/scripts/_lib/neighbour_census.ts +760 -0
  470. package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
  471. package/src/scripts/_lib/neighbour_scan.ts +122 -0
  472. package/src/scripts/_lib/neighbour_tool_use.ts +187 -0
  473. package/src/scripts/_lib/prompt_shape.ts +46 -0
  474. package/src/scripts/_lib/ratification_artifact.ts +220 -1
  475. package/src/scripts/_lib/ratification_subject.ts +92 -0
  476. package/src/scripts/_lib/release_findings_ingest.ts +15 -7
  477. package/src/scripts/_lib/release_highlights.ts +5 -0
  478. package/src/scripts/_lib/release_migration_gate.ts +19 -3
  479. package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
  480. package/src/scripts/_lib/review_coverage.ts +134 -0
  481. package/src/scripts/_lib/rule_consequence_class.ts +71 -0
  482. package/src/scripts/_lib/rule_injection.ts +130 -10
  483. package/src/scripts/_lib/rule_law_section.ts +147 -0
  484. package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
  485. package/src/scripts/_lib/rule_obligations.ts +205 -0
  486. package/src/scripts/_lib/self_repair.ts +1 -1
  487. package/src/scripts/_lib/settings_removed_keys.ts +173 -0
  488. package/src/scripts/_lib/skill_origin.ts +254 -0
  489. package/src/scripts/_lib/structured_ask.ts +64 -21
  490. package/src/scripts/_lib/test_red_state.ts +5 -0
  491. package/src/scripts/_lib/thin_rules.ts +620 -0
  492. package/src/scripts/_lib/touched_file_quality.ts +570 -0
  493. package/src/scripts/_lib/turn_end_refusals.ts +77 -2
  494. package/src/scripts/_lib/windsurf_render.ts +63 -0
  495. package/src/scripts/_lib/worker_budget.ts +1 -1
  496. package/src/scripts/adr/regenerate_index.ts +16 -1
  497. package/src/scripts/ai_council/cli_call_budget.ts +13 -5
  498. package/src/scripts/ai_council/clients.ts +26 -57
  499. package/src/scripts/ai_council/config.ts +8 -8
  500. package/src/scripts/ai_council/modification_review.ts +100 -0
  501. package/src/scripts/ai_council/modification_review_questions.ts +90 -0
  502. package/src/scripts/ai_council/orchestrator.ts +5 -5
  503. package/src/scripts/ai_council/spend_gate.ts +18 -7
  504. package/src/scripts/ai_council/vendor_defaults.ts +45 -0
  505. package/src/scripts/ai_team/config.ts +11 -16
  506. package/src/scripts/audit_skill_overlap.ts +261 -0
  507. package/src/scripts/audit_user_type_axis.ts +20 -8
  508. package/src/scripts/before_complete_hook.ts +243 -12
  509. package/src/scripts/bench_ab_clone.ts +1 -2
  510. package/src/scripts/bench_concern_spawn_path.ts +129 -0
  511. package/src/scripts/bench_graph_feeder_latency.ts +584 -0
  512. package/src/scripts/bench_touched_file_quality.ts +238 -0
  513. package/src/scripts/check_agent_artifact_location.ts +36 -0
  514. package/src/scripts/check_branch_freshness.ts +147 -24
  515. package/src/scripts/check_enforcement_coverage.ts +130 -0
  516. package/src/scripts/check_enforcement_matrix.ts +377 -20
  517. package/src/scripts/check_estate_count.ts +130 -153
  518. package/src/scripts/check_evaluator_budgets.ts +4 -0
  519. package/src/scripts/check_finding_dispositions.ts +196 -21
  520. package/src/scripts/check_gate_coverage.ts +4 -3
  521. package/src/scripts/check_gate_reachability.ts +48 -1
  522. package/src/scripts/check_generator_sync.ts +48 -0
  523. package/src/scripts/check_hook_bundle_composition.ts +477 -0
  524. package/src/scripts/check_kernel_edit_ratified.ts +132 -14
  525. package/src/scripts/check_memory.ts +7 -1
  526. package/src/scripts/check_pack_size.ts +1 -1
  527. package/src/scripts/check_release_highlights.ts +10 -0
  528. package/src/scripts/check_release_manifest_content.ts +189 -0
  529. package/src/scripts/check_release_pr_shape.ts +38 -15
  530. package/src/scripts/check_standing_rule_delivery.ts +129 -13
  531. package/src/scripts/check_suppression_hygiene.ts +2 -5
  532. package/src/scripts/check_verify_expectation_delta.ts +521 -0
  533. package/src/scripts/ci_settle.ts +42 -5
  534. package/src/scripts/classify_merge_risk.ts +320 -0
  535. package/src/scripts/closure_scan.ts +91 -1
  536. package/src/scripts/code_graph/detect.ts +127 -7
  537. package/src/scripts/code_graph/foreign.ts +194 -0
  538. package/src/scripts/code_graph/query.ts +217 -4
  539. package/src/scripts/code_graph/types.ts +26 -2
  540. package/src/scripts/code_graph/validate.ts +3 -1
  541. package/src/scripts/code_graph/verbs.ts +103 -0
  542. package/src/scripts/command_suggester/settings.ts +8 -108
  543. package/src/scripts/command_suggester/types.ts +4 -5
  544. package/src/scripts/compile_hook_manifest.ts +33 -1
  545. package/src/scripts/condense.ts +14 -27
  546. package/src/scripts/consumer_matrix.ts +102 -0
  547. package/src/scripts/context_hygiene_hook.ts +13 -23
  548. package/src/scripts/cost/preflight.mjs +12 -1
  549. package/src/scripts/council_cli.ts +7 -7
  550. package/src/scripts/dispatch_r2_reviewer.ts +24 -11
  551. package/src/scripts/estate_exemption_shape.ts +202 -0
  552. package/src/scripts/explain_run.ts +8 -13
  553. package/src/scripts/generate_git_convention_grammar.ts +127 -0
  554. package/src/scripts/generate_host_cost_table.ts +21 -4
  555. package/src/scripts/handoff_context_hook.ts +86 -37
  556. package/src/scripts/hook_manifest.json +1 -1
  557. package/src/scripts/hook_manifest.yaml +175 -15
  558. package/src/scripts/hooks/block_config_weakening.ts +115 -7
  559. package/src/scripts/hooks/block_plumbing_writes.ts +37 -5
  560. package/src/scripts/hooks/code_graph_context_hook.ts +252 -23
  561. package/src/scripts/hooks/concern_failure_policy.ts +280 -0
  562. package/src/scripts/hooks/concern_registry.ts +2 -0
  563. package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
  564. package/src/scripts/hooks/dispatch_hook.ts +52 -52
  565. package/src/scripts/hooks/evidence_independence.ts +12 -4
  566. package/src/scripts/hooks/exit_codes.ts +2 -1
  567. package/src/scripts/hooks/host_lowering.json +1 -1
  568. package/src/scripts/hooks/host_lowering.ts +19 -1
  569. package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
  570. package/src/scripts/hooks/one_question_per_ask_hook.ts +41 -25
  571. package/src/scripts/hooks/payload_stub.ts +10 -1
  572. package/src/scripts/hooks/push_settle_hook.ts +4 -3
  573. package/src/scripts/hooks/rule_inject_hook.ts +795 -60
  574. package/src/scripts/hooks/state_io.ts +8 -4
  575. package/src/scripts/hooks/table_fingerprint.ts +21 -0
  576. package/src/scripts/hooks/telemetry_usage_hook.ts +24 -7
  577. package/src/scripts/hooks/turn_end_gate_hook.ts +85 -0
  578. package/src/scripts/hooks_status.ts +112 -0
  579. package/src/scripts/injection_scan_hook.ts +7 -0
  580. package/src/scripts/install-hooks.sh +42 -14
  581. package/src/scripts/install.ts +78 -215
  582. package/src/scripts/installed_layer_report.ts +103 -0
  583. package/src/scripts/language_mirror_hook.ts +15 -6
  584. package/src/scripts/learning_sidecar.ts +119 -8
  585. package/src/scripts/lint_blocker_citations.ts +198 -0
  586. package/src/scripts/lint_evidence_artifacts.ts +9 -0
  587. package/src/scripts/lint_hook_concern_budget.ts +10 -21
  588. package/src/scripts/lint_hook_manifest.ts +53 -0
  589. package/src/scripts/lint_major_migration_sections.ts +156 -26
  590. package/src/scripts/lint_pack_boundaries.ts +465 -29
  591. package/src/scripts/lint_roadmap_blockers.ts +282 -29
  592. package/src/scripts/lint_roadmap_complexity.ts +4 -2
  593. package/src/scripts/lint_rule_law_section.ts +647 -0
  594. package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
  595. package/src/scripts/lint_settings_classes.ts +1 -1
  596. package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
  597. package/src/scripts/lint_workflow_security.ts +173 -6
  598. package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
  599. package/src/scripts/mcp_server/graph_tools.ts +72 -3
  600. package/src/scripts/measure_routing_signal.ts +54 -16
  601. package/src/scripts/measure_skill_ranker_baseline.ts +221 -8
  602. package/src/scripts/memory_learn_hook.ts +91 -6
  603. package/src/scripts/model_rule_injection.ts +55 -8
  604. package/src/scripts/onboarding_gate_hook.ts +7 -6
  605. package/src/scripts/print_required_checks.ts +15 -3
  606. package/src/scripts/probe_host_compliance.ts +33 -5
  607. package/src/scripts/probe_turnaround.ts +183 -3
  608. package/src/scripts/project_thin_rules.ts +34 -327
  609. package/src/scripts/ratification_header.ts +77 -0
  610. package/src/scripts/refusal_envelope.ts +138 -0
  611. package/src/scripts/release_publication.ts +29 -3
  612. package/src/scripts/report_dispatch_import_closure.ts +76 -0
  613. package/src/scripts/report_evidence_temperature.ts +657 -0
  614. package/src/scripts/report_installed_rule_links.ts +274 -0
  615. package/src/scripts/report_label_agreement.ts +233 -0
  616. package/src/scripts/report_module_reach.ts +212 -0
  617. package/src/scripts/report_obligation_mechanism.ts +228 -0
  618. package/src/scripts/report_parked_blockers.ts +222 -0
  619. package/src/scripts/report_required_checks_drift.ts +196 -0
  620. package/src/scripts/report_single_token_triggers.ts +277 -0
  621. package/src/scripts/report_skill_ranker_confusion.ts +543 -0
  622. package/src/scripts/report_standing_payload_by_host.ts +188 -15
  623. package/src/scripts/report_verification_record_coverage.ts +306 -0
  624. package/src/scripts/routing_doctor.ts +2 -2
  625. package/src/scripts/rule_activation_census.ts +5 -2
  626. package/src/scripts/rule_trigger_eval.ts +9 -9
  627. package/src/scripts/schemas/agent-settings.schema.json +17 -31
  628. package/src/scripts/schemas/command.schema.json +1 -1
  629. package/src/scripts/schemas/review-findings.schema.json +3 -2
  630. package/src/scripts/schemas/rule.schema.json +5 -0
  631. package/src/scripts/schemas/skill.schema.json +1 -1
  632. package/src/scripts/self_review_gate.ts +101 -9
  633. package/src/scripts/skill_tools/score_skill_relevance.ts +314 -40
  634. package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
  635. package/src/scripts/sync_gitignore.ts +29 -235
  636. package/src/scripts/sync_pr_branch.ts +403 -132
  637. package/src/scripts/trigger_eval_grandfather.json +0 -21
  638. package/src/server/schemas/settings.ts +42 -176
  639. package/src/shared/skillRanking.ts +169 -14
  640. package/dist/cli-delegate/chunk-5R7HOLAF.js +0 -99
  641. package/dist/cli-delegate/chunk-JNMVLWLR.js +0 -4457
  642. package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
  643. package/src/scripts/_lib/config_chain.ts +0 -477
  644. package/src/scripts/_lib/conformance_report.ts +0 -403
  645. package/src/scripts/_lib/eval_discrimination.ts +0 -95
  646. package/src/scripts/_lib/evaluator_promotion.ts +0 -225
  647. package/src/scripts/_lib/file_slicer.ts +0 -117
  648. package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
  649. package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
  650. package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
  651. package/src/scripts/_lib/role_split.ts +0 -338
@@ -56,9 +56,16 @@ export function gateBudgetLedgerPath(workspaceRoot: string): string {
56
56
  }
57
57
 
58
58
  /** The two caps decided by option (a). Both are USD. */
59
+ /**
60
+ * The two standing caps, each independently settable.
61
+ *
62
+ * Both figures are **US dollars**. Either may be `null`, meaning that cap was
63
+ * not set and therefore bounds nothing; `readGateBudgetCaps` returns `null`
64
+ * for the whole object only when NEITHER was set.
65
+ */
59
66
  export interface GateBudgetCaps {
60
- maxCostPerRunUsd: number;
61
- maxCostPerRolling7dUsd: number;
67
+ maxCostPerRunUsd: number | null;
68
+ maxCostPerRolling7dUsd: number | null;
62
69
  }
63
70
 
64
71
  /**
@@ -105,18 +112,26 @@ function _dig(settings: unknown, keys: readonly string[]): unknown {
105
112
  /**
106
113
  * Read the caps out of an already-merged settings dict.
107
114
  *
108
- * Returns `null` when either cap is absent or non-numeric — deliberately NOT a
109
- * fallback to the template numbers. An install whose settings do not carry the
110
- * caps has not authorised a standing budget, and inventing one from the
111
- * template default would authorise spend nobody configured. The caller renders
112
- * the consent line instead.
115
+ * Each cap is returned on its own. Returns `null` only when NEITHER is set,
116
+ * which means no ceiling on money was configured — not that the run is
117
+ * unauthorised. Still deliberately NOT a fallback to the template numbers:
118
+ * inventing a cap from a template default would bound a run by a figure
119
+ * nobody chose.
120
+ *
121
+ * Until 2026-10-06 this returned `null` unless BOTH caps were numeric, with
122
+ * two consequences. A person who set one cap and left the other alone was
123
+ * bounded by NEITHER — the stricter-looking rule produced the laxer result.
124
+ * And absent caps were read by the caller as a refusal, so the gate would not
125
+ * run at all without them. ADR-279 supersedes that second reading: absence of
126
+ * a bound is not a bound, and `--confirm` remains the authorisation the caps
127
+ * only ever sized.
113
128
  */
114
129
  export function readGateBudgetCaps(settings: unknown): GateBudgetCaps | null {
115
130
  const perRun = _num(_dig(settings, ['roadmap', 'gate_budget', 'max_cost_per_run_usd']));
116
131
  const rolling = _num(
117
132
  _dig(settings, ['roadmap', 'gate_budget', 'max_cost_per_rolling_7d_usd']),
118
133
  );
119
- if (perRun === null || rolling === null) {
134
+ if (perRun === null && rolling === null) {
120
135
  return null;
121
136
  }
122
137
  return { maxCostPerRunUsd: perRun, maxCostPerRolling7dUsd: rolling };
@@ -216,13 +231,15 @@ export function rollingSpendUsd(records: readonly GateBudgetReceipt[], now: Date
216
231
  }
217
232
 
218
233
  export type GateBudgetRefusal =
219
- | 'no_caps'
234
+ // 'no_caps' was removed on 2026-10-06 with ADR-279: the absence of a cap
235
+ // is no longer a refusal, so no path can produce it and leaving it in the
236
+ // union would advertise a verdict nothing returns.
220
237
  | 'no_estimate'
221
238
  | 'over_per_run'
222
239
  | 'over_rolling_7d';
223
240
 
224
241
  export type GateBudgetVerdict =
225
- | { ok: true; estimateUsd: number; rollingUsd: number }
242
+ | { ok: true; estimateUsd: number | null; rollingUsd: number }
226
243
  | { ok: false; reason: GateBudgetRefusal; detail: string };
227
244
 
228
245
  /**
@@ -230,6 +247,12 @@ export type GateBudgetVerdict =
230
247
  *
231
248
  * Every refusal path renders rather than runs — the blocker's own prescription
232
249
  * for a missing ledger, generalised to every way the budget can say no.
250
+ *
251
+ * What is NOT a refusal, per ADR-279: the absence of a cap. With no cap
252
+ * configured there is no ceiling on money to compare anything against, so the
253
+ * verdict is `ok` and the run proceeds on the authorisation `--confirm`
254
+ * already carries. A cap that WAS set still bounds exactly as its contract
255
+ * describes, and each bounds alone.
233
256
  */
234
257
  export function evaluateGateBudget(opts: {
235
258
  caps: GateBudgetCaps | null;
@@ -238,16 +261,17 @@ export function evaluateGateBudget(opts: {
238
261
  now: Date;
239
262
  }): GateBudgetVerdict {
240
263
  const { caps, records, estimateUsd, now } = opts;
241
- if (caps === null) {
242
- return {
243
- ok: false,
244
- reason: 'no_caps',
245
- detail:
246
- 'no standing class-1 budget is configured ' +
247
- '(`roadmap.gate_budget.max_cost_per_run_usd` and ' +
248
- '`roadmap.gate_budget.max_cost_per_rolling_7d_usd`)',
249
- };
264
+ const perRunCap = caps === null ? null : caps.maxCostPerRunUsd;
265
+ const rollingCap = caps === null ? null : caps.maxCostPerRolling7dUsd;
266
+ // No ceiling on money was set anywhere, so nothing here can say no.
267
+ // `rollingUsd` is still computed and reported — recording spend never
268
+ // depended on bounding it.
269
+ if (perRunCap === null && rollingCap === null) {
270
+ return { ok: true, estimateUsd, rollingUsd: rollingSpendUsd(records, now) };
250
271
  }
272
+ // A missing estimate refuses only because a cap exists that nothing can be
273
+ // compared against. With no cap there is no comparison to fail, which is
274
+ // why this sits BELOW the no-cap branch rather than above it.
251
275
  if (estimateUsd === null) {
252
276
  return {
253
277
  ok: false,
@@ -257,17 +281,17 @@ export function evaluateGateBudget(opts: {
257
281
  'can be compared against it',
258
282
  };
259
283
  }
260
- if (estimateUsd > caps.maxCostPerRunUsd) {
284
+ if (perRunCap !== null && estimateUsd > perRunCap) {
261
285
  return {
262
286
  ok: false,
263
287
  reason: 'over_per_run',
264
288
  detail:
265
289
  `the estimate ($${estimateUsd.toFixed(2)}) exceeds the per-run cap ` +
266
- `($${caps.maxCostPerRunUsd.toFixed(2)})`,
290
+ `($${perRunCap.toFixed(2)})`,
267
291
  };
268
292
  }
269
293
  const spent = rollingSpendUsd(records, now);
270
- if (spent + estimateUsd > caps.maxCostPerRolling7dUsd) {
294
+ if (rollingCap !== null && spent + estimateUsd > rollingCap) {
271
295
  return {
272
296
  ok: false,
273
297
  reason: 'over_rolling_7d',
@@ -275,7 +299,7 @@ export function evaluateGateBudget(opts: {
275
299
  `$${spent.toFixed(2)} is already receipted in the last ` +
276
300
  `${String(ROLLING_WINDOW_DAYS)} days and this run would add ` +
277
301
  `$${estimateUsd.toFixed(2)}, over the rolling cap ` +
278
- `($${caps.maxCostPerRolling7dUsd.toFixed(2)})`,
302
+ `($${rollingCap.toFixed(2)})`,
279
303
  };
280
304
  }
281
305
  return { ok: true, estimateUsd, rollingUsd: spent };
@@ -297,7 +297,12 @@ function execute(
297
297
  // generalised to every way the budget can say no. The `--confirm`
298
298
  // requirement below is untouched: the caps bound the size of an authorised
299
299
  // spend, they never supply the authorisation.
300
- let budgeted: { estimateUsd: number } | null = null;
300
+ // `estimateUsd` is null only on the one path that reaches here without a
301
+ // USD figure: a class-1 entry that states no estimate AND an install with
302
+ // no cap set, so there was no cap for the missing estimate to fail
303
+ // against. A receipt needs a number, and inventing 0 would understate the
304
+ // ledger, so that path runs and reports that nothing was receipted.
305
+ let budgeted: { estimateUsd: number | null } | null = null;
301
306
  if (cls === '1') {
302
307
  const verdict = evaluateGateBudget({
303
308
  caps: readGateBudgetCaps(load_agent_settings({ cwd: repoRoot })),
@@ -388,7 +393,7 @@ function execute(
388
393
  code: 1,
389
394
  };
390
395
  }
391
- if (budgeted !== null) {
396
+ if (budgeted !== null && budgeted.estimateUsd !== null) {
392
397
  // Written BEFORE the file rewrite: an unreceipted spend is invisible to
393
398
  // the rolling cap, and the cap failing open is the one way this
394
399
  // mechanism could become a blank cheque. `actual_usd` is null because
@@ -421,8 +426,11 @@ function execute(
421
426
  `and the status flipped to resolved ${when}.\n` +
422
427
  (budgeted === null
423
428
  ? ''
424
- : `Receipt appended to ${LEDGER_REL} ` +
425
- `($${budgeted.estimateUsd.toFixed(2)} estimated).\n`) +
429
+ : budgeted.estimateUsd === null
430
+ ? `No receipt appended to ${LEDGER_REL}: the entry states no USD ` +
431
+ 'estimate and no cap is configured, so there is no figure to record.\n'
432
+ : `Receipt appended to ${LEDGER_REL} ` +
433
+ `($${budgeted.estimateUsd.toFixed(2)} estimated).\n`) +
426
434
  // The dashboard is derived from the file this just rewrote, so it
427
435
  // is now stale. Saying so is the same follow-up `renderResumed`
428
436
  // already prints for its own file-move suggestion.
@@ -1351,7 +1351,10 @@ function main(argv?: readonly string[]): number {
1351
1351
  // leaves behind rather than the one it found. `--check` never archives: a
1352
1352
  // gate that mutates the tree it is checking cannot be trusted by CI.
1353
1353
  let sweep_out = '';
1354
- if (!args.check && args.archive && unarchived_complete(collect(roadmap_root)).length > 0) {
1354
+ // `pending_iron_law_3` too: a 100 % roadmap with bare `[~]` steps is what the
1355
+ // sweep's carry exists for, and gating on `deferred === 0` never spawned it.
1356
+ const before = collect(roadmap_root);
1357
+ if (!args.check && args.archive && unarchived_complete(before).length + pending_iron_law_3(before).length > 0) {
1355
1358
  const swept = run_archival_sweep(repo_root);
1356
1359
  sweep_out = swept.stdout;
1357
1360
  if (swept.stderr) {
@@ -14,7 +14,7 @@
14
14
  ## Pointers
15
15
 
16
16
  - **Filling out this AGENTS.md** — section templates, capability bullets, multi-agent entry flow, monorepo layout: [`consumer-agents-md-guide`](.augment/contexts/contracts/consumer-agents-md-guide.md).
17
- - **Behavior rules** (9 always-on; rest routed) — [`.augment/rules/`](.augment/rules/). Kernel rules are **immutable**; tighten only via the override registry.
17
+ - **Behavior rules** (9 always-on; rest routed) — [`.augment/rules/`](.augment/rules/). Kernel rules change only by a ratified edit; overrides may tighten.
18
18
  - **Skills (on-demand expertise)** — domain skills surfaced by description, invoked on trigger match: [`.augment/skills/`](.augment/skills/).
19
19
  - **Commands (workflows)** — slash-commands the agent runs end-to-end (`/work`, `/create-pr`, …): [`.augment/commands/`](.augment/commands/).
20
20
  - **Project-specific docs** — your own architecture notes, roadmaps, sessions, contexts: [`agents/`](agents/).
@@ -207,7 +207,6 @@ export const MERGEABLE_KEYS: readonly string[] = [
207
207
  // weak-host-lift-tiering + token-program-integration verdicts; ADR
208
208
  // records the whitelist addition). Wins over rule_loading_tier.
209
209
  'discipline_profile',
210
- 'memory.cadence',
211
210
  'personal.bot_icon',
212
211
  'personal.autonomy',
213
212
  // Knowledge-card global cross-project sharing is a USER-GLOBAL setting
@@ -215,11 +214,6 @@ export const MERGEABLE_KEYS: readonly string[] = [
215
214
  // ~/.event4u/agent-config/agent-settings.yml values are honoured.
216
215
  'knowledge.global_sharing.enabled',
217
216
  'knowledge.global_sharing.allowed_tiers',
218
- 'knowledge.global_sharing.redaction.enabled',
219
- 'knowledge.global_sharing.redaction.halt_on_trigger',
220
- 'knowledge.global_sharing.auto_promote_threshold',
221
- 'knowledge.global_sharing.freshness.hypothesis_after_days',
222
- 'knowledge.global_sharing.freshness.stale_after_days',
223
217
  ];
224
218
 
225
219
  const _DEFAULTS: SettingsDict = {};
@@ -24,10 +24,13 @@
24
24
  *
25
25
  * Two floors, neither invented here:
26
26
  *
27
- * - **Ceiling** — {@link SELF_FIX_CEILING} attempts per lane, which is the
28
- * N=3 validation-loop budget from the `autonomous-execution` rule, applied
29
- * per validation target (that rule resets its counter on a different
30
- * target, so the counters below are per-lane rather than per-run).
27
+ * - **Ceiling** — {@link SELF_FIX_CEILING} attempts per lane. This is the
28
+ * engine's own number, independent of the `autonomous-execution` rule's
29
+ * `execution.fix_loop_max` budget (now a default-10 ladder) — a
30
+ * deterministic, critic-free retry on an already-known verdict has no
31
+ * judgement call for that ladder's escalation rungs to apply to. The
32
+ * counters below are per-lane rather than per-run; each lane is its own
33
+ * target.
31
34
  * - **No-progress** — two consecutive attempts producing an identical verdict
32
35
  * signature stop the loop immediately, budget remaining or not. This is the
33
36
  * floor the `recursive-verification` skill already stated in prose ("two
@@ -47,9 +50,10 @@ import { type Any, Outcome, StepResult, agent_directive } from '../../delivery_s
47
50
  /**
48
51
  * Attempts allowed per lane before the loop exits PARTIAL.
49
52
  *
50
- * Deliberately the `autonomous-execution` N=3 budget rather than a fresh
51
- * number: a second, differently-sized retry ceiling in the same package would
52
- * be a rule the tree contradicts.
53
+ * The engine's own number — not borrowed from `autonomous-execution`'s
54
+ * `execution.fix_loop_max` budget, which now defaults to 10 with a
55
+ * strategy-shift ladder. A deterministic, critic-free retry on an
56
+ * already-known verdict has no judgement call that ladder's rungs apply to.
53
57
  */
54
58
  export const SELF_FIX_CEILING = 3;
55
59
 
@@ -133,12 +133,11 @@ export function run(state: DeliveryState): StepResult {
133
133
  return _halt_coverage(state, provided, report.gaps);
134
134
  }
135
135
  notes.push(...report.fallbacks);
136
- // 3.1 — reported in shadow: the outcome value is unchanged for one
137
- // release, so a caller branching on it is found by the line rather
138
- // than by the breakage.
139
- const handed_back = _handed_back_line(report);
140
- if (handed_back !== null) {
141
- notes.push(handed_back);
136
+ // 3.2 — the shadow is now the outcome. 3.1 shipped the line one
137
+ // release ahead (16.2.0 carries it) so a caller branching on
138
+ // `SUCCESS` was found by the words before it is found by the value.
139
+ if (carried_nothing(report)) {
140
+ return _halt_carried_nothing(state, report, notes);
142
141
  }
143
142
  }
144
143
 
@@ -390,6 +389,49 @@ function _halt_coverage(
390
389
  });
391
390
  }
392
391
 
392
+ /**
393
+ * BLOCKED halt — the port accounted for everything and carried none of it.
394
+ *
395
+ * The gap list is empty here by construction: a complete report and a complete
396
+ * surrender look identical to `coverage_gaps`, which is why this is its own
397
+ * halt rather than a gap. `questions` is non-empty because the dispatcher
398
+ * rejects a `BLOCKED` result that surfaces nothing to answer — handing the
399
+ * work back has to come with a way forward, not just a refusal.
400
+ */
401
+ function _halt_carried_nothing(
402
+ state: DeliveryState,
403
+ report: CoverageReport,
404
+ fallbacks: ReadonlyArray<string>,
405
+ ): StepResult {
406
+ const directive = _resolve_directive(state);
407
+ const lines: string[] = [
408
+ agent_directive(directive),
409
+ '> Apply rejected: the coverage report accounts for every declared ' +
410
+ 'item and the port carried none of them over.',
411
+ `> All ${report.declared.length} declared item(s) are in \`flagged\`:`,
412
+ ];
413
+ for (const item of report.handed_back) {
414
+ lines.push(`> - \`${item}\``);
415
+ }
416
+ lines.push(
417
+ '> A complete report and a complete hand-back are the same empty gap ' +
418
+ 'list, so this is checked separately — flagging one handler the ' +
419
+ 'port could not carry is the ledger working; flagging all of them ' +
420
+ 'is the port not having run.',
421
+ '> 1. Continue — implement the items above and re-write ' +
422
+ '`ui_apply.coverage` with each one in `honoured` or `translated`, ' +
423
+ 'leaving in `flagged` only what genuinely could not be carried',
424
+ '> 2. Flag deliberately — say here which of the items above are out of ' +
425
+ 'scope for this port and why, and the operator decides',
426
+ '> 3. Abort — drop this UI request',
427
+ );
428
+ return new StepResult({
429
+ outcome: Outcome.BLOCKED,
430
+ questions: lines,
431
+ message: [...fallbacks, `UI apply rejected: ${_handed_back_line(report)}`].join('\n'),
432
+ });
433
+ }
434
+
393
435
  /** Return the agent-written `ui_apply` envelope, or `null`. */
394
436
  function _apply_envelope(state: DeliveryState): Record<string, Any> | null {
395
437
  const data = _pyTruthy(state.ticket) ? state.ticket : {};
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * TypeScript twin of `work_engine/hooks/builtin/decision_trace.py` (ADR-200
5
5
  * py2ts — work_engine.hooks.builtin subpackage). Implements the v1 envelope
6
- * from `docs/contracts/decision-trace-v1.md`. Default-off; opt-in via
7
- * `.agent-settings.yml` `decision_engine.surface_traces: true`.
6
+ * from `docs/contracts/decision-trace-v1.md`. Off: the settings key that
7
+ * registered it was retired, so only a caller that builds the registry
8
+ * directly enables it.
8
9
  *
9
10
  * The hook is purely observational — it never mutates `DeliveryState`, never
10
11
  * raises terminal errors. Stream / disk failures surface as {@link HookError}
@@ -31,7 +31,8 @@ type Any = unknown;
31
31
  /**
32
32
  * Thread the `🧠 Memory: <hits>/<asks> · ids=[…]` line into the report.
33
33
  *
34
- * `memory_cadence` is the `memory.cadence` cadence key. `visibility_off`
34
+ * `memory_cadence` is the cadence the hook was built with; settings always
35
+ * yield `always` since the `memory.cadence` key was retired. `visibility_off`
35
36
  * mirrors `memory.visibility: off`. `asked_types` overrides the list of
36
37
  * memory types treated as `asks` in the visibility line.
37
38
  */
@@ -157,7 +157,6 @@ function _settings_from_raw(data: SettingsDict): HookSettings {
157
157
 
158
158
  const memory_section = data['memory'];
159
159
  let visibility_off = false;
160
- let memory_cadence = 'always';
161
160
  if (_isPlainDict(memory_section)) {
162
161
  const ms = memory_section as Record<string, Any>;
163
162
  const rawVis = ms['visibility'];
@@ -166,10 +165,6 @@ function _settings_from_raw(data: SettingsDict): HookSettings {
166
165
  } else if (typeof rawVis === 'boolean' && rawVis === false) {
167
166
  visibility_off = true;
168
167
  }
169
- const cadence_raw = ms['cadence'];
170
- if (cadence_raw !== null && cadence_raw !== undefined) {
171
- memory_cadence = String(cadence_raw).trim().toLowerCase() || 'always';
172
- }
173
168
  }
174
169
 
175
170
  const memory_hooks = hooksDict['memory_visibility'];
@@ -192,7 +187,6 @@ function _settings_from_raw(data: SettingsDict): HookSettings {
192
187
  decision_trace: decision_trace_on,
193
188
  memory_visibility: memory_visibility_on,
194
189
  memory_visibility_off: visibility_off,
195
- memory_cadence,
196
190
  chat_history_enabled: chat_block_enabled && global_chat_on,
197
191
  chat_history_script: chat_script,
198
192
  decision_engine: decision_engine_settings,
@@ -11,9 +11,10 @@
11
11
  *
12
12
  * Schema (all keys optional; the parser rejects unknown keys hard):
13
13
  *
14
- * - `surface_traces` (bool, default `false`) — opt-in for
15
- * `DecisionTraceHook`. Predates the gates; lives here so the
16
- * `decision_engine:` block has one source-of-truth schema.
14
+ * - `surface_traces` — RETIRED, accepted and ignored. The trace hook stays
15
+ * off (the old default). Still in `ALLOWED_KEYS` so a block that carries
16
+ * the leftover key is not rejected wholesale, which would drop the gates
17
+ * it configures alongside it.
17
18
  * - `min_confidence` (`low`/`medium`/`high`/`off`, default
18
19
  * `off`) — confidence-band floor; Phase=Plan refuses to advance
19
20
  * when the band is below.
@@ -27,8 +28,9 @@
27
28
  * - `ask_timeout_seconds` (int, default `30`) — timeout when
28
29
  * `on_block=ask` runs in a non-interactive context (no TTY, or
29
30
  * `CI=true`).
30
- * - `on_block_fallback` (`stop`/`warn`, default `stop`) —
31
- * resolution after `ask_timeout` elapses.
31
+ * - `on_block_fallback` — RETIRED, accepted and ignored for the same
32
+ * reason; the resolution after `ask_timeout` is always `stop`, the
33
+ * fail-safe value.
32
34
  *
33
35
  * Gate-conflict resolution (first match wins, only one gate fires per
34
36
  * phase):
@@ -57,7 +59,6 @@ export const ALLOWED_KEYS: ReadonlySet<string> = new Set([
57
59
  const _LEVEL_VALUES: ReadonlySet<string> = new Set(['low', 'medium', 'high', 'off']);
58
60
  const _LEVEL_RANK: Record<string, number> = { low: 1, medium: 2, high: 3 };
59
61
  const _ON_BLOCK_VALUES: ReadonlySet<string> = new Set(['stop', 'ask', 'warn']);
60
- const _FALLBACK_VALUES: ReadonlySet<string> = new Set(['stop', 'warn']);
61
62
 
62
63
  /**
63
64
  * Conflict-resolution order. Highest-impact gate first; the first
@@ -177,17 +178,13 @@ export function parse(data: Any): DecisionEngineSettings {
177
178
  );
178
179
  }
179
180
  return new DecisionEngineSettings({
180
- surface_traces: _coerce_bool(_get(d, 'surface_traces', undefined), false),
181
+ surface_traces: false,
181
182
  min_confidence: _coerce_level(_get(d, 'min_confidence', 'off'), 'min_confidence'),
182
183
  block_on_risk: _coerce_level(_get(d, 'block_on_risk', 'off'), 'block_on_risk'),
183
184
  require_memory_hits: _coerce_bool(_get(d, 'require_memory_hits', undefined), false),
184
185
  on_block: _coerce_choice(_get(d, 'on_block', 'stop'), 'on_block', _ON_BLOCK_VALUES),
185
186
  ask_timeout_seconds: _coerce_int(_get(d, 'ask_timeout_seconds', 30), 'ask_timeout_seconds'),
186
- on_block_fallback: _coerce_choice(
187
- _get(d, 'on_block_fallback', 'stop'),
188
- 'on_block_fallback',
189
- _FALLBACK_VALUES,
190
- ),
187
+ on_block_fallback: 'stop',
191
188
  });
192
189
  }
193
190
 
@@ -284,7 +284,8 @@ export function format_changed_decisions_block(
284
284
  /**
285
285
  * Apply the cadence + opt-out gates from the contract.
286
286
  *
287
- * `memory_cadence` is the `memory.cadence` cadence key:
287
+ * `memory_cadence` is the cadence the hook was built with (the
288
+ * `memory.cadence` settings key is retired; settings always yield `always`):
288
289
  *
289
290
  * - `always` (default) — emit whenever `asks >= 1`.
290
291
  * - `auto` — emit only when `asks >= 3` (reduces noise on