@event4u/agent-config 1.20.0 → 1.22.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 (268) hide show
  1. package/.agent-src/commands/agents.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +2 -1
  3. package/.agent-src/commands/bug-investigate.md +3 -2
  4. package/.agent-src/commands/challenge-me/vision.md +348 -0
  5. package/.agent-src/commands/challenge-me/with-docs.md +333 -0
  6. package/.agent-src/commands/challenge-me.md +61 -0
  7. package/.agent-src/commands/chat-history/import.md +60 -64
  8. package/.agent-src/commands/compress.md +12 -0
  9. package/.agent-src/commands/context/create.md +2 -2
  10. package/.agent-src/commands/context.md +1 -1
  11. package/.agent-src/commands/copilot-agents.md +1 -1
  12. package/.agent-src/commands/council/default.md +69 -10
  13. package/.agent-src/commands/council.md +1 -1
  14. package/.agent-src/commands/create-pr.md +7 -3
  15. package/.agent-src/commands/e2e-heal.md +1 -1
  16. package/.agent-src/commands/e2e-plan.md +1 -1
  17. package/.agent-src/commands/feature/dev.md +3 -3
  18. package/.agent-src/commands/feature.md +1 -1
  19. package/.agent-src/commands/fix/seeder.md +2 -2
  20. package/.agent-src/commands/fix.md +1 -1
  21. package/.agent-src/commands/grill-me.md +38 -0
  22. package/.agent-src/commands/jira-ticket.md +1 -1
  23. package/.agent-src/commands/judge/steps.md +1 -1
  24. package/.agent-src/commands/judge.md +2 -2
  25. package/.agent-src/commands/memory.md +1 -1
  26. package/.agent-src/commands/mode.md +5 -5
  27. package/.agent-src/commands/module.md +1 -1
  28. package/.agent-src/commands/onboard.md +4 -4
  29. package/.agent-src/commands/optimize/augmentignore.md +1 -1
  30. package/.agent-src/commands/optimize-prompt.md +61 -0
  31. package/.agent-src/commands/optimize.md +1 -1
  32. package/.agent-src/commands/override.md +1 -1
  33. package/.agent-src/commands/review-changes.md +1 -1
  34. package/.agent-src/commands/review-routing.md +1 -1
  35. package/.agent-src/commands/roadmap/ai-council.md +183 -0
  36. package/.agent-src/commands/roadmap/create.md +6 -1
  37. package/.agent-src/commands/roadmap/process-full.md +58 -0
  38. package/.agent-src/commands/roadmap/process-phase.md +69 -0
  39. package/.agent-src/commands/roadmap/process-step.md +57 -0
  40. package/.agent-src/commands/roadmap.md +45 -17
  41. package/.agent-src/commands/set-cost-profile.md +3 -3
  42. package/.agent-src/commands/sync-agent-settings.md +2 -2
  43. package/.agent-src/commands/tests/create.md +2 -2
  44. package/.agent-src/commands/tests.md +1 -1
  45. package/.agent-src/commands/threat-model.md +5 -4
  46. package/.agent-src/contexts/augment-infrastructure.md +1 -1
  47. package/.agent-src/contexts/authority/commit-mechanics.md +14 -1
  48. package/.agent-src/contexts/authority/destructive-mechanics.md +14 -1
  49. package/.agent-src/contexts/authority/scope-mechanics.md +5 -0
  50. package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +76 -0
  51. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +54 -19
  52. package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
  53. package/.agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +93 -0
  54. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +128 -5
  55. package/.agent-src/contexts/execution/autonomy-mechanics.md +44 -0
  56. package/.agent-src/contexts/execution/roadmap-process-loop.md +125 -0
  57. package/.agent-src/contexts/model-recommendations.md +2 -2
  58. package/.agent-src/contexts/override-system.md +1 -1
  59. package/.agent-src/contexts/skills-and-commands.md +1 -1
  60. package/.agent-src/personas/product-owner.md +2 -2
  61. package/.agent-src/personas/qa.md +1 -1
  62. package/.agent-src/rules/agent-authority.md +5 -6
  63. package/.agent-src/rules/agent-docs.md +11 -53
  64. package/.agent-src/rules/analysis-skill-routing.md +10 -40
  65. package/.agent-src/rules/architecture.md +6 -1
  66. package/.agent-src/rules/artifact-drafting-protocol.md +5 -0
  67. package/.agent-src/rules/artifact-engagement-recording.md +23 -59
  68. package/.agent-src/rules/ask-when-uncertain.md +24 -47
  69. package/.agent-src/rules/augment-portability.md +14 -62
  70. package/.agent-src/rules/augment-source-of-truth.md +10 -1
  71. package/.agent-src/rules/autonomous-execution.md +17 -98
  72. package/.agent-src/rules/capture-learnings.md +9 -80
  73. package/.agent-src/rules/cli-output-handling.md +12 -42
  74. package/.agent-src/rules/command-suggestion-policy.md +25 -73
  75. package/.agent-src/rules/commit-conventions.md +9 -58
  76. package/.agent-src/rules/commit-policy.md +16 -47
  77. package/.agent-src/rules/context-hygiene.md +5 -0
  78. package/.agent-src/rules/direct-answers.md +21 -50
  79. package/.agent-src/rules/docker-commands.md +11 -45
  80. package/.agent-src/rules/docs-sync.md +10 -56
  81. package/.agent-src/rules/downstream-changes.md +5 -0
  82. package/.agent-src/rules/e2e-testing.md +9 -44
  83. package/.agent-src/rules/guidelines.md +13 -75
  84. package/.agent-src/rules/improve-before-implement.md +11 -2
  85. package/.agent-src/rules/invite-challenge.md +71 -0
  86. package/.agent-src/rules/language-and-tone.md +41 -106
  87. package/.agent-src/rules/laravel-translations.md +11 -40
  88. package/.agent-src/rules/markdown-safe-codeblocks.md +4 -0
  89. package/.agent-src/rules/minimal-safe-diff.md +4 -0
  90. package/.agent-src/rules/missing-tool-handling.md +4 -0
  91. package/.agent-src/rules/model-recommendation.md +9 -61
  92. package/.agent-src/rules/no-attribution-footers.md +5 -0
  93. package/.agent-src/rules/no-cheap-questions.md +11 -27
  94. package/.agent-src/rules/no-council-references.md +76 -0
  95. package/.agent-src/rules/no-roadmap-references.md +7 -0
  96. package/.agent-src/rules/non-destructive-by-default.md +13 -43
  97. package/.agent-src/rules/onboarding-gate.md +9 -117
  98. package/.agent-src/rules/package-ci-checks.md +10 -37
  99. package/.agent-src/rules/php-coding.md +10 -55
  100. package/.agent-src/rules/preservation-guard.md +9 -0
  101. package/.agent-src/rules/review-routing-awareness.md +9 -97
  102. package/.agent-src/rules/reviewer-awareness.md +8 -83
  103. package/.agent-src/rules/roadmap-progress-sync.md +7 -170
  104. package/.agent-src/rules/role-mode-adherence.md +6 -2
  105. package/.agent-src/rules/rule-type-governance.md +8 -66
  106. package/.agent-src/rules/runtime-safety.md +5 -0
  107. package/.agent-src/rules/scope-control.md +17 -62
  108. package/.agent-src/rules/security-sensitive-stop.md +7 -1
  109. package/.agent-src/rules/size-enforcement.md +6 -1
  110. package/.agent-src/rules/skill-improvement-trigger.md +9 -49
  111. package/.agent-src/rules/skill-quality.md +7 -113
  112. package/.agent-src/rules/slash-command-routing-policy.md +11 -63
  113. package/.agent-src/rules/think-before-action.md +22 -87
  114. package/.agent-src/rules/token-efficiency.md +10 -74
  115. package/.agent-src/rules/token-optimizer-maintenance.md +68 -0
  116. package/.agent-src/rules/tool-safety.md +4 -0
  117. package/.agent-src/rules/ui-audit-gate.md +25 -61
  118. package/.agent-src/rules/upstream-proposal.md +9 -67
  119. package/.agent-src/rules/user-interaction.md +22 -108
  120. package/.agent-src/rules/verify-before-complete.md +1 -1
  121. package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
  122. package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  123. package/.agent-src/skills/ai-council/SKILL.md +197 -8
  124. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  125. package/.agent-src/skills/analysis-skill-router/SKILL.md +3 -3
  126. package/.agent-src/skills/artisan-commands/SKILL.md +2 -2
  127. package/.agent-src/skills/authz-review/SKILL.md +1 -1
  128. package/.agent-src/skills/aws-infrastructure/SKILL.md +5 -5
  129. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +8 -8
  130. package/.agent-src/skills/bug-analyzer/SKILL.md +6 -5
  131. package/.agent-src/skills/code-refactoring/SKILL.md +4 -4
  132. package/.agent-src/skills/code-review/SKILL.md +2 -2
  133. package/.agent-src/skills/command-writing/SKILL.md +11 -0
  134. package/.agent-src/skills/composer-packages/SKILL.md +2 -2
  135. package/.agent-src/skills/context-authoring/SKILL.md +11 -0
  136. package/.agent-src/skills/context-document/SKILL.md +1 -1
  137. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +23 -0
  138. package/.agent-src/skills/copilot-config/SKILL.md +1 -1
  139. package/.agent-src/skills/dependency-upgrade/SKILL.md +2 -2
  140. package/.agent-src/skills/devcontainer/SKILL.md +2 -2
  141. package/.agent-src/skills/developer-like-execution/SKILL.md +1 -1
  142. package/.agent-src/skills/docker/SKILL.md +1 -1
  143. package/.agent-src/skills/dto-creator/SKILL.md +1 -1
  144. package/.agent-src/skills/estimate-ticket/SKILL.md +2 -2
  145. package/.agent-src/skills/fe-design/SKILL.md +4 -4
  146. package/.agent-src/skills/feature-planning/SKILL.md +5 -5
  147. package/.agent-src/skills/funnel-analysis/SKILL.md +1 -1
  148. package/.agent-src/skills/laravel/SKILL.md +1 -1
  149. package/.agent-src/skills/laravel-notifications/SKILL.md +5 -5
  150. package/.agent-src/skills/laravel-pennant/SKILL.md +1 -1
  151. package/.agent-src/skills/laravel-pulse/SKILL.md +4 -4
  152. package/.agent-src/skills/laravel-reverb/SKILL.md +2 -2
  153. package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -1
  154. package/.agent-src/skills/migration-creator/SKILL.md +7 -7
  155. package/.agent-src/skills/multi-tenancy/SKILL.md +8 -8
  156. package/.agent-src/skills/performance-analysis/SKILL.md +3 -3
  157. package/.agent-src/skills/pest-testing/SKILL.md +6 -6
  158. package/.agent-src/skills/php-service/SKILL.md +2 -2
  159. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
  160. package/.agent-src/skills/project-analysis-react/SKILL.md +1 -1
  161. package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
  162. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
  163. package/.agent-src/skills/project-analyzer/SKILL.md +4 -4
  164. package/.agent-src/skills/prompt-optimizer/SKILL.md +108 -0
  165. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  166. package/.agent-src/skills/roadmap-management/SKILL.md +7 -7
  167. package/.agent-src/skills/rule-writing/SKILL.md +33 -0
  168. package/.agent-src/skills/sentry-integration/SKILL.md +1 -1
  169. package/.agent-src/skills/skill-writing/SKILL.md +14 -0
  170. package/.agent-src/skills/systematic-debugging/SKILL.md +22 -2
  171. package/.agent-src/skills/technical-specification/SKILL.md +58 -1
  172. package/.agent-src/skills/terraform/SKILL.md +2 -2
  173. package/.agent-src/skills/terragrunt/SKILL.md +8 -8
  174. package/.agent-src/skills/test-performance/SKILL.md +5 -5
  175. package/.agent-src/skills/threat-modeling/SKILL.md +3 -2
  176. package/.agent-src/skills/token-optimizer/SKILL.md +110 -0
  177. package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  178. package/.agent-src/templates/AGENTS.md +1 -1
  179. package/.agent-src/templates/agent-settings.md +35 -19
  180. package/.agent-src/templates/command.md +17 -1
  181. package/.agent-src/templates/contexts/tenant-boundaries.md +2 -2
  182. package/.agent-src/templates/contexts.md +1 -1
  183. package/.agent-src/templates/copilot-instructions.md +21 -0
  184. package/.agent-src/templates/copilot-review-instructions.md +76 -0
  185. package/.agent-src/templates/features.md +1 -1
  186. package/.agent-src/templates/roadmaps.md +10 -2
  187. package/.agent-src/templates/rule.md +129 -0
  188. package/.agent-src/templates/skill.md +17 -0
  189. package/.claude-plugin/marketplace.json +12 -2
  190. package/AGENTS.md +32 -5
  191. package/CHANGELOG.md +107 -3
  192. package/README.md +22 -21
  193. package/config/agent-settings.template.yml +66 -10
  194. package/config/gitignore-block.txt +7 -0
  195. package/docs/architecture.md +86 -5
  196. package/docs/catalog.md +16 -6
  197. package/docs/contracts/agent-memory-contract.md +1 -1
  198. package/docs/contracts/command-clusters.md +45 -1
  199. package/docs/contracts/context-paths.md +2 -1
  200. package/docs/contracts/file-ownership-matrix.json +354 -500
  201. package/docs/contracts/iron-law-overrides.txt +25 -0
  202. package/docs/contracts/kernel-membership.md +273 -0
  203. package/docs/contracts/load-context-schema.md +26 -11
  204. package/docs/contracts/pilot/agent-authority.md +24 -0
  205. package/docs/contracts/pilot/direct-answers.md +70 -0
  206. package/docs/contracts/pilot/language-and-tone.md +63 -0
  207. package/docs/contracts/rule-classification.md +170 -0
  208. package/docs/contracts/rule-router.md +153 -0
  209. package/docs/customization.md +17 -6
  210. package/docs/decisions/ADR-001-kernel-swap-deferred.md +109 -0
  211. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +124 -0
  212. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +126 -0
  213. package/docs/decisions/ADR-rule-kernel-and-router.md +122 -0
  214. package/docs/getting-started.md +2 -2
  215. package/docs/guidelines/agent-infra/naming.md +1 -1
  216. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +176 -0
  217. package/docs/guidelines/agent-infra/rule-type-governance.md +73 -0
  218. package/docs/guidelines/agent-infra/size-and-scope.md +13 -2
  219. package/docs/guidelines/agent-infra/skill-quality-checklist.md +119 -0
  220. package/docs/guidelines/augment-portability-patterns.md +68 -0
  221. package/docs/guidelines/php/php-coding-patterns.md +62 -0
  222. package/package.json +1 -1
  223. package/scripts/_p43_bodies.py +235 -0
  224. package/scripts/_p43_compress.py +118 -0
  225. package/scripts/_p4_migrate.py +199 -0
  226. package/scripts/_phase2_shim_helper.py +1 -1
  227. package/scripts/_pilot_council_question.py +57 -0
  228. package/scripts/_pilot_measure.py +53 -0
  229. package/scripts/ai_council/session.py +107 -5
  230. package/scripts/build_linear_digest.py +3 -5
  231. package/scripts/check_always_budget.py +39 -6
  232. package/scripts/check_compressed_paths.py +213 -0
  233. package/scripts/check_compression.py +15 -0
  234. package/scripts/check_context_paths.py +1 -0
  235. package/scripts/check_council_layout.py +105 -0
  236. package/scripts/check_council_references.py +145 -0
  237. package/scripts/check_portability.py +2 -0
  238. package/scripts/check_references.py +2 -0
  239. package/scripts/check_token_optimizer_freshness.py +131 -0
  240. package/scripts/compile_router.py +148 -0
  241. package/scripts/compress.py +219 -11
  242. package/scripts/council_cli.py +132 -11
  243. package/scripts/council_prune.py +81 -0
  244. package/scripts/count_token_optimizer_usage.sh +54 -0
  245. package/scripts/install.sh +44 -2
  246. package/scripts/iron_law_sha.py +98 -0
  247. package/scripts/lint_load_context.py +35 -5
  248. package/scripts/measure_rule_budget.py +314 -0
  249. package/scripts/migrate_command_suggestions.py +2 -2
  250. package/scripts/prototype_lint_contradictions.py +150 -0
  251. package/scripts/schemas/command.schema.json +5 -0
  252. package/scripts/schemas/rule.schema.json +60 -6
  253. package/scripts/schemas/skill.schema.json +5 -0
  254. package/scripts/skill_linter.py +197 -7
  255. package/scripts/smoke_path_resolution.py +93 -0
  256. package/scripts/validate_frontmatter.py +41 -1
  257. package/.agent-src/commands/roadmap/execute.md +0 -109
  258. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +0 -72
  259. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +0 -79
  260. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +0 -87
  261. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +0 -62
  262. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +0 -78
  263. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +0 -85
  264. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +0 -65
  265. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +0 -78
  266. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +0 -53
  267. /package/{docs → .agent-src/contexts}/contracts/artifact-engagement-flow.md +0 -0
  268. /package/{docs → .agent-src/contexts}/contracts/command-suggestion-flow.md +0 -0
