@event4u/agent-config 16.3.0 → 16.5.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 (532) 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 +178 -78
  5. package/README.md +2 -2
  6. package/agents/templates/.ai-council.yml.example +26 -8
  7. package/dist/agent-src/commands/analyze/inbox.md +10 -7
  8. package/dist/agent-src/commands/bug/investigate.md +1 -1
  9. package/dist/agent-src/commands/commit/in-chunks.md +40 -31
  10. package/dist/agent-src/commands/commit.md +72 -33
  11. package/dist/agent-src/commands/condense.md +2 -8
  12. package/dist/agent-src/commands/council/debate.md +11 -7
  13. package/dist/agent-src/commands/council/default.md +10 -9
  14. package/dist/agent-src/commands/council.md +1 -1
  15. package/dist/agent-src/commands/design.md +1 -1
  16. package/dist/agent-src/commands/estimate-ticket.md +1 -1
  17. package/dist/agent-src/commands/feature/explore.md +3 -3
  18. package/dist/agent-src/commands/feature/plan.md +1 -1
  19. package/dist/agent-src/commands/fix/ci.md +17 -3
  20. package/dist/agent-src/commands/fix/commit-messages.md +48 -23
  21. package/dist/agent-src/commands/fix/pr-comments.md +3 -6
  22. package/dist/agent-src/commands/implement-ticket.md +3 -3
  23. package/dist/agent-src/commands/memory/add.md +4 -16
  24. package/dist/agent-src/commands/memory/load.md +5 -6
  25. package/dist/agent-src/commands/memory/promote.md +3 -16
  26. package/dist/agent-src/commands/mission/upgrade.md +3 -2
  27. package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
  28. package/dist/agent-src/commands/optimize/deep.md +4 -2
  29. package/dist/agent-src/commands/optimize/rtk.md +4 -26
  30. package/dist/agent-src/commands/pr/create/description-only.md +18 -15
  31. package/dist/agent-src/commands/pr/create.md +42 -34
  32. package/dist/agent-src/commands/pr/merge.md +136 -9
  33. package/dist/agent-src/commands/prepare-for-review.md +13 -11
  34. package/dist/agent-src/commands/project/analyze.md +7 -35
  35. package/dist/agent-src/commands/refine-ticket.md +1 -1
  36. package/dist/agent-src/commands/review/changes.md +14 -19
  37. package/dist/agent-src/commands/roadmap/next.md +10 -1
  38. package/dist/agent-src/commands/roadmap/process-full.md +52 -38
  39. package/dist/agent-src/commands/roadmap/resolve-blockers.md +64 -14
  40. package/dist/agent-src/commands/worktree/create.md +7 -3
  41. package/dist/agent-src/commands/worktree/verify.md +2 -1
  42. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
  43. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
  44. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
  45. package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
  46. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  47. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
  48. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  49. package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
  50. package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
  51. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
  52. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +67 -52
  53. package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
  54. package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
  55. package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
  56. package/dist/agent-src/contexts/execution/toolchain-resolver.md +4 -10
  57. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  58. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  59. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  60. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  61. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  62. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
  63. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  64. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  65. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
  66. package/dist/agent-src/guidelines/design-antipatterns.md +1 -1
  67. package/dist/agent-src/guidelines/php/git.md +15 -2
  68. package/dist/agent-src/rules/active-remediation.md +0 -1
  69. package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
  70. package/dist/agent-src/rules/architecture.md +0 -1
  71. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
  72. package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
  73. package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
  74. package/dist/agent-src/rules/autonomous-execution.md +0 -1
  75. package/dist/agent-src/rules/brand-consistency.md +0 -1
  76. package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
  77. package/dist/agent-src/rules/broken-access-control.md +0 -1
  78. package/dist/agent-src/rules/cli-output-handling.md +0 -1
  79. package/dist/agent-src/rules/code-comment-discipline.md +0 -1
  80. package/dist/agent-src/rules/code-provenance.md +0 -1
  81. package/dist/agent-src/rules/command-suggestion-policy.md +0 -1
  82. package/dist/agent-src/rules/commit-conventions.md +1 -2
  83. package/dist/agent-src/rules/communication-through-line.md +1 -2
  84. package/dist/agent-src/rules/content-quoting-floor.md +1 -2
  85. package/dist/agent-src/rules/context-hygiene.md +5 -5
  86. package/dist/agent-src/rules/copilot-routing.md +1 -2
  87. package/dist/agent-src/rules/council-availability.md +4 -4
  88. package/dist/agent-src/rules/cross-source-consistency.md +4 -6
  89. package/dist/agent-src/rules/decision-revisit-gate.md +2 -3
  90. package/dist/agent-src/rules/delegation-policy.md +2 -3
  91. package/dist/agent-src/rules/design-fidelity.md +0 -1
  92. package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
  93. package/dist/agent-src/rules/devcontainer-routing.md +1 -2
  94. package/dist/agent-src/rules/doc-screenshot-hygiene.md +0 -1
  95. package/dist/agent-src/rules/docker-commands.md +0 -1
  96. package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
  97. package/dist/agent-src/rules/domain-safety-disclaimer.md +0 -1
  98. package/dist/agent-src/rules/domain-safety-pii.md +0 -1
  99. package/dist/agent-src/rules/domain-safety-retention.md +0 -1
  100. package/dist/agent-src/rules/downstream-changes.md +0 -1
  101. package/dist/agent-src/rules/engineering-safety-floor.md +0 -1
  102. package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
  103. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
  104. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -2
  105. package/dist/agent-src/rules/finance-safety-floor.md +0 -1
  106. package/dist/agent-src/rules/fix-what-you-see.md +6 -32
  107. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
  108. package/dist/agent-src/rules/git-history-discipline.md +1 -2
  109. package/dist/agent-src/rules/guidelines.md +0 -1
  110. package/dist/agent-src/rules/history-discipline.md +0 -1
  111. package/dist/agent-src/rules/icon-consistency.md +0 -1
  112. package/dist/agent-src/rules/image-likeness-and-rights.md +0 -1
  113. package/dist/agent-src/rules/improve-before-implement.md +0 -1
  114. package/dist/agent-src/rules/invite-challenge.md +0 -1
  115. package/dist/agent-src/rules/laravel-routing.md +1 -2
  116. package/dist/agent-src/rules/laravel-translations.md +0 -1
  117. package/dist/agent-src/rules/legal-safety-floor.md +0 -1
  118. package/dist/agent-src/rules/lethal-trifecta-guard.md +0 -1
  119. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
  120. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +0 -1
  121. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  122. package/dist/agent-src/rules/media-governance-routing.md +1 -2
  123. package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
  124. package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
  125. package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
  126. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  127. package/dist/agent-src/rules/model-recommendation.md +0 -1
  128. package/dist/agent-src/rules/neighbour-precedence.md +64 -0
  129. package/dist/agent-src/rules/no-attribution-footers.md +0 -1
  130. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
  131. package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
  132. package/dist/agent-src/rules/no-roadmap-references.md +0 -1
  133. package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
  134. package/dist/agent-src/rules/onboarding-gate.md +0 -1
  135. package/dist/agent-src/rules/output-discipline.md +0 -1
  136. package/dist/agent-src/rules/package-ci-checks.md +0 -1
  137. package/dist/agent-src/rules/persona-governance.md +2 -3
  138. package/dist/agent-src/rules/php-coding.md +0 -1
  139. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
  140. package/dist/agent-src/rules/preservation-guard.md +0 -1
  141. package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -3
  142. package/dist/agent-src/rules/question-not-instruction.md +0 -1
  143. package/dist/agent-src/rules/reviewer-awareness.md +0 -1
  144. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
  145. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -6
  146. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  147. package/dist/agent-src/rules/rule-type-governance.md +0 -1
  148. package/dist/agent-src/rules/runtime-safety.md +0 -1
  149. package/dist/agent-src/rules/scale-discipline.md +0 -1
  150. package/dist/agent-src/rules/secret-vcs-guard.md +0 -1
  151. package/dist/agent-src/rules/security-sensitive-stop.md +0 -1
  152. package/dist/agent-src/rules/self-repair-loop.md +0 -1
  153. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
  154. package/dist/agent-src/rules/session-canary.md +0 -1
  155. package/dist/agent-src/rules/settings-ask-protocol.md +5 -6
  156. package/dist/agent-src/rules/size-enforcement.md +0 -1
  157. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
  158. package/dist/agent-src/rules/skill-quality.md +0 -1
  159. package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
  160. package/dist/agent-src/rules/source-confidentiality.md +0 -1
  161. package/dist/agent-src/rules/source-discovery-gate.md +0 -1
  162. package/dist/agent-src/rules/source-of-truth.md +0 -1
  163. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
  164. package/dist/agent-src/rules/strategy-safety-floor.md +0 -1
  165. package/dist/agent-src/rules/symfony-routing.md +1 -2
  166. package/dist/agent-src/rules/think-before-action.md +0 -1
  167. package/dist/agent-src/rules/token-budget-discipline.md +14 -48
  168. package/dist/agent-src/rules/token-efficiency.md +0 -1
  169. package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
  170. package/dist/agent-src/rules/tool-safety.md +0 -1
  171. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  172. package/dist/agent-src/rules/untrusted-input-defense.md +0 -1
  173. package/dist/agent-src/rules/upstream-proposal.md +0 -1
  174. package/dist/agent-src/rules/user-interaction.md +0 -1
  175. package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
  176. package/dist/agent-src/scripts/gate_budget.ts +47 -23
  177. package/dist/agent-src/scripts/gate_execute.ts +12 -4
  178. package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +2 -0
  179. package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +3 -3
  180. package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
  181. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
  182. package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
  183. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  184. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  185. package/dist/agent-src/skills/canvas-design/SKILL.md +4 -2
  186. package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
  187. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
  188. package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
  189. package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
  190. package/dist/agent-src/skills/database/data/manifest.json +2 -2
  191. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
  192. package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +13 -10
  193. package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
  194. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  195. package/dist/agent-src/skills/fe-design/references/design-patterns.md +49 -2
  196. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  197. package/dist/agent-src/skills/frontend-render-security/SKILL.md +9 -0
  198. package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
  199. package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
  200. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
  201. package/dist/agent-src/skills/iconography/SKILL.md +4 -2
  202. package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
  203. package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
  204. package/dist/agent-src/skills/logo-generation/SKILL.md +12 -8
  205. package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
  206. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  207. package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
  208. package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
  209. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -2
  210. package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
  211. package/dist/agent-src/skills/svg-authoring/SKILL.md +318 -0
  212. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
  213. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  214. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  215. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  216. package/dist/agent-src/skills/wireframe/SKILL.md +5 -2
  217. package/dist/agent-src/templates/AGENTS.md +1 -1
  218. package/dist/agent-src/templates/agent-settings.md +46 -129
  219. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  220. package/dist/agent-src/templates/command.md +2 -2
  221. package/dist/agent-src/templates/roadmaps.md +6 -1
  222. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  223. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  224. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  225. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  226. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  227. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  228. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  229. package/dist/agent-src/templates/skill.md +1 -1
  230. package/dist/cli/commands/uiRender.js +201 -4
  231. package/dist/cli/commands/uiRenderAsset.js +1308 -0
  232. package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
  233. package/dist/cli/commands/uiRenderAssetGrid.js +265 -0
  234. package/dist/cli/commands/uiRenderAssetGrounds.js +323 -0
  235. package/dist/cli/commands/uiRenderAssetIsolation.js +85 -0
  236. package/dist/cli/commands/uiRenderAssetTypes.js +145 -0
  237. package/dist/cli/main.js +47 -1
  238. package/dist/cli/registry.js +2 -1
  239. package/dist/cli-delegate/check_update_banner.js +195 -119
  240. package/dist/cli-delegate/{chunk-S4UMZNES.js → chunk-4DBG5K7M.js} +5 -5
  241. package/dist/cli-delegate/{chunk-TRI6DQZ6.js → chunk-5GPULQBE.js} +60 -42
  242. package/dist/cli-delegate/{chunk-JQVYKIZA.js → chunk-6SRJTYJS.js} +33 -177
  243. package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
  244. package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
  245. package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
  246. package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
  247. package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
  248. package/dist/cli-delegate/{chunk-NXEILF2K.js → chunk-F3QDG2GT.js} +481 -72
  249. package/dist/cli-delegate/{chunk-CQWX336L.js → chunk-G5VVIZRC.js} +3 -3
  250. package/dist/cli-delegate/{chunk-JY2I2DXV.js → chunk-H76PHZBI.js} +137 -60
  251. package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
  252. package/dist/cli-delegate/{chunk-LIYTLH6O.js → chunk-KXXWJTDO.js} +5 -10
  253. package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
  254. package/dist/cli-delegate/{chunk-S4YWNRKO.js → chunk-MDPPKQCQ.js} +34 -1
  255. package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
  256. package/dist/cli-delegate/{chunk-GKE7ZVFA.js → chunk-PWX7CKMD.js} +1 -1
  257. package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
  258. package/dist/cli-delegate/{chunk-RQNNW7IF.js → chunk-T7XSJSUQ.js} +433 -632
  259. package/dist/cli-delegate/{chunk-NQ7WT43P.js → chunk-TMWYUOK4.js} +75 -12
  260. package/dist/cli-delegate/{chunk-EEHDXSYD.js → chunk-WQWXGIWB.js} +12 -273
  261. package/dist/cli-delegate/{chunk-QLDHIPWR.js → chunk-XQTPXKFA.js} +1 -1
  262. package/dist/cli-delegate/cmd_analyze_session.js +223 -43
  263. package/dist/cli-delegate/cmd_brand_status.js +3 -2
  264. package/dist/cli-delegate/cmd_conformance.js +489 -238
  265. package/dist/cli-delegate/cmd_converge.js +3 -3
  266. package/dist/cli-delegate/cmd_doctor.js +15 -12
  267. package/dist/cli-delegate/cmd_doctor_neighbours.js +11 -4
  268. package/dist/cli-delegate/cmd_explain.js +43 -19
  269. package/dist/cli-delegate/cmd_export.js +10 -10
  270. package/dist/cli-delegate/cmd_git_convention.js +1851 -0
  271. package/dist/cli-delegate/cmd_handoff.js +40 -21
  272. package/dist/cli-delegate/cmd_mcp_available.js +3 -2
  273. package/dist/cli-delegate/cmd_migrate.js +3 -3
  274. package/dist/cli-delegate/cmd_packs_active.js +4 -3
  275. package/dist/cli-delegate/cmd_prune.js +10 -10
  276. package/dist/cli-delegate/cmd_route_audit.js +7 -7
  277. package/dist/cli-delegate/cmd_route_explain.js +5 -5
  278. package/dist/cli-delegate/cmd_session_recycle.js +9 -7
  279. package/dist/cli-delegate/cmd_settings_check.js +54 -7
  280. package/dist/cli-delegate/cmd_settings_get.js +18 -8
  281. package/dist/cli-delegate/cmd_settings_migrate.js +10 -10
  282. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  283. package/dist/cli-delegate/cmd_sync.js +10 -10
  284. package/dist/cli-delegate/cmd_uninstall.js +10 -10
  285. package/dist/cli-delegate/cmd_update.js +7 -7
  286. package/dist/cli-delegate/cmd_upgrade.js +7 -7
  287. package/dist/cli-delegate/cmd_validate.js +10 -10
  288. package/dist/cli-delegate/cmd_versions.js +5 -5
  289. package/dist/cli-delegate/gate_budget.js +1 -1
  290. package/dist/cli-delegate/gate_execute.js +2 -2
  291. package/dist/cli-delegate/roadmap_gates.js +2 -2
  292. package/dist/discovery/deprecation-report.md +1 -1
  293. package/dist/discovery/discovery-manifest.json +171 -107
  294. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  295. package/dist/discovery/discovery-manifest.summary.md +7 -7
  296. package/dist/discovery/dormancy-report.md +1 -1
  297. package/dist/discovery/orphan-report.md +1 -1
  298. package/dist/discovery/packs.json +41 -22
  299. package/dist/discovery/trust-report.md +3 -3
  300. package/dist/discovery/workspaces.json +16 -11
  301. package/dist/hooks/dispatch.js +2520 -1924
  302. package/dist/hooks/dispatch.sha256 +1 -1
  303. package/dist/hooks/svg_rules.chunk.cjs +1626 -0
  304. package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
  305. package/dist/install/install.mjs +462 -431
  306. package/dist/install/installThinLayer.js +40 -12
  307. package/dist/install/installedRuleLinks.js +105 -19
  308. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  309. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
  310. package/dist/mcp/registry-manifest.json +5 -5
  311. package/dist/mcp/server.json +2 -2
  312. package/dist/mcp/server.mjs +3063 -2160
  313. package/dist/router.json +1 -1
  314. package/dist/scripts/_lib/agent_settings.js +15 -120
  315. package/dist/scripts/_lib/compile_time_toggles.js +12 -21
  316. package/dist/scripts/_lib/git_convention.js +232 -0
  317. package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
  318. package/dist/scripts/_lib/installed_layer.js +344 -18
  319. package/dist/scripts/_lib/package_root.js +68 -0
  320. package/dist/scripts/_lib/rule_law_section.js +1 -1
  321. package/dist/scripts/_lib/scan_scope.js +105 -0
  322. package/dist/scripts/_lib/settings_removed_keys.js +168 -0
  323. package/dist/scripts/_lib/svg_dom.js +284 -0
  324. package/dist/scripts/_lib/svg_geometry.js +477 -0
  325. package/dist/scripts/_lib/svg_motion.js +179 -0
  326. package/dist/scripts/_lib/svg_rules.js +1337 -0
  327. package/dist/scripts/_lib/svg_urls.js +67 -0
  328. package/dist/scripts/_lib/thin_rules.js +80 -3
  329. package/dist/scripts/lint_svg_asset.js +324 -0
  330. package/dist/server/app.js +2 -1
  331. package/dist/server/gitKeysGate.js +105 -0
  332. package/dist/server/routes/settings.js +67 -8
  333. package/dist/server/routes/wizard.js +4 -0
  334. package/dist/server/schemas/settings.js +23 -81
  335. package/dist/shared/skillRanking.js +30 -4
  336. package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
  337. package/dist/ui/index.html +1 -1
  338. package/docs/MIGRATION.md +72 -1
  339. package/docs/contracts/settings-classes.md +35 -65
  340. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  341. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  342. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  343. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  344. package/docs/guidelines/agent-infra/layered-settings.md +13 -1
  345. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  346. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  347. package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
  348. package/docs/guidelines/design-antipatterns.md +1 -1
  349. package/docs/guidelines/php/git.md +15 -2
  350. package/package.json +4 -3
  351. package/src/agent-src/scripts/gate_budget.ts +47 -23
  352. package/src/agent-src/scripts/gate_execute.ts +12 -4
  353. package/src/agent-src/templates/AGENTS.md +1 -1
  354. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  355. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  356. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  357. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  358. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  359. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  360. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  361. package/src/config/agent-settings.template.yml +79 -312
  362. package/src/config/agents-paths.yml +16 -0
  363. package/src/config/assurance-capability-registry.json +7 -3
  364. package/src/config/ci-local-parity.yml +3 -0
  365. package/src/config/continuity-surface.json +3 -3
  366. package/src/config/discovery/packs.yml +17 -1
  367. package/src/config/evaluator-budgets.json +19 -6
  368. package/src/config/gate-coverage.yml +65 -23
  369. package/src/config/gate-violation-baselines.json +56 -16
  370. package/src/config/gitignore-block.txt +19 -0
  371. package/src/config/hook-bundle-budget.json +1 -1
  372. package/src/config/release-gate-locality.yml +2 -1
  373. package/src/config/routing-coverage-seed.json +55 -6
  374. package/src/config/rule-law-ceilings.json +12 -6
  375. package/src/config/rule-obligations.json +833 -0
  376. package/src/install/installThinLayer.ts +76 -10
  377. package/src/install/installedRuleLinks.ts +105 -17
  378. package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
  379. package/src/scripts/_cli/cmd_conformance.ts +13 -2
  380. package/src/scripts/_cli/cmd_doctor.ts +10 -10
  381. package/src/scripts/_cli/cmd_doctor_neighbours.ts +133 -0
  382. package/src/scripts/_cli/cmd_explain.ts +72 -14
  383. package/src/scripts/_cli/cmd_git_convention.ts +637 -0
  384. package/src/scripts/_cli/cmd_settings_check.ts +66 -8
  385. package/src/scripts/_cli/cmd_settings_get.ts +18 -3
  386. package/src/scripts/_cli/doctor_execution.ts +72 -1
  387. package/src/scripts/_dispatch.bash +37 -2
  388. package/src/scripts/_lib/agent_settings.ts +15 -124
  389. package/src/scripts/_lib/blocked_by_marker.ts +1 -1
  390. package/src/scripts/_lib/compile_time_toggles.ts +12 -21
  391. package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
  392. package/src/scripts/_lib/git_base_ref.ts +92 -0
  393. package/src/scripts/_lib/git_convention.ts +291 -0
  394. package/src/scripts/_lib/git_convention_carrier.ts +389 -0
  395. package/src/scripts/_lib/git_convention_grammar.ts +246 -0
  396. package/src/scripts/_lib/git_convention_measure.ts +344 -0
  397. package/src/scripts/_lib/global_deploy_inventory.ts +74 -0
  398. package/src/scripts/_lib/graph_feeder_record.ts +236 -13
  399. package/src/scripts/_lib/installed_layer.ts +448 -23
  400. package/src/scripts/_lib/knowledge_global.ts +14 -1
  401. package/src/scripts/_lib/module_reach.ts +456 -0
  402. package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
  403. package/src/scripts/_lib/neighbour_tool_use.ts +8 -10
  404. package/src/scripts/_lib/ratification_artifact.ts +220 -1
  405. package/src/scripts/_lib/ratification_subject.ts +92 -0
  406. package/src/scripts/_lib/release_findings_ingest.ts +15 -7
  407. package/src/scripts/_lib/release_highlights.ts +5 -0
  408. package/src/scripts/_lib/rule_law_section.ts +1 -1
  409. package/src/scripts/_lib/rule_obligations.ts +205 -0
  410. package/src/scripts/_lib/self_repair.ts +1 -1
  411. package/src/scripts/_lib/settings_removed_keys.ts +173 -0
  412. package/src/scripts/_lib/svg_dom.ts +318 -0
  413. package/src/scripts/_lib/svg_geometry.ts +480 -0
  414. package/src/scripts/_lib/svg_motion.ts +208 -0
  415. package/src/scripts/_lib/svg_rules.ts +1453 -0
  416. package/src/scripts/_lib/svg_urls.ts +72 -0
  417. package/src/scripts/_lib/test_red_state.ts +5 -0
  418. package/src/scripts/_lib/thin_rules.ts +83 -3
  419. package/src/scripts/_lib/touched_file_quality.ts +142 -6
  420. package/src/scripts/_lib/verification_command.ts +59 -0
  421. package/src/scripts/_lib/verify_clause.ts +27 -17
  422. package/src/scripts/_lib/worker_budget.ts +1 -1
  423. package/src/scripts/adr/regenerate_index.ts +16 -1
  424. package/src/scripts/ai_council/config.ts +7 -7
  425. package/src/scripts/ai_council/modification_review.ts +100 -0
  426. package/src/scripts/ai_council/modification_review_questions.ts +90 -0
  427. package/src/scripts/ai_council/orchestrator.ts +5 -5
  428. package/src/scripts/ai_council/spend_gate.ts +18 -7
  429. package/src/scripts/ai_team/config.ts +11 -16
  430. package/src/scripts/audit_user_type_axis.ts +20 -8
  431. package/src/scripts/bench_ab_clone.ts +1 -2
  432. package/src/scripts/bench_concern_spawn_path.ts +129 -0
  433. package/src/scripts/bench_graph_feeder_latency.ts +584 -0
  434. package/src/scripts/check_agent_artifact_location.ts +36 -0
  435. package/src/scripts/check_branch_freshness.ts +147 -24
  436. package/src/scripts/check_enforcement_coverage.ts +130 -0
  437. package/src/scripts/check_evaluator_budgets.ts +4 -0
  438. package/src/scripts/check_finding_dispositions.ts +88 -25
  439. package/src/scripts/check_gate_coverage.ts +4 -3
  440. package/src/scripts/check_gate_reachability.ts +48 -1
  441. package/src/scripts/check_generator_sync.ts +48 -0
  442. package/src/scripts/check_hook_bundle_composition.ts +107 -0
  443. package/src/scripts/check_kernel_edit_ratified.ts +86 -6
  444. package/src/scripts/check_pack_size.ts +1 -1
  445. package/src/scripts/check_release_manifest_content.ts +189 -0
  446. package/src/scripts/check_standing_rule_delivery.ts +96 -0
  447. package/src/scripts/check_suppression_hygiene.ts +2 -5
  448. package/src/scripts/ci_settle.ts +42 -5
  449. package/src/scripts/classify_merge_risk.ts +320 -0
  450. package/src/scripts/closure_scan.ts +91 -1
  451. package/src/scripts/command_suggester/settings.ts +8 -108
  452. package/src/scripts/command_suggester/types.ts +4 -5
  453. package/src/scripts/consumer_matrix.ts +102 -0
  454. package/src/scripts/context_hygiene_hook.ts +13 -23
  455. package/src/scripts/cost/preflight.mjs +12 -1
  456. package/src/scripts/council_cli.ts +7 -7
  457. package/src/scripts/dispatch_r2_reviewer.ts +24 -11
  458. package/src/scripts/explain_run.ts +8 -13
  459. package/src/scripts/generate_git_convention_grammar.ts +127 -0
  460. package/src/scripts/generate_host_cost_table.ts +20 -3
  461. package/src/scripts/handoff_context_hook.ts +86 -37
  462. package/src/scripts/hook_manifest.json +1 -1
  463. package/src/scripts/hook_manifest.yaml +25 -6
  464. package/src/scripts/hooks/block_config_weakening.ts +48 -5
  465. package/src/scripts/hooks/block_plumbing_writes.ts +8 -4
  466. package/src/scripts/hooks/block_speaking_inbox_dir.ts +16 -1
  467. package/src/scripts/hooks/concern_registry.ts +2 -0
  468. package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
  469. package/src/scripts/hooks/design_pass_hook.ts +157 -3
  470. package/src/scripts/hooks/evidence_independence.ts +12 -4
  471. package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
  472. package/src/scripts/hooks/push_settle_hook.ts +4 -3
  473. package/src/scripts/hooks/rule_inject_hook.ts +44 -3
  474. package/src/scripts/hooks/state_io.ts +8 -4
  475. package/src/scripts/hooks/svg_obligation.ts +497 -0
  476. package/src/scripts/hooks/svg_rules_loader.ts +133 -0
  477. package/src/scripts/hooks/telemetry_usage_hook.ts +7 -46
  478. package/src/scripts/hooks/turn_end_gate_hook.ts +6 -3
  479. package/src/scripts/install-hooks.sh +42 -14
  480. package/src/scripts/install.ts +7 -31
  481. package/src/scripts/lint_blocker_citations.ts +198 -0
  482. package/src/scripts/lint_consolidation_lineage.ts +6 -3
  483. package/src/scripts/lint_design_quality.ts +60 -12
  484. package/src/scripts/lint_evidence_artifacts.ts +9 -0
  485. package/src/scripts/lint_hook_concern_budget.ts +10 -21
  486. package/src/scripts/lint_motion_authority_drift.ts +27 -0
  487. package/src/scripts/lint_pack_boundaries.ts +406 -28
  488. package/src/scripts/lint_roadmap_blockers.ts +282 -29
  489. package/src/scripts/lint_roadmap_complexity.ts +4 -2
  490. package/src/scripts/lint_rule_law_section.ts +151 -21
  491. package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
  492. package/src/scripts/lint_settings_classes.ts +1 -1
  493. package/src/scripts/lint_svg_asset.ts +365 -0
  494. package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
  495. package/src/scripts/lint_workflow_security.ts +12 -1
  496. package/src/scripts/measure_skill_ranker_baseline.ts +5 -0
  497. package/src/scripts/model_rule_injection.ts +3 -3
  498. package/src/scripts/onboarding_gate_hook.ts +7 -6
  499. package/src/scripts/print_required_checks.ts +15 -3
  500. package/src/scripts/probe_host_compliance.ts +33 -5
  501. package/src/scripts/probe_turnaround.ts +183 -3
  502. package/src/scripts/ratification_header.ts +77 -0
  503. package/src/scripts/refusal_envelope.ts +138 -0
  504. package/src/scripts/release_publication.ts +29 -3
  505. package/src/scripts/report_dispatch_import_closure.ts +76 -0
  506. package/src/scripts/report_installed_rule_links.ts +118 -1
  507. package/src/scripts/report_module_reach.ts +212 -0
  508. package/src/scripts/report_obligation_mechanism.ts +16 -18
  509. package/src/scripts/report_parked_blockers.ts +222 -0
  510. package/src/scripts/report_required_checks_drift.ts +196 -0
  511. package/src/scripts/report_skill_ranker_confusion.ts +103 -2
  512. package/src/scripts/report_standing_payload_by_host.ts +1 -1
  513. package/src/scripts/routing_doctor.ts +2 -2
  514. package/src/scripts/schemas/agent-settings.schema.json +17 -31
  515. package/src/scripts/schemas/command.schema.json +1 -1
  516. package/src/scripts/schemas/skill.schema.json +1 -1
  517. package/src/scripts/self_review_gate.ts +39 -2
  518. package/src/scripts/skill_tools/score_skill_relevance.ts +28 -19
  519. package/src/scripts/sync_pr_branch.ts +403 -132
  520. package/src/scripts/trigger_eval_grandfather.json +0 -16
  521. package/src/server/schemas/settings.ts +33 -177
  522. package/src/shared/skillRanking.ts +53 -4
  523. package/dist/cli-delegate/chunk-NYX3L2PZ.js +0 -99
  524. package/src/scripts/_lib/config_chain.ts +0 -477
  525. package/src/scripts/_lib/conformance_report.ts +0 -403
  526. package/src/scripts/_lib/eval_discrimination.ts +0 -95
  527. package/src/scripts/_lib/evaluator_promotion.ts +0 -225
  528. package/src/scripts/_lib/file_slicer.ts +0 -117
  529. package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
  530. package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
  531. package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
  532. package/src/scripts/_lib/role_split.ts +0 -338
