@event4u/agent-config 14.22.0 → 15.0.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 (557) 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 +333 -356
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/agent-handoff.md +8 -7
  7. package/dist/agent-src/commands/agents/init.md +1 -1
  8. package/dist/agent-src/commands/agents/user/accept.md +4 -4
  9. package/dist/agent-src/commands/agents/user/delete.md +2 -2
  10. package/dist/agent-src/commands/agents/user/init.md +3 -3
  11. package/dist/agent-src/commands/agents/user/review.md +3 -3
  12. package/dist/agent-src/commands/agents/user/show.md +3 -3
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +6 -6
  15. package/dist/agent-src/commands/analytics/prune.md +1 -1
  16. package/dist/agent-src/commands/analytics/show.md +2 -2
  17. package/dist/agent-src/commands/analyze/decision.md +2 -2
  18. package/dist/agent-src/commands/analyze/inbox.md +5 -5
  19. package/dist/agent-src/commands/analyze/incident.md +3 -3
  20. package/dist/agent-src/commands/analyze/near-miss.md +3 -3
  21. package/dist/agent-src/commands/analyze/postmortem.md +4 -4
  22. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  23. package/dist/agent-src/commands/analyze.md +2 -2
  24. package/dist/agent-src/commands/bug/fix.md +1 -1
  25. package/dist/agent-src/commands/bug/investigate.md +2 -2
  26. package/dist/agent-src/commands/cost/profile.md +3 -3
  27. package/dist/agent-src/commands/design.md +1 -1
  28. package/dist/agent-src/commands/feature/explore.md +1 -1
  29. package/dist/agent-src/commands/feature/plan.md +2 -2
  30. package/dist/agent-src/commands/feature/roadmap.md +2 -2
  31. package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
  32. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  33. package/dist/agent-src/commands/ghostwriter/show.md +1 -1
  34. package/dist/agent-src/commands/ghostwriter/write.md +9 -9
  35. package/dist/agent-src/commands/humanize.md +6 -6
  36. package/dist/agent-src/commands/jira-ticket.md +1 -1
  37. package/dist/agent-src/commands/judge/solo.md +1 -1
  38. package/dist/agent-src/commands/judge.md +1 -1
  39. package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  41. package/dist/agent-src/commands/knowledge/ingest.md +2 -2
  42. package/dist/agent-src/commands/knowledge/list.md +1 -1
  43. package/dist/agent-src/commands/memory/add.md +3 -3
  44. package/dist/agent-src/commands/memory/load.md +4 -4
  45. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  46. package/dist/agent-src/commands/memory/promote.md +4 -4
  47. package/dist/agent-src/commands/memory/propose.md +2 -2
  48. package/dist/agent-src/commands/mode.md +5 -5
  49. package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
  50. package/dist/agent-src/commands/post-as/me.md +7 -7
  51. package/dist/agent-src/commands/pr/create.md +1 -1
  52. package/dist/agent-src/commands/pr/merge.md +48 -39
  53. package/dist/agent-src/commands/profile/activate.md +1 -1
  54. package/dist/agent-src/commands/profile/show.md +1 -1
  55. package/dist/agent-src/commands/research/deep.md +2 -2
  56. package/dist/agent-src/commands/research/report.md +2 -2
  57. package/dist/agent-src/commands/review/changes.md +1 -1
  58. package/dist/agent-src/commands/review/routing.md +1 -1
  59. package/dist/agent-src/commands/roadmap/create.md +1 -1
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +9 -1
  62. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  63. package/dist/agent-src/commands/security-audit-config.md +3 -3
  64. package/dist/agent-src/commands/skill/preview.md +1 -1
  65. package/dist/agent-src/commands/skills/discover.md +1 -1
  66. package/dist/agent-src/commands/sync/agent-settings.md +2 -2
  67. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  68. package/dist/agent-src/commands/tests/create.md +1 -1
  69. package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
  70. package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
  71. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
  72. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
  73. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  74. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
  75. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  76. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
  77. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  78. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  79. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +13 -1
  80. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
  81. package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
  82. package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
  83. package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
  84. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
  85. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
  86. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
  87. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
  88. package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
  89. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
  90. package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
  91. package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
  92. package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
  93. package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
  94. package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
  95. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
  96. package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
  97. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
  98. package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
  99. package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
  100. package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
  101. package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  102. package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
  103. package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
  104. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
  105. package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  106. package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
  107. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  108. package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  109. package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
  110. package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
  111. package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  112. package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  113. package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  114. package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
  115. package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
  116. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  117. package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  118. package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
  119. package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
  120. package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
  121. package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
  122. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  123. package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
  124. package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
  125. package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
  126. package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
  127. package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
  128. package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
  129. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
  130. package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  131. package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
  132. package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
  133. package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
  134. package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
  135. package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
  136. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
  137. package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
  138. package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  139. package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  140. package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
  141. package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  142. package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
  143. package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  144. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
  145. package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
  146. package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  147. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
  148. package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
  149. package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  150. package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
  151. package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
  152. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
  153. package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
  154. package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
  155. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
  156. package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
  157. package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  158. package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
  159. package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
  160. package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
  161. package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  162. package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  163. package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
  164. package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
  165. package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
  166. package/dist/agent-src/guidelines/code-clarity.md +350 -0
  167. package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
  168. package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
  169. package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
  170. package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
  171. package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
  172. package/dist/agent-src/guidelines/design-canon.md +63 -0
  173. package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
  174. package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
  175. package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
  176. package/dist/agent-src/guidelines/design-modes.md +143 -0
  177. package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
  178. package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
  179. package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
  180. package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
  181. package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
  182. package/dist/agent-src/guidelines/php/api-design.md +115 -0
  183. package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
  184. package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
  185. package/dist/agent-src/guidelines/php/controllers.md +90 -0
  186. package/dist/agent-src/guidelines/php/database.md +194 -0
  187. package/dist/agent-src/guidelines/php/eloquent.md +208 -0
  188. package/dist/agent-src/guidelines/php/flux.md +80 -0
  189. package/dist/agent-src/guidelines/php/general.md +207 -0
  190. package/dist/agent-src/guidelines/php/git.md +164 -0
  191. package/dist/agent-src/guidelines/php/jobs.md +111 -0
  192. package/dist/agent-src/guidelines/php/livewire.md +71 -0
  193. package/dist/agent-src/guidelines/php/logging.md +79 -0
  194. package/dist/agent-src/guidelines/php/naming.md +89 -0
  195. package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  196. package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
  197. package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
  198. package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
  199. package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
  200. package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
  201. package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
  202. package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
  203. package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
  204. package/dist/agent-src/guidelines/php/patterns.md +28 -0
  205. package/dist/agent-src/guidelines/php/performance.md +92 -0
  206. package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
  207. package/dist/agent-src/guidelines/php/resources.md +100 -0
  208. package/dist/agent-src/guidelines/php/security.md +110 -0
  209. package/dist/agent-src/guidelines/php/sql.md +97 -0
  210. package/dist/agent-src/guidelines/php/validations.md +119 -0
  211. package/dist/agent-src/guidelines/php/websocket.md +100 -0
  212. package/dist/agent-src/guidelines/prompt-templates.md +189 -0
  213. package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
  214. package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
  215. package/dist/agent-src/personas/README.md +1 -1
  216. package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
  217. package/dist/agent-src/personas/product-owner.md +1 -1
  218. package/dist/agent-src/rules/active-remediation.md +1 -1
  219. package/dist/agent-src/rules/architecture.md +2 -2
  220. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  221. package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
  222. package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
  223. package/dist/agent-src/rules/code-comment-discipline.md +2 -2
  224. package/dist/agent-src/rules/code-provenance.md +1 -1
  225. package/dist/agent-src/rules/content-quoting-floor.md +1 -1
  226. package/dist/agent-src/rules/context-hygiene.md +5 -5
  227. package/dist/agent-src/rules/cross-source-consistency.md +1 -1
  228. package/dist/agent-src/rules/design-fidelity.md +36 -46
  229. package/dist/agent-src/rules/direct-answers.md +2 -2
  230. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  231. package/dist/agent-src/rules/evaluator-independence.md +1 -1
  232. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  233. package/dist/agent-src/rules/icon-consistency.md +5 -1
  234. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  235. package/dist/agent-src/rules/language-and-tone.md +3 -3
  236. package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
  237. package/dist/agent-src/rules/notes-first-reasoning.md +36 -25
  238. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  239. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  240. package/dist/agent-src/rules/role-mode-adherence.md +2 -2
  241. package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
  242. package/dist/agent-src/rules/size-enforcement.md +1 -1
  243. package/dist/agent-src/rules/source-confidentiality.md +2 -2
  244. package/dist/agent-src/rules/think-before-action.md +1 -1
  245. package/dist/agent-src/rules/token-efficiency.md +7 -5
  246. package/dist/agent-src/rules/ui-audit-gate.md +3 -2
  247. package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
  248. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  249. package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
  250. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  251. package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
  252. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
  253. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  254. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  255. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
  256. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  257. package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
  258. package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
  259. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -1
  260. package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
  261. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  262. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  263. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  264. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  265. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  266. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  267. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  268. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  269. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  270. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  271. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  272. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  273. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  274. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  275. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  276. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  277. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  278. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  279. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  280. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  281. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  282. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  283. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  284. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  285. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  286. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  287. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  288. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  289. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
  290. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
  291. package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
  292. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  293. package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
  294. package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
  295. package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
  296. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
  297. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  298. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  299. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  300. package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
  301. package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
  302. package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
  303. package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
  304. package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +9 -0
  305. package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
  306. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  307. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  308. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  309. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  310. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  311. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  312. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  313. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  314. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  315. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  316. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  317. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  318. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  319. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  320. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  321. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  322. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  323. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  324. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  325. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  326. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  327. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  328. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  329. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  330. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  331. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  332. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  333. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  334. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  335. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  336. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  337. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  338. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  339. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  340. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  341. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  342. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  343. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  344. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  345. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  346. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  347. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  348. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  349. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  350. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  351. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  352. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  353. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  354. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  355. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  356. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  357. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +60 -4
  358. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  359. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  360. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  361. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  362. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  363. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  364. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  365. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  366. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  367. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  368. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  369. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  370. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  371. package/dist/agent-src/templates/agent-settings.md +6 -6
  372. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  373. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  374. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  375. package/dist/agent-src/templates/roadmaps.md +1 -1
  376. package/dist/agent-src/templates/scripts/README.md +2 -2
  377. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  378. package/dist/cli/registry.js +1 -1
  379. package/dist/cli-delegate/archive_completed_roadmaps.js +52 -4
  380. package/dist/cli-delegate/check_update_banner.js +12 -1
  381. package/dist/cli-delegate/{chunk-TGIPZBCW.js → chunk-2KKXJW25.js} +22 -8
  382. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  383. package/dist/cli-delegate/{chunk-4FS4WRXP.js → chunk-3FKR64R5.js} +34 -6
  384. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  385. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  386. package/dist/cli-delegate/{chunk-BIXEDQPZ.js → chunk-AK6HODNQ.js} +4 -4
  387. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  388. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
  389. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  390. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  391. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  392. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  393. package/dist/cli-delegate/cmd_conformance.js +3 -3
  394. package/dist/cli-delegate/cmd_doctor.js +3 -3
  395. package/dist/cli-delegate/cmd_explain.js +2 -2
  396. package/dist/cli-delegate/cmd_export.js +4 -4
  397. package/dist/cli-delegate/cmd_handoff.js +24 -16
  398. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  399. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  400. package/dist/cli-delegate/cmd_migrate.js +2 -2
  401. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  402. package/dist/cli-delegate/cmd_prune.js +4 -4
  403. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  404. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  405. package/dist/cli-delegate/cmd_session_recycle.js +4 -14
  406. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  407. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  408. package/dist/cli-delegate/cmd_settings_set.js +41 -11
  409. package/dist/cli-delegate/cmd_sync.js +4 -4
  410. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  411. package/dist/cli-delegate/cmd_update.js +1 -1
  412. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  413. package/dist/cli-delegate/cmd_validate.js +4 -4
  414. package/dist/cli-delegate/cmd_versions.js +1 -1
  415. package/dist/discovery/deprecation-report.md +1 -1
  416. package/dist/discovery/discovery-manifest.json +27 -80
  417. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  418. package/dist/discovery/discovery-manifest.summary.md +3 -3
  419. package/dist/discovery/dormancy-report.md +1 -1
  420. package/dist/discovery/orphan-report.md +1 -1
  421. package/dist/discovery/packs.json +5 -7
  422. package/dist/discovery/trust-report.md +2 -2
  423. package/dist/discovery/workspaces.json +4 -6
  424. package/dist/hooks/dispatch.js +9249 -8981
  425. package/dist/install/install.mjs +47 -8
  426. package/dist/mcp/registry-manifest.json +3 -3
  427. package/dist/mcp/server.json +2 -2
  428. package/dist/mcp/server.mjs +5496 -2400
  429. package/dist/router.json +1 -1
  430. package/dist/scripts/_lib/agent_settings.js +73 -0
  431. package/dist/scripts/_lib/agent_src.js +20 -0
  432. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  433. package/dist/scripts/_lib/lean_projection_mode.js +108 -0
  434. package/dist/scripts/_lib/router_match.js +243 -0
  435. package/dist/scripts/_lib/rule_injection.js +216 -0
  436. package/dist/scripts/condense.js +22 -25
  437. package/dist/scripts/project_thin_rules.js +139 -19
  438. package/dist/server/io/yamlIO.js +125 -17
  439. package/dist/server/schemas/settings.js +32 -5
  440. package/dist/shared/settingsSurface.js +6 -1
  441. package/docs/MIGRATION.md +56 -0
  442. package/docs/contracts/settings-classes.md +48 -7
  443. package/docs/guidelines/abstraction-thresholds.md +35 -0
  444. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  445. package/docs/guidelines/agent-infra/false-green.md +2 -2
  446. package/docs/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  447. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  448. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  449. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  450. package/docs/guidelines/design-fidelity-routing.md +78 -0
  451. package/docs/guidelines/design-reconciliation.md +172 -0
  452. package/docs/guidelines/gtm-handoff.md +2 -2
  453. package/docs/guidelines/wing4-handoff.md +2 -2
  454. package/llms.txt +1 -1
  455. package/package.json +7 -3
  456. package/src/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  457. package/src/config/agent-settings.template.yml +94 -1
  458. package/src/config/ci-local-parity.yml +34 -0
  459. package/src/config/continuity-surface.json +8 -29
  460. package/src/config/evaluator-budgets.json +4 -4
  461. package/src/config/gate-coverage.yml +31 -8
  462. package/src/config/gate-reachability-exemptions.json +1 -0
  463. package/src/config/gate-violation-baselines.json +3 -3
  464. package/src/config/hook-token-budget.json +8 -7
  465. package/src/config/host-injection-effect.json +2 -2
  466. package/src/config/pack-size-budget.json +55 -4
  467. package/src/config/packed-binary-manifest.json +1 -1
  468. package/src/config/platform-anchor.json +47 -0
  469. package/src/config/preamble-payload-budget.json +2 -3
  470. package/src/config/publish-surface.json +4 -2
  471. package/src/config/ratification-policy.json +7 -0
  472. package/src/config/routing-coverage-seed.json +9 -2
  473. package/src/config/rule-stub-ceilings.json +16 -9
  474. package/src/scripts/_cli/cmd_session_recycle.ts +2 -25
  475. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  476. package/src/scripts/_cli/handoff_sessions.ts +14 -44
  477. package/src/scripts/_lib/agent_settings.ts +85 -0
  478. package/src/scripts/_lib/agent_src.ts +21 -0
  479. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  480. package/src/scripts/_lib/conformance_report.ts +403 -0
  481. package/src/scripts/_lib/continuity_slot.ts +295 -0
  482. package/src/scripts/_lib/continuity_writer.ts +312 -0
  483. package/src/scripts/_lib/design_system_import.ts +20 -0
  484. package/src/scripts/_lib/design_tolerance.ts +281 -0
  485. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  486. package/src/scripts/_lib/hook_settings.ts +85 -0
  487. package/src/scripts/_lib/lean_projection_mode.ts +127 -0
  488. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  489. package/src/scripts/_lib/packed_binary_predicate.ts +37 -0
  490. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  491. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  492. package/src/scripts/_lib/recycle_envelope_paths.ts +109 -21
  493. package/src/scripts/_lib/regression_neighbourhood.ts +159 -22
  494. package/src/scripts/_lib/security_lint.ts +23 -2
  495. package/src/scripts/_lib/self_repair.ts +21 -0
  496. package/src/scripts/_lib/session_eol.ts +44 -0
  497. package/src/scripts/_lib/session_index_trust.ts +387 -0
  498. package/src/scripts/_lib/standing_bound_ratchet.ts +220 -0
  499. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  500. package/src/scripts/_lib/vendored_grammar_upstream.ts +280 -0
  501. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  502. package/src/scripts/audit_mcp_tools.ts +69 -25
  503. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  504. package/src/scripts/build_mcp_catalog.ts +24 -1
  505. package/src/scripts/check_host_tree_parity.ts +291 -0
  506. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  507. package/src/scripts/check_loss_class_declared.ts +793 -46
  508. package/src/scripts/check_platform_anchor.ts +390 -0
  509. package/src/scripts/check_preamble_payload_budget.ts +424 -7
  510. package/src/scripts/check_projected_rule_routes.ts +395 -0
  511. package/src/scripts/check_rule_projection_integrity.ts +102 -2
  512. package/src/scripts/ci_settle.ts +205 -5
  513. package/src/scripts/code_graph/build.ts +79 -0
  514. package/src/scripts/code_graph/cli.ts +264 -7
  515. package/src/scripts/code_graph/detect.ts +38 -0
  516. package/src/scripts/code_graph/query.ts +25 -2
  517. package/src/scripts/code_graph/sqlite_store.ts +16 -1
  518. package/src/scripts/code_graph/types.ts +52 -3
  519. package/src/scripts/code_graph/validate.ts +3 -1
  520. package/src/scripts/code_graph/verbs.ts +590 -0
  521. package/src/scripts/condense.ts +22 -26
  522. package/src/scripts/generate_host_cost_table.ts +354 -0
  523. package/src/scripts/handoff_context_hook.ts +39 -1
  524. package/src/scripts/hook_manifest.json +1 -1
  525. package/src/scripts/hook_manifest.yaml +59 -28
  526. package/src/scripts/hooks/block_speaking_inbox_dir.ts +182 -16
  527. package/src/scripts/hooks/category_a.ts +1 -1
  528. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  529. package/src/scripts/hooks/code_graph_context_hook.ts +7 -18
  530. package/src/scripts/hooks/push_settle_hook.ts +3 -2
  531. package/src/scripts/hooks/rule_inject_hook.ts +107 -20
  532. package/src/scripts/hooks/session_eol_hook.ts +177 -145
  533. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  534. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  535. package/src/scripts/hot_context_hook.ts +103 -408
  536. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  537. package/src/scripts/lint_knowledge_scale.ts +0 -26
  538. package/src/scripts/lint_roadmap_blockers.ts +164 -1
  539. package/src/scripts/mcp_server/consumer_tool_catalog.json +152 -2
  540. package/src/scripts/mcp_server/graph_tools.ts +294 -0
  541. package/src/scripts/mcp_server/path_util.ts +31 -0
  542. package/src/scripts/mcp_server/tool_catalog_source.ts +7 -1
  543. package/src/scripts/mcp_server/tools.ts +3 -13
  544. package/src/scripts/memory_lookup.ts +9 -9
  545. package/src/scripts/model_rule_injection.ts +61 -4
  546. package/src/scripts/project_thin_rules.ts +149 -16
  547. package/src/scripts/report_standing_payload_by_host.ts +650 -0
  548. package/src/scripts/schemas/agent-settings.schema.json +7 -1
  549. package/src/scripts/session_memory_index.ts +86 -8
  550. package/src/scripts/sync_agent_settings.ts +270 -10
  551. package/src/server/io/yamlIO.ts +127 -17
  552. package/src/server/schemas/settings.ts +45 -6
  553. package/src/shared/settingsSurface.ts +13 -2
  554. package/src/templates/compact-instructions.md +8 -3
  555. package/src/vendor/grammars/README.md +27 -2
  556. package/dist/agent-src/commands/chat-history/import.md +0 -170
  557. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,274 @@