@@ -4,6 +4,10 @@ tier: "3"
4
4
  description: "Language and tone — informal German Du, English code comments, .md files always English"
5
5
  alwaysApply: true
6
6
  source: package
7
+ validator_ignore:
8
+ - type: "substring"
9
+ pattern: ".agent-src.uncompressed/"
10
+ reason: "Rule scopes the .md-English mandate to the authoring tree."
7
11
  ---
8
12
 
9
13
  # Language and Tone
@@ -20,113 +24,44 @@ NO "SWITCH MID-PARAGRAPH". NO "LAST 20 TURNS WERE ENGLISH".
20
24
  NO "INTER-TOOL COMMENT IS JUST A NOTE" EXCEPTION.
21
25
  ```
22
26
 
23
- Trigger is the user's last **chat message** not turn count, open
24
- file, roadmap, ticket, codebase, `view` / `grep` output, prior reply,
25
- or files just edited. Short German (`3`, `weiter`, `mach das`) after
26
- many English turns flips the reply to German.
27
-
28
- ### What counts as "user-visible prose" — exhaustive
29
-
30
- The Iron Law applies to **every** token the user sees in the reply,
31
- not just the main answer. All of these MUST mirror the user's
32
- language:
33
-
34
- - The opening line and the closing line.
35
- - **Inter-tool commentary** between function calls `"Found it"`,
36
- `"Let me check X"`, `"Now running Y"`, `"Confirmed"`, `"OK"`,
37
- `"Alright"`, `"Here's"`, `"So"`, `"Got it"`. These are prose, not
38
- internal notes — the user reads them.
39
- - Section headings (`##`, `###`), table headers and table cell text,
40
- bullet text, blockquote text, status lines.
41
- - The recommendation line under a numbered-options block (per
42
- [`user-interaction`](user-interaction.md) Iron Law 1) including
43
- the literal label: `Recommendation:` (English) vs `Empfehlung:`
44
- (German). Wrong label = violation.
45
- - Error explanations, "what this means" summaries, status tables.
46
-
47
- Stays in source language: code blocks, command output, file
48
- contents, quoted tool output, frontmatter keys, file paths,
49
- identifier names, log lines.
50
-
51
- ### Pre-send gate — MANDATORY before every reply
52
-
53
- Run silently before any output:
54
-
55
- 1. **Detect** — language of the user's last chat message. Mixed →
56
- **dominant** language; tie → German (project default).
57
- 2. **Scan** — every user-visible token per the catalog above. Inter-
58
- tool commentary, headings, table headers, bullet text, the
59
- `Recommendation:` / `Empfehlung:` label — all included.
60
- 3. **Rewrite** — if any token is in the wrong language, rewrite
61
- the whole reply. No "just this sentence", no "technical term is
62
- English anyway", no "the inter-tool note doesn't matter".
63
- 4. **Confirm** — first sentence in target language; recommendation
64
- label matches target language; no English filler-phrase opener
65
- (`Let me`, `Now`, `Found`, `Confirmed`, `OK`, `Alright`,
66
- `Here's`, `So`) when target is German, no German opener
67
- (`Lass mich`, `Jetzt`, `Gefunden`, `Bestätigt`) when target is
68
- English.
69
-
70
- ### Spelled out
71
-
72
- - German → respond in German, informal "Du" (never "Sie"). "Du"
73
- capitalized at sentence start, lowercase otherwise.
74
- - Code blocks, command output, file contents, and quoted tool output
75
- stay in their native language; only the **prose around them**
76
- mirrors the user.
77
- - Numbered options (per `user-interaction`) — `.md` source English,
78
- rendered reply translated at runtime.
79
-
80
- ### Slip handling
81
-
82
- Acknowledge **once**, briefly, in the correct language
83
- ("Entschuldigung" / "Sorry"). Switch on the same reply. Do **not**
84
- re-explain in the wrong language; do **not** promise "from now on" —
85
- just do it.
86
-
87
- Full failure-mode list and wrong-vs-correct examples in
88
- [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
27
+ Trigger = user's last **chat message**. Not turn count, open file, roadmap, ticket, codebase, tool output, prior reply, or files just edited. Short German (`3`, `weiter`, `mach das`) after many English turns flips the reply to German.
28
+
29
+ ## User-visible prose every token mirrors
30
+
31
+ Applies to opening / closing line, **inter-tool commentary** (`Found it`, `Let me check`, `OK`, `Alright`, `Here's`, `So`), section headings, table headers and cells, bullet text, blockquote text, status lines, and the `Recommendation:` / `Empfehlung:` label under numbered-options blocks (per [`user-interaction`](user-interaction.md) Iron Law 1). Wrong label = violation.
32
+
33
+ Stays in source language: code blocks, command output, file contents, quoted tool output, frontmatter keys, file paths, identifier names, log lines.
34
+
35
+ ## Pre-send gate MANDATORY
36
+
37
+ 1. **Detect** — language of user's last chat message. Mixed → dominant; tie → German.
38
+ 2. **Scan** every user-visible token per catalog above.
39
+ 3. **Rewrite** — wrong-language token rewrite the whole reply.
40
+ 4. **Confirm** — first sentence in target language; recommendation label matches; no English filler-phrase opener (`Let me`, `Now`, `Found`, `Confirmed`, `OK`, `Alright`, `Here's`, `So`) when target is German; no German opener (`Lass mich`, `Jetzt`, `Gefunden`, `Bestätigt`) when target is English.
41
+
42
+ ## Spelled out
43
+
44
+ - German informal "Du" (never "Sie"); capitalized at sentence start, lowercase otherwise.
45
+ - Code blocks / command output / file contents / quoted tool output stay native; only surrounding prose mirrors.
46
+ - Numbered options — `.md` source English; rendered reply translated at runtime.
47
+
48
+ ## Slip handling
49
+
50
+ Acknowledge **once** in the correct language ("Entschuldigung" / "Sorry"). Switch on the same reply. No re-explain in wrong language; no "from now on" promise.
51
+
52
+ Examples + wrong-vs-correct: [`language-and-tone-examples`](../docs/guidelines/agent-infra/language-and-tone-examples.md).
89
53
 
90
54
  ## Other language rules
91
55
 
92
56
  - Code comments in English.
93
- - `.md` documentation files in English (see section below).
94
- Translate existing German `.md` files when you touch them.
95
- - Two spaces after icons `❌`, `✅`, `⚠️` in CLI output; one space
96
- for other icons.
97
- - One blank line max; no double or triple blank lines.
98
- - Every file ends with exactly one newline.
99
-
100
- ## `.md` files are ALWAYS English — no exceptions
101
-
102
- **Every** piece of text inside `.md` files in `.augment/`,
103
- `.agent-src/`, `.agent-src.uncompressed/`, and `agents/` must be in
104
- English: headings, paragraphs, bullets, option labels, example
105
- prompts, template placeholders, ASCII-art labels, table headers and
106
- content. The agent translates to the user's language **at runtime**.
107
-
108
- ### Labeled-anchor exception
109
-
110
- Quoting German examples inside English prose is **not allowed**.
111
- Two correct ways:
112
-
113
- 1. **Translate to English** — trigger recognition is semantic.
114
- 2. **Use a labeled `DE: … · EN: …` anchor list** when the
115
- multilingual nature of recognition is the point. This is the
116
- **only** allowed location for German prose in an English `.md`;
117
- reference phrases abstractly elsewhere and link to the anchor.
118
-
119
- ### Detection heuristic
120
-
121
- Before saving an `.md` file under `.augment/`, `.agent-src/`,
122
- `.agent-src.uncompressed/`, or `agents/`, scan for:
123
-
124
- - Umlauts (`ä`, `ö`, `ü`, `Ä`, `Ö`, `Ü`, `ß`) outside fenced code,
125
- file paths, and the labeled anchor block.
126
- - German function words in unquoted prose: `für`, `nicht`, `dass`,
127
- `wenn`, `sollte`, `werden`, `arbeite`, `selbstständig`, `jetzt`,
128
- `einfach`, `weiter`, `lösche`, `frag`, `schreib`, `mach`.
129
- - Non-English quoted phrases in body text (paragraphs, list items,
130
- table cells) when the surrounding prose is English.
131
-
132
- Hit → translate it or move it into a `DE: … · EN: …` block.
57
+ - `.md` files in English (see below). Translate existing German `.md` files when touched.
58
+ - Two spaces after `❌`, `✅`, `⚠️` in CLI; one space for other icons.
59
+ - One blank line max; no double/triple blanks. File ends with exactly one newline.
60
+
61
+ ## `.md` files ALWAYS English
62
+
63
+ Every text inside `.md` under `.augment/`, `.agent-src/`, `.agent-src.uncompressed/`, `agents/`: headings, paragraphs, bullets, option labels, prompts, placeholders, ASCII labels, table headers / content. Agent translates at runtime.
64
+
65
+ **Labeled-anchor exception** — quoting German inside English prose is forbidden. Either translate, OR use a labeled `DE: … · EN: …` anchor block (only allowed location for German prose).
66
+
67
+ **Detection heuristic** before saving: scan for umlauts (`ä`, `ö`, `ü`, `Ä`, `Ö`, `Ü`, `ß`) outside fenced code / paths / anchor blocks; German function words (`für`, `nicht`, `dass`, `wenn`, `sollte`, `werden`, `arbeite`, `selbstständig`, `jetzt`, `einfach`, `weiter`, `lösche`, `frag`, `schreib`, `mach`); non-English quoted phrases in body text. Hit → translate or move to `DE: · EN: …` block.
@@ -1,49 +1,20 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
4
- alwaysApply: false
5
4
  description: "Laravel language files, translations, i18n, lang/de, lang/en, __() helper, localization, multilingual text"
6
5
  source: package
6
+ triggers:
7
+ - path_prefix: "lang/"
8
+ - keyword: "translation"
9
+ - keyword: "__()"
10
+ - keyword: "trans("
11
+ routes_to:
12
+ - "skill:laravel"
7
13
  ---
8
14
 
9
- # Laravel Language Files
15
+ # Laravel Translations
10
16
 
11
- ## Key format always inline (dot notation)
17
+ **Iron Law.** Use `__()`/`trans()` with language keys for every user-visible string; mirror keys across `lang/<locale>/` files.
12
18
 
13
- Language lines **must always use flat dot-notation keys**. Never use nested arrays.
14
-
15
- **Correct** (`lang/en/report.php`):
16
- ```php
17
- return [
18
- 'type.daily_report' => 'Daily Report',
19
- 'type.care_report' => 'Care Report',
20
- ];
21
- ```
22
-
23
- **Wrong** — nested arrays are forbidden:
24
- ```php
25
- return [
26
- 'type' => [
27
- 'daily_report' => 'Daily Report',
28
- 'care_report' => 'Care Report',
29
- ],
30
- ];
31
- ```
32
-
33
- ## Both languages are mandatory
34
-
35
- Every language line **must exist in both** `lang/de/` and `lang/en/`.
36
- When you add a key to one file, immediately add the translated key to the other.
37
-
38
- Missing translations are a bug — the app ships to both German and English users.
39
-
40
- ## Referencing language lines
41
-
42
- Use the `__()` helper with the dot-notation key:
43
-
44
- ```php
45
- __('report.type.daily_report')
46
- __('email.report.created.subject', ['number' => $number])
47
- ```
48
-
49
- Never hardcode user-visible strings in PHP — always use language files.
19
+ Body migrated to `skill:laravel` (per P4 of `road-to-kernel-and-router.md`).
20
+ Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -4,6 +4,10 @@ tier: "2b"
4
4
  description: "Generating markdown output that contains code blocks — prevent broken nesting"
5
5
  alwaysApply: false
6
6
  source: package
7
+ triggers:
8
+ - intent: "markdown with code blocks"
9
+ - keyword: "triple backticks"
10
+ - file_pattern: "*.md"
7
11
  ---
8
12
 
9
13
  # Markdown Safe Codeblocks
@@ -4,6 +4,10 @@ tier: "2a"
4
4
  alwaysApply: false
5
5
  description: "When writing or reviewing a diff — the smallest change that solves the stated problem; no drive-by edits, no opportunistic refactors, no reformatting of untouched code"
6
6
  source: package
7
+ triggers:
8
+ - intent: "writing a diff"
9
+ - intent: "reviewing a diff"
10
+ - keyword: "drive-by"
7
11
  ---
8
12
 
9
13
  # Minimal Safe Diff
@@ -3,6 +3,10 @@ type: auto
3
3
  tier: "2a"
4
4
  source: package
5
5
  description: "When a CLI tool needed for the task is not installed — ask before working around it; do NOT install silently"
6
+ triggers:
7
+ - keyword: "command not found"
8
+ - keyword: "not installed"
9
+ - intent: "install tool"
6
10
  ---
7
11
 
8
12
  # Missing Tool Handling
@@ -2,70 +2,18 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  description: "Starting a new task, switching task type, or invoking a command — detect task complexity and recommend the optimal model (Opus/Sonnet/GPT) before any work"
5
- alwaysApply: false
6
5
  source: package
6
+ triggers:
7
+ - phrase: "switch task"
8
+ - phrase: "new task"
9
+ - phrase: "which model"
10
+ routes_to:
11
+ - "command:set-cost-profile"
7
12
  ---
8
13
 
9
14
  # Model Recommendation
10
15
 
11
- Detect the current model from your system prompt identity (e.g., "Claude Opus" `opus`,
12
- "Claude Sonnet" → `sonnet`, "GPT" → `gpt`, "Gemini" → `gemini`).
16
+ **Iron Law.** On task / model switch, recommend the optimal model for the task complexity before any work begins.
13
17
 
14
- If the detected model is `gemini`, immediately trigger the Gemini warning (see below).
15
-
16
- ## When to act
17
-
18
- **BEFORE starting any work**, classify the task the user is asking for:
19
-
20
- - **opus**: refactoring, architecture, complex debugging, code review, multi-file changes
21
- - **sonnet**: daily coding, bug fixes, tests, simple features, quality checks, PRs, commits, config
22
- - **gpt**: complex agent flows, automations, research
23
-
24
- **This check is MANDATORY** — not optional, not "nice to have". It runs:
25
- - On the **first user message** of a conversation
26
- - On **every clear topic/task change** (e.g., from refactoring to "create PR")
27
- - **When a command is invoked** (e.g., `/create-pr` → sonnet task)
28
-
29
- **⚠️ COMMAND INVOCATIONS ARE TASK CHANGES.** When the user invokes a command (e.g., `/create-pr`,
30
- `/commit`, `/fix-ci`), ALWAYS re-evaluate the model before executing. Commands like `/create-pr`,
31
- `/commit`, `/fix-pr-comments` are sonnet tasks — even if the previous task was opus-level.
32
- This is the most commonly missed check. Do NOT skip it.
33
-
34
- **Priority over commands rule**: This check runs BEFORE the `slash-command-routing-policy` rule. If a model switch
35
- is recommended, show the suggestion first. Only after the user responds, execute the command.
36
-
37
- **If ambiguous** (could be opus or sonnet): default to **sonnet** — cheaper, and the user can escalate.
38
-
39
- If the recommended model ≠ detected model, suggest switching **before doing any work**:
40
-
41
- ```
42
- > 💡 This looks like {task type} — best suited for **{recommended model}**.
43
- > You're currently on **{detected model}**.
44
- >
45
- > 1. I've switched to {recommended} — continue
46
- > 2. Stay on {detected model}
47
- ```
48
-
49
- **⛔ STOP AND WAIT.** After showing this suggestion, your response ENDS.
50
- Do NOT read files, create tasks, start coding, or do anything else in the same response.
51
- The ONLY content after the numbered options is the end of your message.
52
- Wait for the user to pick 1 or 2 before proceeding.
53
-
54
- → Full mapping and heuristics: `.augment/contexts/model-recommendations.md`
55
-
56
- ## Switch confirmation
57
-
58
- - If user picks **1**: accept and continue. No follow-up question.
59
- - If user picks **2**: accept. Don't ask again until the task type changes.
60
- - **Never ask more than once per task** unless the task type changes significantly.
61
-
62
- ## Downgrade after Opus
63
-
64
- After completing an opus-level phase (architecture done, root cause found, refactoring plan ready),
65
- suggest switching back to sonnet for implementation. Same numbered options.
66
-
67
- ## Gemini warning
68
-
69
- If detected model is `gemini`: warn that Gemini is **not recommended** for this project.
70
- Suggest switching to the best model for the current task (opus/sonnet/gpt).
71
- Show the same numbered options as above. Repeat once if dismissed — then accept.
18
+ Body migrated to `command:set-cost-profile` (per P4 of `road-to-kernel-and-router.md`).
19
+ Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -4,6 +4,11 @@ tier: "3"
4
4
  alwaysApply: false
5
5
  description: "Generating PR/issue/comment/commit-message bodies — forbids unsolicited 'Generated with', 'Co-authored by', or 'Pull Request opened by' attribution footers in any user-owned artifact"
6
6
  source: package
7
+ triggers:
8
+ - intent: "PR body"
9
+ - intent: "commit message"
10
+ - intent: "Jira comment"
11
+ - keyword: "co-authored"
7
12
  ---
8
13
 
9
14
  # No Attribution Footers
@@ -8,12 +8,7 @@ source: package
8
8
 
9
9
  # No Cheap Questions
10
10
 
11
- A question is **cheap** when the answer follows from stated context,
12
- an option breaches an Iron Law, choices differ only in sequencing /
13
- format, or one option is obviously dominant. Mode-independent — holds
14
- in `off`, `auto`, and `on`; autonomy never lifts the no-trade-off
15
- floor (cf. [`autonomous-execution`](autonomous-execution.md), whose
16
- "trivial" failure modes only scope to `on` / opted-in `auto`).
11
+ A question is **cheap** when context already answers, an option breaches an Iron Law, choices differ only in sequencing / format, or one option is dominant. Mode-independent — `off`, `auto`, `on`. Autonomy never lifts the floor.
17
12
 
18
13
  ## The Iron Laws
19
14
 
@@ -23,54 +18,43 @@ NEVER PRESENT AN OPTION THAT VIOLATES AN IRON LAW.
23
18
  NEVER OFFER NUMBERED CHOICES WITHOUT A REAL TRADE-OFF.
24
19
  ```
25
20
 
26
- Hold in `off`, `auto`, and `on`. Autonomy never lifts them.
27
-
28
21
  ## What counts as cheap
29
22
 
30
23
  - **Sequencing** — "Step 2 or 3 next?" when the roadmap orders them.
31
24
  - **Format-only** — "Table or paragraph?"; no semantic trade-off.
32
25
  - **Commit asks** — forbidden by [`commit-policy`](commit-policy.md).
33
26
  - **CI / test asks** — [`verify-before-complete`](verify-before-complete.md) decides, not the user.
34
- - **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see
35
- [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
36
- - **Iron-Law option** — breaches `commit-policy`, `scope-control` § git-ops, or `non-destructive-by-default`.
27
+ - **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
28
+ - **Iron-Law option** — breaches `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default`.
37
29
  - **Context-derived** — answer follows from prior turn / standing instruction / roadmap; act, state the assumption inline.
38
30
  - **Dominant option** — one choice obviously correct; alternatives carry no upside.
39
31
  - **Re-ask after decline** — forbidden per [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
40
32
 
41
- Examples per class:
42
- [`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
33
+ Examples per class: [`asking-and-brevity-examples § cheap-question-catalog`](../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
43
34
 
44
35
  ## Pre-Send Self-Check — MANDATORY before every question
45
36
 
46
37
  Run silently before any numbered-options block:
47
38
 
48
39
  1. Answer already in stated context?
49
- 2. Any option violates `commit-policy`, `scope-control` § git-ops, or `non-destructive-by-default`?
40
+ 2. Any option violates `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default`?
50
41
  3. Options pure sequencing / format, no trade-off?
51
42
  4. One option obviously dominant?
52
- 5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per `scope-control` § fenced step.
53
- 6. User already declined? Re-ask forbidden per `scope-control` § decline = silence.
43
+ 5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per `scope-control § fenced step`.
44
+ 6. User already declined? Re-ask forbidden per `scope-control § decline = silence`.
54
45
 
55
- Any "yes" → **do not ask**. Pick the dominant path, state assumption
56
- inline (*"assuming X — adjust if wrong"*), hand back. One-question-per-turn
57
- from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when
58
- the question is genuine.
46
+ Any "yes" → **do not ask**. Pick the dominant path, state assumption inline (*"assuming X — adjust if wrong"*), hand back. One-question-per-turn from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when the question is genuine.
59
47
 
60
48
  ## When asking IS allowed
61
49
 
62
50
  - Real architectural / scope decision with non-obvious trade-offs.
63
- - Vague-request trigger per [`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
51
+ - Vague-request trigger per [`ask-when-uncertain § vague-triggers`](ask-when-uncertain.md#vague-request-triggers--must-ask).
64
52
  - Security-sensitive path per [`security-sensitive-stop`](security-sensitive-stop.md).
65
- - Hard Floor per `non-destructive-by-default` — confirmation mandatory.
53
+ - Hard Floor per [`non-destructive-by-default`](non-destructive-by-default.md) — confirmation mandatory.
66
54
  - Two genuinely-equivalent paths; user preference is the tiebreaker.
67
55
 
68
56
  In doubt → ask. This rule narrows asking, never widens silence.
69
57
 
70
58
  ## Interactions
71
59
 
72
- - [`ask-when-uncertain`](ask-when-uncertain.md) vague triggers + one-question-per-turn; narrows the cheap subset.
73
- - [`autonomous-execution`](autonomous-execution.md) — mode-scoped triviality there; mode-independent floor here.
74
- - [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) — Iron Laws this rule defends.
75
- - [`user-interaction`](user-interaction.md) — numbered-options shape; this rule decides whether to send.
76
- - [`direct-answers`](direct-answers.md) — brevity, no flattery.
60
+ [`ask-when-uncertain`](ask-when-uncertain.md) · [`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) · [`user-interaction`](user-interaction.md) · [`direct-answers`](direct-answers.md).
@@ -0,0 +1,76 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "mechanical-already"
4
+ description: "Linking a specific file in agents/council-{questions,responses,sessions}/ from any artifact — council files are gitignored, local-only, auto-pruned; inline the convergence instead"
5
+ alwaysApply: false
6
+ source: package
7
+ triggers:
8
+ - path_prefix: "agents/council-questions/"
9
+ - path_prefix: "agents/council-responses/"
10
+ - path_prefix: "agents/council-sessions/"
11
+ - intent: "link to council artefact"
12
+ routes_to:
13
+ - "skill:ai-council"
14
+ validator_ignore:
15
+ - type: "substring"
16
+ pattern: ".agent-src.uncompressed/"
17
+ reason: "Rule references the authoring tree when contrasting transient council files."
18
+ ---
19
+
20
+ # No Council References from Any Artifact
21
+
22
+ Council artefacts under `agents/council-{questions,responses,sessions}/`
23
+ are **gitignored, local-only, and auto-pruned** after
24
+ `ai_council.session_retention_days` (default 7). They are
25
+ disposable scratch — never part of the repo, never visible to a
26
+ reviewer who clones, never durable across the retention window.
27
+
28
+ A link to a specific council file rots three ways: gitignored
29
+ (not in cloned repo), pruned after retention window (gone even
30
+ locally), and the installed `.augment/` projection cannot follow a
31
+ path that does not exist in the consumer.
32
+
33
+ ## The Iron Law
34
+
35
+ ```
36
+ NEVER LINK TO A SPECIFIC FILE INSIDE
37
+ agents/council-{questions,responses,sessions}/
38
+ FROM ANY ARTIFACT — ROADMAPS INCLUDED.
39
+ INLINE THE CONVERGENCE WITH DATE + MEMBERS, NEVER THE PATH.
40
+ ```
41
+
42
+ Applies to **every** artifact. Council artefacts are more transient
43
+ than roadmaps — the local copy disappears too.
44
+
45
+ ## Forbidden vs allowed
46
+
47
+ **Forbidden** in any `*.md` / `*.yml` / `*.json` / `*.py`:
48
+ `agents/council-questions/<file>.md`,
49
+ `agents/council-responses/<file>.json`,
50
+ `agents/council-sessions/<file>.json` or `<timestamp>/...`.
51
+
52
+ **Allowed**: directory mentions (talking about the output convention,
53
+ not a specific file); the `ai-council` skill and `/council:*` commands
54
+ documenting the output path schema; inline convergence summary —
55
+ e.g. *"Council (claude-sonnet-4-5 + gpt-4o, 2026-05-06) converged
56
+ on …"* with date + members, no filepath.
57
+
58
+ ## What to do instead
59
+
60
+ Identify the durable conclusion (decision, contract, lesson),
61
+ inline a convergence-summary block (members, date, cost if relevant
62
+ — see `ai-council` § Output format), and optionally promote the
63
+ lesson to `agents/contexts/`. The context is durable; the council
64
+ file was the catalyst.
65
+
66
+ Failure mode: *"I'll just link to the session JSON, it's evidence."*
67
+ The session is gone in 7 days. **Inline first, link never.**
68
+
69
+ ## See also
70
+
71
+ - [`no-roadmap-references`](no-roadmap-references.md) — sibling rule
72
+ for the roadmap layer
73
+ - [`augment-source-of-truth`](augment-source-of-truth.md) — edit
74
+ `.agent-src.uncompressed/`
75
+ - [`ai-council`](../skills/ai-council/SKILL.md) — output path
76
+ convention and convergence-summary format
@@ -4,6 +4,13 @@ tier: "mechanical-already"
4
4
  description: "Adding a link to a specific file in agents/roadmaps/ from any stable artifact (rule, skill, command, context, guideline) — roadmaps are transient; promote durable findings to agents/contexts/ instead"
5
5
  alwaysApply: false
6
6
  source: package
7
+ triggers:
8
+ - path_prefix: "agents/roadmaps/"
9
+ - intent: "link from stable artifact"
10
+ validator_ignore:
11
+ - type: "substring"
12
+ pattern: ".agent-src.uncompressed/"
13
+ reason: "Rule contrasts the authoring tree with transient roadmap files."
7
14
  ---
8
15
 
9
16
  # No Roadmap References from Stable Artifacts
@@ -5,16 +5,12 @@ description: "Agent is never destructive — Hard Floor always asks for prod-tru
5
5
  alwaysApply: true
6
6
  source: package
7
7
  load_context:
8
- - .agent-src.uncompressed/contexts/authority/destructive-mechanics.md
8
+ - ../contexts/authority/destructive-mechanics.md
9
9
  ---
10
10
 
11
11
  # Non-Destructive by Default
12
12
 
13
- The agent is **never** destructive and **never** endangers user work
14
- or production systems. This is the universal safety floor — it applies
15
- in every mode, every conversation, every turn. Autonomy settings, "just
16
- keep going" directives, roadmap authorizations, and standing
17
- permissions narrow other rules; **none of them lift this one**.
13
+ Universal safety floor. Applies in every mode, every conversation, every turn. Autonomy, "just keep going", roadmap authorizations, and standing permissions narrow other rules — **none lift this one**.
18
14
 
19
15
  ## The Iron Law
20
16
 
@@ -24,61 +20,35 @@ NO AUTONOMY SETTING, NO ROADMAP STEP, NO STANDING INSTRUCTION,
24
20
  NO "JUST KEEP GOING" CAN BYPASS IT.
25
21
  ```
26
22
 
27
- Triggers below require explicit user confirmation **on this turn** —
28
- not from a previous turn, not from a roadmap, not from a standing
29
- autonomy directive (see [`autonomous-execution`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)
30
- for the anchor list of recognized phrases):
23
+ Triggers below require explicit user confirmation **on this turn** — not from a previous turn, not from a roadmap, not from a standing autonomy directive (anchor list: [`autonomous-execution § opt-in detection`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)):
31
24
 
32
25
  | Trigger | Examples |
33
26
  |---|---|
34
- | **Production-branch merge** | merging into `main`, `master`, `prod`, `production`, `release/*`, or any branch the project marks as deployment trunk |
27
+ | **Production-branch merge** | `main`, `master`, `prod`, `production`, `release/*`, or any branch the project marks as deployment trunk |
35
28
  | **Deploy / release** | `terraform apply` on prod, `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment |
36
29
  | **Push to remote** | any `git push` (also covered by [`scope-control`](scope-control.md), restated so the floor never weakens) |
37
- | **Production data / infra** | prod DB writes or migrations, prod config, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline |
38
- | **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. |
39
- | **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 |
30
+ | **Production data / infra** | prod DB writes / migrations, prod config, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline |
31
+ | **Whimsical / 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 WIP deletions are allowed (below) |
32
+ | **Commit containing bulk deletions or infra changes** | commit whose diff removes a directory, deletes ≥5 unrelated files, or touches Terraform / Pulumi / k8s manifests / Ansible / cloud-config — surface diff and confirm even when [`commit-policy`](commit-policy.md) otherwise authorizes |
40
33
 
41
- Standing "just keep going" + next step crosses the floor → STOP,
42
- surface what's about to happen (one numbered-options block per
43
- [`user-interaction`](user-interaction.md)), wait. Other rules still
44
- apply to every other step.
34
+ Standing "just keep going" + next step crosses the floor → STOP, surface what's about to happen (one numbered-options block per [`user-interaction`](user-interaction.md)), wait. Other rules still apply to every other step.
45
35
 
46
36
  ## Not in scope — deterministic regeneration
47
37
 
48
- Output regenerated from a tracked source (compression, code-gen,
49
- formatter passes, lock-file rebuilds) is not destructive — the source
50
- of truth makes it reversible. Lives in
51
- [`autonomous-execution`](autonomous-execution.md#trivial--just-act-do-not-ask)
52
- § Trivial, not here. Per-file diff approval is theater.
38
+ Output regenerated from a tracked source (compression, code-gen, formatter passes, lock-file rebuilds) is reversible from source — **not destructive**. Lives in [`autonomous-execution § Trivial`](autonomous-execution.md#trivial--just-act-do-not-ask). Per-file diff approval is theater.
53
39
 
54
40
  ## Bulk deletions during WIP — allowed if task-connected
55
41
 
56
- Deletions inside an **active, user-stated task** are allowed in the
57
- working tree, **even multiple files or multiple folders** — the Hard
58
- Floor moves to the **commit** (row 6 above), not the in-progress edit.
59
- Whimsical / drive-by / unnamed-scope deletions still trip the floor on
60
- the edit. Full allowed/forbidden lists in
61
- [`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
62
- § Bulk deletions during WIP.
42
+ Deletions inside an **active, user-stated task** are allowed in the working tree, even multiple files / folders — the Hard Floor moves to the **commit** (row 6), not the in-progress edit. Whimsical / drive-by / unnamed-scope deletions still trip the floor on the edit. Allowed / forbidden lists: [`destructive-mechanics § Bulk deletions during WIP`](../contexts/authority/destructive-mechanics.md).
63
43
 
64
44
  ## Failure modes
65
45
 
66
- The full failure-mode catalog (autonomy-as-cover, roadmap-as-authorization,
67
- refusing-named-deletions, commit-without-diff-surface,
68
- roadmap-step-≠-commit-authorization) lives in
69
- [`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
70
- § Failure modes. Reach for it when a Hard-Floor situation feels
71
- ambiguous; the rule itself stays focused on the trigger table.
46
+ Full catalog (autonomy-as-cover, roadmap-as-authorization, refusing-named-deletions, commit-without-diff-surface, roadmap-step ≠ commit-authorization): [`destructive-mechanics § Failure modes`](../contexts/authority/destructive-mechanics.md).
72
47
 
73
48
  ## Cloud Behavior
74
49
 
75
- The Hard Floor applies on every surface, including Claude.ai Web,
76
- Skills API, and any cloud agent. There is no "cloud override" — the
77
- floor predates and outranks any platform-specific autonomy default.
50
+ Floor applies on every surface Claude.ai Web, Skills API, any cloud agent. No "cloud override".
78
51
 
79
52
  ## See also
80
53
 
81
- - [`autonomous-execution`](autonomous-execution.md) defers to this rule for the floor; covers trivial-vs-blocking and opt-in detection only
82
- - [`commit-policy`](commit-policy.md) — four commit-exception paths; row 6 of the floor still applies on top of all four
83
- - [`scope-control`](scope-control.md) — git-ops permission gate; the floor is the never-overridable subset
84
- - [`user-interaction`](user-interaction.md) — numbered-options Iron Law for the confirmation prompt
54
+ [`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`user-interaction`](user-interaction.md).