@event4u/agent-config 1.14.0 → 1.16.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 (293) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +3 -3
  3. package/.agent-src/commands/bug-investigate.md +2 -2
  4. package/.agent-src/commands/chat-history-checkpoint.md +3 -3
  5. package/.agent-src/commands/chat-history-clear.md +2 -2
  6. package/.agent-src/commands/chat-history-resume.md +2 -2
  7. package/.agent-src/commands/chat-history.md +3 -3
  8. package/.agent-src/commands/check-current-md.md +44 -33
  9. package/.agent-src/commands/commit-in-chunks.md +43 -23
  10. package/.agent-src/commands/compress.md +34 -2
  11. package/.agent-src/commands/council-design.md +96 -0
  12. package/.agent-src/commands/council-optimize.md +115 -0
  13. package/.agent-src/commands/council-pr.md +123 -0
  14. package/.agent-src/commands/council.md +219 -0
  15. package/.agent-src/commands/create-pr.md +23 -0
  16. package/.agent-src/commands/do-and-judge.md +3 -3
  17. package/.agent-src/commands/do-in-steps.md +4 -4
  18. package/.agent-src/commands/e2e-heal.md +1 -1
  19. package/.agent-src/commands/e2e-plan.md +1 -1
  20. package/.agent-src/commands/feature-dev.md +8 -0
  21. package/.agent-src/commands/feature-explore.md +6 -1
  22. package/.agent-src/commands/feature-plan.md +33 -2
  23. package/.agent-src/commands/feature-refactor.md +5 -0
  24. package/.agent-src/commands/feature-roadmap.md +8 -3
  25. package/.agent-src/commands/feature.md +58 -0
  26. package/.agent-src/commands/fix-ci.md +5 -0
  27. package/.agent-src/commands/fix-portability.md +7 -2
  28. package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
  29. package/.agent-src/commands/fix-pr-comments.md +5 -0
  30. package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
  31. package/.agent-src/commands/fix-references.md +5 -0
  32. package/.agent-src/commands/fix-seeder.md +5 -0
  33. package/.agent-src/commands/fix.md +60 -0
  34. package/.agent-src/commands/jira-ticket.md +1 -1
  35. package/.agent-src/commands/judge.md +1 -1
  36. package/.agent-src/commands/memory-add.md +3 -3
  37. package/.agent-src/commands/memory-full.md +2 -2
  38. package/.agent-src/commands/memory-promote.md +2 -2
  39. package/.agent-src/commands/mode.md +5 -5
  40. package/.agent-src/commands/onboard.md +17 -8
  41. package/.agent-src/commands/optimize-agents.md +6 -1
  42. package/.agent-src/commands/optimize-augmentignore.md +14 -0
  43. package/.agent-src/commands/optimize-rtk-filters.md +5 -0
  44. package/.agent-src/commands/optimize-skills.md +6 -1
  45. package/.agent-src/commands/optimize.md +54 -0
  46. package/.agent-src/commands/propose-memory.md +2 -2
  47. package/.agent-src/commands/refine-ticket.md +9 -7
  48. package/.agent-src/commands/review-changes.md +61 -9
  49. package/.agent-src/commands/review-routing.md +1 -1
  50. package/.agent-src/commands/roadmap-create.md +42 -4
  51. package/.agent-src/commands/roadmap-execute.md +9 -7
  52. package/.agent-src/commands/set-cost-profile.md +11 -3
  53. package/.agent-src/commands/sync-agent-settings.md +11 -2
  54. package/.agent-src/commands/tests-create.md +1 -1
  55. package/.agent-src/commands/tests-execute.md +2 -3
  56. package/.agent-src/commands/upstream-contribute.md +1 -1
  57. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  58. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  59. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  60. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  61. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  62. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  63. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  64. package/.agent-src/personas/README.md +1 -1
  65. package/.agent-src/rules/agent-authority.md +24 -0
  66. package/.agent-src/rules/architecture.md +1 -1
  67. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  68. package/.agent-src/rules/artifact-engagement-recording.md +2 -2
  69. package/.agent-src/rules/ask-when-uncertain.md +1 -1
  70. package/.agent-src/rules/augment-portability.md +56 -37
  71. package/.agent-src/rules/autonomous-execution.md +78 -114
  72. package/.agent-src/rules/capture-learnings.md +1 -1
  73. package/.agent-src/rules/chat-history-cadence.md +109 -0
  74. package/.agent-src/rules/chat-history-ownership.md +123 -0
  75. package/.agent-src/rules/chat-history-visibility.md +96 -0
  76. package/.agent-src/rules/cli-output-handling.md +1 -1
  77. package/.agent-src/rules/{command-suggestion.md → command-suggestion-policy.md} +10 -9
  78. package/.agent-src/rules/commit-conventions.md +1 -1
  79. package/.agent-src/rules/commit-policy.md +43 -61
  80. package/.agent-src/rules/context-hygiene.md +3 -3
  81. package/.agent-src/rules/direct-answers.md +2 -2
  82. package/.agent-src/rules/docs-sync.md +1 -1
  83. package/.agent-src/rules/e2e-testing.md +1 -1
  84. package/.agent-src/rules/guidelines.md +4 -4
  85. package/.agent-src/rules/improve-before-implement.md +2 -2
  86. package/.agent-src/rules/language-and-tone.md +41 -96
  87. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  88. package/.agent-src/rules/model-recommendation.md +4 -4
  89. package/.agent-src/rules/no-cheap-questions.md +89 -0
  90. package/.agent-src/rules/non-destructive-by-default.md +25 -59
  91. package/.agent-src/rules/onboarding-gate.md +5 -5
  92. package/.agent-src/rules/review-routing-awareness.md +9 -9
  93. package/.agent-src/rules/roadmap-progress-sync.md +132 -80
  94. package/.agent-src/rules/role-mode-adherence.md +3 -3
  95. package/.agent-src/rules/scope-control.md +65 -46
  96. package/.agent-src/rules/security-sensitive-stop.md +2 -2
  97. package/.agent-src/rules/size-enforcement.md +3 -2
  98. package/.agent-src/rules/think-before-action.md +5 -5
  99. package/.agent-src/rules/token-efficiency.md +4 -4
  100. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
  101. package/.agent-src/rules/user-interaction.md +31 -7
  102. package/.agent-src/rules/verify-before-complete.md +12 -67
  103. package/.agent-src/scripts/update_roadmap_progress.py +65 -8
  104. package/.agent-src/skills/ai-council/SKILL.md +333 -0
  105. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  106. package/.agent-src/skills/blade-ui/SKILL.md +30 -11
  107. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  108. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  109. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  110. package/.agent-src/skills/command-writing/SKILL.md +16 -5
  111. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -1
  112. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  113. package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
  114. package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
  115. package/.agent-src/skills/fe-design/SKILL.md +20 -15
  116. package/.agent-src/skills/file-editor/SKILL.md +9 -0
  117. package/.agent-src/skills/flux/SKILL.md +1 -1
  118. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  119. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  120. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  121. package/.agent-src/skills/livewire/SKILL.md +27 -8
  122. package/.agent-src/skills/override-management/SKILL.md +2 -2
  123. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  124. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  125. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  126. package/.agent-src/skills/readme-writing/SKILL.md +1 -1
  127. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
  128. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
  129. package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
  130. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  131. package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
  132. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  133. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  134. package/.agent-src/skills/skill-writing/SKILL.md +6 -6
  135. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  136. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -1
  137. package/.agent-src/skills/upstream-contribute/SKILL.md +3 -3
  138. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  139. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +2 -2
  140. package/.agent-src/templates/agent-settings.md +9 -9
  141. package/.agent-src/templates/contexts/auth-model.md +1 -1
  142. package/.agent-src/templates/roadmaps.md +9 -8
  143. package/.agent-src/templates/scripts/README.md +2 -2
  144. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  145. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  146. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  147. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  148. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  149. package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
  150. package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
  151. package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
  152. package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
  153. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
  154. package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
  155. package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
  156. package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
  157. package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
  158. package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
  159. package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
  160. package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
  161. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
  162. package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
  163. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
  164. package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
  165. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
  166. package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
  167. package/.claude-plugin/marketplace.json +10 -2
  168. package/AGENTS.md +16 -12
  169. package/CHANGELOG.md +206 -9
  170. package/README.md +51 -52
  171. package/config/agent-settings.template.yml +58 -1
  172. package/config/gitignore-block.txt +3 -0
  173. package/docs/MIGRATION.md +122 -0
  174. package/docs/architecture.md +83 -34
  175. package/docs/catalog.md +331 -0
  176. package/docs/contracts/STABILITY.md +134 -0
  177. package/docs/contracts/adr-chat-history-split.md +132 -0
  178. package/docs/contracts/adr-command-suggestion.md +146 -0
  179. package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
  180. package/docs/contracts/adr-product-ui-track.md +384 -0
  181. package/docs/contracts/adr-prompt-driven-execution.md +187 -0
  182. package/docs/contracts/agent-memory-contract.md +149 -0
  183. package/docs/contracts/artifact-engagement-flow.md +262 -0
  184. package/docs/contracts/command-clusters.md +126 -0
  185. package/docs/contracts/command-suggestion-flow.md +148 -0
  186. package/docs/contracts/implement-ticket-flow.md +628 -0
  187. package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
  188. package/docs/contracts/linear-ai-three-layers.md +131 -0
  189. package/docs/contracts/load-context-schema.md +186 -0
  190. package/docs/contracts/rule-interactions.md +107 -0
  191. package/docs/contracts/rule-interactions.yml +238 -0
  192. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  193. package/docs/contracts/ui-stack-extension.md +236 -0
  194. package/docs/contracts/ui-track-flow.md +338 -0
  195. package/docs/customization.md +14 -0
  196. package/docs/end-to-end-walkthroughs.md +165 -0
  197. package/docs/getting-started.md +27 -9
  198. package/docs/github-topics.md +12 -3
  199. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  200. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  201. package/docs/guidelines/php/git.md +164 -0
  202. package/docs/installation.md +42 -6
  203. package/docs/migrations/commands-1.15.0.md +112 -0
  204. package/docs/showcase.md +9 -4
  205. package/docs/skills-catalog.md +14 -8
  206. package/docs/ui-track-mental-model.md +121 -0
  207. package/llms.txt +13 -7
  208. package/package.json +1 -1
  209. package/scripts/agent-config +23 -0
  210. package/scripts/ai_council/__init__.py +39 -0
  211. package/scripts/ai_council/_default_prices.py +41 -0
  212. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  213. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  214. package/scripts/ai_council/budget_guard.py +172 -0
  215. package/scripts/ai_council/bundler.py +261 -0
  216. package/scripts/ai_council/clients.py +381 -0
  217. package/scripts/ai_council/modes.py +127 -0
  218. package/scripts/ai_council/orchestrator.py +350 -0
  219. package/scripts/ai_council/pricing.py +213 -0
  220. package/scripts/ai_council/project_context.py +159 -0
  221. package/scripts/ai_council/prompts.py +232 -0
  222. package/scripts/ai_council/session.py +144 -0
  223. package/scripts/build_linear_digest.py +4 -4
  224. package/scripts/check_always_budget.py +126 -0
  225. package/scripts/check_augmentignore.py +69 -0
  226. package/scripts/check_command_count_messaging.py +120 -0
  227. package/scripts/check_portability.py +57 -0
  228. package/scripts/check_public_catalog_links.py +122 -0
  229. package/scripts/check_public_links.py +185 -0
  230. package/scripts/check_references.py +5 -1
  231. package/scripts/check_roadmap_trackable.py +111 -0
  232. package/scripts/command_suggester/cooldown.py +1 -1
  233. package/scripts/generate_index.py +266 -0
  234. package/scripts/install_anthropic_key.sh +5 -0
  235. package/scripts/install_openai_key.sh +106 -0
  236. package/scripts/lint_load_context.py +163 -0
  237. package/scripts/lint_no_new_atomic_commands.py +179 -0
  238. package/scripts/lint_rule_interactions.py +149 -0
  239. package/scripts/memory_lookup.py +1 -1
  240. package/scripts/release.py +297 -64
  241. package/scripts/schemas/command.schema.json +20 -0
  242. package/scripts/schemas/rule.schema.json +10 -0
  243. package/scripts/skill_linter.py +26 -4
  244. package/scripts/sync_agent_settings.py +1 -1
  245. package/scripts/update_counts.py +19 -4
  246. package/scripts/update_prices.py +124 -0
  247. package/.agent-src/guidelines/php/git.md +0 -96
  248. package/.agent-src/rules/chat-history.md +0 -200
  249. /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
  250. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  251. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  252. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  253. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  254. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  255. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  256. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  257. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  258. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  259. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  260. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  261. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  262. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  263. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  264. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  265. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  266. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  267. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  268. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  269. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  270. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  271. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  272. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  273. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  274. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  275. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  276. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  277. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  278. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  279. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  280. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  281. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  282. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  283. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  284. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  285. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  286. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  287. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  288. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  289. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  290. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  291. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  292. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  293. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -1,17 +1,19 @@