@@ -72,7 +72,7 @@ Roadmap: <path> · mode: <autonomous | phase-checkpoints>
72
72
 
73
73
  Git: branch <feat/<roadmap-slug>> · commits: chunked (N commit steps
74
74
  detected / delivery commits) · push: to feat/<roadmap-slug> ONLY
75
- · PR: open against <default branch> (description only — no merge)
75
+ · PR: open against <default branch> (no merge, except § 5)
76
76
  Artifacts: <N> planned (skills/rules/commands/guidelines) —
77
77
  batched overlap check: <result — run NOW, against current state>
78
78
  Open questions: <N> → decision sheet below (<M> rows); the rest via AI
@@ -85,7 +85,7 @@ Deferred items: <wait | spawn-follow-up-draft | cancel-with-memo> (default wait)
85
85
 
86
86
  Always active regardless of this contract (never lifted):
87
87
  • Hard Floor per-commit diff gate (bulk deletions / infra)
88
- • Push anywhere except feat/<roadmap-slug>; any merge
88
+ • Push anywhere except feat/<roadmap-slug>; merge (§ 5)
89
89
  • security-sensitive-stop on auth/billing/tenant/secret paths
90
90
  • N=3 validation budget · context-hygiene read-loop abort
91
91
  • Deferred-[~] archival gate
