@event4u/agent-config 16.3.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 (486) 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 +251 -0
  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/estimate-ticket.md +1 -1
  16. package/dist/agent-src/commands/feature/explore.md +3 -3
  17. package/dist/agent-src/commands/feature/plan.md +1 -1
  18. package/dist/agent-src/commands/fix/ci.md +17 -3
  19. package/dist/agent-src/commands/fix/commit-messages.md +48 -23
  20. package/dist/agent-src/commands/fix/pr-comments.md +3 -6
  21. package/dist/agent-src/commands/implement-ticket.md +3 -3
  22. package/dist/agent-src/commands/memory/add.md +4 -16
  23. package/dist/agent-src/commands/memory/load.md +5 -6
  24. package/dist/agent-src/commands/memory/promote.md +3 -16
  25. package/dist/agent-src/commands/mission/upgrade.md +3 -2
  26. package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
  27. package/dist/agent-src/commands/optimize/deep.md +4 -2
  28. package/dist/agent-src/commands/optimize/rtk.md +4 -26
  29. package/dist/agent-src/commands/pr/create/description-only.md +18 -15
  30. package/dist/agent-src/commands/pr/create.md +42 -34
  31. package/dist/agent-src/commands/pr/merge.md +136 -9
  32. package/dist/agent-src/commands/prepare-for-review.md +13 -11
  33. package/dist/agent-src/commands/project/analyze.md +7 -35
  34. package/dist/agent-src/commands/refine-ticket.md +1 -1
  35. package/dist/agent-src/commands/review/changes.md +14 -19
  36. package/dist/agent-src/commands/roadmap/next.md +10 -1
  37. package/dist/agent-src/commands/roadmap/process-full.md +52 -38
  38. package/dist/agent-src/commands/roadmap/resolve-blockers.md +64 -14
  39. package/dist/agent-src/commands/worktree/create.md +7 -3
  40. package/dist/agent-src/commands/worktree/verify.md +2 -1
  41. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
  42. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
  43. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
  44. package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
  45. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  46. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
  47. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  48. package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
  49. package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
  50. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
  51. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +67 -52
  52. package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
  53. package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
  54. package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
  55. package/dist/agent-src/contexts/execution/toolchain-resolver.md +4 -10
  56. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  57. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  58. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  59. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  60. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  61. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
  62. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  63. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  64. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
  65. package/dist/agent-src/guidelines/php/git.md +15 -2
  66. package/dist/agent-src/rules/active-remediation.md +0 -1
  67. package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
  68. package/dist/agent-src/rules/architecture.md +0 -1
  69. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
  70. package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
  71. package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
  72. package/dist/agent-src/rules/autonomous-execution.md +0 -1
  73. package/dist/agent-src/rules/brand-consistency.md +0 -1
  74. package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
  75. package/dist/agent-src/rules/broken-access-control.md +0 -1
  76. package/dist/agent-src/rules/cli-output-handling.md +0 -1
  77. package/dist/agent-src/rules/code-comment-discipline.md +0 -1
  78. package/dist/agent-src/rules/code-provenance.md +0 -1
  79. package/dist/agent-src/rules/command-suggestion-policy.md +0 -1
  80. package/dist/agent-src/rules/commit-conventions.md +1 -2
  81. package/dist/agent-src/rules/communication-through-line.md +1 -2
  82. package/dist/agent-src/rules/content-quoting-floor.md +1 -2
  83. package/dist/agent-src/rules/context-hygiene.md +5 -5
  84. package/dist/agent-src/rules/copilot-routing.md +1 -2
  85. package/dist/agent-src/rules/council-availability.md +4 -4
  86. package/dist/agent-src/rules/cross-source-consistency.md +4 -6
  87. package/dist/agent-src/rules/decision-revisit-gate.md +2 -3
  88. package/dist/agent-src/rules/delegation-policy.md +2 -3
  89. package/dist/agent-src/rules/design-fidelity.md +0 -1
  90. package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
  91. package/dist/agent-src/rules/devcontainer-routing.md +1 -2
  92. package/dist/agent-src/rules/doc-screenshot-hygiene.md +0 -1
  93. package/dist/agent-src/rules/docker-commands.md +0 -1
  94. package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
  95. package/dist/agent-src/rules/domain-safety-disclaimer.md +0 -1
  96. package/dist/agent-src/rules/domain-safety-pii.md +0 -1
  97. package/dist/agent-src/rules/domain-safety-retention.md +0 -1
  98. package/dist/agent-src/rules/downstream-changes.md +0 -1
  99. package/dist/agent-src/rules/engineering-safety-floor.md +0 -1
  100. package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
  101. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
  102. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -2
  103. package/dist/agent-src/rules/finance-safety-floor.md +0 -1
  104. package/dist/agent-src/rules/fix-what-you-see.md +6 -32
  105. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
  106. package/dist/agent-src/rules/git-history-discipline.md +1 -2
  107. package/dist/agent-src/rules/guidelines.md +0 -1
  108. package/dist/agent-src/rules/history-discipline.md +0 -1
  109. package/dist/agent-src/rules/icon-consistency.md +0 -1
  110. package/dist/agent-src/rules/image-likeness-and-rights.md +0 -1
  111. package/dist/agent-src/rules/improve-before-implement.md +0 -1
  112. package/dist/agent-src/rules/invite-challenge.md +0 -1
  113. package/dist/agent-src/rules/laravel-routing.md +1 -2
  114. package/dist/agent-src/rules/laravel-translations.md +0 -1
  115. package/dist/agent-src/rules/legal-safety-floor.md +0 -1
  116. package/dist/agent-src/rules/lethal-trifecta-guard.md +0 -1
  117. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
  118. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +0 -1
  119. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  120. package/dist/agent-src/rules/media-governance-routing.md +1 -2
  121. package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
  122. package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
  123. package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
  124. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  125. package/dist/agent-src/rules/model-recommendation.md +0 -1
  126. package/dist/agent-src/rules/neighbour-precedence.md +64 -0
  127. package/dist/agent-src/rules/no-attribution-footers.md +0 -1
  128. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
  129. package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
  130. package/dist/agent-src/rules/no-roadmap-references.md +0 -1
  131. package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
  132. package/dist/agent-src/rules/onboarding-gate.md +0 -1
  133. package/dist/agent-src/rules/output-discipline.md +0 -1
  134. package/dist/agent-src/rules/package-ci-checks.md +0 -1
  135. package/dist/agent-src/rules/persona-governance.md +2 -3
  136. package/dist/agent-src/rules/php-coding.md +0 -1
  137. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
  138. package/dist/agent-src/rules/preservation-guard.md +0 -1
  139. package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -3
  140. package/dist/agent-src/rules/question-not-instruction.md +0 -1
  141. package/dist/agent-src/rules/reviewer-awareness.md +0 -1
  142. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
  143. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -6
  144. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  145. package/dist/agent-src/rules/rule-type-governance.md +0 -1
  146. package/dist/agent-src/rules/runtime-safety.md +0 -1
  147. package/dist/agent-src/rules/scale-discipline.md +0 -1
  148. package/dist/agent-src/rules/secret-vcs-guard.md +0 -1
  149. package/dist/agent-src/rules/security-sensitive-stop.md +0 -1
  150. package/dist/agent-src/rules/self-repair-loop.md +0 -1
  151. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
  152. package/dist/agent-src/rules/session-canary.md +0 -1
  153. package/dist/agent-src/rules/settings-ask-protocol.md +5 -6
  154. package/dist/agent-src/rules/size-enforcement.md +0 -1
  155. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
  156. package/dist/agent-src/rules/skill-quality.md +0 -1
  157. package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
  158. package/dist/agent-src/rules/source-confidentiality.md +0 -1
  159. package/dist/agent-src/rules/source-discovery-gate.md +0 -1
  160. package/dist/agent-src/rules/source-of-truth.md +0 -1
  161. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
  162. package/dist/agent-src/rules/strategy-safety-floor.md +0 -1
  163. package/dist/agent-src/rules/symfony-routing.md +1 -2
  164. package/dist/agent-src/rules/think-before-action.md +0 -1
  165. package/dist/agent-src/rules/token-budget-discipline.md +12 -46
  166. package/dist/agent-src/rules/token-efficiency.md +0 -1
  167. package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
  168. package/dist/agent-src/rules/tool-safety.md +0 -1
  169. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  170. package/dist/agent-src/rules/untrusted-input-defense.md +0 -1
  171. package/dist/agent-src/rules/upstream-proposal.md +0 -1
  172. package/dist/agent-src/rules/user-interaction.md +0 -1
  173. package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
  174. package/dist/agent-src/scripts/gate_budget.ts +47 -23
  175. package/dist/agent-src/scripts/gate_execute.ts +12 -4
  176. package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
  177. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
  178. package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
  179. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  180. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  181. package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
  182. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
  183. package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
  184. package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
  185. package/dist/agent-src/skills/database/data/manifest.json +2 -2
  186. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
  187. package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
  188. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  189. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  190. package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
  191. package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
  192. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
  193. package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
  194. package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
  195. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  196. package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
  197. package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
  198. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -2
  199. package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
  200. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
  201. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  202. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  203. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  204. package/dist/agent-src/templates/AGENTS.md +1 -1
  205. package/dist/agent-src/templates/agent-settings.md +46 -129
  206. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  207. package/dist/agent-src/templates/command.md +2 -2
  208. package/dist/agent-src/templates/roadmaps.md +6 -1
  209. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  210. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  211. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  212. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  213. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  214. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  215. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  216. package/dist/agent-src/templates/skill.md +1 -1
  217. package/dist/cli/registry.js +1 -0
  218. package/dist/cli-delegate/check_update_banner.js +195 -119
  219. package/dist/cli-delegate/{chunk-TRI6DQZ6.js → chunk-5GPULQBE.js} +60 -42
  220. package/dist/cli-delegate/{chunk-JQVYKIZA.js → chunk-6SRJTYJS.js} +33 -177
  221. package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
  222. package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
  223. package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
  224. package/dist/cli-delegate/{chunk-NQ7WT43P.js → chunk-AED2VQGM.js} +65 -11
  225. package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
  226. package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
  227. package/dist/cli-delegate/{chunk-NXEILF2K.js → chunk-F3QDG2GT.js} +481 -72
  228. package/dist/cli-delegate/{chunk-CQWX336L.js → chunk-G5VVIZRC.js} +3 -3
  229. package/dist/cli-delegate/{chunk-JY2I2DXV.js → chunk-H76PHZBI.js} +137 -60
  230. package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
  231. package/dist/cli-delegate/{chunk-LIYTLH6O.js → chunk-KXXWJTDO.js} +5 -10
  232. package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
  233. package/dist/cli-delegate/{chunk-S4YWNRKO.js → chunk-MDPPKQCQ.js} +34 -1
  234. package/dist/cli-delegate/{chunk-S4UMZNES.js → chunk-MSUL5NYP.js} +5 -5
  235. package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
  236. package/dist/cli-delegate/{chunk-GKE7ZVFA.js → chunk-PWX7CKMD.js} +1 -1
  237. package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
  238. package/dist/cli-delegate/{chunk-RQNNW7IF.js → chunk-T7XSJSUQ.js} +433 -632
  239. package/dist/cli-delegate/{chunk-EEHDXSYD.js → chunk-WQWXGIWB.js} +12 -273
  240. package/dist/cli-delegate/{chunk-QLDHIPWR.js → chunk-XQTPXKFA.js} +1 -1
  241. package/dist/cli-delegate/cmd_analyze_session.js +223 -43
  242. package/dist/cli-delegate/cmd_brand_status.js +3 -2
  243. package/dist/cli-delegate/cmd_conformance.js +105 -35
  244. package/dist/cli-delegate/cmd_converge.js +3 -3
  245. package/dist/cli-delegate/cmd_doctor.js +15 -12
  246. package/dist/cli-delegate/cmd_doctor_neighbours.js +11 -4
  247. package/dist/cli-delegate/cmd_explain.js +43 -19
  248. package/dist/cli-delegate/cmd_export.js +10 -10
  249. package/dist/cli-delegate/cmd_git_convention.js +1851 -0
  250. package/dist/cli-delegate/cmd_handoff.js +40 -21
  251. package/dist/cli-delegate/cmd_mcp_available.js +3 -2
  252. package/dist/cli-delegate/cmd_migrate.js +3 -3
  253. package/dist/cli-delegate/cmd_packs_active.js +4 -3
  254. package/dist/cli-delegate/cmd_prune.js +10 -10
  255. package/dist/cli-delegate/cmd_route_audit.js +7 -7
  256. package/dist/cli-delegate/cmd_route_explain.js +5 -5
  257. package/dist/cli-delegate/cmd_session_recycle.js +9 -7
  258. package/dist/cli-delegate/cmd_settings_check.js +54 -7
  259. package/dist/cli-delegate/cmd_settings_get.js +18 -8
  260. package/dist/cli-delegate/cmd_settings_migrate.js +10 -10
  261. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  262. package/dist/cli-delegate/cmd_sync.js +10 -10
  263. package/dist/cli-delegate/cmd_uninstall.js +10 -10
  264. package/dist/cli-delegate/cmd_update.js +7 -7
  265. package/dist/cli-delegate/cmd_upgrade.js +7 -7
  266. package/dist/cli-delegate/cmd_validate.js +10 -10
  267. package/dist/cli-delegate/cmd_versions.js +5 -5
  268. package/dist/cli-delegate/gate_budget.js +1 -1
  269. package/dist/cli-delegate/gate_execute.js +2 -2
  270. package/dist/cli-delegate/roadmap_gates.js +2 -2
  271. package/dist/discovery/deprecation-report.md +1 -1
  272. package/dist/discovery/discovery-manifest.json +129 -90
  273. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  274. package/dist/discovery/discovery-manifest.summary.md +3 -3
  275. package/dist/discovery/dormancy-report.md +1 -1
  276. package/dist/discovery/orphan-report.md +1 -1
  277. package/dist/discovery/packs.json +24 -9
  278. package/dist/discovery/trust-report.md +3 -3
  279. package/dist/discovery/workspaces.json +5 -4
  280. package/dist/hooks/dispatch.js +2151 -1820
  281. package/dist/hooks/dispatch.sha256 +1 -1
  282. package/dist/install/install.mjs +462 -431
  283. package/dist/install/installThinLayer.js +40 -12
  284. package/dist/install/installedRuleLinks.js +105 -19
  285. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  286. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
  287. package/dist/mcp/registry-manifest.json +5 -5
  288. package/dist/mcp/server.json +2 -2
  289. package/dist/mcp/server.mjs +2702 -1995
  290. package/dist/router.json +1 -1
  291. package/dist/scripts/_lib/agent_settings.js +15 -120
  292. package/dist/scripts/_lib/compile_time_toggles.js +12 -21
  293. package/dist/scripts/_lib/git_convention.js +232 -0
  294. package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
  295. package/dist/scripts/_lib/installed_layer.js +344 -18
  296. package/dist/scripts/_lib/package_root.js +68 -0
  297. package/dist/scripts/_lib/rule_law_section.js +1 -1
  298. package/dist/scripts/_lib/settings_removed_keys.js +168 -0
  299. package/dist/scripts/_lib/thin_rules.js +80 -3
  300. package/dist/server/app.js +2 -1
  301. package/dist/server/gitKeysGate.js +105 -0
  302. package/dist/server/routes/settings.js +67 -8
  303. package/dist/server/routes/wizard.js +4 -0
  304. package/dist/server/schemas/settings.js +23 -81
  305. package/dist/shared/skillRanking.js +30 -4
  306. package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
  307. package/dist/ui/index.html +1 -1
  308. package/docs/MIGRATION.md +72 -1
  309. package/docs/contracts/settings-classes.md +35 -65
  310. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  311. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  312. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  313. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  314. package/docs/guidelines/agent-infra/layered-settings.md +13 -1
  315. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  316. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  317. package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
  318. package/docs/guidelines/php/git.md +15 -2
  319. package/package.json +1 -1
  320. package/src/agent-src/scripts/gate_budget.ts +47 -23
  321. package/src/agent-src/scripts/gate_execute.ts +12 -4
  322. package/src/agent-src/templates/AGENTS.md +1 -1
  323. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  324. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  325. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  326. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  327. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  328. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  329. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  330. package/src/config/agent-settings.template.yml +79 -312
  331. package/src/config/agents-paths.yml +16 -0
  332. package/src/config/assurance-capability-registry.json +7 -3
  333. package/src/config/ci-local-parity.yml +3 -0
  334. package/src/config/continuity-surface.json +3 -3
  335. package/src/config/discovery/packs.yml +17 -1
  336. package/src/config/evaluator-budgets.json +19 -6
  337. package/src/config/gate-coverage.yml +65 -23
  338. package/src/config/gate-violation-baselines.json +53 -13
  339. package/src/config/gitignore-block.txt +19 -0
  340. package/src/config/hook-bundle-budget.json +1 -1
  341. package/src/config/release-gate-locality.yml +2 -1
  342. package/src/config/routing-coverage-seed.json +48 -6
  343. package/src/config/rule-law-ceilings.json +12 -6
  344. package/src/config/rule-obligations.json +833 -0
  345. package/src/install/installThinLayer.ts +76 -10
  346. package/src/install/installedRuleLinks.ts +105 -17
  347. package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
  348. package/src/scripts/_cli/cmd_conformance.ts +13 -2
  349. package/src/scripts/_cli/cmd_doctor.ts +10 -10
  350. package/src/scripts/_cli/cmd_doctor_neighbours.ts +133 -0
  351. package/src/scripts/_cli/cmd_explain.ts +72 -14
  352. package/src/scripts/_cli/cmd_git_convention.ts +637 -0
  353. package/src/scripts/_cli/cmd_settings_check.ts +66 -8
  354. package/src/scripts/_cli/cmd_settings_get.ts +18 -3
  355. package/src/scripts/_cli/doctor_execution.ts +72 -1
  356. package/src/scripts/_dispatch.bash +37 -2
  357. package/src/scripts/_lib/agent_settings.ts +15 -124
  358. package/src/scripts/_lib/blocked_by_marker.ts +1 -1
  359. package/src/scripts/_lib/compile_time_toggles.ts +12 -21
  360. package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
  361. package/src/scripts/_lib/git_base_ref.ts +92 -0
  362. package/src/scripts/_lib/git_convention.ts +291 -0
  363. package/src/scripts/_lib/git_convention_carrier.ts +389 -0
  364. package/src/scripts/_lib/git_convention_grammar.ts +246 -0
  365. package/src/scripts/_lib/git_convention_measure.ts +344 -0
  366. package/src/scripts/_lib/global_deploy_inventory.ts +74 -0
  367. package/src/scripts/_lib/graph_feeder_record.ts +236 -13
  368. package/src/scripts/_lib/installed_layer.ts +448 -23
  369. package/src/scripts/_lib/knowledge_global.ts +14 -1
  370. package/src/scripts/_lib/module_reach.ts +456 -0
  371. package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
  372. package/src/scripts/_lib/neighbour_tool_use.ts +8 -10
  373. package/src/scripts/_lib/ratification_artifact.ts +220 -1
  374. package/src/scripts/_lib/ratification_subject.ts +92 -0
  375. package/src/scripts/_lib/release_findings_ingest.ts +15 -7
  376. package/src/scripts/_lib/release_highlights.ts +5 -0
  377. package/src/scripts/_lib/rule_law_section.ts +1 -1
  378. package/src/scripts/_lib/rule_obligations.ts +205 -0
  379. package/src/scripts/_lib/self_repair.ts +1 -1
  380. package/src/scripts/_lib/settings_removed_keys.ts +173 -0
  381. package/src/scripts/_lib/test_red_state.ts +5 -0
  382. package/src/scripts/_lib/thin_rules.ts +83 -3
  383. package/src/scripts/_lib/touched_file_quality.ts +142 -6
  384. package/src/scripts/_lib/worker_budget.ts +1 -1
  385. package/src/scripts/adr/regenerate_index.ts +16 -1
  386. package/src/scripts/ai_council/config.ts +7 -7
  387. package/src/scripts/ai_council/modification_review.ts +100 -0
  388. package/src/scripts/ai_council/modification_review_questions.ts +90 -0
  389. package/src/scripts/ai_council/orchestrator.ts +5 -5
  390. package/src/scripts/ai_council/spend_gate.ts +18 -7
  391. package/src/scripts/ai_team/config.ts +11 -16
  392. package/src/scripts/audit_user_type_axis.ts +20 -8
  393. package/src/scripts/bench_ab_clone.ts +1 -2
  394. package/src/scripts/bench_concern_spawn_path.ts +129 -0
  395. package/src/scripts/bench_graph_feeder_latency.ts +584 -0
  396. package/src/scripts/check_agent_artifact_location.ts +36 -0
  397. package/src/scripts/check_branch_freshness.ts +147 -24
  398. package/src/scripts/check_enforcement_coverage.ts +130 -0
  399. package/src/scripts/check_evaluator_budgets.ts +4 -0
  400. package/src/scripts/check_finding_dispositions.ts +88 -25
  401. package/src/scripts/check_gate_coverage.ts +4 -3
  402. package/src/scripts/check_gate_reachability.ts +48 -1
  403. package/src/scripts/check_generator_sync.ts +48 -0
  404. package/src/scripts/check_hook_bundle_composition.ts +107 -0
  405. package/src/scripts/check_kernel_edit_ratified.ts +86 -6
  406. package/src/scripts/check_pack_size.ts +1 -1
  407. package/src/scripts/check_release_manifest_content.ts +189 -0
  408. package/src/scripts/check_standing_rule_delivery.ts +96 -0
  409. package/src/scripts/check_suppression_hygiene.ts +2 -5
  410. package/src/scripts/ci_settle.ts +42 -5
  411. package/src/scripts/classify_merge_risk.ts +320 -0
  412. package/src/scripts/closure_scan.ts +91 -1
  413. package/src/scripts/command_suggester/settings.ts +8 -108
  414. package/src/scripts/command_suggester/types.ts +4 -5
  415. package/src/scripts/consumer_matrix.ts +102 -0
  416. package/src/scripts/context_hygiene_hook.ts +13 -23
  417. package/src/scripts/cost/preflight.mjs +12 -1
  418. package/src/scripts/council_cli.ts +7 -7
  419. package/src/scripts/dispatch_r2_reviewer.ts +24 -11
  420. package/src/scripts/explain_run.ts +8 -13
  421. package/src/scripts/generate_git_convention_grammar.ts +127 -0
  422. package/src/scripts/generate_host_cost_table.ts +20 -3
  423. package/src/scripts/handoff_context_hook.ts +86 -37
  424. package/src/scripts/hook_manifest.json +1 -1
  425. package/src/scripts/hook_manifest.yaml +25 -6
  426. package/src/scripts/hooks/block_config_weakening.ts +48 -5
  427. package/src/scripts/hooks/block_plumbing_writes.ts +8 -4
  428. package/src/scripts/hooks/concern_registry.ts +2 -0
  429. package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
  430. package/src/scripts/hooks/evidence_independence.ts +12 -4
  431. package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
  432. package/src/scripts/hooks/push_settle_hook.ts +4 -3
  433. package/src/scripts/hooks/rule_inject_hook.ts +44 -3
  434. package/src/scripts/hooks/state_io.ts +8 -4
  435. package/src/scripts/hooks/telemetry_usage_hook.ts +7 -46
  436. package/src/scripts/hooks/turn_end_gate_hook.ts +1 -0
  437. package/src/scripts/install-hooks.sh +42 -14
  438. package/src/scripts/install.ts +7 -31
  439. package/src/scripts/lint_blocker_citations.ts +198 -0
  440. package/src/scripts/lint_evidence_artifacts.ts +9 -0
  441. package/src/scripts/lint_hook_concern_budget.ts +10 -21
  442. package/src/scripts/lint_pack_boundaries.ts +406 -28
  443. package/src/scripts/lint_roadmap_blockers.ts +282 -29
  444. package/src/scripts/lint_roadmap_complexity.ts +4 -2
  445. package/src/scripts/lint_rule_law_section.ts +151 -21
  446. package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
  447. package/src/scripts/lint_settings_classes.ts +1 -1
  448. package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
  449. package/src/scripts/lint_workflow_security.ts +12 -1
  450. package/src/scripts/measure_skill_ranker_baseline.ts +5 -0
  451. package/src/scripts/model_rule_injection.ts +3 -3
  452. package/src/scripts/onboarding_gate_hook.ts +7 -6
  453. package/src/scripts/print_required_checks.ts +15 -3
  454. package/src/scripts/probe_host_compliance.ts +33 -5
  455. package/src/scripts/probe_turnaround.ts +183 -3
  456. package/src/scripts/ratification_header.ts +77 -0
  457. package/src/scripts/refusal_envelope.ts +138 -0
  458. package/src/scripts/release_publication.ts +29 -3
  459. package/src/scripts/report_dispatch_import_closure.ts +76 -0
  460. package/src/scripts/report_installed_rule_links.ts +118 -1
  461. package/src/scripts/report_module_reach.ts +212 -0
  462. package/src/scripts/report_obligation_mechanism.ts +16 -18
  463. package/src/scripts/report_parked_blockers.ts +222 -0
  464. package/src/scripts/report_required_checks_drift.ts +196 -0
  465. package/src/scripts/report_skill_ranker_confusion.ts +103 -2
  466. package/src/scripts/report_standing_payload_by_host.ts +1 -1
  467. package/src/scripts/routing_doctor.ts +2 -2
  468. package/src/scripts/schemas/agent-settings.schema.json +17 -31
  469. package/src/scripts/schemas/command.schema.json +1 -1
  470. package/src/scripts/schemas/skill.schema.json +1 -1
  471. package/src/scripts/self_review_gate.ts +39 -2
  472. package/src/scripts/skill_tools/score_skill_relevance.ts +28 -19
  473. package/src/scripts/sync_pr_branch.ts +403 -132
  474. package/src/scripts/trigger_eval_grandfather.json +0 -16
  475. package/src/server/schemas/settings.ts +33 -177
  476. package/src/shared/skillRanking.ts +53 -4
  477. package/dist/cli-delegate/chunk-NYX3L2PZ.js +0 -99
  478. package/src/scripts/_lib/config_chain.ts +0 -477
  479. package/src/scripts/_lib/conformance_report.ts +0 -403
  480. package/src/scripts/_lib/eval_discrimination.ts +0 -95
  481. package/src/scripts/_lib/evaluator_promotion.ts +0 -225
  482. package/src/scripts/_lib/file_slicer.ts +0 -117
  483. package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
  484. package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
  485. package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
  486. package/src/scripts/_lib/role_split.ts +0 -338