1
1
  ---
2
2
  type: "always"
3
- description: "Agent is never destructive and never endangers production systems — Hard Floor that always asks for production-trunk merges, deploys, pushes, prod data/infra changes, whimsical bulk deletions, and commits containing bulk deletions or infra changes; no autonomy setting, roadmap step, or standing instruction can bypass it"
3
+ description: "Agent is never destructive — Hard Floor always asks for prod-trunk merges, deploys, pushes, prod data/infra, bulk deletions, and bulk-deletion/infra commits; no autonomy or roadmap bypass"
4
4
  alwaysApply: true
5
5
  source: package
6
+ load_context:
7
+ - .agent-src.uncompressed/contexts/authority/destructive-mechanics.md
6
8
  ---
7
9
 
8
10
  # Non-Destructive by Default
9
11
 
10
- Agent is **never** destructive and **never** endangers user work or
11
- production systems. Universal safety floor — applies in every mode,
12
- every conversation, every turn. Autonomy settings, "just keep going"
13
- directives, roadmap authorizations, and standing permissions narrow
14
- other rules; **none lift this one**.
12
+ The agent is **never** destructive and **never** endangers user work
13
+ or production systems. This is the universal safety floor — it applies
14
+ in every mode, every conversation, every turn. Autonomy settings, "just
15
+ keep going" directives, roadmap authorizations, and standing
16
+ permissions narrow other rules; **none of them lift this one**.
15
17
 