@@ -202,7 +202,7 @@ They are not optional reading: a slug grammar does not imply a namespace, and
202
202
  | Create feature branch `feat/<roadmap-slug>` (or reuse the current worktree branch) | Never a prod trunk; one branch per run |
203
203
  | Chunked commits on that branch | Per-commit Hard-Floor diff gate stays ([`commit-mechanics`](../authority/commit-mechanics.md)); agent picks the split per [`commit-policy`](../../rules/commit-policy.md) |
204
204
  | Push to that branch **only** | Push to any other ref = Hard Floor, ask |
205
- | Open ONE PR (description-only flow) | Never merge, never close/retarget; merge is always conversational |
205
+ | Open ONE PR (description-only flow) | Acceptance never merges, closes or retargets; merging is § 5's one exception |
206
206
  | Batched artifact drafting | The drafting-protocol **Research/overlap pass runs NOW at contract time against current artifact state**; results cached; Understand/Draft phases run non-interactively during the run. Artifacts NOT in the batch still trigger the interactive protocol |
207
207
  | Council auto-enable | In-run open questions route to the AI council silently; `high_impact` / `user_required` classifications STILL escalate to the user per [`ask-when-uncertain`](../../rules/ask-when-uncertain.md). **No council configured** → the contract summary says so and in-run true ambiguity halts (never silent guessing) |