@@ -97,8 +97,8 @@ surface changes.
97
97
  - **Delete** — preview file, confirm, delete, scrub references.
98
98
  - **Update** — apply explicit content changes (remove stale refs, refresh sections, add missing info).
99
99
  - **Create context** — hand off to `/context create` with area pre-selected.
100
- 4. **Update roadmap progress** — flip `[ ]` → `[x]` after each action; show progress bar. Per `verbosity.routine_confirmations`: `false` → continue silently, user can interrupt; `true` → confirm next.
101
- 5. **Summary** — gated by `verbosity.post_action_reports` (`off` / `minimal` / `full`); minimal = one line counts (moved · merged · deleted · updated · remaining).
100
+ 4. **Update roadmap progress** — flip `[ ]` → `[x]` after each action; show progress bar. Continue silently to the next action — the user can interrupt; a routine "next?" confirmation is never asked.
101
+ 5. **Summary** — one line of counts (moved · merged · deleted · updated · remaining).
102
102
 
103
103
  **Rules:** confirm before every destructive action; always update references when moving/renaming; update the roadmap after each completed action; show file content before delete; check `.augment/` references too.
104
104
 
@@ -96,8 +96,10 @@ above that, re-invoke deliberately with fresh context.
96
96
  gain is the failure the metric exists to catch.