1
+ # Roadmap Progress Sync
2
+
3
+ > Any touch to agents/roadmaps/ — create/rename/delete/move, edit checkboxes ([x]/[~]/[-]), add/rename/remove phases — must regenerate dashboard and archive if 0 open items, same response
4
+
5
+ _Origin: migrated from `.agent-src.uncondensed/rules/roadmap-progress-sync.md` per P4.2 of `road-to-kernel-and-router.md`._
6
+
7
+ <!-- cloud_safe: degrade -->
8
+ <!-- Authoring discipline applies in cloud; local script + regen are no-ops there. -->
9
+
10
+ # Roadmap Progress Sync
11
+
12
+ > **Enforced by (defence in depth):**
13
+ > 1. [`scripts/roadmap_progress_hook.ts`](../../../src/scripts/roadmap_progress_hook.ts)
14
+ > on Augment + Claude Code (`PostToolUse`) — auto-regen on write.
15
+ > 2. `.git/hooks/pre-commit` (installed by `scripts/install-hooks.sh`) —
16
+ > blocks any commit whose staged set touches `agents/roadmaps/` or
17
+ > `agents/roadmaps-progress.md` while the dashboard is stale.
18
+ > 3. The `ci` task runs `roadmap-progress-check` so a PR cannot land with a
19
+ > stale dashboard even if local hooks were bypassed.
20
+ >
21
+ > Hook is primary; the prose below is the specification the hook
22
+ > implements and the fallback where no hook is bound on the platform.
23
+
24
+ ## Iron Law — dashboard sync
25
+
26
+ ```
27
+ ANY ROADMAP TOUCH → REGENERATE THE DASHBOARD, SAME RESPONSE.
28
+ NO EXCEPTIONS. NO "I'LL DO IT AT THE END". NO BATCHING ACROSS TURNS.
29
+ A ROADMAP NOT IN THE DASHBOARD IS A RULE VIOLATION, NOT AN OVERSIGHT.
30
+ ```
31
+
32
+ **Roadmap touch =** create the file, rename it, delete it, move it
33
+ between `roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove a
34
+ phase, **OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
35
+
36
+ `agents/roadmaps-progress.md` is the read-only dashboard. Every
37
+ unsynced edit makes it lie to the next reader. Created a roadmap
38
+ without regenerating? The dashboard claims it does not exist. Marked
39
+ 8 steps `[x]` and forgot the regen? The dashboard says 0 done.
40
+
41
+ ## Iron Law — every active roadmap is trackable
42
+
43
+ ```
44
+ EVERY ACTIVE ROADMAP MUST CONTAIN AT LEAST ONE TRACKABLE CHECKBOX
45
+ (`- [ ]`) PER NON-INTRO PHASE. ROADMAPS WITHOUT EXECUTABLE STEPS
46
+ EITHER GET A CHECKLIST OR THE `status: draft` FLAG.
47
+ CI-ENFORCED: `scripts/check_roadmap_trackable.ts` (CANNOT BE DEFERRED).
48
+ ```
49
+
50
+ **Active roadmap =** any file in `agents/roadmaps/` (root, not
51
+ `archive/` or `skipped/`) without `status: draft` frontmatter.
52
+
53
+ **Trackable checkbox =** an actionable `- [ ]` line under a `## Phase N`
54
+ or `### Phase N` heading (numeric `Phase 1`, roman `Phase II`, or
55
+ letter-track `Phase A1` — matched by the dashboard's `PHASE_RE`).
56
+ Tables of decisions, ICE matrices, ADR captures, and "block
57
+ sequencing" tables are valid **rationale**, but they do not satisfy
58
+ this rule on their own — they must be paired with at least one
59
+ `## Phase N` section whose checkboxes execute the decision.
60
+ Headings such as `## Phase steps`, `### Sequencing — Phase 1 …`,
61
+ `### P0 #1 — …`, or `## Block A` do **not** count — only the
62
+ canonical `Phase <id>` form parsed by the dashboard.
63
+
64
+ **CI backstop.** `scripts/check_roadmap_trackable.ts` (package-shipped,
65
+ wire into the consumer's pre-commit / pre-push / Actions gate) fails
66
+ when an active roadmap has zero canonical `Phase` headings or when
67
+ any parsed phase has zero checkboxes. Last line of defence — real-time
68
+ authoring still flips checkboxes and regenerates the dashboard the
69
+ same response.
70
+
71
+ ## Status — binary `ready` (default) vs `draft`
72
+
73
+ ```yaml
74
+ ---
75
+ status: draft # hidden from the dashboard until flipped
76
+ ---
77
+ ```
78
+
79
+ Two values, no synonyms. Anything else — no frontmatter at all,
80
+ `status: ready`, an unknown value — counts as **ready** and lands
81
+ in the dashboard.
82
+
83
+ - **Ready** is the implicit default. New roadmaps are created
84
+ ready unless the user explicitly says draft. Ready roadmaps are
85
+ listed in the dashboard, count towards open/done totals, and
86
+ trip the "completed but not archived" warning when they close.
87
+ - **Draft** hides the file from the dashboard entirely (not
88
+ counted, not listed). Use it while the roadmap is still being
89
+ authored, while waiting for upstream decisions, or as a
90
+ capture-only synthesis that has not yet been promoted to
91
+ executable phases. Flip to ready (or remove the field) the
92
+ moment the roadmap is ready to track.
93
+
94
+ **Completion = archival, same response.** When the edit takes a
95
+ roadmap to `count_open == 0` (every item is `[x]`, `[~]`, or `[-]`),
96
+ `git mv` it into `agents/roadmaps/archive/` (or `skipped/` if no `[x]`
97
+ at all) **before** regenerating the dashboard. A 100%-complete
98
+ roadmap left under `agents/roadmaps/` is a rule violation, not an
99
+ optional cleanup. See `roadmap-management` skill for the archive vs
100
+ skipped decision table.
101
+
102
+ ## Agent-authored roadmaps — placement is mandatory
103
+
104
+ ```
105
+ A FILE THE AGENT DROPS INTO agents/roadmaps/ MUST EITHER
106
+ (a) PASS check_roadmap_trackable.ts AND LAND IN THE DASHBOARD, OR
107
+ (b) NOT BE IN agents/roadmaps/ AT ALL.
108
+ NO "DECISION MATRIX" / "DESIGN NOTE" SHORTCUT.
109
+ ```
110
+
111
+ When the agent autonomously creates a roadmap, it owns the placement
112
+ in the **same response**:
113
+
114
+ - **Phase plan** (checkboxes, multi-turn execution) → `agents/roadmaps/<name>.md`, `status: ready` (default), regen dashboard.
115
+ - **Decision matrix / ADR / pattern / lookup** (no `Phase N`, durable rationale) → `agents/settings/contexts/<name>.md`.
116
+ - **Completed work snapshot** → `agents/roadmaps/archive/<name>.md`.
117
+
118
+ A non-trackable file in `agents/roadmaps/` is a rule violation — the
119
+ trackable CI fails it, the dashboard hides it. The agent that
120
+ created it moves it the same response. If the autonomous run also
121
+ **finishes** the roadmap within the session (every box `[x]`/`[~]`/`[-]`),
122
+ the completion-archival rule above fires too — same response.
123
+
124
+ ## Autonomous execution — checkbox cadence
125
+
126
+ When executing a roadmap autonomously (multi-turn, no per-step user
127
+ prompt), the user loses progress visibility unless checkboxes flip
128
+ **as work lands**, not in a batch at the end. Iron Law:
129
+
130
+ ```
131
+ EVERY DONE STEP FLIPS [ ] → [x] IN NEXT REPLY THAT ACKNOWLEDGES IT.
132
+ NO "I UPDATE ROADMAP AT END OF PHASE."
133
+ NO "FOUR STEPS DONE, ONE COMMIT, ONE REGEN."
134
+ ```
135
+
136
+ Step counts as completed when:
137
+
138
+ - Code / docs change for that step has been **written and saved** AND
139
+ - Verification cited in the step (project CI command, targeted test, lint) has
140
+ **passed in this response or an earlier one** — fresh output, not memory.
141
+
142
+ Then in the **same reply**: flip the checkbox, regenerate the
143
+ dashboard, commit if commit policy allows.
144
+
145
+ **Forbidden:** four turns of step work, dashboard flat, single regen at the end.
146
+ **Required:** each turn — implement step, flip `[x]`, regen, commit (if policy allows).
147
+ A reply that lands a verified step without flipping its checkbox is a rule violation.
148
+
149
+ **Deterministic flip-guard.** The autonomous loop carries a per-step
150
+ guard at [`roadmap-process-loop § 5b`](../../contexts/execution/roadmap-process-loop.md#5b-flip-guard--deterministic):
151
+ after the atomic flip, the loop runs
152
+ `git diff --name-only -- agents/roadmaps/<file>.md` and halts loudly
153
+ when the diff is empty. The `command:` triggers on
154
+ `roadmap-progress-sync` keep the rule loaded for the entire
155
+ `/roadmap:process-*` run; the guard is the deterministic backstop
156
+ that catches a forgotten flip per step rather than at run end.
157
+
158
+ **`[~]` semantics — superseded note:** `[~]` is **not** an "in-progress"
159
+ indicator (the earlier in-progress-marker guidance here is superseded by
160
+ the glyph table in § Glyph semantics below — kept as the stronger, current
161
+ source of truth). Mid-reply work-in-flight has no checkbox change until
162
+ the step lands; that's a normal `[ ] → [x]` transition.
163
+
164
+ ## Mechanics — triggers, regen command, self-check, failures
165
+
166
+ The triggers table, the regen command (`./agent-config roadmap:progress`),
167
+ the pre-send self-check, the failure-mode catalog and the `Do NOT` list are
168
+ **in this file**; the rule
169
+ [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md) is the
170
+ obligation surface.
171
+
172
+ > **Corrected 2026-08-26.** This pointed at a `rules-auto` mechanics file that
173
+ > exists nowhere — a split that never happened, while the content was here.
174
+
175
+ ## Copilot fallback
176
+
177
+ GitHub Copilot has no `PostToolUse` hook surface, so
178
+ `scripts/roadmap_progress_hook.ts` cannot detect roadmap-file writes
179
+ structurally. The dashboard at `agents/roadmaps-progress.md` will
180
+ not regenerate on its own.
181
+
182
+ The cooperative path: every time a roadmap touch fires (per the
183
+ trigger list in the mechanics context above), the agent regenerates
184
+ the dashboard in the same response — which is the same Iron Law the
185
+ hook enforces, just executed manually:
186
+
187
+ ```bash
188
+ ./agent-config roadmap:progress
189
+ ```
190
+
191
+ The hook implementation is the specification; on Copilot the agent
192
+ runs the regenerator itself after the same triggers fire. Skipping
193
+ it is a rule violation, not a hook gap — the Iron Law on dashboard
194
+ sync survives the missing hook surface.
195
+
196
+ ## Migrated depth from the `roadmap-progress-sync` rule (per P4)
197
+
198
+ The sections below carry the long-form body of the
199
+ `roadmap-progress-sync` rule; the Iron-Law fences and the mandatory
200
+ pre-send self-check stay in the rule itself.
201
+
202
+ ### Iron Law 2 — cadence detail
203
+
204
+ `/roadmap:process-step`, `/roadmap:process-phase`, `/roadmap:process-full`, and any other multi-step autonomous run flip the box for step N **before** moving on to step N+1. The checkbox itself is the real-time monitor — the markdown file is the source of truth, the dashboard is a derived view.
205
+
206
+ The `command:` triggers in the rule's frontmatter ensure it loads the moment one of the `/roadmap:process-*` commands is invoked and stays loaded for the whole run — independent of whether the agent is currently editing files under `agents/roadmaps/`. The loop carries its own deterministic flip-guard at `roadmap-process-loop § 5b` — defense-in-depth, not a substitute for the inline flip. (Merged with § Autonomous execution → "Deterministic flip-guard" above, which carries the concrete guard command.)
207
+
208
+ **Step counts as done** when its code/doc change is written and saved AND the verification cited in the step has passed (fresh output in this reply or an earlier one). (Merged with § Autonomous execution → "Step counts as completed" above — same contract.)
209
+
210
+ ### Glyph semantics — single source of truth
211
+
212
+ Keep aligned with the dashboard counter in `scripts/update_roadmap_progress.ts` (regenerated via `./agent-config roadmap:progress`) and the closure-table in the `roadmap-management` skill:
213
+
214
+ | Glyph | Meaning | Counts towards |
215
+ |---|---|---|
216
+ | `[ ]` | open — planned, not yet done | `count_open` |
217
+ | `[x]` | done — work landed + verified | `count_done` |
218
+ | `[~]` | deferred — planned but not happening **this** run; resolution required before archive (Iron Law 3) | `count_deferred` |
219
+ | `[-]` | cancelled — scope dropped, won't happen at all | `count_cancelled` |
220
+
221
+ `[~]` is **not** an "in-progress" indicator. Mid-reply work-in-flight has no checkbox change until the step lands; that's a normal `[ ] → [x]` transition.
222
+
223
+ #### `guarded-baseline` — a sub-state of `[ ]`, never a fifth glyph
224
+
225
+ See [`guarded-baseline`](guarded-baseline.md).
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.
228
+
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
+
231
+ ### Iron Law 3 — deferred-resolution flow
232
+
233
+ When the closure check fires (`count_open == 0` and `count_deferred > 0`), the agent MUST:
234
+
235
+ 1. Enumerate every `[~]` step in the roadmap (phase + step text + any inline `<!-- deferred: ... -->` annotation).
236
+ 2. Present numbered options (per the `user-interaction` rule) — at minimum:
237
+ 1. **Follow-up roadmap (draft)** — spawn `agents/roadmaps/road-to-<slug>.md` with `status: draft` frontmatter, `parent_roadmap: <this-slug>`, and the deferred steps lifted verbatim into phases. Draft stays hidden from the dashboard until the user flips it to `ready`.
238
+ 2. **Follow-up roadmap (ready, blocked)** — spawn the file with `status: ready` (default), frontmatter `parent_roadmap: <this-slug>` plus a body note (`> Blocked until <condition>`) so the dashboard surfaces it but execution waits.
239
+ 3. **Keep in this archive** — confirm the deferred items stay searchable in the archived file; no follow-up roadmap. Choosing this records an explicit decision-to-drop in the same reply.
240
+ 4. **Restore selected items to `[ ]`** — finish them in this roadmap before archive.
241
+ 5. **Convert selected items to `[-]` cancelled** — drop them with rationale recorded inline.
242
+ 3. Route by the **preservation test** — full table, recording contract and residual limit in [`roadmap-progress-sync § Who resolves it`](../../rules/roadmap-progress-sync.md). In one line: options 1, 2, 4 keep the item alive → council; 3 and 5 drop or weaken it → user, always; in doubt, user.
243
+ 4. Only after the deferrals are resolved does the `git mv` to `archive/` run. The dashboard regen happens after the resolution, not before.
244
+
245
+ The migration mechanics (file naming, frontmatter pattern, body shape, parent-back-link) live in `roadmap-management § Spawn follow-up from deferred items`. The rule owns the obligation; the skill owns the procedure.
246
+
247
+ ### Later disposition — detail
248
+
249
+ `later/` is the fourth disposition alongside `archive/` (done, none planned) and `skipped/` (won't pursue): open work remains but is blocked-for-later. Set frontmatter `status: later` + a `Blocked until` / `Trigger` resume line, `git mv` to `agents/roadmaps/later/`, migrate inbound `agents/roadmaps/<x>.md` refs to the new path, regen. Open `[ ]` items stay open — the roadmap is parked whole, not cancelled or deferred-item-by-item. `later/` is excluded from the dashboard and `/roadmap:process-*` (same as `archive/`/`skipped/`); the `lint_roadmap_later_disposition` guard enforces the `status: later` ⇔ `later/` placement contract and that every parked roadmap records a resume condition. Procedure + the Active-vs-Later test live in the `roadmap-management` skill.
250
+
251
+ ### PR-gate — detail
252
+
253
+ A roadmap that reaches `count_open == 0 && count_deferred == 0` is **complete**
254
+ and is archived **in the same PR that completes it** — deterministically, by a
255
+ script, before the PR exists. There is no "hold the last item open + archive
256
+ manually after merge" step (that step got forgotten and left finished roadmaps
257
+ rotting unarchived in the trunk — the exact failure this gate makes impossible).
258
+
259
+ The sweep — `scripts/archive_completed_roadmaps.ts`, invoked by
260
+ `/create-pr` § 1c — archives every roadmap that is
261
+ complete **and** touched in this branch (`git log origin/main..HEAD`), `git mv`s
262
+ it to `archive/`, migrates inbound `agents/roadmaps/<x>.md` references to the
263
+ archive path in the **same branch** (so links never break — this was the only
264
+ real reason the old design deferred archival), regenerates the dashboard, and
265
+ stages it. Completion is read from the checkbox counts; no marker is required.
266
+
267
+ **Backstop:** `./agent-config roadmap:progress-check` (wrapping `update_roadmap_progress.ts --check`) hard-fails when a roadmap
268
+ hits `count_open == 0` while still under `agents/roadmaps/`. Because
269
+ `/create-pr` archives before the push, the PR branch is green; a push that
270
+ bypasses the sweep red-flags in CI — the forcing function that makes
271
+ "finished roadmap left unarchived in the trunk" structurally impossible. Legacy
272
+ `merge-gated` annotations are archived by the next `/create-pr` like any other
273
+ completed roadmap; the dashboard still surfaces any stranded
274
+ complete-but-unarchived roadmap so it can never hide inside a partial progress bar.
@@ -0,0 +1,209 @@
1
+ # Role Contracts
2
+
3
+ Six named working modes with a fixed output contract per mode. Loading
4
+ a role frame stabilizes smaller models: they stop inventing a frame per
5
+ task and produce reproducible outputs on the same input.
6
+
7
+ Referenced by `road-to-role-modes.md` Phase 1. Each contract is a
8
+ *skeleton*, not a form — fields without evidence become questions via
9
+ `ask-when-uncertain`, never fabrications.
10
+
11
+ ## The six modes
12
+
13
+ | Mode | Entry signal | Default skills | Output contract |
14
+ |---|---|---|---|
15
+ | **Developer** | "implement X", `/jira-ticket`, `/bug-fix` | `php-coder`, `laravel`, `test-driven-development`, `quality-tools` | Goal / Plan / Changes / Tests / Open questions |
16
+ | **Reviewer** | `/review-changes`, `/judge`, PR open on branch | `judge-bug-hunter`, `judge-code-quality`, `judge-security-auditor`, `judge-test-coverage` | Summary / Risks / Findings / Required actions / Verdict |
17
+ | **Tester** | "add tests", "why does X fail", test output in context | `pest-testing`, `api-testing`, `e2e-plan`, `test-performance` | Behaviour under test / Edge cases / Negative paths / Reproduction / Coverage gaps |
18
+ | **PO** | "I want a feature", `/feature-explore`, `/feature-plan` | `validate-feature-fit`, `api-design`, `threat-modeling` | Goal / Assumptions / Acceptance criteria / Impacted modules / Risks / Open questions for stakeholder |
19
+ | **Incident** | "production is down", `break-glass: true`, hotfix branch | `bug-investigate`, `systematic-debugging`, `authz-review` | Symptom / Reproduction / Minimal reversible change / Deferred verification / Follow-up commitment / Incident learning |
20
+ | **Planner** | "what's the strategy", `/feature-roadmap`, multi-step work with unclear order | `feature-plan`, `feature-roadmap`, `blast-radius-analyzer` | Goal / Constraints / Option set / Recommendation / Dependencies / Rollback |
21
+
22
+ ## Contract skeletons
23
+
24
+ ### Developer
25
+
26
+ ```
27
+ **Goal:** <what the user asked for, one sentence>
28
+ **Plan:** <ordered steps, ≤5>
29
+ **Changes:** <files touched, one line each>
30
+ **Tests:** <added/updated tests + how to run>
31
+ **Open questions:** <unresolved items, none if blank>
32
+ ```
33
+
34
+ ### Reviewer
35
+
36
+ ```
37
+ **Summary:** <one-paragraph overview of the diff>
38
+ **Risks:** <ranked list: high/medium/low>
39
+ **Findings:** <file:line → issue → fix suggestion>
40
+ **Required actions:** <numbered list the author must address>
41
+ **Verdict:** approve | request changes | block
42
+ ```
43
+
44
+ ### Tester
45
+
46
+ ```
47
+ **Behaviour under test:** <the invariant, one sentence>
48
+ **Edge cases:** <boundary + error paths covered>
49
+ **Negative paths:** <expected failures, error types>
50
+ **Reproduction:** <how to run a single failing case>
51
+ **Coverage gaps:** <what stayed untested and why>
52
+ ```
53
+
54
+ ### PO
55
+
56
+ ```
57
+ **Goal:** <user-facing outcome>
58
+ **Assumptions:** <each marked `verify with: {name}` if unconfirmed>
59
+ **Acceptance criteria:** <testable, numbered>
60
+ **Impacted modules:** <paths, not speculation>
61
+ **Risks:** <business + technical>
62
+ **Open questions for stakeholder:** <blocking decisions only>
63
+ ```
64
+
65
+ ### Incident
66
+
67
+ ```
68
+ **Symptom:** <what users see, not the hypothesis>
69
+ **Reproduction:** <minimal steps or "not reproduced">
70
+ **Minimal reversible change:** <the smallest fix>
71
+ **Deferred verification:** <what was skipped under break-glass>
72
+ **Follow-up commitment:** <PR/ticket for full verification, due date>
73
+ **Incident learning:** <intake signal id, OR `/memory-add incident-learnings` draft ref>
74
+ ```
75
+
76
+ **Memory-write is the final field, not a nice-to-have.** Before the
77
+ mode exits, the agent MUST either emit an intake signal via
78
+ [`memory-access`](memory-access.md) (`scripts/memory_signal.ts`
79
+ append — one line, fire-and-forget) or draft a curated entry with
80
+ [`/memory-add incident-learnings`](../../../src/domains/meta/memory/add/command.md).
81
+ Pattern + consequence + guardrail, redacted. Skipping this field
82
+ means the incident did not produce a learning — log the absence,
83
+ do not pretend verification happened.
84
+
85
+ ### Planner
86
+
87
+ ```
88
+ **Goal:** <target state, one paragraph>
89
+ **Constraints:** <hard limits: time, deps, policy>
90
+ **Option set:** <2-4 options with trade-offs>
91
+ **Recommendation:** <which option + one-line justification>
92
+ **Dependencies:** <what must ship first>
93
+ **Rollback:** <how to revert if it fails>
94
+ ```
95
+
96
+ ## Integration rules
97
+
98
+ - **`ask-when-uncertain`** — any contract field without evidence becomes
99
+ a question, not a guess. The contract does not license fabrication.
100
+ - **`scope-control`** — `Reviewer` mode forbids implementation work.
101
+ `Developer` mode forbids producing review verdicts on own code.
102
+ `PO` mode forbids committing to absent stakeholders' decisions.
103
+ - **`preservation-guard`** — no mode justifies rewriting or removing
104
+ existing skills. Modes *compose* skills, they do not replace them.
105
+ - **`verify-before-complete`** — the final field of every contract is
106
+ an evidence field (Tests, Verdict, Reproduction, Acceptance criteria,
107
+ Deferred verification, Rollback). No mode ships without it.
108
+
109
+ ## When to load a contract
110
+
111
+ - **Explicit**: user invokes a command in the entry-signal column.
112
+ - **Inferred**: first message matches a signal — surface one line
113
+ (`> entering {mode} mode — contract: {fields}`) and continue.
114
+ - **Overridden**: user says "no mode" or invokes `/mode none` — drop
115
+ the frame and fall back to default conversation.
116
+
117
+ ## Structured mode markers
118
+
119
+ Every contract output MUST begin with a one-line HTML comment so
120
+ session captures, log scrapers, and the measurement hook can count
121
+ contract-conformant outputs per mode:
122
+
123
+ ```
124
+ <!-- role-mode: developer | contract: goal,plan,changes,tests,open-questions -->
125
+ ```
126
+
127
+ The marker is:
128
+
129
+ - **Invisible** in rendered markdown — no UI noise.
130
+ - **Greppable** with a stable prefix (`role-mode:`).
131
+ - **Self-describing** — `contract:` lists the fields in kebab-case and
132
+ in the order they must appear, so a scraper can verify conformance
133
+ without hardcoding the mode→contract map.
134
+
135
+ Reserved values for `role-mode`:
136
+
137
+ - `developer` · `reviewer` · `tester` · `po` · `incident` · `planner`
138
+
139
+ Any other value is treated as non-conformant. A reply with no marker
140
+ counts as the default "no-mode" conversation and does not feed the
141
+ mode statistics.
142
+
143
+ ## Personas (advisory pairings)
144
+
145
+ Modes own the **workflow closing contract**. Personas own the
146
+ **voice** a skill brings to the work. They compose: a skill invoked
147
+ inside a mode can cite one or more personas to shape *how* it
148
+ reviews, reasons, or pushes back — without changing the mode's
149
+ output contract.
150
+
151
+ This table is **advisory**, not enforcing. A skill may cite any
152
+ persona inside any mode; the mapping below is just the most common
153
+ fit. See [`../../personas/README.md`](../../personas/README.md) for
154
+ the persona catalog and schema.
155
+
156
+ | Mode | Typical persona companions | Why |
157
+ |---|---|---|
158
+ | **Developer** | `developer`, `ai-agent` | Implementation voice + automation-readiness check on the plan |
159
+ | **Reviewer** | `critical-challenger`, `senior-engineer`, `qa` | Fake-clarity hunt, architectural lock-in, coverage gaps |
160
+ | **Tester** | `qa`, `developer` | Testability lens + implementation-reality sanity check |
161
+ | **PO** | `product-owner`, `stakeholder`, `critical-challenger` | Outcome/AC, business fit, challenge hidden assumptions |
162
+ | **Incident** | `senior-engineer`, `developer` | Smallest reversible change + long-term risk on the hotfix |
163
+ | **Planner** | `senior-engineer`, `stakeholder`, `critical-challenger` | Architecture impact, business framing, option-set honesty |
164
+
165
+ ### Invocation
166
+
167
+ Skills cite personas in frontmatter:
168
+
169
+ ```yaml
170
+ ---
171
+ name: requesting-code-review
172
+ personas: [critical-challenger]
173
+ ---
174
+ ```
175
+
176
+ Commands accept a CLI-style override that wins over the skill default:
177
+
178
+ ```
179
+ /refine-ticket --personas=product-owner,senior-engineer,+qa
180
+ ```
181
+
182
+ Prefix `+` adds a persona to the default cast; prefix `-` removes one.
183
+ Omitting `--personas` uses the skill's documented default.
184
+
185
+ ### Conflict resolution
186
+
187
+ If the active mode forbids an action and a persona would push for
188
+ that action (e.g. Reviewer mode + `developer` persona suggesting an
189
+ implementation fix), the agent surfaces a numbered-options prompt per
190
+ [`agent-interaction-and-decision-quality.md`](agent-interaction-and-decision-quality.md) —
191
+ never silently switches mode, never silently drops the persona
192
+ finding. See the Q4 rule in `road-to-personas.md`.
193
+
194
+ ## Anti-patterns
195
+
196
+ - **Do NOT** mix two contracts in one reply. If the task shifts
197
+ (review → fix), close the current contract first with its evidence
198
+ field, then enter the next mode.
199
+ - **Do NOT** invent fields the contract does not list. The skeleton
200
+ is the maximum surface, not the minimum.
201
+ - **Do NOT** hand-wave the final evidence field ("tests should pass").
202
+ Run the verification or mark it as deferred with a follow-up commit.
203
+ - **Do NOT** treat the default-skills list as mandatory. The skills
204
+ are pre-loaded; the contract decides which get invoked.
205
+
206
+ ## See also
207
+
208
+ - [`output-patterns.md`](output-patterns.md) — generic output conventions modes inherit
209
+ - [`agent-interaction-and-decision-quality.md`](agent-interaction-and-decision-quality.md) — how modes interact with the numbered-options protocol
@@ -0,0 +1,89 @@
1
+ # Role Mode Router
2
+
3
+ Maps common entry signals to the correct role mode defined in
4
+ [`role-contracts`](role-contracts.md). The router is advisory —
5
+ it proposes a mode, the user can veto with `/mode none`.
6
+
7
+ ## Entry signal → mode
8
+
9
+ | Signal pattern | Inferred mode |
10
+ |---|---|
11
+ | "implement X", "add feature", `/jira-ticket`, `/bug-fix` | `developer` |
12
+ | `/review-changes`, `/judge`, "review this PR", PR open on active branch | `reviewer` |
13
+ | "add tests", "why does X fail", test output pasted in context | `tester` |
14
+ | "I want a feature", `/feature-explore`, `/feature-plan`, "what should it do" | `po` |
15
+ | "production is down", `break-glass: true`, hotfix branch, live incident framing | `incident` |
16
+ | "what's the strategy", `/feature-roadmap`, multi-step work with unclear order | `planner` |
17
+
18
+ The signals are **non-exclusive**. When two patterns match, prefer the
19
+ narrower one (`incident` > `developer`; `reviewer` > `tester`).
20
+
21
+ ## Surfacing the inferred switch
22
+
23
+ Before doing any work, the agent emits **one line** in the user's
24
+ language (per `language-and-tone`):
25
+
26
+ ```
27
+ > entering {mode} mode — contract: {goal-field} / {constraints-field} / {output-field}
28
+ ```
29
+
30
+ This is the only announcement. Do not narrate the reasoning for the
31
+ mode choice. If the user is silent, proceed; if they reply
32
+ `/mode none` or `/mode <other>`, switch immediately.
33
+
34
+ ## When NOT to infer
35
+
36
+ - `roles.active_role` is already non-empty in `.agent-settings.yml` —
37
+ respect the explicit setting; do not second-guess it.
38
+ - `roles.default_role` is set and matches the inferred mode — still
39
+ surface the announcement (it reassures the user the frame loaded).
40
+ - No signal matches — **do NOT guess**. Stay mode-less and let
41
+ `ask-when-uncertain` handle the scope question.
42
+
43
+ ## Precedence
44
+
45
+ 1. Explicit `/mode <name>` in the current message — wins absolutely.
46
+ 2. `roles.active_role` from `.agent-settings.yml` — sticky within session.
47
+ 3. Router inference from the entry signal table above.
48
+ 4. `roles.default_role` fallback — only when no signal matches.
49
+ 5. No mode — rule `role-mode-adherence` stays inert.
50
+
51
+ ## Veto path
52
+
53
+ ```
54
+ > 1. Switch to {mode-b} — run /mode {mode-b}
55
+ > 2. Stay in {mode-a}
56
+ > 3. Clear mode — run /mode none
57
+ ```
58
+
59
+ The agent MUST use numbered options (per `user-interaction`) and accept
60
+ both the number and the spelled-out slash command.
61
+
62
+ ## Interactions
63
+
64
+ - [`role-contracts`](role-contracts.md) — the contracts this router targets.
65
+ - [`role-mode-adherence`](../../rules/role-mode-adherence.md) — enforces
66
+ the contract once a mode is active.
67
+ - [`ask-when-uncertain`](../../rules/ask-when-uncertain.md) — the
68
+ fallback when no signal matches.
69
+ - [`/mode`](../../../src/domains/meta/mode/command.md) — user-facing override.
70
+
71
+ ## Signal table maintenance
72
+
73
+ The table lives here, not in `role-contracts.md`. Commands and rules
74
+ reference modes by slug only — the routing layer is the single place
75
+ that maps free-form intent to a slug. Add a signal only when:
76
+
77
+ - ≥3 real sessions in `agents/sessions/` have surfaced the same pattern.
78
+ - The pattern does not collide with an existing row (check neighbours).
79
+ - The inferred mode is one of the six — never invent a seventh.
80
+
81
+ Signals captured but not yet promoted live in a scratch list at the
82
+ bottom of this file (delete when promoted).
83
+
84
+ ## Scratch list (candidates)
85
+
86
+ <!-- Add `{signal} → {mode}` lines here; promote to the table above
87
+ only after the criteria in the previous section are met. -->
88
+
89
+ _None yet._