16
18
  ## The Iron Law
17
19
 
@@ -23,8 +25,8 @@ NO "JUST KEEP GOING" CAN BYPASS IT.
23
25
 
24
26
  Triggers below require explicit user confirmation **on this turn** —
25
27
  not from a previous turn, not from a roadmap, not from a standing
26
- autonomy directive (anchor list of recognized phrases:
27
- [`autonomous-execution`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)):
28
+ autonomy directive (see [`autonomous-execution`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)
29
+ for the anchor list of recognized phrases):
28
30
 
29
31
  | Trigger | Examples |
30
32
  |---|---|
@@ -32,7 +34,7 @@ autonomy directive (anchor list of recognized phrases:
32
34
  | **Deploy / release** | `terraform apply` on prod, `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment |
33
35
  | **Push to remote** | any `git push` (also covered by [`scope-control`](scope-control.md), restated so the floor never weakens) |
34
36
  | **Production data / infra** | prod DB writes or migrations, prod config, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline |
35
- | **Whimsical or unscoped bulk deletion** | `rm -rf <dir>`, `git rm -r`, glob deletions, `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work — when **not required by the current task**. Task-aligned bulk deletions are allowed during WIP — see below. |
37
+ | **Whimsical or unscoped bulk deletion** | `rm -rf <dir>`, `git rm -r`, glob deletions, `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work — when the deletions are **not required by the current task**. Task-aligned bulk deletions are allowed during WIP — see below. |
36
38
  | **Commit containing bulk deletions or infra changes** | a commit whose diff removes a directory, deletes ≥5 unrelated files, or touches Terraform / Pulumi / k8s manifests / Ansible / cloud-config — surface the diff and confirm even when [`commit-policy`](commit-policy.md) otherwise authorizes the commit |
37
39
 
38
40
  Standing "just keep going" + next step crosses the floor → STOP,
@@ -51,63 +53,27 @@ of truth makes it reversible. Lives in
51
53
  ## Bulk deletions during WIP — allowed if task-connected
52
54
 
53
55
  Deletions inside an **active, user-stated task** are allowed in the
54
- working tree, **even multiple files or multiple folders**. Floor
55
- moves to the **commit** (row 6 above), not the in-progress edit.
56
-
57
- **Allowed during WIP (no floor on the edit):**
58
-
59
- - A roadmap step or current task explicitly names files / folders to remove
60
- - Refactor naturally drops deprecated code the user already agreed is dead
61
- - Cleanup of generated artifacts — `node_modules/`, `dist/`, `.next/`,
62
- build caches, `vendor/` reinstall — never source code
63
- - Single-file edits, single-class refactors, deleting **one** file the
64
- user just named
65
- - Renames and moves (technically delete + add)
66
-
67
- **Floor fires on the edit when the deletion is:**
68
-
69
- - Whimsical — "while I was in there", drive-by cleanup not part of the task
70
- - Unnamed scope — "delete all the old tests" without a list, glob
71
- across unrelated files, "clean up the legacy folder" with no inventory
72
- - ≥5 unrelated files in one operation, outside current task scope
73
- - Content destruction — `DROP TABLE`, `TRUNCATE`, `git reset --hard`
74
- past unpushed work, database wipes (destroys *content*, not just tree)
75
-
76
- Ambiguous → floor wins. Ask.
77
-
78
- **The commit of task-aligned bulk deletions still needs its own ask.**
79
- A roadmap or task authorizes the *edit*; only the user-this-turn
80
- authorizes the *commit* (row 6). Surface the diff (paths + counts), get
81
- confirmation, then commit.
56
+ working tree, **even multiple files or multiple folders** — the Hard
57
+ Floor moves to the **commit** (row 6 above), not the in-progress edit.
58
+ Whimsical / drive-by / unnamed-scope deletions still trip the floor on
59
+ the edit. Full allowed/forbidden lists in
60
+ [`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
61
+ § Bulk deletions during WIP.
82
62
 
83
63
  ## Failure modes
84
64
 
85
- - Treating a standing autonomy directive as cover for a Hard-Floor
86
- action. Standing autonomy never lifts the floor; merging to `main`,
87
- deploying, pushing, prod-data edits, or whimsical `rm -rf <dir>`
88
- always ask.
89
- - Reading a roadmap step that says "deploy to staging" or
90
- "merge into main" as authorization. Roadmap can sequence work;
91
- only the user-this-turn authorizes the floor crossing.
92
- - Refusing to delete files the user already named because "the floor
93
- fires on `rm`". It does not — task-aligned WIP deletions are
94
- allowed, even multi-folder. Floor fires when the deletion is
95
- whimsical, unscoped, or about to be committed.
96
- - Committing a diff that removes a directory, deletes ≥5 unrelated
97
- files, or touches Terraform / k8s manifests / Ansible without
98
- surfacing the diff first — even when [`commit-policy`](commit-policy.md)
99
- otherwise authorizes commits (e.g. `/commit-in-chunks`, roadmap
100
- pre-scan, an explicit "commit this now"). Bulk-deletion / infra
101
- commits need their own ask, every time.
102
- - Reading a roadmap step listing files to delete as authorization to
103
- *commit* the deletion. Step authorizes the *edit*; the commit is
104
- row 6 of the Hard Floor and needs its own confirmation.
65
+ The full failure-mode catalog (autonomy-as-cover, roadmap-as-authorization,
66
+ refusing-named-deletions, commit-without-diff-surface,
67
+ roadmap-step-≠-commit-authorization) lives in
68
+ [`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
69
+ § Failure modes. Reach for it when a Hard-Floor situation feels
70
+ ambiguous; the rule itself stays focused on the trigger table.
105
71
 
106
72
  ## Cloud Behavior
107
73
 
108
74
  The Hard Floor applies on every surface, including Claude.ai Web,
109
- Skills API, and any cloud agent. No "cloud override" — the floor
110
- predates and outranks any platform-specific autonomy default.
75
+ Skills API, and any cloud agent. There is no "cloud override" — the
76
+ floor predates and outranks any platform-specific autonomy default.
111
77
 
112
78
  ## See also
113
79
 
@@ -1,7 +1,7 @@
1
1
  ---
2
- type: "always"
3
- description: "First-run gatewhen onboarding.onboarded is false in .agent-settings.yml, prompt the user to run /onboard before anything else"
4
- alwaysApply: true
2
+ type: "auto"
3
+ description: "First turn of a conversation on a project check onboarding.onboarded in .agent-settings.yml; when false, prompt the user to run /onboard before executing any other request"
4
+ alwaysApply: false
5
5
  source: package
6
6
  ---
7
7
 
@@ -73,7 +73,7 @@ gate. This protects projects that were set up before this rule shipped.
73
73
  conversation, max.
74
74
  - Replace normal settings edits. Mid-life changes are ad-hoc (edit the
75
75
  file directly or ask the agent, which follows
76
- [`layered-settings`](../guidelines/agent-infra/layered-settings.md#section-aware-merge-rules));
76
+ [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules));
77
77
  this rule is a one-time gate.
78
78
  - Run on every agent turn. First turn only.
79
79
 
@@ -89,6 +89,6 @@ gate. This protects projects that were set up before this rule shipped.
89
89
  ## See also
90
90
 
91
91
  - [`/onboard`](../commands/onboard.md) — the command this gate invokes
92
- - [`layered-settings`](../guidelines/agent-infra/layered-settings.md) — merge rules for mid-life edits
92
+ - [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md) — merge rules for mid-life edits
93
93
  - [`agent-settings` template](../templates/agent-settings.md) — `onboarding.onboarded` reference
94
94
  - [`rule-type-governance`](rule-type-governance.md) — why this is `always`
@@ -37,8 +37,8 @@ Look, in order, for:
37
37
  - `.github/historical-bug-patterns.yml` (or
38
38
  `agents/historical-bug-patterns.yml`)
39
39
 
40
- If neither exists, fall back to engineering-memory via
41
- [`memory-access`](../guidelines/agent-infra/memory-access.md):
40
+ If neither file exists, fall back to the engineering-memory layer via
41
+ [`memory-access`](../../docs/guidelines/agent-infra/memory-access.md):
42
42
 
43
43
  ```python
44
44
  from scripts.memory_lookup import retrieve
@@ -50,11 +50,11 @@ extra = retrieve(
50
50
  ```
51
51
 
52
52
  Curated memory (`agents/memory/ownership.yml`,
53
- `agents/memory/historical-patterns.yml`) shares the schema with the
54
- project-local YAMLs and is merged into the routing output. If both
55
- memory and project YAMLs are absent, skip this rule and rely on
56
- [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do not invent
57
- owners or patterns** from context.
53
+ `agents/memory/historical-patterns.yml`) carries the same schema as the
54
+ project-local YAMLs and is merged into the routing output alongside
55
+ them. If both memory and project YAMLs are absent, skip this rule and
56
+ rely on [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do
57
+ not invent owners or patterns** from context.
58
58
 
59
59
  ### 2. Match the diff
60
60
 
@@ -66,7 +66,7 @@ For every changed file, collect:
66
66
  mode and the minimum control or test the project expects.
67
67
 
68
68
  Matching uses glob patterns (see
69
- [`review-routing-data-format`](../guidelines/review-routing-data-format.md)
69
+ [`review-routing-data-format`](../../docs/guidelines/agent-infra/review-routing-data-format.md)
70
70
  for the schema).
71
71
 
72
72
  ### 3. Surface findings
@@ -117,7 +117,7 @@ When producing a review plan, include:
117
117
 
118
118
  - [`reviewer-awareness`](reviewer-awareness.md) — formatting reviewer
119
119
  suggestions.
120
- - [`review-routing-data-format`](../guidelines/review-routing-data-format.md)
120
+ - [`review-routing-data-format`](../../docs/guidelines/agent-infra/review-routing-data-format.md)
121
121
  — YAML schemas for ownership-map and historical-bug-patterns.
122
122
  - [`review-routing`](../skills/review-routing/SKILL.md) — the skill
123
123
  that produces the merged routing report.
@@ -1,13 +1,16 @@
1
1
  ---
2
2
  type: "auto"
3
- description: "Editing checkboxes in agents/roadmaps/*.md — [x], [~], [-], or add/rename/remove phases — must regenerate the roadmap dashboard in the SAME response; a roadmap that hits 0 open items must also be archived in the SAME response"
3
+ description: "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
4
  alwaysApply: false
5
5
  source: package
6
6
  ---
7
7
 
8
+ <!-- cloud_safe: degrade -->
9
+ <!-- Authoring discipline applies in cloud; local script + regen are no-ops there. -->
10
+
8
11
  # Roadmap Progress Sync
9
12
 
10
- ## Iron Law
13
+ ## Iron Law — dashboard sync
11
14
 
12
15
  ```
13
16
  ANY ROADMAP TOUCH → REGENERATE THE DASHBOARD, SAME RESPONSE.
@@ -15,21 +18,75 @@ NO EXCEPTIONS. NO "I'LL DO IT AT THE END". NO BATCHING ACROSS TURNS.
15
18
  A ROADMAP NOT IN THE DASHBOARD IS A RULE VIOLATION, NOT AN OVERSIGHT.
16
19
  ```
17
20
 
18
- **Roadmap touch =** create file, rename, delete, move between
19
- `roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove phase,
20
- **OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
21
+ **Roadmap touch =** create the file, rename it, delete it, move it
22
+ between `roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove a
23
+ phase, **OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
24
+
25
+ `agents/roadmaps-progress.md` is the read-only dashboard. Every
26
+ unsynced edit makes it lie to the next reader. Created a roadmap
27
+ without regenerating? The dashboard claims it does not exist. Marked
28
+ 8 steps `[x]` and forgot the regen? The dashboard says 0 done.
21
29
 
22
- `agents/roadmaps-progress.md` is read-only dashboard. Every unsynced
23
- edit lies to next reader. Created roadmap, no regen → dashboard
24
- claims it does not exist. Marked 8 steps `[x]`, forgot regen →
25
- dashboard says 0 done.
30
+ ## Iron Law every active roadmap is trackable
26
31
 
27
- **Completion = archival, same response.** Edit takes roadmap to
28
- `count_open == 0` (every item `[x]`, `[~]`, or `[-]`) → `git mv` to
29
- `agents/roadmaps/archive/` (or `skipped/` if no `[x]` at all)
30
- **before** regen. 100%-complete roadmap left in `agents/roadmaps/`
31
- is rule violation. See `roadmap-management` skill for archive vs
32
- skipped table.
32
+ ```
33
+ EVERY ACTIVE ROADMAP MUST CONTAIN AT LEAST ONE TRACKABLE CHECKBOX
34
+ (`- [ ]`) PER NON-INTRO PHASE. ROADMAPS WITHOUT EXECUTABLE STEPS
35
+ EITHER GET A CHECKLIST OR THE `status: draft` FLAG.
36
+ CI-ENFORCED: `scripts/check_roadmap_trackable.py` (CANNOT BE DEFERRED).
37
+ ```
38
+
39
+ **Active roadmap =** any file in `agents/roadmaps/` (root, not
40
+ `archive/` or `skipped/`) without `status: draft` frontmatter.
41
+
42
+ **Trackable checkbox =** an actionable `- [ ]` line under a `## Phase N`
43
+ or `### Phase N` heading (numeric `Phase 1`, roman `Phase II`, or
44
+ letter-track `Phase A1` — matched by the dashboard's `PHASE_RE`).
45
+ Tables of decisions, ICE matrices, ADR captures, and "block
46
+ sequencing" tables are valid **rationale**, but they do not satisfy
47
+ this rule on their own — they must be paired with at least one
48
+ `## Phase N` section whose checkboxes execute the decision.
49
+ Headings such as `## Phase steps`, `### Sequencing — Phase 1 …`,
50
+ `### P0 #1 — …`, or `## Block A` do **not** count — only the
51
+ canonical `Phase <id>` form parsed by the dashboard.
52
+
53
+ **CI backstop.** `scripts/check_roadmap_trackable.py` (package-shipped,
54
+ wire into the consumer's pre-commit / pre-push / Actions gate) fails
55
+ when an active roadmap has zero canonical `Phase` headings or when
56
+ any parsed phase has zero checkboxes. Last line of defence — real-time
57
+ authoring still flips checkboxes and regenerates the dashboard the
58
+ same response.
59
+
60
+ ## Status — binary `ready` (default) vs `draft`
61
+
62
+ ```yaml
63
+ ---
64
+ status: draft # hidden from the dashboard until flipped
65
+ ---
66
+ ```
67
+
68
+ Two values, no synonyms. Anything else — no frontmatter at all,
69
+ `status: ready`, an unknown value — counts as **ready** and lands
70
+ in the dashboard.
71
+
72
+ - **Ready** is the implicit default. New roadmaps are created
73
+ ready unless the user explicitly says draft. Ready roadmaps are
74
+ listed in the dashboard, count towards open/done totals, and
75
+ trip the "completed but not archived" warning when they close.
76
+ - **Draft** hides the file from the dashboard entirely (not
77
+ counted, not listed). Use it while the roadmap is still being
78
+ authored, while waiting for upstream decisions, or as a
79
+ capture-only synthesis that has not yet been promoted to
80
+ executable phases. Flip to ready (or remove the field) the
81
+ moment the roadmap is ready to track.
82
+
83
+ **Completion = archival, same response.** When the edit takes a
84
+ roadmap to `count_open == 0` (every item is `[x]`, `[~]`, or `[-]`),
85
+ `git mv` it into `agents/roadmaps/archive/` (or `skipped/` if no `[x]`
86
+ at all) **before** regenerating the dashboard. A 100%-complete
87
+ roadmap left under `agents/roadmaps/` is a rule violation, not an
88
+ optional cleanup. See `roadmap-management` skill for the archive vs
89
+ skipped decision table.
33
90
 
34
91
  ## How to regenerate
35
92
 
@@ -37,30 +94,32 @@ skipped table.
37
94
  ./agent-config roadmap:progress
38
95
  ```
39
96
 
40
- `./agent-config` wrapper sits in project root, written by installer,
41
- delegates to master CLI in `node_modules/@event4u/agent-config/` or
42
- `vendor/event4u/agent-config/`. No global tooling.
97
+ The `./agent-config` wrapper is written into the project root by the
98
+ package installer and delegates to the master CLI inside
99
+ `node_modules/@event4u/agent-config/` or `vendor/event4u/agent-config/`.
100
+ No global tooling required.
43
101
 
44
102
  ## Triggers
45
103
 
46
104
  | Edit | Must run, same response |
47
105
  |---|---|
48
- | **Create new roadmap file** | regenerate dashboard |
49
- | **Rename or delete roadmap file** | regenerate dashboard |
106
+ | **Create a new roadmap file** | regenerate dashboard |
107
+ | **Rename or delete a roadmap file** | regenerate dashboard |
50
108
  | Mark step `[x]`, `[~]`, `[-]`, or unmark back to `[ ]` | regenerate dashboard |
51
- | Add, rename, or remove phase | regenerate dashboard |
109
+ | Add, rename, or remove a phase | regenerate dashboard |
52
110
  | **Last `[ ]` flips** — roadmap reaches `count_open == 0` | `git mv` → `archive/` (or `skipped/`) **then** regenerate dashboard |
53
111
  | Move roadmap between `roadmaps/` ↔ `archive/` ↔ `skipped/` | regenerate dashboard |
54
112
 
55
- **Batching:** multiple checkbox edits in one response → **single**
56
- regen at end is enough. One edit closes a roadmap → archive first,
57
- then single regen. Response must not end without it.
113
+ **Batching rule:** if you edit multiple checkboxes in one response, a
114
+ **single** regeneration at the end of that response is enough but
115
+ the response must not end without it. If one of those edits closes a
116
+ roadmap, archive it first, then run the single regen.
58
117
 
59
118
  ## Autonomous execution — checkbox cadence
60
119
 
61
- Autonomous roadmap run (multi-turn, no per-step user prompt) → user
62
- loses progress unless checkboxes flip **as work lands**, not at end.
63
- Iron Law:
120
+ When executing a roadmap autonomously (multi-turn, no per-step user
121
+ prompt), the user loses progress visibility unless checkboxes flip
122
+ **as work lands**, not in a batch at the end. Iron Law:
64
123
 
65
124
  ```
66
125
  EVERY DONE STEP FLIPS [ ] → [x] IN NEXT REPLY THAT ACKNOWLEDGES IT.
@@ -68,73 +127,66 @@ NO "I UPDATE ROADMAP AT END OF PHASE."
68
127
  NO "FOUR STEPS DONE, ONE COMMIT, ONE REGEN."
69
128
  ```
70
129
 
71
- Step counts as done when:
72
-
73
- - Code / docs change for step **written and saved** AND
74
- - Verification cited in step (project CI command, targeted test, lint) **passed
75
- in this response or earlier** — fresh output, not memory.
76
-
77
- Then in **same reply**: flip checkbox, regen dashboard, commit if
78
- commit policy allows.
130
+ Step counts as completed when:
79
131
 
80
- **Forbidden pattern** (canonical failure):
132
+ - Code / docs change for that step has been **written and saved** AND
133
+ - Verification cited in the step (project CI command, targeted test, lint) has
134
+ **passed in this response or an earlier one** — fresh output, not memory.
81
135
 
82
- > Turn 1: Step 1. Turn 2: Step 2. Turn 3: Step 3. Turn 4: Step 4.
83
- > Turn 5: "all done, update roadmap and commit." user spent four
84
- > turns without dashboard movement.
136
+ Then in the **same reply**: flip the checkbox, regenerate the
137
+ dashboard, commit if commit policy allows.
85
138
 
86
- **Required pattern:**
139
+ **Forbidden:** four turns of step work, dashboard flat, single regen at the end.
140
+ **Required:** each turn — implement step, flip `[x]`, regen, commit (if policy allows).
141
+ A reply that lands a verified step without flipping its checkbox is a rule violation.
87
142
 
88
- > Turn 1: Step 1, flip `[x]`, regen, commit.
89
- > Turn 2: Step 2, flip `[x]`, regen, commit.
90
-
91
- Reply that lands verified step without flipping checkbox = rule violation.
92
-
93
- **In-progress marker:** step takes more than one reply → mark `[~]`
94
- moment work starts, regen. User sees row move `[ ]` → `[~]` → `[x]`
95
- instead of silent rows. `[~]` open for `count_open` but moves phase
96
- percentage forward.
143
+ **In-progress marker:** when a step takes more than one reply,
144
+ mark it `[~]` the moment work starts on it and regenerate. The
145
+ user sees one row move from `[ ]` to `[~]` to `[x]` instead of
146
+ silent rows. `[~]` is treated as open for `count_open` but moves
147
+ the phase percentage forward in the dashboard.
97
148
 
98
149
  ## Pre-send self-check — MANDATORY
99
150
 
100
- Before sending any reply that touched `agents/roadmaps/`, silent gate:
151
+ Before sending any reply that touched `agents/roadmaps/`, run this
152
+ silent gate:
101
153
 
102
- 1. Did this turn create, rename, delete, or move a roadmap file? → regen MUST be in reply.
103
- 2. Did this turn flip any checkbox in a roadmap file? → regen MUST be in reply.
104
- 3. Did the regen output (`✅ Wrote agents/roadmaps-progress.md · …`) actually appear this turn? → no run it now before sending.
154
+ 1. Did this turn create, rename, delete, or move a roadmap file? → regen MUST be in the reply.
155
+ 2. Did this turn flip any checkbox in a roadmap file? → regen MUST be in the reply.
156
+ 3. Did the regen output (`✅ Wrote agents/roadmaps-progress.md · …`) actually appear this turn? → if no, run it now before sending.
105
157
  4. **Autonomous roadmap execution gate** — did this turn complete a roadmap step (code saved + verification passed) without flipping its checkbox? → flip `[x]` (or `[~]` if multi-turn) and regen before sending.
158
+ 5. **Trackable-roadmap gate** — did this turn create or substantially edit a roadmap file? → does it now contain at least one `- [ ]` per non-intro phase, **or** carry `status: draft` in frontmatter? → if neither, add the checklist or the draft flag before sending.
106
159
 
107
160
  Any "yes" + no regen run = rule violation. Rerun before sending.
108
161
 
109
- ## Why this is a rule, not a skill tip
162
+ ## Failure modes
110
163
 
111
- `roadmap-management` skill documents command in several places, but
112
- skill body text easy to miss under procedure pressure. Rule collapses
113
- constraint into one line model cannot skip: "checkbox edit
114
- regenerate dashboard same response".
164
+ - **Created the roadmap, marked Phase 1 done across multiple turns,
165
+ never regenerated** dashboard silently lies "this roadmap does
166
+ not exist" to the next reader. Canonical failure of this rule;
167
+ the rule was hardened in response to it.
168
+ - **Regenerated yesterday, edited today, "I'll regen at session
169
+ end"** — session ends from a crash, regen never lands.
170
+ - **Closed a roadmap (last `[ ]` → `[x]`) and regenerated before
171
+ `git mv`** — the closed roadmap reappears in "Open roadmaps".
172
+ - **Edited the dashboard by hand to "fix it quickly"** — next regen
173
+ overwrites the manual edit; no audit trail of why.
174
+ - **Autonomous run, four steps shipped across four turns, dashboard
175
+ flat the whole time, single regen at the end** — user lost
176
+ progress visibility for the entire run. Each completed step must
177
+ flip its checkbox in the reply that ships it.
178
+ - **Decision-only roadmap shipped without checkboxes** — file
179
+ contains decisions / ICE / block-sequencing but zero `- [ ]`,
180
+ dashboard shows `0/0` or omits it. Pair with a `## Phase N`
181
+ section or mark `status: draft` (CI catches this now).
182
+ - **Headings off-canon (`### P0 #N`, `## Block A`, `### Sequencing
183
+ — Phase 1`)** — `PHASE_RE` skips them, roadmap invisible to the
184
+ dashboard. Rename to `## Phase <id>` or mark `status: draft`.
115
185
 
116
186
  ## Do NOT
117
187
 
118
188
  - Do NOT edit `agents/roadmaps-progress.md` by hand — always regenerate.
119
- - Do NOT defer regen to "next commit" or "before push" — same response.
120
- - Do NOT rely on CI (`--check` mode) as first line of defence — CI is last-line, not real-time.
121
- - Do NOT skip regen because "only one checkbox changed" — dashboard aggregates counts and phase percentages that shift on single edits.
122
- - Do NOT leave 100%-complete roadmap in `agents/roadmaps/` "for review" — archive same response, ask user afterwards if needed.
123
- - Do NOT regenerate dashboard before `git mv` when roadmap closes — otherwise it reappears in "Open roadmaps".
124
-
125
- ## Failure modes
126
-
127
- - **Created roadmap, marked Phase 1 done across multiple turns,
128
- never regenerated** — dashboard silently lies "this roadmap does
129
- not exist" to next reader. Canonical failure of this rule; rule
130
- hardened in response to it.
131
- - **Regenerated yesterday, edited today, "regen at session end"** —
132
- session ends from crash, regen never lands.
133
- - **Closed roadmap (last `[ ]` → `[x]`) and regenerated before
134
- `git mv`** — closed roadmap reappears in "Open roadmaps".
135
- - **Edited dashboard by hand to "fix it quickly"** — next regen
136
- overwrites manual edit; no audit trail.
137
- - **Autonomous run, four steps shipped across four turns, dashboard
138
- flat whole time, single regen at end** — user lost progress
139
- visibility for entire run. Each done step must flip checkbox in
140
- reply that ships it.
189
+ - Do NOT defer the regen to "next commit" or "before push" — same response.
190
+ - Do NOT rely on CI (`--check` mode) as the first line of defence — CI is last-line, not real-time.
191
+ - Do NOT skip the regen because "only one checkbox changed" — the dashboard aggregates counts and phase percentages that shift on single edits.
192
+ - Do NOT leave a 100%-complete roadmap in `agents/roadmaps/` "for review" — `git mv` to archive **before** regenerating, otherwise it reappears in "Open roadmaps".
@@ -9,7 +9,7 @@ source: package
9
9
 
10
10
  Auto-activates when `.agent-settings.yml` sets `roles.active_role` to
11
11
  one of the six modes defined in
12
- [`role-contracts`](../guidelines/agent-infra/role-contracts.md):
12
+ [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md):
13
13
  `developer`, `reviewer`, `tester`, `po`, `incident`, `planner`.
14
14
 
15
15
  Read `roles.active_role` from `.agent-settings.yml` at session start.
@@ -42,12 +42,12 @@ When active, every closing output MUST:
42
42
 
43
43
  ## What this rule does NOT do
44
44
 
45
- Infer the mode (Phase-3 router does that). Modify `.agent-settings.yml`
45
+ Infer the mode (Phase-3 router does that). Touch `.agent-settings.yml`
46
46
  (only `/mode` writes). Change the contracts (guideline is source of truth).
47
47
 
48
48
  ## See also
49
49
 
50
- - [`role-contracts`](../guidelines/agent-infra/role-contracts.md)
50
+ - [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md)
51
51
  - [`/mode`](../commands/mode.md)
52
52
  - [`ask-when-uncertain`](ask-when-uncertain.md)
53
53
  - [`scope-control`](scope-control.md)
@@ -3,6 +3,8 @@ type: "always"
3
3
  description: "Scope control — no unsolicited architectural changes, refactors, or library replacements"
4
4
  alwaysApply: true
5
5
  source: package
6
+ load_context:
7
+ - .agent-src.uncompressed/contexts/authority/scope-mechanics.md
6
8
  ---
7
9
 
8
10
  # Scope Control
@@ -20,62 +22,79 @@ source: package
20
22
 
21
23
  The user decides the git shape of the work. Never improvise.
22
24
 
23
- > **Commit specifics:** see [`commit-policy`](commit-policy.md) — narrower
24
- > than the general "no git ops without permission" below (never-ask
25
- > default + roadmap-authorized exception).
25
+ > **Commit specifics:** see the canonical [`commit-policy`](commit-policy.md)
26
+ > rule — narrower than the general "no git ops without permission"
27
+ > below (covers the never-ask-about-committing default and the
28
+ > roadmap-authorized exception).
26
29
 
27
30
  - NEVER commit, push, merge, rebase, or force-push without explicit user permission.
28
- - NEVER create, switch, or delete a branch without explicit user permission.
29
- Includes spike, scratch, throwaway, worktree branches.
30
- - NEVER create, close, reopen, or retarget a pull request without explicit
31
- user permission.
31
+ - NEVER create a new branch, switch to a different branch, or delete a
32
+ branch without explicit user permission. This includes spike, scratch,
33
+ throwaway, and worktree branches.
34
+ - NEVER create, close, reopen, or change the target of a pull request
35
+ without explicit user permission.
32
36
  - NEVER push a tag or create a release without explicit user permission.
33
- - NEVER include version numbers, releases, deprecation dates,
34
- release-tied milestones, or git tags in roadmaps, plans, tickets, or
35
- any planning artifact. Roadmaps plan **work**; releases are a
36
- separate user decision. Never surface "which release" as a numbered
37
- option, ADR field, or roadmap entry. If user wants a release pinned
38
- to a milestone, they say so explicitly.
37
+ - NEVER include version numbers, target releases, deprecation dates,
38
+ release-tied milestones, or git tags inside roadmaps, plans, tickets,
39
+ or any other planning artifact. Roadmaps plan **work**; releases and
40
+ tags are a separate decision the user makes outside the roadmap.
41
+ Never surface "which release should this ship in?" as an option in
42
+ numbered choices, ADRs, or roadmap text. If the user wants a release
43
+ pinned to a milestone, they will say so explicitly.
39
44
  - If a task seems to need a separate branch or PR, STOP and **brief
40
- first, ask second**. The brief MUST cover, in order:
41
- 1. **Why** — what the new branch solves that the current one cannot.
42
- 2. **What** files touched, experiments run, expected duration.
43
- 3. **How it continues** — merge back, cherry-pick, throwaway, PR
44
- target, how the current branch is protected meanwhile.
45
- Then present numbered options with "stay on current branch" as
46
- default. User decides. Do NOT branch first and explain later.
47
-
48
- "Explicit permission" = the user said so this turn or gave a standing
49
- instruction they have not revoked. Earlier permission for another op
50
- does not carry over.
45
+ the user before asking** see
46
+ [`scope-mechanics`](../contexts/authority/scope-mechanics.md)
47
+ § Brief-before-asking for the required Why / What / How sequence.
48
+
49
+ "Explicit permission" means the user said so **in this turn or in a
50
+ standing instruction they have not revoked**. Earlier permission for a
51
+ different operation does not carry over.
51
52
 
52
53
  ## Production, infrastructure, bulk-destructive — Hard Floor
53
54
 
54
- Subset of the above is **never** autonomous and never auto-permitted
55
- by a standing autonomy directive. Canonical rule:
56
- [`non-destructive-by-default`](non-destructive-by-default.md).
57
- Restated so this file remains the single read for git/scope concerns:
55
+ A subset of the operations above is **never** autonomous and never
56
+ auto-permitted by a standing autonomy directive. Canonical rule:
57
+ [`non-destructive-by-default`](non-destructive-by-default.md). The
58
+ trigger list (production-branch merges, deploys / releases, prod
59
+ data / infra, bulk-destructive ops) and the
60
+ "authorization is this turn, not earlier" clarification live in
61
+ [`scope-mechanics`](../contexts/authority/scope-mechanics.md)
62
+ § Production, infrastructure, bulk-destructive.
58
63
 
59
- - **Production-branch merges**`main`, `master`, `prod`, `production`, `release/*`, or any deployment-trunk branch. Always ask, even when the roadmap step says "merge".
60
- - **Deploys / releases** — `terraform apply` / `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment. Always ask.
61
- - **Production data / infrastructure** — prod DB writes / migrations, prod config edits, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline. Always ask.
62
- - **Bulk-destructive ops** — wildcard or directory deletion (`rm -rf <dir>`, `git rm -r`), `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work, mass class / module / migration deletion. Always ask.
64
+ ## Decline = silence no re-asking on the same task
63
65
 
64
- A roadmap step or earlier turn does **not** count as authorization for
65
- these. Authorization is "the user said so on this turn".
66
+ After the user **declines** a proposal (branch switch, PR creation,
67
+ tag/release entry, separate worktree, version pinning in a roadmap),
68
+ do **not** raise the same proposal again on the same task. The decline
69
+ stands until the user reopens the topic themselves.
66
70
 
67
- ## Decline = silence no re-asking on the same task
71
+ Timing and "is this worth asking?" guidance lives in
72
+ [`scope-mechanics`](../contexts/authority/scope-mechanics.md)
73
+ § Decline = silence — context.
74
+
75
+ ## Fenced step — user-set review gates
76
+
77
+ When the user explicitly fences off the next step — *"don't implement
78
+ yet"*, *"plan only"*, *"just write the roadmap, I'll review"*,
79
+ *"review first"*, *"erst Roadmap, ich schau drüber"*, *"nichts
80
+ implementieren"*, *"nur planen"*, *"erstmal nur X, dann ich"* — the
81
+ agent's reply is **the deliverable plus a handoff**, never the
82
+ deliverable plus *"shall we start?"*.
68
83
 
69
- After a declined proposal (branch switch, PR, tag/release entry,
70
- worktree, version pinning in a roadmap), do **not** raise it again on
71
- the same task. Decline stands until user reopens it.
84
+ ```
85
+ USER FENCED OFF EXECUTION DELIVER + HAND BACK.
86
+ NO NUMBERED OPTION OFFERING TO BEGIN WORK.
87
+ NO "READY TO IMPLEMENT?" RE-ASK.
88
+ NO "STARTEN WIR MIT PHASE 1?" PIVOT.
89
+ ```
72
90
 
73
- Right moment to ask at most **once**, only when genuinely useful —
74
- is **before** work starts (writing roadmap, opening ticket), not
75
- mid-execution. During roadmap execution the branch question is
76
- settled; do not resurface it step by step.
91
+ The fence stands until the user reopens the topic themselves, exactly
92
+ like `Decline = silence` above. Permitted follow-up questions on the
93
+ same turn cover **the deliverable** (adjust scope, fix wording, add a
94
+ section), never **its execution**.
77
95
 
78
- A proposal that "might be sensible" is not enough reason to ask.
79
- Default: stay on current branch, no release language. Only ask with
80
- concrete evidence-based reason (e.g. risky migration spike branch).
81
- If in doubt, do not ask.
96
+ For the failure-mode catalog (Option 1 = "start now", re-asking after
97
+ delivery, hand-off-to-execution drift, inferring acceptance from a
98
+ thumbs-up) and the explicit bypass phrases that lift the fence, see
99
+ [`scope-mechanics`](../contexts/authority/scope-mechanics.md)
100
+ § Fenced step.