97
97
  - The council splits on the same question twice → STOP, escalate that
98
98
  question to the user instead of burning a third loop on it.
99
- - Any validation target fails 3 consecutive refinement attempts → STOP
100
- (N=3 budget, `autonomous-execution`).
99
+ - A validation target failing 3 consecutive refinement attempts triggers
100
+ the rule's mandatory strategy shift; exhausting the full
101
+ `execution.fix_loop_max` budget (default 10) on the same target → STOP
102
+ (`autonomous-execution`).
101
103
 
102
104
  ### Hard exclusions — never inside this command
103
105
 
@@ -125,32 +125,10 @@ Run a quick test to confirm rtk picks up the filters:
125
125
  rtk config 2>&1 | tail -5
126
126
  ```
127
127
 
128
- ### 7. Present results (verbosity-gated)
129
-
130
- Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
131
- `minimal`).
132
-
133
- - `off` → emit nothing on success; surface errors only.
134
- - `minimal` (default) → one line: `→ N filters configured in .rtk/rtk.toml`.
135
- - `full` → multi-line summary table:
136
-
137
- ```
138
- | # | Filter | Match | Max |
139
- |-----|--------------|---------------------------------------------------------------|------|
140
- | 1 | phpstan | phpstan\|quality:phpstan\|vendor/bin/phpstan | 80 |
141
- | 2 | pest | pest\|phpunit\|artisan test | 60 |
142
- | 3 | tsc | tsc\|tsc --noEmit | 60 |
143
- | 4 | eslint | eslint\|next lint | 50 |
144
- | 5 | vitest | vitest\|jest | 50 |
145
- | 6 | playwright | playwright\|@playwright/test | 40 |
146
- | 7 | ruff | ruff check\|ruff format | 60 |
147
- | 8 | mypy | mypy\|pyright | 50 |
148
- | 9 | pytest | pytest\|python -m pytest | 50 |
149
- | 10 | golangci | golangci-lint\|go vet | 50 |
150
- | 11 | gotest | go test | 40 |
151
- | 12 | cargo | cargo build\|cargo check\|cargo clippy\|cargo test\|cargo fmt | 50 |
152
- | ... | ... | (add per project as the toolchain grows) | ... |
153
- ```
128
+ ### 7. Present results
129
+
130
+ One line on success: `→ N filters configured in .rtk/rtk.toml`. Errors are
131
+ always surfaced.
154
132
 
155
133
  ### Rules
156
134
 
@@ -22,11 +22,10 @@ packs:
22
22
 
23
23
  > **Carve-out:** this command's *purpose* is the copyable preview of
24
24
  > the PR description. It therefore **ignores**
25
- > `verbosity.preview_artifacts` and `commands.create_pr.preview_description`
26
- > — both flags govern only the bare `/create-pr` flow's preview-and-
27
- > adjust loop. Removing the preview here would make the command a
28
- > no-op. Do not "fix" this; the suppression flags only apply when the
29
- > PR is actually being created.
25
+ > `commands.create_pr.preview_description` — that flag governs only the
26
+ > bare `/create-pr` flow's preview-and-adjust loop. Removing the preview
27
+ > here would make the command a no-op. Do not "fix" this; the suppression
28
+ > flag only applies when the PR is actually being created.
30
29
 
31
30
  ## Input
32
31
 
@@ -87,7 +86,15 @@ That's 6 round-trips for what should be 2.
87
86
 
88
87
  ### 3. Build the PR title
89
88
 
90
- - Format: `{TICKET-ID}: {summary}` (e.g. `DEV-4673: Fix absence working time calculation`).
89
+ - **Squash merge** — the method `/pr:merge` § 9 reads
90
+ (`gh repo view --json mergeCommitAllowed,squashMergeAllowed,rebaseMergeAllowed`)
91
+ is squash: the title becomes the commit subject on the base, so build it as a
92
+ subject in the convention in force — `DEV-4673 fix(working-time): correct absence calculation`
93
+ under `ticket-conventional`, `fix(DEV-4673): correct absence calculation` under
94
+ the default — and pipe it through `agent-config git:convention subject`; act on
95
+ the exit code as `/commit` step 5 does.
96
+ - **Any other method** — `{TICKET-ID}: {summary}` (e.g. `DEV-4673: Fix absence working time calculation`).
97
+ - The rule: [`commit-subject`](../../../../../skills/git-workflow/references/commit-subject.md) § A title that becomes a commit.
91
98
  - Use the Jira ticket summary if available, otherwise derive from commits.
92
99
  - If no ticket: use the most descriptive commit message or ask the user.
93
100
 
@@ -173,13 +180,12 @@ summary and `## How to test` is omitted):
173
180
 