208
208
 
@@ -211,11 +211,11 @@ the PR has to be able to reach one:
211
211
 
212
212
  | Grant | Boundary |
213
213
  |---|---|
214
- | Update the PR after opening it — title, body, further pushes to the same branch | Still never merge, close or retarget |
214
+ | Update the PR after opening it — title, body, further pushes to the same branch | Still never close or retarget; merge only per § 5 |
215
215
  | Reversible repository / branch settings the agent can change (branch protection included) | Only settings this run needs to reach a reviewable PR, and only reversible ones; a setting the agent changes it also restores if the run's need ends |
216
216
  | Start, re-run and fix CI; update the merge base; resolve conflicts | Standard git and CI operations on the run's own branch |
217
217
  | Install project-local dependencies | Inside the repo; never a global or system package manager without its own confirmation |
218
- | Any tool, CLI, API, model, council or external service the work needs | Cumulative **USD 25** per run of variable spend; over that, the owner is asked BEFORE crossing. Uncertainty is not a reason to ask. Marginal cost of an existing subscription is $0. Splitting spend across services, subagents or rounds to keep each item under the ceiling is a violation |
218
+ | Any tool, CLI, API, model, council or external service the work needs | Bounded by the **configured `cost.budgets` windows** and by nothing when none is configured (ADR-279). Where the run's spend plus what it reasonably expects would cross a configured window, it **pauses and reports** before crossing rather than asking. Uncertainty is not a reason to ask. Marginal cost of an existing subscription is $0. Splitting spend across services, subagents or rounds to keep each item under a ceiling is a violation. Model-carried: nothing on a run compares a cumulative figure with anything |
219
219
 
220
220
  These grants satisfy [`scope-control`](../../rules/scope-control.md)'s
221
221
  "standing instruction" clause for the run — see
@@ -225,7 +225,7 @@ These grants satisfy [`scope-control`](../../rules/scope-control.md)'s
225
225
 
226
226
  | Mode | End state | Halts during run |
227
227
  |---|---|---|
228
- | `autonomous` | All steps `[x]` · quality green per cadence · work committed in chunks on `feat/<roadmap-slug>` · pushed · PR open · archival sweep run. **Merge out of scope, always.** | Safety floors only (+ quality-red, + step reveals out-of-roadmap work) |
228
+ | `autonomous` | All steps `[x]` · quality green per cadence · work committed in chunks on `feat/<roadmap-slug>` · pushed · PR open · archival sweep run. **No merge without an owner auto-merge instruction (§ 5).** | Safety floors only (+ quality-red, + step reveals out-of-roadmap work) |
229
229
  | `phase-checkpoints` | Same end state | Safety floors + a compact status + "continue?" prompt at each phase boundary |
230
230
  | `interactive` (derived, never from an absent field) | Legacy: work lands, no git delivery without per-op permission | All gates as authored by their owning rules |
231
231
 