174
181
  #### 4.3 API response examples (evidence-grounded)
175
182
 
176
- Read `commands.create_pr.api_examples` (default `true`). When `true` **and**
177
- the diff touches an API endpoint, add a fenced request/response example under
178
- the Description.
183
+ When the diff touches an API endpoint, add a fenced request/response example
184
+ under the Description. This is not a setting — it always applies, and the
185
+ grounding rule below is what keeps it honest.
179
186
 
180
187
  **Detect an API-endpoint change** (fail-open — no false enrichment when
181
- ambiguous): a changed file matches `commands.create_pr.api_paths` (if set), or
182
- the light heuristic — a route file (`routes/`, `**/api/**`, `*Controller*`,
188
+ ambiguous) with the light heuristic — a route file (`routes/`, `**/api/**`, `*Controller*`,
183
189
  resource/serializer classes) whose diff adds or changes an endpoint or its
184
190
  request/response shape. No confident match → skip silently.
185
191
 
@@ -212,8 +218,6 @@ Response `201`:
212
218
  ```
213
219
  ~~~
214
220
 
215
- `api_examples: false` → skip this step entirely.
216
-
217
221
  #### 4.4 Screenshots for frontend changes (capability-gated)
218
222
 
219
223
  Read `commands.create_pr.screenshots` (default `false`). `false` → skip this
@@ -223,8 +227,7 @@ When `true`, this is a **capability-gated contract, never a runtime
223
227
  orchestrator** — the package ships instructions, the host provides the tools:
224
228
 
225
229
  1. **Frontend-change gate.** Only proceed if the diff touches a frontend
226
- surface — a changed file matches `commands.create_pr.ui_paths` (if set), or
227
- the light heuristic (`.vue` / `.tsx` / `.jsx` / `.blade.php` / `.svelte`,
230
+ surface by the light heuristic (`.vue` / `.tsx` / `.jsx` / `.blade.php` / `.svelte`,
228
231
  component/view/page/template dirs, CSS/Tailwind). No match → skip silently.
229
232
  2. **Capability gate — explicit, never silent.** Screenshots need host
230
233
  browser/preview tooling (a Playwright/browser MCP **and** a reachable dev-server
@@ -101,7 +101,7 @@ Run, in order:
101
101
  | Gate | Overlapping open PR touches same files? | Action |
102
102
  |---|---|---|
103
103
  | exit `0`, prints `branch is current` | — | Proceed to Step 2 |
104
- | exit `1` | No | **Merge the base in** — `git fetch origin && git merge origin/{resolved-base} --no-edit` — then run the regeneration set below, then proceed. No need to ask; state that you did it. |
104
+ | exit `1` | No | **Bring the base in** per `git.update_strategy` ([`branch-update`](../../../../skills/git-workflow/references/branch-update.md)). `merge` (default): `git fetch origin && git merge origin/{resolved-base} --no-edit` — no need to ask; state that you did it. `rebase`: ask first unless `git-history-discipline` already authorises the rewrite (see `branch-update` for the three cases), never fall back to a merge, and on an already-pushed branch run `branch-update`'s pre-rewrite stop and push with its `--force-with-lease` form. Then run the regeneration set below, then proceed. |
105
105
  | exit `1` | **Yes** | STOP — surface the overlapping PR number, ask: stack on top of it / wait for it to land / proceed-anyway-and-accept-conflicts / cancel |
106
106
  | exit `0`, prints `NOT VERIFIED` | — | The base could not be reached, so freshness is **unknown** — not confirmed. Re-run once; if it persists, say the check did not run rather than reporting a pass. A base that `ls-remote` cannot resolve (deleted or renamed after the PR opened, or a fork base) lands here too. |
107
107
  | warns `could not ask the forge` | — | The **default** base was checked and an open PR against a different base was **not** ruled out. Say so; do not report it as a clean freshness pass. |
@@ -137,8 +137,22 @@ a generated-file conflict never is.
137
137
 
138
138
  The gate above is not creation-only. **Every subsequent push** to a branch with
139
139
  an open PR (a CI fix, a review response, a follow-up commit) re-runs the same
140
- sequence first: `check_branch_freshness` → on exit `1`, merge
141
- `origin/{resolved-base}` in → regenerate the derived files → verify → push.
140
+ sequence first: `check_branch_freshness` → on exit `1`, bring
141
+ `origin/{resolved-base}` in per `git.update_strategy` (merge by default; under
142
+ `rebase` a rebase that is asked for, never a merge, and `sync_pr_branch` refuses
143
+ a behind branch with exit 3)
144
+ → regenerate the derived files → verify → push (after a rebase:
145
+ `git push --force-with-lease=refs/heads/<b>:<sha> <remote> HEAD:refs/heads/<b>`,
146
+ never a plain push). A rebase runs only through § The rebase sequence in
147
+ [`branch-update`](../../../../skills/git-workflow/references/branch-update.md):
148
+ the ref the branch publishes is resolved from `@{push}` or the pull request's
149
+ head repository — never `@{u}`, and an unresolved target means no rewrite — its
150
+ SHA is pinned once after the fetch, must already be in `HEAD`, and is the lease
151
+ unchanged — so a collaborator's push lands either before the pin and halts the
152
+ stop, or after it and fails the lease, and is never overwritten.
153
+ Its steps 1–3 rebase and report, then stop: the regenerate → verify above runs
154
+ on the rebased tree, and only then does its step 4 publish, re-running step 1
155
+ with the `SAVE` and `EXPECTED` step 3 printed.
142
156
  A PR that sits open while its base advances goes stale silently; keeping the
143
157
  base merged **at every touch** means it stays `mergeStateStatus: CLEAN` instead
144
158
  of accumulating conflicts for the moment the user wants to merge. If the gate
@@ -160,9 +174,13 @@ runner; the hook never merges, because a merge inside `pre-push` rewrites the
160
174
  tree at the moment you believe your work is finished.
161
175
 
162
176
  **The resolution is executable now, not just described.**
163
- `./scripts-run src/scripts/sync_pr_branch` resolves the base from the open PR
164
- (so a stacked or release-line PR is measured against what it actually merges
165
- into), fetches, and merges it in when the branch is behind. The base is a
177
+ `agent-config git:convention sync --base origin/<base>`, `<base>` being the
178
+ `baseRefName` of the branch's `OPEN` pull request (`gh pr view --json
179
+ state,baseRefName`; a closed or merged one does not count, and without an open
180
+ one the base is the default branch), fetches and merges that
181
+ base in when the branch is behind, so a stacked or release-line PR is measured
182
+ against what it actually merges into. It never asks the forge itself: without
183
+ `--base` the target is the default branch, which is right only for a PR into it. The base is a
166
184
  **set**: when the PR targets something other than the default branch, whether
167
185
  the default branch joins the set is a per-target policy read from the *target's
168
186
  own commit*, never from this branch — see `src/scripts/_lib/branch_convergence.ts`.
@@ -255,9 +273,9 @@ Run `/create-pr:description-only` Steps 1–4 to generate the PR title and body.
255
273
  This handles: Jira ticket extraction, diff analysis, commit messages, **PR template filling**.
256
274
 
257
275
  The generation honors the cached content flags from step 1 (§4f):
258
- `detail_level` sets the Description tier (default `min`), `api_examples`
259
- adds a grounded JSON block for API-endpoint changes, and `screenshots`
260
- (capability-gated) adds frontend screenshots. Critical-info callouts
276
+ `detail_level` sets the Description tier (default `min`) and `screenshots`
277
+ (capability-gated) adds frontend screenshots; a grounded JSON block for
278
+ API-endpoint changes is always added (`/create-pr:description-only` § 4.3). Critical-info callouts
261
279
  (breaking changes / migrations / security / rollback) appear at every tier.
262
280
 
263
281
  **CRITICAL**: The PR body MUST use the project's PR template (`.github/pull_request_template.md`).
@@ -321,18 +339,15 @@ user request.
321
339
  - **Head branch**: EXACT output of `git branch --show-current` from step 1.
322
340
  - **Base branch**: default branch (`main` / `master`).
323
341
 
324
- **Behavior change vs. legacy:** with `verbosity.routine_confirmations:
325
- false` (default), `/create-pr` creates the PR as draft silently. Override
326
- per-invocation with `:ready` / `:final` / `:draft`. Restore the prompt
327
- by flipping `routine_confirmations: true`. See
328
- [`docs/customization.md` § Verbosity](../../docs/customization.md#verbosity).
342
+ `/create-pr` creates the PR as draft silently — draft-or-ready is a routine
343
+ confirmation with one obvious answer, so it is never asked. Override
344
+ per-invocation with `:ready` / `:final` / `:draft`.
329
345
 
330
346
  Resolve `"draft"` (first match wins):
331
347
 
332
348
  1. `:ready` / `:final` arg → `false`.
333
349
  2. `:draft` arg → `true`.
334
- 3. `routine_confirmations: true` → ask `1. draft / 2. ready`.
335
- 4. Default → `true` (silent draft).
350
+ 3. Default → `true` (silent draft).
336
351
 
337
352
  #### 3a. Tool selection — single-call mandate
338
353
 
@@ -382,7 +397,7 @@ gh pr view {number} --json isDraft --jq '.isDraft'
382
397
  # returns true → gh pr ready {number}
383
398
  ```
384
399
 
385
- **Silent-draft postscript** (rule 4) → see step 4b.
400
+ **Silent-draft postscript** (rule 3) → see step 4b.
386
401
 
387
402
  ### 4. After creation
388
403
 
@@ -420,14 +435,10 @@ Run this strip-pass **after PR creation and after every body PATCH**:
420
435
  the line entirely when nothing was stripped — silence is the
421
436
  expected path, not "no footers found").
422
437
 
423
- #### 4b. Show the PR URL (verbosity-gated)
438
+ #### 4b. Show the PR URL
424
439
 
425
- Per `verbosity.post_action_reports` (default `minimal`):
426
-
427
- - `off` → nothing.
428
- - `minimal` → `→ #N opened: <url>`. Append `→ created as draft — run
429
- \`gh pr ready N\` to flip` when silent-draft (rule 4); omit on ready.
430
- - `full` → multi-line: PR number, URL, draft state, base/head, ready-reminder.
440
+ `→ #N opened: <url>`. Append `→ created as draft — run \`gh pr ready N\` to
441
+ flip` when silent-draft (rule 3); omit on ready.
431
442
 
432
443
  #### 4c. Status claims — verified facts only (MANDATORY)
433
444
 
@@ -498,7 +509,8 @@ turns on `gh pr checks` every minute is the tool-loop
498
509
  untracked-`dist/` cases). When local and CI disagree, CI is authoritative.