@@ -238,12 +238,13 @@ git grants are omitted from the contract (nothing to authorize —
238
238
  **ADR-237 widens § 3 and leaves this section untouched — deliberately.** An
239
239
  end-to-end delegation is tolerable precisely because a PR is reviewable before
240
240
  it merges, so the boundary that keeps merging out is the one that makes the rest
241
- safe. Nothing below is reachable by any invocation.
241
+ safe. Nothing below is reachable by acceptance. A merge comes only from outside
242
+ it: an owner auto-merge instruction (ADR-282, `/pr:merge` § 9a).
242
243
 
243
244
  - Any [`non-destructive-by-default`](../../rules/non-destructive-by-default.md)
244
245
  trigger beyond the two named grants (own-branch push, PR-open):
245
246
  prod-trunk anything, deploys, bulk deletions, infra commits.
246
- - Merging, closing, or retargeting a PR.
247
+ - Merging a PR without an owner auto-merge instruction; closing or retargeting one.
247
248
  - Lifting [`security-sensitive-stop`](../../rules/security-sensitive-stop.md),
248
249
  the N=3 budget, context-hygiene aborts, or the deferred-`[~]` gate.
249
250
  - Work outside the roadmap's scope (halt: scope-out-of-roadmap).
@@ -125,25 +125,24 @@ that is already done — the exact failure this clause prevents. This is the
125
125
 
126
126
  ## 2. Pre-run summary — gate or inline note
127
127
 
128
- Read `roadmap.skip_pre_run_gate` from `.agent-settings.yml` (default
129
- `true`). The command name already names the scope; asking "Go /
130
- Different roadmap / …" on every run is the noise the gate-skip removes.
131
-
132
- - `true` **and** the roadmap is unambiguous (user named it, or exactly
133
- one active roadmap exists) → **skip the interactive gate.** Emit the
134
- summary block below as a one-shot inline note (no numbered options,
135
- no wait) so the user can still abort mid-stream if the wrong file was
136
- picked, then continue straight into § 3.
137
- - `false`, **or** the roadmap is ambiguous (multiple active roadmaps and
138
- none named), **or** an unresolvable cadence / scope conflict is
139
- detected → show the gate with numbered options and wait for input.
140
-
141
- The gate is **always** shown — regardless of the flag — when the
142
- roadmap is ambiguous or a scope / cadence conflict has no sensible
143
- default. The flag suppresses the confirmation, never a genuine
144
- "which roadmap?" question.
145
-
146
- Summary block (shown in both modes; gate-mode appends the numbered
128
+ The command name already names the scope; asking "Go / Different
129
+ roadmap / …" on every run is noise, so there is no confirmation gate and
130
+ no setting to bring one back (the `roadmap.skip_pre_run_gate` key was
131
+ retired on 2026-10-09 with its default, `true`, as fixed behavior).
132
+
133
+ - The roadmap is unambiguous (user named it, or exactly one active
134
+ roadmap exists) → **no interactive gate.** Emit the summary block
135
+ below as a one-shot inline note (no numbered options, no wait) so the
136
+ user can still abort mid-stream if the wrong file was picked, then
137
+ continue straight into § 3.
138
+ - The roadmap is ambiguous (multiple active roadmaps and none named),
139
+ **or** an unresolvable cadence / scope conflict is detected → show the
140
+ gate with numbered options and wait for input.
141
+
142
+ The gate is shown only for a genuine "which roadmap?" or an unresolvable
143
+ conflict — never as a routine confirmation.
144
+
145
+ Summary block (shown in both cases; the gate appends the numbered
147
146
  options + wait):
148
147
 
149
148
  > Roadmap: `<resolved-path>`
@@ -159,10 +158,6 @@ options + wait):
159
158
  > 1. Go — start processing autonomously
160
159
  > 2. Different roadmap · 3. Different scope · 4. Toggle council · 5. Abort
161
160
 
162
- The invocation-level skip still applies under `skip_pre_run_gate: false`:
163
- when scope, roadmap, and council are all unambiguous in the invocation
164
- (e.g. `/roadmap:process-phase road-to-X.md with council`), the gate
165
- does not fire.
166
161
 
167
162
  ## 3. Pre-scan — execution contract or commit-step ask
168
163
 
@@ -334,7 +329,8 @@ report.
334
329
  run: branches, chunked commits, pushing that branch, opening and updating the
335
330
  PR, reversible repository/branch settings, CI runs and re-runs, merge-base
336
331
  updates, conflict resolution, project-local dependencies, and paid calls
337
- inside the cumulative USD 25 ceiling. If yes → **run it**.
332
+ inside whatever `cost.budgets` windows are configured — none configured,
333
+ none applies (ADR-279). If yes → **run it**.
338
334
  3. **Is it on the EXCLUDED list?** Merging to a production trunk, deploying,
339
335
  production data / secrets / IAM / DNS, bulk deletion outside the roadmap's
340
336
  scope, an irreversible external action beyond the PR itself. Those keep their
@@ -501,11 +497,15 @@ so the shape is settled before the runs rather than designed under pressure:
501
497
  a branch.
502
498
  - **Delivery:** one branch and one PR per lane.
503
499
  - **Immediate removal:** a single scope-lock collision with data loss.
500
+ - **Refusal report:** every lane report carries the fixed field
501
+ `classifier_refusals` (an empty list when none) — a report without it is
502
+ malformed, never "clean". At drain end the orchestrator batches every lane's
503
+ field into ONE envelope (§ Host-classifier refusals).
504
504
 
505
505
  ## 4. Resolve cadences — read once, cache for the run
506
506
 
507
- Read both keys from `.agent-settings.yml` once and cache for the whole
508
- run. Do **not** re-read inside the step loop.
507
+ Read `roadmap.quality_cadence` from `.agent-settings.yml` once and cache
508
+ it for the whole run. Do **not** re-read inside the step loop.
509
509
 
510
510
  **`roadmap.quality_cadence`** — when to run the quality pipeline.
511
511
  Only relevant when `quality.local_auto_run` is `true`; when it is
@@ -524,17 +524,12 @@ Missing / unreadable / unknown → fall back to `end_of_roadmap`.
524
524
  The Iron Law [`verify-before-complete`](../../rules/verify-before-complete.md)
525
525
  still forbids claiming quality output that was not produced.
526
526
 
527
- **`roadmap.dashboard_regen_cadence`** — when to run the dashboard
528
- subprocess between steps:
527
+ **Dashboard regen cadence** — fixed, not a setting (the
528
+ `roadmap.dashboard_regen_cadence` key was retired on 2026-10-09 with its
529
+ default as the behavior): `./agent-config roadmap:progress` runs every
530
+ 5th closed step, at every phase boundary and at reply end.
529
531
 
530
- | Value | `./agent-config roadmap:progress` runs |
531
- |---|---|
532
- | `per_step` | After every checkbox flip |
533
- | `every_5_steps` (default) | Every 5th closed step + at phase boundary + at reply end |
534
- | `phase_boundary` | Only at phase boundaries + run end |
535
-
536
- `process-step` ignores this — single-step runs always regen at step
537
- end. Any file-shape touch (rename / phase add / archive — Iron Law 1
532
+ `process-step` always regens at step end. Any file-shape touch (rename / phase add / archive — Iron Law 1
538
533
  of [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md))
539
534
  forces an immediate regen regardless of cadence. The checkbox flip
540
535
  itself is **never** batchable — only the subprocess.
@@ -772,16 +767,13 @@ Per-class routing, why parking is not deferring, and the scope-growth pointer:
772
767
  above unchanged (agent-decidable exit/acceptance criteria remain the
773
768
  default; `verify:` is the opt-in machine-checkable tightening).
774
769
 
775
- 6. **Dashboard regen — cadence-gated.** Run
776
- `./agent-config roadmap:progress` when due per
777
- `roadmap.dashboard_regen_cadence` (resolved in § 4; default
778
- `every_5_steps`):
779
- - `per_step` → always after the flip.
780
- - `every_5_steps` → after the 5th, 10th, … closed step **of this
781
- run**, or when the reply ends with closed steps pending regen.
782
- - `phase_boundary` → skip; the boundary handler in § 5 wrapper /
783
- § 6 runs the regen.
784
- - Any file-shape touch (rename / phase add / archive — Iron Law 1)
770
+ 6. **Dashboard regen — fixed cadence** (§ 4). Run
771
+ `./agent-config roadmap:progress`:
772
+ - after the 5th, 10th, … closed step **of this run**, or when the
773
+ reply ends with closed steps pending regen;
774
+ - at a phase boundary — the boundary handler in § 5 wrapper / § 6
775
+ runs it;
776
+ - on any file-shape touch (rename / phase add / archive — Iron Law 1)
785
777
  → run immediately regardless of cadence.
786
778
 
787
779
  Skipped regens accumulate into the next due regen — the markdown
@@ -843,7 +835,7 @@ and none of them is a `blocked` outcome.
843
835
 
844
836
  | # | What the refresh found | Reaction |
845
837
  |---|---|---|
846
- | a | A PR touching my owned paths **merged** since the last refresh | Run `sync_pr_branch` now — already the documented resolution, only push-bound until this row existed. Re-read the current step's files, continue. |
838
+ | a | A PR touching my owned paths **merged** since the last refresh | Run `agent-config git:convention sync --base origin/<this branch's PR base>` now — already the documented resolution, only push-bound until this row existed. Re-read the current step's files, continue. |
847
839
  | b | An **open** PR touches my owned paths | Continue. Name the collision in the PR description and in the final report. **Never rebase onto a foreign branch.** |
848
840
  | c | A peer session shows `PATH OVERLAP` | Take disjoint steps first if ordering allows; otherwise name it and continue. The register is advisory, never a lock. |
849
841
  | d | The roadmap itself was **archived on `origin/main`** | Stop. The same **selection error** as § 1, detected late — not a halt, and no checkbox is flipped to reach it. |
@@ -1004,9 +996,11 @@ a violation of the command and the user's will:
1004
996
  opened" / "a GitHub setting must change" / "CI must be re-run" / "the merge
1005
997
  base needs updating" / "there are conflicts" / "tests fail"** — every one is
1006
998
  remediation work the invocation authorised (ADR-237 § 1). Do it.
1007
- - **"a paid service is needed"** — authorised up to a cumulative USD 25 per run
1008
- (§ Spend in the wrapper). Uncertainty about the exact cost is explicitly NOT a
1009
- reason to ask.
999
+ - **"a paid service is needed"** — authorised inside the configured
1000
+ `cost.budgets` windows, and with none configured there is no ceiling to be
1001
+ outside of (§ Spend in the wrapper). A crossing of a configured window pauses
1002
+ and reports; it does not ask. Uncertainty about the exact cost is explicitly
1003
+ NOT a reason to ask.
1010
1004
  - **"a maintainer should do this"** when the agent can perform the same action
1011
1005
  through git, `gh`, an API or a CLI. **Capability before role**: the role of the
1012
1006
  person who conventionally does a thing is not a property of the thing.
@@ -1045,10 +1039,31 @@ execution either way.
1045
1039
  [`roadmap-execution-contract § 4`](roadmap-execution-contract.md)):
1046
1040
  all steps `[x]` · quality green per cadence · work committed in
1047
1041
  chunks on the run's feature branch · pushed to that branch · ONE PR
1048
- open (description-only flow) · archival sweep run. **Merge is out of
1049
- scope in every mode — always conversational.** Without a contract
1042
+ open (description-only flow) · archival sweep run. **No mode merges by
1043
+ itself:** a merge needs the owner's explicit auto-merge instruction and
1044
+ runs through `/pr:merge` § 9a's danger gate (ADR-282). Without a contract
1050
1045
  (interactive mode), the run ends after the archival check with no
1051
1046
  git delivery beyond explicitly authorized commit steps.
1047
+
1048
+ ### 6-refusals. Host-classifier refusals — hand off, never route around
1049
+
1050
+ When the host's own classifier refuses a step of an owner-directed task, the
1051
+ run never reaches the same outcome by another tool, in smaller pieces or in
1052
+ another encoding, and never records a way around it. It finishes what does not
1053
+ depend on the refused step, then — owner present — asks once in-session for an
1054
+ explicit authorization of that exact step and, on a yes, re-runs the SAME step
1055
+ ONCE so the classifier decides again with the owner's word in front of it
1056
+ (ADR-282 § Part B). Refused again, or no owner present, it writes ONE
1057
+ continuation prompt for the owner and names its path in one line:
1058
+
1059
+ ```bash
1060
+ ./scripts-run src/scripts/refusal_envelope --input <envelope.json>
1061
+ ```
1062
+
1063
+ The input is task · done · refusals · remaining · the owner-directive record
1064
+ when there is one; the envelope lands at `agents/tmp/round-<hex>/prompt.md`.
1065
+ Lane refusals arrive in each lane's `classifier_refusals` field and go into the
1066
+ same single envelope (ADR-282 § Part B).
1052
1067
  - **If the entire roadmap reached `count_open == 0`** → run the full
1053
1068
  project quality pipeline. On red → stop, surface failures, do **not**
1054
1069
  archive. On green → run the **deferred-resolution gate** below before
@@ -12,8 +12,10 @@ provider's model or billing rule.
12
12
  inherit`, per [`model-recommendations`](../model-recommendations.md)).
13
13
  `frontier` (ADR-232) is declarable and opt-in; it is never the resolution of
14
14
  `inherit` — see the top-band invariant below.
15
- - `subagents.downshift`, `subagents.quota_arbitrage`, `subagents.model_map`
15
+ - `subagents.quota_arbitrage`, `subagents.model_map`
16
16
  (see [`auto-orchestration-activation`](auto-orchestration-activation.md)).
17
+ Downshift itself is always on — the `subagents.downshift` key was retired on
18
+ 2026-10-09 with its default as the fixed behavior.
17
19
  - The host-capability manifest's `separate_quota_pool`
18
20
  ([`host-capability-manifest`](host-capability-manifest.md)).
19
21
 
@@ -26,21 +28,19 @@ QUOTA ARBITRAGE IS A BONUS, NEVER LOAD-BEARING — REMOVE IT AND ROUTING IS
26
28
  THE SAME MINUS THE QUOTA WIN.
27
29
  ```
28
30
 
29
- 1. **Downshift off** (`downshift: false`) → every sub-task runs on the session
30
- tier. No routing change.
31
- 2. **Downshift on** → a sub-task runs on its declared tier; an `inherit` task
31
+ 1. **Downshift** (always on) → a sub-task runs on its declared tier; an `inherit` task
32
32
  runs on the session tier, **bounded by the top-band invariant below**. The
33
33
  tier resolves to a model alias via `model_map`; an empty entry means "use
34
34
  the tier's runtime default" — never a baked-in provider model name.
35
- 3. **Quota arbitrage** → prefer the **separate** quota pool for the sub-task
35
+ 2. **Quota arbitrage** → prefer the **separate** quota pool for the sub-task
36
36
  **only when** `subagents.quota_arbitrage == true` **and**
37
37
  `manifest.separate_quota_pool == true`. Otherwise the shared pool is used and
38
38
  the tier/model choice is unchanged. This is the only place the
39
39
  "Sonnet-has-its-own-allowance" idea lives, and it lives as a runtime-detected
40
40
  flag, never as portable prose.
41
- 4. **Budget routing — ARCHIVED 2026-08-16, there is no fourth step.** This
41
+ 3. **Budget routing — ARCHIVED 2026-08-16, there is no third step.** This
42
42
  position used to describe a budget relation applied after the tier resolves
43
- per 1–3: cheapest classifier-adequate tier WITH available budget, an atomic
43
+ per 1–2: cheapest classifier-adequate tier WITH available budget, an atomic
44
44
  pre-dispatch reserve, a cool-down on quota errors. None of it exists any
45
45
  more. A converged AI-council verdict (anthropic + openai, 2 of 2) archived
46
46
  `pickTier` and the permit lifecycle, because the `routing_switch` they
@@ -196,7 +196,7 @@ rule, or context asserts "model X is free".
196
196
  Tier vocabulary + cool-down state:
197
197
  [`src/scripts/_lib/tier_budget_routing.ts`](../../../../src/scripts/_lib/tier_budget_routing.ts)
198
198
  (`TIER_ORDER`, `readCooldowns` — the budget decision layer that used to live
199
- there is archived, see step 4), covered by
199
+ there is archived, see step 3), covered by
200
200
  [`tests/scripts/tier_budget_routing.test.ts`](../../../../tests/scripts/tier_budget_routing.test.ts);