499
510
  3. **Fix, then re-verify locally** with the narrowest command that proves the
500
511
  target green.
501
- 4. **Bounded at N=3 per failing target** ([`autonomous-execution`](../rules/autonomous-execution.md)).
512
+ 4. **Bounded by the `execution.fix_loop_max` budget (default 10) and its
513
+ ladder, per failing target** ([`autonomous-execution`](../rules/autonomous-execution.md)).
502
514
  Same failure signature twice → the hypothesis is wrong; change approach
503
515
  rather than spending the third attempt on a near-identical retry.
504
516
  5. **The push stays gated — and a fix-the-CI instruction IS the gate being
@@ -571,19 +583,15 @@ an actual Jira API call succeeded** — never announce "skipped".
571
583
 
572
584
  #### 4f. Settings short-circuit — single read per run
573
585
 
574
- `verbosity.routine_confirmations`, `verbosity.post_action_reports`,
575
- `commands.create_pr.preview_description`, `commands.create_pr.detail_level`,
576
- `commands.create_pr.api_examples`, `commands.create_pr.screenshots`,
577
- `commands.create_pr.ui_paths`, and `commands.create_pr.api_paths` are read
578
- **once** at the top of the run and cached for the whole `/create-pr`
586
+ `commands.create_pr.preview_description`, `commands.create_pr.detail_level`
587
+ and `commands.create_pr.screenshots` are read **once** at the top of the run and cached for the whole `/create-pr`
579
588
  invocation. Do **not** re-read `.agent-settings.yml` in Step 2 or 4b / 4e —
580
589
  every branch resolves from the cached values from step 1. The content flags
581
- (`detail_level`, `api_examples`, `screenshots`, `ui_paths`, `api_paths`) are
582
- consumed by the `/create-pr:description-only` generation step (Step 2); the
590
+ (`detail_level`, `screenshots`) are consumed by the `/create-pr:description-only` generation step (Step 2); the
583
591
  confirmation/report flags by steps 3–4.
584
592
 
585
- When all three resolve to their silent defaults (`false` / `minimal` /
586
- `false`), steps 4b + 4e collapse to the single `→ #N opened: <url>` line
593
+ When `preview_description` resolves to its silent default (`false`), steps
594
+ 4b + 4e collapse to the single `→ #N opened: <url>` line
587
595
  from 4b and a silent 4e. No extra file reads, no "checking settings…"
588
596
  narration, no confirmation prompts. Step 4c is never collapsed — status
589
597
  claims always carry evidence.
@@ -2,7 +2,7 @@
2
2
  model_tier: medium
3
3
  name: git-pr-merge
4
4
  disable-model-invocation: true
5
- argument-hint: "[all|<pr-number>] [--no-merge]"
5
+ argument-hint: "[all|<pr-number>] [--merge|--no-merge]"
6
6
  pack: git
7
7
  intent: "Prepare an open PR to mergeable — sync the base in, resolve conflicts semantically, drive required checks green — then merge what the invocation named"
8
8
  routes_to: [git-workflow, github-ci]
@@ -35,6 +35,9 @@ AN EXPLICIT `/pr:merge` INVOCATION IS THE THIS-TURN CONFIRMATION, AND IT
35
35
  REACHES EXACTLY THE PRs § 1's MANIFEST SNAPSHOTTED FROM IT. IT NEVER REACHES
36
36
  A PR THAT ARRIVED LATER, A HEAD THE MANIFEST DID NOT RECORD, OR ANY OTHER
37
37
  HARD-FLOOR ACTION. `--no-merge` STILL STOPS BEFORE § 9.
38
+ ADR-282: AN OWNER AUTO-MERGE INSTRUCTION (`--merge`, OR THE OWNER'S OWN WORDS IN
39
+ THE SESSION) IS THE SAME CONFIRMATION FOR A `routine` PR. A `needs-council` PR
40
+ MERGES ONLY ON TWO CONVERGENT CLEARING SEATS (§ 9a) — OTHERWISE THE OWNER DECIDES.
38
41
  ```
39
42
 
40
43
  **The invocation is the authorization, and nothing else is.** `pr-merge` is
@@ -76,7 +79,8 @@ merged (§ 5).
76
79
  | `/pr:merge <N>` | exactly PR N | yes | yes — PR N |
77
80
  | `/pr:merge` | ONE PR: green first, then infrastructure/tooling before content, then smallest diff (`changedFiles`, then additions+deletions), tiebreak ascending number | yes | yes — the one PR it selected |
78
81
  | `/pr:merge all` | the whole open-PR list, under § 6's cutoff | yes | yes — the manifest, in queue order |
79
- | `… --no-merge` | as above | yes | **never**, explicitly. This is the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls for its delivery loop. |
82
+ | `… --merge` | as above | yes | yes, through § 9a's danger gate — the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls when the owner gave an auto-merge instruction (ADR-282) |
83
+ | `… --no-merge` | as above | yes | **never**, explicitly. This is the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls for its delivery loop without an auto-merge instruction. |
80
84
 
81
85
  **Bare invocation** (`/pr:merge` with no argument) is a **documented default
82
86
  flow**, not a menu: it runs the auto-selection in row 2 and says which PR it
@@ -132,14 +136,94 @@ says what happens to it instead.
132
136
 
133
137
  ## 2. Sync with the base
134
138
 
139
+ Check the PR out, read the strategy against its base, then let one script do
140
+ the update, so the branch-convergence policy (the base SET a non-default target
141
+ carries) is read on every path. `show` takes the same `--base` as `sync` and
142
+ runs after the checkout: without `--base` both read the default branch, and a PR
143
+ into any other base would be judged against the wrong commit. `--key
144
+ update_strategy` limits `show`'s exit to the strategy, so a `commit_format` or
145
+ `branch_pattern` the PR head breaks does not stop the update.
146
+
135
147
  ```bash