201
201
  live state: `agent-config routing:doctor` (orchestration section).
202
202
 
@@ -23,9 +23,11 @@ dispatch → monitor → status → escalate / kill
23
23
 
24
24
  ## Budget + parallel cap
25
25
 
26
- - The N=3 autonomous budget (`autonomous-execution`) binds **per validation
27
- target**: three consecutive failed attempts on the same target halts the run
28
- and surfaces the three attempts. `budgetHalt()` is the deterministic counter.
26
+ - `budgetHalt()`'s per-target cap (`MAX_ATTEMPTS_PER_TARGET = 3`) is the
27
+ orchestrator's own number, not `autonomous-execution`'s
28
+ `execution.fix_loop_max` budget (now a default-10 ladder): three
29
+ consecutive failed attempts on the same target halts the run and surfaces
30
+ the three attempts. `budgetHalt()` is the deterministic counter.
29
31
  - `subagents.max_parallel` caps concurrent dispatch. No speculative fan-out:
30
32
  a subagent is spawned only for a classified-delegable target, never on spec.
31
33
 
@@ -175,7 +177,7 @@ requires a non-empty `emergency.orchestration_halt_justification`.
175
177
 
176
178
  ## Related
177
179
 
178
- - [`autonomous-execution`](../../rules/autonomous-execution.md) — the N=3 budget.
180
+ - [`autonomous-execution`](../../rules/autonomous-execution.md) — the `execution.fix_loop_max` budget and its ladder.
179
181
  - [`auto-orchestration-activation`](auto-orchestration-activation.md) — `enabled`/`auto` keys.
180
182
  - [`orchestration-telemetry`](orchestration-telemetry.md) — the audit signals the guardrails read.
181
183
  - [`subagent-response-contract`](subagent-response-contract.md) — the structured body returned inside this 4-status envelope + the orchestrator's synthesis duties.
@@ -114,7 +114,7 @@ state is not `success` it names what would change it:
114
114
  - [`verify-before-complete`](../../rules/verify-before-complete.md) — no
115
115
  completion claim without fresh evidence; this names what to claim when the
116
116
  claim is not completion.
117
- - [`autonomous-execution`](../../rules/autonomous-execution.md) — the N=3
118
- validation budget whose firing is `exhausted`.
117
+ - [`autonomous-execution`](../../rules/autonomous-execution.md) — the
118
+ `execution.fix_loop_max` validation budget whose firing is `exhausted`.
119
119
  - [`autonomy-mechanics`](autonomy-mechanics.md) — the budget's mechanics and the
120
120
  adaptive-effort ordering this page's progress-primary section states.
@@ -14,15 +14,9 @@ tools and run the right one — instead of a per-stack command explosion.
14
14
  > commands stay PHP-locked."
15
15
 
16
16
  **Size budget: none of its own.** The enforced ceiling is
17
- `check_depth_budget`'s 16,000 chars, and that is the only one.
18
-
19
- This page carried a self-imposed sub-ceiling through three values — 6,000,
20
- then 7,500, then 8,500 — and each was set just above whatever the file
21
- measured that day, so the next edit of any size broke it while the same
22
- sentence forbade raising it. A ceiling fitted to its own artifact is not a
23
- constraint, it is a tripwire; and the third one was set with a sentence
24
- claiming "real headroom" over 66 characters, which is the trap diagnosing
25
- itself and walking in anyway.
17
+ `check_depth_budget`'s 16,000 chars (`DEPTH_CEILING_CHARS`), and that is the
18
+ only one. Do not add a page-local ceiling: one fitted to the file's current
19
+ size breaks on the next edit and constrains nothing.
26
20
 