136
148
  git fetch origin
137
149
  gh pr checkout <N>
138
- git merge origin/<base> --no-edit
150
+ agent-config git:convention show --key update_strategy --base origin/<base> # value, source, state
151
+ agent-config git:convention sync --base origin/<base>
139
152
  ```
140
153
 
141
- Merge the base **into** the branch. Never rebase a branch that is already
142
- pushed ([`git-history-discipline`](../../../../rules/git-history-discipline.md)).
154
+ A `git.update_strategy` whose state is `malformed`, `invalid`, `discarded` or
155
+ `unresolvable` is not a strategy — `show` exits `1` on it and the script
156
+ refuses it with exit 4, or with exit 1 when the target itself cannot be
157
+ resolved — so stop on this PR and report the line `show` printed. A
158
+ candidate in such a state (this checkout's uncommitted value) is a warning
159
+ `show` prints with exit `0`; the script never reads it, so it does not stop
160
+ the PR.
161
+ The one narrowing: a base the server names whose commit could not be fetched is
162
+ the `unverified` warning below (exit `0`, nothing merged); origin unreachable at
163
+ the ref lookup is exit `1`. Otherwise
164
+ the strategy decides what the script does — under `merge` it merges the base
165
+ set in, under `rebase` it only checks, because a
166
+ `Merge branch '<base>' into …` commit is what that setting excludes and the
167
+ `/pr:merge` sentence authorises merging the named PRs, not rewriting their
168
+ branches ([`git-history-discipline`](../../../../rules/git-history-discipline.md)).
169
+ Read its exit and its line together:
170
+
171
+ - exit `0` with a `✅` line → the PR is current with its base, or under `merge`
172
+ the base was merged in cleanly; go on to § 3.
173
+ - exit `0` with a `⚠️` line reading `unverified` (the base commit or origin could not be fetched)
174
+ or `BYPASSED` (the convergence policy is disabled at the target) → **not
175
+ checked**: nothing is known about freshness. Stop on this PR and report the
176
+ line; it is never read as current.
177
+ - exit `1` → a conflict report goes to § 3; a base that could not be resolved
178
+ (a `--base` the server does not know, no origin, origin unreachable) stops
179
+ this PR.
180
+ - exit `3` → behind under a strategy other than `merge`. This run never
181
+ rebases a PR it did not author — the rebase is the author's, or a separate
182
+ request under
183
+ [`branch-update`](../../../../skills/git-workflow/references/branch-update.md).
184
+ What happens to the PR is an owner decision (recorded
185
+ 2026-10-07), and it turns on one forge setting — whether the base requires an
186
+ up-to-date branch before merging:
187
+
188
+ ```bash
189
+ gh api repos/{owner}/{repo}/branches/<base>/protection \
190
+ --jq .required_status_checks.strict 2>&1; echo "exit=$?"
191
+ gh api repos/{owner}/{repo}/rules/branches/<base> \
192
+ --jq '.[] | select(.type == "required_status_checks") | .parameters.strict_required_status_checks_policy'; echo "exit=$?"
193
+ ```
194
+
195
+ Each read has three outcomes, told apart by the exit code and the message:
196
+
197
+ | Read | Absent | Value | Failed |
198
+ |---|---|---|---|
199
+ | classic protection | non-zero exit **and** the output contains `(HTTP 404)` (`Branch not protected`); or exit `0` with `null` — the branch is protected but requires no status checks | exit `0`: `true` or `false` | any other non-zero exit, or output that is not `true` / `false` / `null` |
200
+ | rulesets | exit `0` with empty output (no rule requiring status checks) | exit `0`: one or more lines, each `true` or `false` | non-zero exit, or a line that is not `true` / `false` |
201
+
202
+ A `404` from the classic endpoint is not a failed read: it is what a branch
203
+ protected only by rulesets, or not protected at all, returns; nor is `null`
204
+ from a `200`, which is a protected branch with no required status checks.
205
+ The rulesets read prints one line per ruleset on the base that requires
206
+ status checks, so a base covered by several prints several lines: **any**
207
+ `true` line reads as `true`; all lines `false` reads as `false`. Either reading
208
+ `true` means the forge requires an up-to-date branch; both absent or `false`
209
+ means it does not; a **failed** read is treated as required. A base
210
+ protected by rulesets alone is decided by the rulesets read.
211
+ - **The forge does not require an up-to-date branch**, and the PR is green
212
+ and conflict-free → it goes on to § 3–§ 9 and is merged behind its base;
213
+ the summary row says so (`merged behind <base>; the forge does not require
214
+ an up-to-date branch`). Its checks never ran against the current base, and
215
+ the summary is where that stays visible.
216
+ - **The forge requires an up-to-date branch** → disposition
217
+ `blocked-external`, the row naming that setting as the reason.
218
+ - **The line reads `TARGET_POLICY_STALE`** → the PR is current with its
219
+ non-default target and that target is itself behind its default branch:
220
+ `blocked-external`, reason "the target's update", whatever the forge
221
+ setting. A PR also behind its target gets the ordinary behind line instead,
222
+ with the target's lag as a note.
223
+ - exit `4` → the strategy could not be read (the line names the reason code
224
+ and the file); nothing was checked or merged. Stop on this PR and report it.
225
+ - any other exit → the check could not run (internal error); stop on this PR
226
+ and report the script's message.
143
227
 
144
228
  ## 3. Resolve conflicts by class, never by taste
145
229
 
@@ -281,6 +365,15 @@ After each merge the base has moved, so the next PR is re-synced against the
281
365
  NEW base — that is the loop, and it is why pre-greening several PRs ahead of
282
366
  their merges is wasted work.
283
367
 
368
+ **Under a strategy other than `merge`**, every PR after the first is behind the
369
+ base the previous merge moved, and this run rebases none of them. Where the
370
+ forge does not require an up-to-date branch, a green, conflict-free PR that is
371
+ behind still merges (§ 2, exit `3`) — three green branches merge without three
372
+ sequential rebases — and each such row says it merged behind its base. Where
373
+ the forge requires an up-to-date branch, the first merge leaves every remaining
374
+ PR `blocked-external`, and the summary names that setting rather than leaving
375
+ the reader to find it.
376
+
284
377
  **Under `--no-merge` that loop does not turn**, and the paragraph above is
285
378
  written for the form that does. Nothing merges, so the base does not advance,
286
379
  no PR leaves the open list, and the run is a **preparation sweep**: it syncs,
@@ -379,12 +472,41 @@ NO ROLLBACK, ONLY COMPENSATION, AND COMPENSATION IS A SEPARATELY AUTHORIZED
379
472
  HUMAN DECISION. STOP, EMIT THE MERGE SHAs AND THE REASON, HAND OVER.
380
473
  ```
381
474
 
475
+ ## 9a. Danger gate — before every merge (ADR-282)
476
+
477
+ Once required checks are green on the manifest head and the PR is mergeable:
478
+
479
+ ```bash
480
+ ./scripts-run src/scripts/classify_merge_risk <N>
481
+ ```
482
+
483
+ The last line is the verdict; each trigger names the rule it comes from. An
484
+ unreadable diff is `needs-council` — the gate fails closed.
485
+
486
+ - **`routine`** → merge in § 9. No review step.
487
+ - **`needs-council`** → the AI council reviews the diff with a **neutral**
488
+ prompt (scope, diff, the triggers, two questions: *does any of the six
489
+ dangerous-action predicates of the authority-routing council record
490
+ (`agents/evidence/council/authority-routing-20261007.md` § 4) apply?* and *is
491
+ an owner review unnecessary?* — never an expected answer, per
492
+ `evaluator-independence`). A council may resolve doubt but cannot waive
493
+ danger: a seat finding that a predicate applies is a "dangerous" seat. Record the prompt and both
494
+ verdicts under `agents/evidence/`. **Both seats: not dangerous, owner review
495
+ unnecessary → merge.** Dangerous, split, degraded quorum, or council
496
+ unavailable → do not merge; record the PR `unauthorized` and hand it to the
497
+ owner with the seats' reasons.
498
+
499
+ A `needs-council` clearance only clears the merge. Deploy, release and every
500
+ other Hard-Floor action keep their own confirmation.
501
+
382
502
  ## 9. Merge, and the summary