27
21
  What actually bounds this page is **what belongs in it**: the resolver's
28
22
  contract — the axes, the detection order, the confidence tiers, the refusal
@@ -54,7 +48,7 @@ its package count, so the cost is proportional and not negligible.
54
48
  The **cache probe is the expensive path**, with the magnitude stated, not
55
49
  implied as a SHAPE, because the arithmetic has already been published wrong
56
50
  once: `latest_manifest_mtime` stats both fixed-name lists in every scope,
57
- bounded at 200 scopes, each hit paying a second stat — and without
51
+ bounded at 200 scopes (`_MAX_BEHAVIOR_SCOPES`), each hit paying a second stat — and without
58
52
  an explicit `scopes` it also expands the globs. The guard can cost more than
59
53
  the resolution it guards, so a caller holding the scope list passes it. The
60
54
  widening is still right: a root-only key cannot see a behavior runner
@@ -10,7 +10,7 @@ Loaded by the `subagent-orchestration` skill and the `/do-and-judge`,
10
10
  |---|---|---|
11
11
  | `subagents.implementer_model` | _(empty → session model)_ | Model alias used for implementer subagents |
12
12
  | `subagents.judge_model` | _(empty → one tier up)_ | Model alias used for judge subagents |
13
- | `subagents.max_parallel` | `3` | Hard cap on concurrent subagent invocations |
13
+ | `subagents.max_parallel` | `3` | Limit on concurrent subagent invocations the model reads from settings — no code counts spawns against it |
14
14
 
15
15
  ## Model tier ladder
16
16
 
@@ -150,6 +150,45 @@ artifact exists because the issue is still owed, and "it failed one of six" is n
150
150
  something a later triage can act on. A deferral with no reason is the
151
151
  note-and-forget this rule already forbids, wearing an artifact's clothes.
152
152
 
153
+ ## fix-what-you-see — why a separate rule, and its activation gap
154
+
155
+ Moved verbatim from [`fix-what-you-see`](../../rules/fix-what-you-see.md)
156
+ on 2026-10-06 to pay for the standing-payload cost of `neighbour-precedence`;
157
+ the rule keeps a pointer here.
158
+
159
+ ### Why separate from `active-remediation`
160
+
161
+ That rule forbids ignoring a spotted issue and its ladder permits **note + ask**.
162
+ Two properties made it insufficient, both measured 2026-08-20: it is `type: auto`
163
+ on `refactor`/`legacy`/`cleanup` triggers — **none of which a failing CI job
164
+ matches**, so it does not load when the obligation matters most — and its
165
+ note-and-ask tier is what let a session name a red check's cause, name the
166
+ file's author, and hand it back still red.
167
+
168
+ Mechanics (fix-now size criteria, follow-up shape) stay there; this rule only
169
+ deletes the two escapes.
170
+
171
+ ### Honest activation gap — this rule is `auto`, and it wanted to be `always`
172
+
173
+ It shipped `auto` for a budget reason, not a design one, and the gap that leaves
174
+ is exactly the one it was written to close: **a red check the agent sees in tool
175
+ output triggers nothing.** Keyword triggers match the PROMPT. So the rule loads
176
+ when a human says "CI is red" or "not my test", and does NOT load when a test
177
+ run comes back red and nobody has said a word.
178
+
179
+ `check_always_budget` is the reason: the extended always-budget sat at
180
+ 60,252 / 60,254 chars — **two characters of headroom** — and the cap is a
181
+ ratchet that may only move down. The other nine always-rules are the kernel,
182
+ which `block_kernel_rule_writes` denies agent writes to, so no room can be made
183
+ from this side. A 2,332-char rule puts the total at 103.9 %.
184
+
185
+ Closing the gap needs one of: the ext-cap ratchet opened deliberately (a
186
+ maintainer decision, recorded), a kernel rule shortened to make room, or a
187
+ `post_tool_use` carrier that notices a non-zero verification exit — the only
188
+ option that would fire on tool output rather than on wording. Until then, `auto`
189
+ plus this paragraph is the honest state: the obligation is real, its delivery is
190
+ partial, and the partiality is named rather than implied away.
191
+
153
192
  ## See also
154
193
 
155
194
  - [`active-remediation`](../../rules/active-remediation.md) — the rule this file details (Iron Law + ladder + live-security carve-out).
@@ -69,7 +69,7 @@ If you need an ignored skill: read its SKILL.md directly, apply guidance, then a
69
69
  GitHub Copilot has no `PostToolUse` hook surface, so
70
70
  `scripts/context_hygiene_hook.ts` cannot run structurally and
71
71
  `agents/state/context-hygiene.json` is not maintained automatically
72
- (tool-call count, loop signal, freshness milestones at 20/40/60).
72
+ (tool-call count, freshness milestones at 20/40/60).
73
73
 
74
74
  The cooperative path: track turns and tool-loop signals from memory
75
75
  during the conversation and apply the suggest-a-new-chat / 3-failure
@@ -37,19 +37,17 @@ from a ticket/spec that carries a second source:
37
37
  4. **Classify confidence.** High = the sources plainly disagree, or the missing
38
38
  behavior is clearly load-bearing. Low = the "conflict" is a plausible
39
39
  re-reading, or the missing behavior may be intentionally out of scope.
40
- 5. **Decide per the setting** (below), then **batch** every surviving discrepancy
41
- into ONE question folded into this turn's single `ask-when-uncertain` prompt.
40
+ 5. **Batch** every surviving discrepancy into ONE question folded into this
41
+ turn's single `ask-when-uncertain` prompt.
42
42
 
43
- ## Confidence-tiered noise control (`consistency.cross_source`)
43
+ ## Noise control
44
44
 
45
45
  The rule fires only under a real trade-off (it must pass the
46
- `no-cheap-questions` Pre-Send Self-Check). The setting tunes how aggressively:
47
-
48
- | Value | High-confidence discrepancy | Low-confidence discrepancy |
49
- |---|---|---|
50
- | `on` (default) | Surface + ask before proceeding. | Surface + ask (batched into the same question). |
51
- | `auto` | Surface + ask. | State as an explicit assumption and proceed (no question). |
52
- | `off` | No cross-source checking — legacy behavior. | No cross-source checking. |
46
+ `no-cheap-questions` Pre-Send Self-Check). Every real discrepancy, high- or
47
+ low-confidence, is surfaced and asked — batched into the same question. That
48
+ is the fixed behavior since the `consistency.cross_source` key (which offered
49
+ `auto` and `off`) was retired on 2026-10-09 with this, its default, as the only
50
+ mode.
53
51
 
54
52
  Batching is the anti-noise mechanism: N discrepancies for one artefact become
55
53
  one numbered-options block, never N prompts. Plain vagueness (a single unclear
@@ -141,8 +141,9 @@ is therefore **agent self-assessed**, never looked up (roadmap L10/L17):
141
141
  **One** constraint-light scaffold ships — no heavy/light content variants, since
142
142
  two variants would be a hidden model→band table. A standard host **expands it on
143
143
  request**. Two gates, both default-on: automatic (task signal + agent
144
- self-assessment) + the user `reasoning:` settings toggle (global + per-component
145
- + hard off).
144
+ self-assessment) + the user's `reasoning.enabled` hard off. The per-component
145
+ toggles and `reasoning.auto_gate` were retired on 2026-10-09; the automatic gate
146
+ decides per component.
146
147
 
147
148
  ## Notes template grounding
148
149
 
@@ -18,7 +18,7 @@ on user request.
18
18
  | File | Git | Scope | Owner | Example values |
19
19
  |---|---|---|---|---|
20
20
  | `.agent-project-settings.yml` | **committed** | team / repo | lead maintainer | `project.stack`, `quality.php.tools`, `memory.dogfood` |
21
- | `~/.event4u/agent-config/agent-settings.yml` | **n/a** (outside repo) | individual developer · cross-project | individual | `name`, `ide`, `rule_loading_tier`, `personal.bot_icon`, `personal.autonomy`, `memory.cadence` (legacy `~/.config/agent-config/agent-settings.yml` read as fallback) |
21
+ | `~/.event4u/agent-config/agent-settings.yml` | **n/a** (outside repo) | individual developer · cross-project | individual | `name`, `ide`, `rule_loading_tier`, `personal.autonomy` — the full whitelist is `MERGEABLE_KEYS` in `scripts/_lib/agent_settings.ts` (legacy `~/.config/agent-config/agent-settings.yml` read as fallback) |
22
22
  | `agents/settings/.agent-settings.yml` | **gitignored** | individual developer · this project | individual | `personal.ide`, `personal.user_name`, `subagents.max_parallel`, `onboarding.onboarded` | <!-- ref-ignore -->
23
23
 
24
24
  > **Canonical location (ADR-038):** the developer file lives in the settings
@@ -27,6 +27,12 @@ on user request.
27
27
  > `.agent-settings.yml` is read as a **back-compat fallback** and is migrated
28
28
  > into the canonical location by `install` on the next run.
29
29
 