383
503
 
384
504
  ```bash
385
- gh pr merge <N> --<detected-method> --delete-branch
505
+ gh pr merge <N> --<detected-method> --delete-branch --match-head-commit <manifest-head-sha>
386
506
  ```
387
507
 
508
+ `--match-head-commit` makes the forge refuse a head the manifest did not record.
509
+
388
510
  Detect the method once, at invocation, and reuse it for the whole queue:
389
511
 
390
512
  ```bash
@@ -409,8 +531,11 @@ run, so it does not exist until one has happened): one row per PR with queue
409
531
  position, the `base_ref@base_sha` it was prepared against — without it a
410
532
  "prepared" row records nothing checkable, since mergeability is a fact about a
411
533
  base and not about a queue —
412
- conflict classes hit, CI iterations used, disposition, and any edits dropped in
413
- conflict resolution. The disposition set is closed:
534
+ conflict classes hit, CI iterations used, disposition **with its reason** —
535
+ `merged behind <base>` where § 2 merged a PR its forge let through behind,
536
+ `requires an up-to-date branch` or `TARGET_POLICY_STALE` for a behind PR left
537
+ blocked — and any edits dropped in conflict resolution. Every PR the run saw
538
+ gets a row; none is summarised away. The disposition set is closed:
414
539
 
415
540
  `merged <sha>` · `superseded-closed` · `blocked-external` · `twice-exhausted` ·
416
541
  `unauthorized` · `arrived-after-cutoff`
@@ -430,7 +555,9 @@ ends this run prepared and unmerged.
430
555
  `--no-merge` is the explicit way to say stop before § 9.
431
556
  - **Never widen, patch, or rebuild-around the git guard.** Verification of the
432
557
  authorization window is read-only.
433
- - **Never rebase a pushed branch**; the base is merged in.
558
+ - **The base comes in per `git.update_strategy`**: under `merge` it is merged
559
+ in; under `rebase` this command never rebases — a behind PR is reported
560
+ (exit 3) and the rewrite stays the author's, under `git-history-discipline`.
434
561
  - **Never hand-merge a generated artefact**; regenerate it.
435
562
  - **Never resolve a conflict outside the four classes**; halt instead.
436
563
  - **Never call CI green off a local run**; re-verify on the pushed head.
@@ -73,6 +73,15 @@ git checkout {child-branch}
73
73
  git merge {parent-branch} --no-edit
74
74
  ```
75
75
 
76
+ - **Under `git.update_strategy: rebase`** do not merge the chain: a merge
77
+ commit on a feature branch is what that setting excludes, and this command
78
+ must not leave one behind to be pushed later. Check the target branch back
79
+ out, report which branches are behind their parent, and finish without error
80
+ — the review then runs against `git merge-base HEAD origin/<parent-branch>`
81
+ (the remote ref step 4 fetched; a local branch may be missing or stale), the
82
+ target's direct parent in the chain, so parent PRs stay out of it. Updating the
83
+ chain is a rebase the user asks for
84
+ ([`branch-update`](../../../skills/git-workflow/references/branch-update.md)).
76
85
  - If a **merge conflict** occurs at any point:
77
86
  - Run `git merge --abort`
78
87
  - Abort the entire process immediately
@@ -87,18 +96,11 @@ Once all merges succeed:
87
96
  git checkout {head-branch-of-target-PR}
88
97
  ```
89
98
 
90
- ### 7. Report (verbosity-gated)
99
+ ### 7. Report
91
100
 
92
- Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
93
- `minimal`).
94
-
95
- - `off` → emit nothing on success; surface warnings/errors only.
96
- - `minimal` (default) → one line:
97
- `→ {branch} ready · {N} branches merged · {warnings or "clean"}`.
98
- - `full` → multi-line block listing:
99
- - Which branch chain was processed (in order)
100
- - That the target branch is now checked out and up to date
101
- - Any warnings (e.g. branch was already up to date)
101
+ One line on success:
102
+ `→ {branch} ready · {N} branches merged · {warnings or "clean"}`.
103
+ Warnings and errors are always surfaced.
102
104
 
103
105
  ## Rules
104
106
 
@@ -129,15 +129,8 @@ LEGACY CHECK (indicators):
129
129
  ═══════════════════════════════════════════════
130
130
  ```
131
131
 
132
- Per `verbosity.routine_confirmations` (default `false`):
133
-
134
- - `false` → continue to Phase 2 silently (user invoked `/project-analyze`
135
- for the full pass; "continue" is dominant).
136
- - `true` → ask:
137
- ```
138
- > 1. Continue with Phase 2 — architecture analysis
139
- > 2. Stop here — keep the overview only
140
- ```
132
+ Continue to Phase 2 silently — the user invoked `/project-analyze` for the
133
+ full pass, so "continue" is dominant and asking is a routine confirmation.
141
134
 
142
135
  ### 2. Architecture mapping
143
136
 
@@ -249,15 +242,8 @@ BUSINESS DOMAINS:
249
242
  ═══════════════════════════════════════════════
250
243
  ```
251
244
 
252
- Per `verbosity.routine_confirmations` (default `false`):
253
-
254
- - `false` → create domain analysis files silently (user invoked
255
- `/project-analyze`; "yes, create" is dominant).
256
- - `true` → ask:
257
- ```
258
- > 1. Yes — create domain analysis files
259
- > 2. Skip — continue with next phase
260
- ```
245
+ Create the domain analysis files silently — the user invoked
246
+ `/project-analyze`, so "yes, create" is dominant.
261
247
 
262
248
  For each confirmed domain, create `agents/evidence/analysis/domains/{domain}.md` using the template
263
249
  from the `project-analyzer` skill.
@@ -286,14 +272,7 @@ SERVICE MAP:
286
272
  ═══════════════════════════════════════════════
287
273
  ```
288
274
 
289
- Per `verbosity.routine_confirmations` (default `false`):
290
-
291
- - `false` → create API + service analysis files silently.
292
- - `true` → ask:
293
- ```
294
- > 1. Yes — create API and service analysis files
295
- > 2. Skip — continue with next phase
296
- ```
275
+ Create the API + service analysis files silently.
297
276
 
298
277
  Create:
299
278
  - `agents/evidence/analysis/api/endpoints-v1.md`
@@ -315,15 +294,8 @@ Write all remaining analysis files that haven't been created yet:
315
294
  - `agents/evidence/analysis/modules/{module}.md` — one per module
316
295
  - `agents/evidence/analysis/testing/test-map.md` — test suites, coverage, strategy
317
296
 
318
- Per `verbosity.routine_confirmations` (default `false`):
319
-
320
- - `false` → create all listed files silently (per-file picker is pure
321
- noise once the user invoked `/project-analyze`).
322
- - `true` → for each file, ask:
323
- ```
324
- > 1. Create — {filename}
325
- > 2. Skip
326
- ```
297
+ Create all listed files silently — a per-file picker is pure noise once the
298
+ user invoked `/project-analyze`.
327
299
 
328
300
  ### 8. Gap analysis & action plan
329
301
 
@@ -28,7 +28,7 @@ packs:
28
28
  Accept one of four input paths:
29
29
 
30
30
  1. **Explicit key** — `/refine-ticket PROJ-123`
31
- 2. **Branch detection** — no arg → `git branch --show-current` + regex `[A-Z]+-[0-9]+`
31
+ 2. **Branch detection** — no arg → `agent-config git:convention ticket` on the current branch ([`commit-subject`](../../../skills/git-workflow/references/commit-subject.md) § Reading the ticket)
32
32
  3. **Pasted text** — markdown block under the command
33
33
  4. **URL** — `/refine-ticket https://…/browse/PROJ-123`
34
34