30
+ The `git.*` keys (`commit_format`, `branch_pattern`, `update_strategy`) have a
31
+ fourth home a team uses instead: `.git-convention.yml` at the repository root,
32
+ committed, read over every file above (ADR-283). `update_strategy` is read from
33
+ it at the commit a pull request is judged against, the other two at `HEAD`.
34
+ The team file carries no `git.*` key.
35
+
30
36
  All three are YAML. Schemas:
31
37
 
32
38
  - Developer (project-local): [`agent-settings.md`](../../templates/agent-settings.md).
@@ -45,6 +51,12 @@ Lowest priority → highest priority:
45
51
  4. agents/settings/.agent-settings.yml (developer file, gitignored; legacy repo-root .agent-settings.yml read as fallback — ADR-038) <!-- ref-ignore -->
46
52
  ```
47
53
 
54
+ For the `git.*` keys, `.git-convention.yml` sits above all four layers when it
55
+ sets a key, and either value there is a declaration; a key it does not set
56
+ falls through to this order, read at the repository root rather than per
57
+ directory. `agent-config git:convention show` prints the value in force and a
58
+ differing checkout value as a candidate.
59
+
48
60
  Keys from higher layers win unless a lower layer marks them
49
61
  `locked` (team file only). The user-global file does **not** support
50
62
  `locked` — its purpose is cross-project comfort, never policy.
@@ -224,7 +224,7 @@ Keep aligned with the dashboard counter in `scripts/update_roadmap_progress.ts`
224
224
 
225
225
  See [`guarded-baseline`](guarded-baseline.md).
226
226
 
227
- **Dashboard regen cadence — opt-in batching.** The checkbox flip is non-batchable. The **subprocess regen** (`./agent-config roadmap:progress`) is batchable per `roadmap.dashboard_regen_cadence` in `.agent-settings.yml` (`every_5_steps` default · `per_step` · `phase_boundary`). Run end, phase boundary, and any file-shape touch (rename / phase add / archive — Iron Law 1) always force an immediate regen regardless of cadence.
227
+ **Dashboard regen cadence — fixed batching.** The checkbox flip is non-batchable. The **subprocess regen** (`./agent-config roadmap:progress`) batches to every 5th closed step — a fixed cadence since the `roadmap.dashboard_regen_cadence` key was retired on 2026-10-09 with that default as the behavior. Run end, phase boundary, and any file-shape touch (rename / phase add / archive — Iron Law 1) always force an immediate regen.
228
228
 
229
229
  **Blockers follow the same cadence as checkboxes.** Clearing a `## Blockers` entry (per `templates/roadmaps.md` rule 20) flips its `Status: resolved` and regenerates the dashboard in the same reply — Iron Law 1's "same response" obligation applies to blocker resolution exactly as it applies to a checkbox flip.
230
230
 
@@ -1,8 +1,11 @@
1
1
  # Self-Improvement Pipeline
2
2
 
3
3
  Five-stage flow that turns real project experience into reviewed
4
- rule / skill / command / guideline changes. No autonomous self-edits;
5
- every upstream change ships via a human-reviewed PR.
4
+ rule / skill / command / guideline changes. Self-modification is a goal
5
+ (ADR-281): for a proposal scoped to the package the approval is the AI
6
+ council's ratification record, and the user is its last rung; a change a
7
+ user asked for keeps that user's approval as now. A passing record makes a
8
+ change ready, not landed — every upstream change still ships via a PR.
6
9
 
7
10
  Referenced by `road-to-curated-self-improvement.md`. Consumed by the live
8
11
  artifacts — the `skill-improvement-trigger` rule and the existing skills
@@ -84,7 +87,11 @@ blocks — it does not hand a half-filled doc to the next stage.
84
87
 
85
88
  ### Stage 5 — Upstream
86
89
 
87
- - **Trigger:** gate passed AND a human approver signed off.
90
+ - **Trigger:** gate passed AND, for a proposal scoped to the package, a
91
+ council ratification record whose `subject` matches the proposal's change
92
+ passed it (ADR-281); where the council cannot conclude, the user decides by
93
+ the route ADR-281 § 5 names. A proposal scoped to a consumer's own project
94
+ needs that user's approval, as before.
88
95
  - **Executor:** `upstream-contribute` skill. Refuses invocation if
89
96
  the proposal frontmatter is not `stage: gated`.
90
97
  - **Input:** gated proposal doc.
@@ -221,6 +221,42 @@ Before creating or modifying:
221
221
  5. Is this entrypoint → AGENTS.md
222
222
  6. Is this behavior hint → copilot-instructions.md
223
223
 
224
+ ## Rich-class size band — moved from `token-budget-discipline`
225
+
226
+ Moved verbatim from the rule on 2026-10-06 to pay for the standing-payload cost
227
+ of `neighbour-precedence`; the rule keeps the band and a pointer here.
228
+
229
+ ### Candidate rich skills (justified, not exhaustive)
230
+
231
+ These skills are approved `rich` by this roadmap's council:
232
+
233
+ | Skill | Justification summary |
234
+ |---|---|
235
+ | `design-intelligence` | 11 corpus CSVs + 16 design-language prose specs + a 10-category checklist; grounded selection needs the full reference to avoid random corpus subsets |
236
+ | `typography-system` | Modular-scale math + 6 worked example type systems; condensing to "use 1.25 ratio" produces agents that invent arbitrary px values |
237
+ | `accessibility-auditor` | WCAG criteria are non-negotiable detail; every criterion has a testable condition + failure mode; compression loses the test procedures |
238
+ | `design-system-capture` (Phase 6) | Writes + maintains DESIGN.md + PRODUCT.md; needs full templates + worked examples to generate useful artifacts |
239
+
240
+ ### The size band is measured, and only its ceiling is gated
241
+
242
+ The `rich` band is **2,000–3,500 tokens** (ADR-217, `docs/decisions/ADR-217-rich-class-band-measured-and-enforced.md`).
243
+ It was 2,000–5,000 and enforced by nothing until that record: measured with the
244
+ exact BPE tokenizer, the largest rich artifact in the tree is 3,331 tokens, so
245
+ the old ceiling described no artifact that existed. An unused permission costs
246
+ nothing until someone uses it.
247
+
248
+ `lint_token_budget_discipline.ts` gates the **ceiling** and publishes every rich
249
+ artifact's size on the green path. It does **not** gate the floor, and that is a
250
+ finding rather than an omission: running the check once surfaced a 1,931-token
251
+ skill legitimately holding the class, because `rich` buys exemption from
252
+ condensation — a claim about what compression would *lose*, not about file size.
253
+ The published study supplies a degradation threshold, which is a ceiling.
254
+ Nothing measures a minimum.
255
+
256
+ Measurement is exact where `js-tiktoken` resolves and the character proxy where
257
+ it does not; the gate says which, and a proxy reading within its own error
258
+ margin of the ceiling is reported **unresolved** rather than classified.
259
+
224
260
  ---
225
261
 
226
262
  # Final principle
@@ -114,7 +114,7 @@ Within-project invariants + repetition caps. Override = declare the value in
114
114
  | V2 | Glassmorphism as decoration (`backdrop-blur` + `bg-white/10`) with no functional depth hierarchy | Model defaults to it for "premium feel"; result looks like 2021 Material You clip-art | Element genuinely sits above a complex, blurred background layer; use sparingly and only for top-level floating surfaces | craft-presumption | delete → reduce | static |
115
115
  | V3 | Ghost card: `border: 1px solid` + box-shadow ≥ 16px spread together | The combination creates visual noise — the ghost card signals no confident decision about depth | Choose either border OR shadow to indicate depth; never both on the same surface | invariant | delete → reduce | static |
116
116
  | V4 | Over-rounded small cards or badges: `border-radius` > 16px on elements < 200px wide | Excessive rounding on small surfaces looks toy-ish; standard cap is 12–16px | Pill shape (`border-radius: 9999px`) is intentional on single-line tags/chips only | craft-presumption | retune | static |
117
- | V5 | Hand-drawn or illustrated SVG icons mixed with crisp icon-system icons | Visual register collision; instantly reads as "generated asset" | Intentional illustrative section (hero illustration, empty-state art); isolate from the icon system | invariant | replace | render |
117
+ | V5 | Hand-drawn or illustrated SVG icons mixed with crisp icon-system icons | Visual register collision; instantly reads as "generated asset" | Intentional illustrative section (hero illustration, empty-state art); isolate from the icon system. A genuinely missing glyph is authored under [`svg-authoring`](../skills/svg-authoring/SKILL.md) against the incumbent set's own grid | invariant | replace | render |
118
118
  | V6 | Repeating diagonal stripes as a background texture | A cliché background default; reads as generated CSS art | Brand explicitly uses pattern backgrounds (e.g., a textile brand); document the stripe definition | style-preference | delete | static |
119
119
  | V7 | Nested cards: a card inside a card inside a card | Depth hierarchy collapses; user cannot parse elevation intent | A truly three-level hierarchy (e.g., project → board → card); ensure each level has distinct visual weight | invariant | delete → reduce | render |
120
120
  | V9 | Noise or grain texture laid over a gradient as a "premium" surface default | The visual sibling of V6's diagonal stripes — a generated-CSS-art texture reached for to make a flat gradient look considered, applied because it is available rather than because the surface needed a texture | The texture is part of a documented brand surface treatment (a print-inspired or analog-photographic identity) with the grain opacity defined as a token, not chosen per surface | style-preference | delete | render |