@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.
- package/.agent-src/commands/agent-handoff.md +1 -1
- package/.agent-src/commands/bug-fix.md +3 -3
- package/.agent-src/commands/bug-investigate.md +2 -2
- package/.agent-src/commands/chat-history-checkpoint.md +3 -3
- package/.agent-src/commands/chat-history-clear.md +2 -2
- package/.agent-src/commands/chat-history-resume.md +2 -2
- package/.agent-src/commands/chat-history.md +3 -3
- package/.agent-src/commands/check-current-md.md +44 -33
- package/.agent-src/commands/commit-in-chunks.md +43 -23
- package/.agent-src/commands/compress.md +34 -2
- package/.agent-src/commands/council-design.md +96 -0
- package/.agent-src/commands/council-optimize.md +115 -0
- package/.agent-src/commands/council-pr.md +123 -0
- package/.agent-src/commands/council.md +219 -0
- package/.agent-src/commands/create-pr.md +23 -0
- package/.agent-src/commands/do-and-judge.md +3 -3
- package/.agent-src/commands/do-in-steps.md +4 -4
- package/.agent-src/commands/e2e-heal.md +1 -1
- package/.agent-src/commands/e2e-plan.md +1 -1
- package/.agent-src/commands/feature-dev.md +8 -0
- package/.agent-src/commands/feature-explore.md +6 -1
- package/.agent-src/commands/feature-plan.md +33 -2
- package/.agent-src/commands/feature-refactor.md +5 -0
- package/.agent-src/commands/feature-roadmap.md +8 -3
- package/.agent-src/commands/feature.md +58 -0
- package/.agent-src/commands/fix-ci.md +5 -0
- package/.agent-src/commands/fix-portability.md +7 -2
- package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
- package/.agent-src/commands/fix-pr-comments.md +5 -0
- package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
- package/.agent-src/commands/fix-references.md +5 -0
- package/.agent-src/commands/fix-seeder.md +5 -0
- package/.agent-src/commands/fix.md +60 -0
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/judge.md +1 -1
- package/.agent-src/commands/memory-add.md +3 -3
- package/.agent-src/commands/memory-full.md +2 -2
- package/.agent-src/commands/memory-promote.md +2 -2
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/onboard.md +17 -8
- package/.agent-src/commands/optimize-agents.md +6 -1
- package/.agent-src/commands/optimize-augmentignore.md +14 -0
- package/.agent-src/commands/optimize-rtk-filters.md +5 -0
- package/.agent-src/commands/optimize-skills.md +6 -1
- package/.agent-src/commands/optimize.md +54 -0
- package/.agent-src/commands/propose-memory.md +2 -2
- package/.agent-src/commands/refine-ticket.md +9 -7
- package/.agent-src/commands/review-changes.md +61 -9
- package/.agent-src/commands/review-routing.md +1 -1
- package/.agent-src/commands/roadmap-create.md +42 -4
- package/.agent-src/commands/roadmap-execute.md +9 -7
- package/.agent-src/commands/set-cost-profile.md +11 -3
- package/.agent-src/commands/sync-agent-settings.md +11 -2
- package/.agent-src/commands/tests-create.md +1 -1
- package/.agent-src/commands/tests-execute.md +2 -3
- package/.agent-src/commands/upstream-contribute.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
- package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
- package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
- package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
- package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
- package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
- package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
- package/.agent-src/personas/README.md +1 -1
- package/.agent-src/rules/agent-authority.md +24 -0
- package/.agent-src/rules/architecture.md +1 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/.agent-src/rules/artifact-engagement-recording.md +2 -2
- package/.agent-src/rules/ask-when-uncertain.md +1 -1
- package/.agent-src/rules/augment-portability.md +56 -37
- package/.agent-src/rules/autonomous-execution.md +78 -114
- package/.agent-src/rules/capture-learnings.md +1 -1
- package/.agent-src/rules/chat-history-cadence.md +109 -0
- package/.agent-src/rules/chat-history-ownership.md +123 -0
- package/.agent-src/rules/chat-history-visibility.md +96 -0
- package/.agent-src/rules/cli-output-handling.md +1 -1
- package/.agent-src/rules/{command-suggestion.md → command-suggestion-policy.md} +10 -9
- package/.agent-src/rules/commit-conventions.md +1 -1
- package/.agent-src/rules/commit-policy.md +43 -61
- package/.agent-src/rules/context-hygiene.md +3 -3
- package/.agent-src/rules/direct-answers.md +2 -2
- package/.agent-src/rules/docs-sync.md +1 -1
- package/.agent-src/rules/e2e-testing.md +1 -1
- package/.agent-src/rules/guidelines.md +4 -4
- package/.agent-src/rules/improve-before-implement.md +2 -2
- package/.agent-src/rules/language-and-tone.md +41 -96
- package/.agent-src/rules/minimal-safe-diff.md +3 -3
- package/.agent-src/rules/model-recommendation.md +4 -4
- package/.agent-src/rules/no-cheap-questions.md +89 -0
- package/.agent-src/rules/non-destructive-by-default.md +25 -59
- package/.agent-src/rules/onboarding-gate.md +5 -5
- package/.agent-src/rules/review-routing-awareness.md +9 -9
- package/.agent-src/rules/roadmap-progress-sync.md +132 -80
- package/.agent-src/rules/role-mode-adherence.md +3 -3
- package/.agent-src/rules/scope-control.md +65 -46
- package/.agent-src/rules/security-sensitive-stop.md +2 -2
- package/.agent-src/rules/size-enforcement.md +3 -2
- package/.agent-src/rules/think-before-action.md +5 -5
- package/.agent-src/rules/token-efficiency.md +4 -4
- package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
- package/.agent-src/rules/user-interaction.md +31 -7
- package/.agent-src/rules/verify-before-complete.md +12 -67
- package/.agent-src/scripts/update_roadmap_progress.py +65 -8
- package/.agent-src/skills/ai-council/SKILL.md +333 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/.agent-src/skills/blade-ui/SKILL.md +30 -11
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/.agent-src/skills/command-routing/SKILL.md +1 -1
- package/.agent-src/skills/command-writing/SKILL.md +16 -5
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -1
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
- package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
- package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
- package/.agent-src/skills/fe-design/SKILL.md +20 -15
- package/.agent-src/skills/file-editor/SKILL.md +9 -0
- package/.agent-src/skills/flux/SKILL.md +1 -1
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/livewire/SKILL.md +27 -8
- package/.agent-src/skills/override-management/SKILL.md +2 -2
- package/.agent-src/skills/php-coder/SKILL.md +1 -1
- package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/readme-writing/SKILL.md +1 -1
- package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
- package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
- package/.agent-src/skills/review-routing/SKILL.md +2 -2
- package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
- package/.agent-src/skills/rule-writing/SKILL.md +1 -1
- package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/skill-writing/SKILL.md +6 -6
- package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +1 -1
- package/.agent-src/skills/upstream-contribute/SKILL.md +3 -3
- package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
- package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +2 -2
- package/.agent-src/templates/agent-settings.md +9 -9
- package/.agent-src/templates/contexts/auth-model.md +1 -1
- package/.agent-src/templates/roadmaps.md +9 -8
- package/.agent-src/templates/scripts/README.md +2 -2
- package/.agent-src/templates/scripts/memory_lookup.py +1 -1
- package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
- package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
- package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
- package/.agent-src/templates/scripts/telemetry_record.py +14 -1
- package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
- package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
- package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
- package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
- package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
- package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
- package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
- package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
- package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
- package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
- package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
- package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
- package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
- package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
- package/.claude-plugin/marketplace.json +10 -2
- package/AGENTS.md +16 -12
- package/CHANGELOG.md +206 -9
- package/README.md +51 -52
- package/config/agent-settings.template.yml +58 -1
- package/config/gitignore-block.txt +3 -0
- package/docs/MIGRATION.md +122 -0
- package/docs/architecture.md +83 -34
- package/docs/catalog.md +331 -0
- package/docs/contracts/STABILITY.md +134 -0
- package/docs/contracts/adr-chat-history-split.md +132 -0
- package/docs/contracts/adr-command-suggestion.md +146 -0
- package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
- package/docs/contracts/adr-product-ui-track.md +384 -0
- package/docs/contracts/adr-prompt-driven-execution.md +187 -0
- package/docs/contracts/agent-memory-contract.md +149 -0
- package/docs/contracts/artifact-engagement-flow.md +262 -0
- package/docs/contracts/command-clusters.md +126 -0
- package/docs/contracts/command-suggestion-flow.md +148 -0
- package/docs/contracts/implement-ticket-flow.md +628 -0
- package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
- package/docs/contracts/linear-ai-three-layers.md +131 -0
- package/docs/contracts/load-context-schema.md +186 -0
- package/docs/contracts/rule-interactions.md +107 -0
- package/docs/contracts/rule-interactions.yml +238 -0
- package/docs/contracts/rule-priority-hierarchy.md +87 -0
- package/docs/contracts/ui-stack-extension.md +236 -0
- package/docs/contracts/ui-track-flow.md +338 -0
- package/docs/customization.md +14 -0
- package/docs/end-to-end-walkthroughs.md +165 -0
- package/docs/getting-started.md +27 -9
- package/docs/github-topics.md +12 -3
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
- package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
- package/docs/guidelines/php/git.md +164 -0
- package/docs/installation.md +42 -6
- package/docs/migrations/commands-1.15.0.md +112 -0
- package/docs/showcase.md +9 -4
- package/docs/skills-catalog.md +14 -8
- package/docs/ui-track-mental-model.md +121 -0
- package/llms.txt +13 -7
- package/package.json +1 -1
- package/scripts/agent-config +23 -0
- package/scripts/ai_council/__init__.py +39 -0
- package/scripts/ai_council/_default_prices.py +41 -0
- package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
- package/scripts/ai_council/_one_off_roundtrip.py +106 -0
- package/scripts/ai_council/budget_guard.py +172 -0
- package/scripts/ai_council/bundler.py +261 -0
- package/scripts/ai_council/clients.py +381 -0
- package/scripts/ai_council/modes.py +127 -0
- package/scripts/ai_council/orchestrator.py +350 -0
- package/scripts/ai_council/pricing.py +213 -0
- package/scripts/ai_council/project_context.py +159 -0
- package/scripts/ai_council/prompts.py +232 -0
- package/scripts/ai_council/session.py +144 -0
- package/scripts/build_linear_digest.py +4 -4
- package/scripts/check_always_budget.py +126 -0
- package/scripts/check_augmentignore.py +69 -0
- package/scripts/check_command_count_messaging.py +120 -0
- package/scripts/check_portability.py +57 -0
- package/scripts/check_public_catalog_links.py +122 -0
- package/scripts/check_public_links.py +185 -0
- package/scripts/check_references.py +5 -1
- package/scripts/check_roadmap_trackable.py +111 -0
- package/scripts/command_suggester/cooldown.py +1 -1
- package/scripts/generate_index.py +266 -0
- package/scripts/install_anthropic_key.sh +5 -0
- package/scripts/install_openai_key.sh +106 -0
- package/scripts/lint_load_context.py +163 -0
- package/scripts/lint_no_new_atomic_commands.py +179 -0
- package/scripts/lint_rule_interactions.py +149 -0
- package/scripts/memory_lookup.py +1 -1
- package/scripts/release.py +297 -64
- package/scripts/schemas/command.schema.json +20 -0
- package/scripts/schemas/rule.schema.json +10 -0
- package/scripts/skill_linter.py +26 -4
- package/scripts/sync_agent_settings.py +1 -1
- package/scripts/update_counts.py +19 -4
- package/scripts/update_prices.py +124 -0
- package/.agent-src/guidelines/php/git.md +0 -96
- package/.agent-src/rules/chat-history.md +0 -200
- /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
- /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
|
@@ -61,4 +61,4 @@ ci(lint): add skill-lint workflow
|
|
|
61
61
|
docs(roadmap): add phase 3 implementation plan
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
→ Type selection rules, anti-patterns, decision checklist: `guidelines/php/git.md`
|
|
64
|
+
→ Type selection rules, anti-patterns, decision checklist: `docs/guidelines/php/git.md`
|
|
@@ -3,14 +3,16 @@ type: "always"
|
|
|
3
3
|
description: "Commit policy — never commit and never ask about committing unless the user said so this turn, the roadmap authorizes it, or a commit command is invoked"
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
source: package
|
|
6
|
+
load_context:
|
|
7
|
+
- .agent-src.uncompressed/contexts/authority/commit-mechanics.md
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
# Commit Policy
|
|
9
11
|
|
|
10
|
-
Local commits
|
|
11
|
-
makes review harder. **
|
|
12
|
-
[`autonomous-execution`](autonomous-execution.md),
|
|
13
|
-
[`scope-control`](scope-control.md), and roadmap commands.
|
|
12
|
+
Local commits do not change remote state, but committing prematurely
|
|
13
|
+
makes review harder. This is the **canonical** rule for committing,
|
|
14
|
+
referenced by [`autonomous-execution`](autonomous-execution.md),
|
|
15
|
+
[`scope-control`](scope-control.md), and the roadmap commands.
|
|
14
16
|
|
|
15
17
|
## The Iron Law
|
|
16
18
|
|
|
@@ -20,80 +22,60 @@ EXCEPTIONS ARE EXPLICIT, NOT INFERRED.
|
|
|
20
22
|
```
|
|
21
23
|
|
|
22
24
|
Applies regardless of `personal.autonomy`, conversation momentum, or
|
|
23
|
-
"clean stopping point". Default is **no commit, no
|
|
25
|
+
"but it's a clean stopping point". Default is **no commit, no
|
|
26
|
+
question**.
|
|
24
27
|
|
|
25
28
|
## Exceptions — when committing IS allowed
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
Exactly four ways the agent may commit:
|
|
28
31
|
|
|
29
32
|
1. **User says so this turn** — explicit phrase like "commit this now",
|
|
30
|
-
"go ahead and commit".
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
"go ahead and commit". Permission is for **this commit only**, not
|
|
34
|
+
standing.
|
|
35
|
+
2. **Standing instruction not yet revoked** — user said earlier in
|
|
36
|
+
the conversation "commit after every phase" or similar, and has not
|
|
37
|
+
revoked it. Cache and honor.
|
|
33
38
|
3. **Commit command invoked** — `/commit` (with confirmation) or
|
|
34
39
|
`/commit-in-chunks` (auto-split, no confirmation).
|
|
35
|
-
4. **Roadmap authorization** — roadmap lists explicit commit
|
|
36
|
-
and user invoked execution.
|
|
40
|
+
4. **Roadmap authorization** — the roadmap file lists explicit commit
|
|
41
|
+
steps and the user invoked roadmap execution.
|
|
37
42
|
|
|
38
|
-
Anything else → no commit.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
Even when one of the four exceptions above authorizes a commit, the
|
|
43
|
-
[`non-destructive-by-default`](non-destructive-by-default.md) Hard
|
|
44
|
-
Floor still fires when the diff:
|
|
45
|
-
|
|
46
|
-
- Removes a directory
|
|
47
|
-
- Deletes ≥5 unrelated files
|
|
48
|
-
- Touches Terraform / Pulumi / k8s manifests / Ansible / cloud-config
|
|
49
|
-
|
|
50
|
-
In those cases, **surface the diff** (paths + counts) and confirm
|
|
51
|
-
this turn before committing — even under `/commit-in-chunks`,
|
|
52
|
-
roadmap pre-scan authorization, or an explicit "commit this now". The
|
|
53
|
-
four exceptions cover *whether* commits happen; the Hard Floor covers
|
|
54
|
-
*which diffs* still need a separate confirmation.
|
|
43
|
+
Anything else → no commit. Hard Floor (bulk deletions, infra changes)
|
|
44
|
+
still fires on top of any exception — see
|
|
45
|
+
[`commit-mechanics`](../contexts/authority/commit-mechanics.md) for
|
|
46
|
+
the diff triggers and the roadmap-authorized commit flow.
|
|
55
47
|
|
|
56
48
|
## NEVER ask about committing
|
|
57
49
|
|
|
58
50
|
Asking "should I commit this?", "do we want to commit?", or any
|
|
59
|
-
variant is **forbidden**.
|
|
60
|
-
explicitly. Don't surface a commit option in numbered-options
|
|
61
|
-
the rest of the message would be incomplete without it.
|
|
51
|
+
variant is **forbidden**. The user invokes a command or says so
|
|
52
|
+
explicitly. Don't surface a commit option in numbered-options blocks
|
|
53
|
+
unless the rest of the message would be incomplete without it.
|
|
62
54
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
55
|
+
Quoted commit phrases (chat-log paste, log excerpt, roadmap snippet)
|
|
56
|
+
are **not** permission — see
|
|
57
|
+
[`commit-mechanics`](../contexts/authority/commit-mechanics.md)
|
|
58
|
+
§ Speech-act check.
|
|
67
59
|
|
|
68
60
|
## NEVER write commit steps into roadmaps unsolicited
|
|
69
61
|
|
|
70
|
-
When **creating** a roadmap (`/roadmap-create`,
|
|
71
|
-
or any roadmap-producing flow), do **not** include
|
|
72
|
-
unless the user explicitly requested them. Commits are a
|
|
73
|
-
decision; roadmaps plan **work**.
|
|
74
|
-
|
|
75
|
-
If the user explicitly wants commit steps, write them clearly
|
|
76
|
-
(e.g. "Commit phase X: chore: …").
|
|
77
|
-
|
|
78
|
-
## Roadmap-authorized commits
|
|
79
|
-
|
|
80
|
-
When **executing** a roadmap that contains commit steps:
|
|
81
|
-
|
|
82
|
-
- **Non-autonomous** (`autonomy: off`, or `auto` before opt-in) —
|
|
83
|
-
agent may ask before each commit step. User retains step-level
|
|
84
|
-
control.
|
|
85
|
-
- **Autonomous** (`autonomy: on`, or `auto` after opt-in) — agent
|
|
86
|
-
pre-scans the roadmap **before starting execution**. Commit steps
|
|
87
|
-
found → ask **once** upfront: "Roadmap contains N commit steps —
|
|
88
|
-
should they be executed?". Cache the answer; honor or skip for
|
|
89
|
-
the rest of the run. No re-asking per step.
|
|
62
|
+
When **creating** a roadmap (via `/roadmap-create`,
|
|
63
|
+
`/feature-roadmap`, or any roadmap-producing flow), do **not** include
|
|
64
|
+
commit steps unless the user explicitly requested them. Commits are a
|
|
65
|
+
delivery decision; roadmaps plan **work**.
|
|
90
66
|
|
|
91
|
-
|
|
92
|
-
|
|
67
|
+
If the user explicitly wants commit steps in the roadmap, write them
|
|
68
|
+
clearly and unambiguously (e.g. "Commit phase X: chore: …").
|
|
93
69
|
|
|
94
70
|
## See also
|
|
95
71
|
|
|
96
|
-
- [`autonomous-execution`](autonomous-execution.md) —
|
|
97
|
-
|
|
98
|
-
- [
|
|
99
|
-
|
|
72
|
+
- [`autonomous-execution`](autonomous-execution.md) — when to suppress
|
|
73
|
+
trivial questions; this rule survives the suppression.
|
|
74
|
+
- [`no-cheap-questions`](no-cheap-questions.md) — commit asks are
|
|
75
|
+
cheap by construction; this rule is the canonical Iron Law, the
|
|
76
|
+
cheap-questions rule cites it and refuses to surface the option.
|
|
77
|
+
- [`scope-control`](scope-control.md) — git-ops permission gate
|
|
78
|
+
(push, merge, branch, PR, tag stay separately permission-gated).
|
|
79
|
+
- [`/commit`](../commands/commit.md) — split and commit with confirmation.
|
|
80
|
+
- [`/commit-in-chunks`](../commands/commit-in-chunks.md) — auto-split
|
|
81
|
+
and commit without confirmation.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
alwaysApply:
|
|
4
|
-
description: "
|
|
2
|
+
type: "auto"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
description: "When debugging, fixing errors, or running long conversations — 3-failure stop rule, tool-loop detection, fresh-chat triggers"
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "always"
|
|
3
|
-
description: "Always — direct, unembellished answers. No flattery, no invented facts (verify
|
|
3
|
+
description: "Always — direct, unembellished answers. No flattery, no invented facts (verify load-bearing claims, otherwise ask). Emojis only as functional markers. Brevity is the default."
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
@@ -78,7 +78,7 @@ Emojis are **functional markers**, never decoration.
|
|
|
78
78
|
**Whitelist — allowed and expected:**
|
|
79
79
|
|
|
80
80
|
- Mandated markers from rules/scripts: `📒` (chat-history heartbeat,
|
|
81
|
-
verbatim per `chat-history`), mode markers from
|
|
81
|
+
verbatim per `chat-history-visibility`), mode markers from
|
|
82
82
|
`role-mode-adherence`.
|
|
83
83
|
- CLI status icons: `❌`, `✅`, `⚠️` — two-space rule from
|
|
84
84
|
`language-and-tone` § other-language-rules still applies.
|
|
@@ -55,7 +55,7 @@ exist in `.augment/templates/agent-settings.md`:
|
|
|
55
55
|
3. **Add a comment** above the key explaining what it does.
|
|
56
56
|
4. **Update the local `.agent-settings.yml`** — add the new key with its default value.
|
|
57
57
|
Preserve all existing values, apply template order and comments. Follow the
|
|
58
|
-
[section-aware merge rules](
|
|
58
|
+
[section-aware merge rules](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules)
|
|
59
59
|
so the user benefits immediately without running a separate command.
|
|
60
60
|
|
|
61
61
|
**This step is mandatory.** If the template gains a new key but the local `.agent-settings.yml`
|
|
@@ -9,7 +9,7 @@ source: package
|
|
|
9
9
|
|
|
10
10
|
## Before writing E2E tests
|
|
11
11
|
|
|
12
|
-
1. **Read the guideline** —
|
|
12
|
+
1. **Read the guideline** — `../../docs/guidelines/e2e/playwright.md` for all conventions and patterns.
|
|
13
13
|
2. **Check existing tests** — match the project's structure, fixtures, and Page Object patterns.
|
|
14
14
|
3. **Check `playwright.config.ts`** — base URL, browsers, timeouts, projects.
|
|
15
15
|
|
|
@@ -12,7 +12,7 @@ Coding guidelines live in `.augment/guidelines/` organized by language.
|
|
|
12
12
|
|
|
13
13
|
## Available Guidelines
|
|
14
14
|
|
|
15
|
-
### PHP (
|
|
15
|
+
### PHP (`../../docs/guidelines/php/`)
|
|
16
16
|
|
|
17
17
|
| File | Topic |
|
|
18
18
|
|---|---|
|
|
@@ -37,7 +37,7 @@ Coding guidelines live in `.augment/guidelines/` organized by language.
|
|
|
37
37
|
| `websocket.md` | WebSocket conventions — Broadcasting, channel types, connection management |
|
|
38
38
|
| `patterns.md` | Design patterns index (links to `patterns/` subdirectory) |
|
|
39
39
|
|
|
40
|
-
### PHP Patterns (
|
|
40
|
+
### PHP Patterns (`../../docs/guidelines/php/patterns/`)
|
|
41
41
|
|
|
42
42
|
| File | Pattern |
|
|
43
43
|
|---|---|
|
|
@@ -51,11 +51,11 @@ Coding guidelines live in `.augment/guidelines/` organized by language.
|
|
|
51
51
|
| `pipelines.md` | Laravel Pipeline pattern |
|
|
52
52
|
| `strategy.md` | Strategy pattern implementation |
|
|
53
53
|
|
|
54
|
-
### E2E (
|
|
54
|
+
### E2E (`../../docs/guidelines/e2e/`)
|
|
55
55
|
|
|
56
56
|
Playwright best practices, Page Objects, fixtures, CI.
|
|
57
57
|
|
|
58
|
-
### Agent Infrastructure (
|
|
58
|
+
### Agent Infrastructure (`../../docs/guidelines/agent-infra/`)
|
|
59
59
|
|
|
60
60
|
| File | Topic |
|
|
61
61
|
|---|---|
|
|
@@ -41,10 +41,10 @@ Before coding, quickly verify:
|
|
|
41
41
|
- Does it follow established patterns in the codebase?
|
|
42
42
|
- Does it contradict existing conventions?
|
|
43
43
|
- Do **multiple valid patterns/frameworks** already exist (e.g. Tailwind + Flux, multiple form libraries, competing state stores)? If yes, do NOT pick one arbitrarily — ask which to use.
|
|
44
|
-
- Is the change a **second branch on the same discriminator** — second `match`/`switch` arm, second `if/elseif`, or second class hardcoded to one enum value (e.g. `Provider::FOO`, `'stripe'`)? If yes, run the Strategy sniff test before adding the branch — see [`guidelines/php/patterns/strategy.md`](
|
|
44
|
+
- Is the change a **second branch on the same discriminator** — second `match`/`switch` arm, second `if/elseif`, or second class hardcoded to one enum value (e.g. `Provider::FOO`, `'stripe'`)? If yes, run the Strategy sniff test before adding the branch — see [`docs/guidelines/php/patterns/strategy.md`](../../docs/guidelines/php/patterns/strategy.md#sniff-test--when-an-enumstring-discriminator-wants-to-become-a-strategy).
|
|
45
45
|
|
|
46
46
|
**If misfit** → show evidence (file references), propose alternative.
|
|
47
|
-
**If multiple valid options** → list them, ask which to use. See [`no blind implementation`](
|
|
47
|
+
**If multiple valid options** → list them, ask which to use. See [`no blind implementation`](../../docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md#2-no-blind-implementation).
|
|
48
48
|
|
|
49
49
|
### 3. Is the approach sound?
|
|
50
50
|
|
|
@@ -22,36 +22,24 @@ language, codebase language, open-file language, files-just-edited
|
|
|
22
22
|
language, convenience. First thing to check on every reply, last thing
|
|
23
23
|
to check before sending.
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
message, not the turn count.** Length irrelevant — `3` after a German
|
|
29
|
-
question still means German continues.
|
|
25
|
+
Trigger is the user's last chat message, not turn count or message
|
|
26
|
+
length — short German (`3`, `weiter`, `mach das`) after many English
|
|
27
|
+
turns still flips the reply to German.
|
|
30
28
|
|
|
31
29
|
### Source of language truth — chat messages ONLY
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
`.md` files in this repo are English by rule (see below) — that says
|
|
40
|
-
nothing about chat language. Same for: file contents read via `view` /
|
|
41
|
-
`grep`, quoted commits / tickets / PRs / branches, code identifiers,
|
|
42
|
-
the agent's own previous replies. Only the most recent **chat message**
|
|
43
|
-
sets the language. User opens an English roadmap and types German →
|
|
44
|
-
reply in German.
|
|
31
|
+
Only the most recent **chat message** sets the language. `.md` files,
|
|
32
|
+
file contents read via `view` / `grep`, quoted commits / tickets / PRs,
|
|
33
|
+
code identifiers, and the agent's own previous replies do **not** count.
|
|
34
|
+
User opens an English roadmap and types German → reply in German.
|
|
45
35
|
|
|
46
36
|
### Pre-send gate — MANDATORY before every reply
|
|
47
37
|
|
|
48
38
|
Run silently **before** emitting any tokens:
|
|
49
39
|
|
|
50
40
|
1. **Detect** — language of user's last **chat message** (not the open
|
|
51
|
-
file, not the roadmap, not the prior reply).
|
|
52
|
-
|
|
53
|
-
English signals: "I", "you", "is", "the", "how".
|
|
54
|
-
Mixed → mirror the **dominant** language; tie → German wins (project default).
|
|
41
|
+
file, not the roadmap, not the prior reply). Mixed → mirror the
|
|
42
|
+
**dominant** language; tie → German wins (project default).
|
|
55
43
|
2. **Check** — is drafted prose (not code, not file contents) in that language?
|
|
56
44
|
3. **Rewrite** — if no, rewrite whole prose before sending. No exceptions, no
|
|
57
45
|
"just this sentence", no "the technical term is English anyway".
|
|
@@ -74,28 +62,15 @@ Run silently **before** emitting any tokens:
|
|
|
74
62
|
|
|
75
63
|
### When the user calls out a language slip
|
|
76
64
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
- Drafting reply in English first, then "translating the intro" → English
|
|
88
|
-
phrasing with German words. Draft in target language from the first token.
|
|
89
|
-
- Copy-pasting English option labels from `.md` sources without translating.
|
|
90
|
-
- Mixing languages inside a table or bullet list because "the technical term
|
|
91
|
-
is English" — surrounding prose must still mirror. Keep proper nouns and
|
|
92
|
-
code identifiers as-is; translate everything else.
|
|
93
|
-
- Assuming English because "the codebase is English" — codebase language ≠
|
|
94
|
-
conversation language.
|
|
95
|
-
- Mirroring the **open file** the IDE reports — open files are background
|
|
96
|
-
context, not chat messages.
|
|
97
|
-
- Mirroring the **roadmap or ticket** being executed — artefacts are English
|
|
98
|
-
by `.md` rule; chat language is whatever the user wrote.
|
|
65
|
+
Acknowledge **once**, briefly, in the correct language ("Entschuldigung" /
|
|
66
|
+
"Sorry"). Switch immediately on the same reply. Do **not** re-explain in
|
|
67
|
+
the wrong language. Do **not** promise "from now on" — just do it. If
|
|
68
|
+
user asks to harden the rule, harden it on this turn.
|
|
69
|
+
|
|
70
|
+
### Failure modes
|
|
71
|
+
|
|
72
|
+
See [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md)
|
|
73
|
+
for the full failure-mode list.
|
|
99
74
|
|
|
100
75
|
## Other language rules
|
|
101
76
|
|
|
@@ -108,72 +83,42 @@ Run silently **before** emitting any tokens:
|
|
|
108
83
|
|
|
109
84
|
## `.md` files are ALWAYS English — no exceptions
|
|
110
85
|
|
|
111
|
-
**Every** piece of text inside `.md` files in `.augment/` and `agents/`
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- **Example option labels** (e.g., `> 1. Yes — start implementing`, NOT `> 1. Ja — mit der Umsetzung starten`)
|
|
116
|
-
- **Example prompts and questions** (e.g., `"Found X unresolved comments."`, NOT `"X offene Kommentare gefunden."`)
|
|
117
|
-
- **Template placeholders and sample output** (e.g., `Progress:`, NOT `Fortschritt:`)
|
|
118
|
-
- **ASCII art labels** in formatted output blocks (e.g., `CHANGES:`, NOT `ÄNDERUNGEN:`)
|
|
119
|
-
- **Table headers and content**
|
|
120
|
-
|
|
121
|
-
The agent translates to the user's language **at runtime** when presenting options.
|
|
122
|
-
The `.md` source files are the English blueprint — they define WHAT to say, not in which language.
|
|
123
|
-
|
|
124
|
-
**Wrong** (German in `.md`):
|
|
125
|
-
```
|
|
126
|
-
> 1. Interaktiv — bei jedem Kommentar nachfragen
|
|
127
|
-
> 2. Automatisch — alle selbstständig abarbeiten
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Correct** (English in `.md`):
|
|
131
|
-
```
|
|
132
|
-
> 1. Interactive — ask before each comment
|
|
133
|
-
> 2. Automatic — handle all independently
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### Quoted user-input examples — same rule, with one labeled exception
|
|
86
|
+
**Every** piece of text inside `.md` files in `.augment/` and `agents/`
|
|
87
|
+
must be in English: headings, paragraphs, bullets, example option labels,
|
|
88
|
+
example prompts/questions, template placeholders, ASCII-art labels in
|
|
89
|
+
formatted output blocks, table headers and content.
|
|
137
90
|
|
|
138
|
-
|
|
139
|
-
|
|
91
|
+
The agent translates to the user's language **at runtime** when
|
|
92
|
+
presenting options. The `.md` source files are the English blueprint —
|
|
93
|
+
they define WHAT to say, not in which language. Concrete wrong-vs-correct
|
|
94
|
+
examples live in [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
|
|
140
95
|
|
|
141
|
-
|
|
96
|
+
### Quoted user-input examples — labeled-anchor exception
|
|
142
97
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
handle that step autonomously.
|
|
146
|
-
|
|
147
|
-
A standing "arbeite selbstständig" never lifts the floor.
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
Two correct paths:
|
|
98
|
+
Drift pattern: a rule writes quoted German examples inside English prose.
|
|
99
|
+
**Not allowed**. Two correct ways:
|
|
151
100
|
|
|
152
101
|
1. **Translate to English.** Trigger recognition is semantic; the agent
|
|
153
|
-
matches intent across languages regardless of example
|
|
154
|
-
2. **
|
|
155
|
-
recognition is the point
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
- DE: "arbeite selbstständig" · "frag nicht jedes Mal" · "tue es einfach"
|
|
159
|
-
- EN: "work autonomously" · "don't ask" · "just do it"
|
|
160
|
-
```
|
|
102
|
+
matches intent across languages regardless of the example.
|
|
103
|
+
2. **Use a labeled `DE: … · EN: …` anchor list** when the multilingual
|
|
104
|
+
nature of recognition is the point — the **only** allowed location
|
|
105
|
+
for German prose in an English `.md`. Reference established phrases
|
|
106
|
+
abstractly later and link back to the anchor block.
|
|
161
107
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
agent-rendered strings, failure modes must be English. Reference phrases
|
|
165
|
-
abstractly later (e.g. "a standing autonomy directive") and link back.
|
|
108
|
+
Wrong-vs-correct snippets in
|
|
109
|
+
[`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
|
|
166
110
|
|
|
167
111
|
### Detection heuristic
|
|
168
112
|
|
|
169
113
|
Before saving an `.md` file under `.augment/`, `.agent-src/`,
|
|
170
114
|
`.agent-src.uncompressed/`, or `agents/`, scan for:
|
|
171
115
|
|
|
172
|
-
- Umlauts (`ä`, `ö`, `ü`, `Ä`, `Ö`, `Ü`, `ß`) outside fenced code,
|
|
173
|
-
paths, and labeled anchor
|
|
116
|
+
- Umlauts (`ä`, `ö`, `ü`, `Ä`, `Ö`, `Ü`, `ß`) outside fenced code,
|
|
117
|
+
file paths, and the labeled anchor block.
|
|
174
118
|
- German function words in unquoted prose: `für`, `nicht`, `dass`,
|
|
175
119
|
`wenn`, `sollte`, `werden`, `arbeite`, `selbstständig`, `jetzt`,
|
|
176
120
|
`einfach`, `weiter`, `lösche`, `frag`, `schreib`, `mach`.
|
|
177
|
-
- Non-English quoted phrases in body text
|
|
121
|
+
- Non-English quoted phrases in body text (paragraphs, list items,
|
|
122
|
+
table cells) when the surrounding prose is English.
|
|
178
123
|
|
|
179
|
-
Hit → translate the fragment or move into a `DE: … · EN: …` block.
|
|
124
|
+
Hit → translate the fragment or move it into a `DE: … · EN: …` block.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
alwaysApply:
|
|
4
|
-
description: "
|
|
2
|
+
type: "auto"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
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"
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
description: "
|
|
4
|
-
alwaysApply:
|
|
2
|
+
type: "auto"
|
|
3
|
+
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"
|
|
4
|
+
alwaysApply: false
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ If the detected model is `gemini`, immediately trigger the Gemini warning (see b
|
|
|
30
30
|
`/commit`, `/fix-pr-comments` are sonnet tasks — even if the previous task was opus-level.
|
|
31
31
|
This is the most commonly missed check. Do NOT skip it.
|
|
32
32
|
|
|
33
|
-
**Priority over commands rule**: This check runs BEFORE the `slash-
|
|
33
|
+
**Priority over commands rule**: This check runs BEFORE the `slash-command-routing-policy` rule. If a model switch
|
|
34
34
|
is recommended, show the suggestion first. Only after the user responds, execute the command.
|
|
35
35
|
|
|
36
36
|
**If ambiguous** (could be opus or sonnet): default to **sonnet** — cheaper, and the user can escalate.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "always"
|
|
3
|
+
description: "No cheap questions — never ask what context answers, never offer Iron-Law-violating options, never stage no-trade-off choices; mode-independent (off / auto / on)"
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
source: package
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# No Cheap Questions
|
|
9
|
+
|
|
10
|
+
A question is **cheap** when the answer follows from stated context,
|
|
11
|
+
when an option would breach an Iron Law, when choices differ only in
|
|
12
|
+
sequencing or format, or when one option is obviously dominant. Cheap
|
|
13
|
+
questions are noise, regardless of `personal.autonomy`.
|
|
14
|
+
|
|
15
|
+
Mode-independent. The "trivial" failure modes in
|
|
16
|
+
[`autonomous-execution`](autonomous-execution.md) are scoped to
|
|
17
|
+
`personal.autonomy: on` (or `auto`-after-opt-in); this rule lifts the
|
|
18
|
+
**no-trade-off** subset to apply in `off` and pre-opt-in `auto` too.
|
|
19
|
+
|
|
20
|
+
## The Iron Laws
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
NEVER ASK WHAT THE STATED CONTEXT ALREADY ANSWERS.
|
|
24
|
+
NEVER PRESENT AN OPTION THAT VIOLATES AN IRON LAW.
|
|
25
|
+
NEVER OFFER NUMBERED CHOICES WITHOUT A REAL TRADE-OFF.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Hold in `off`, `auto`, and `on`. Autonomy never lifts them.
|
|
29
|
+
|
|
30
|
+
## What counts as cheap
|
|
31
|
+
|
|
32
|
+
| Class | Pattern · why cheap |
|
|
33
|
+
|---|---|
|
|
34
|
+
| **Sequencing** | "Step 2 or 3 next?" when roadmap orders them — answer is in the roadmap |
|
|
35
|
+
| **Format-only** | "Table or paragraph?" — no semantic trade-off |
|
|
36
|
+
| **Commit asks** | "Commit now?" — [`commit-policy`](commit-policy.md): never ask |
|
|
37
|
+
| **CI / test asks** | "Run tests now?" — [`verify-before-complete`](verify-before-complete.md) decides |
|
|
38
|
+
| **Fenced-step re-asks** | "Start Phase 1?" after "plan only" — [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates) |
|
|
39
|
+
| **Iron-Law option** | Option breaches `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default` — does not exist |
|
|
40
|
+
| **Context-derived** | Answer follows from prior turn / standing instruction / roadmap — act, state assumption inline |
|
|
41
|
+
| **Dominant option** | One choice obviously correct; alternatives carry no upside — pick it |
|
|
42
|
+
| **Re-ask after decline** | Same path after user said no — [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task) |
|
|
43
|
+
|
|
44
|
+
## Pre-Send Self-Check — MANDATORY before every question
|
|
45
|
+
|
|
46
|
+
Before drafting any numbered-options block, run silently:
|
|
47
|
+
|
|
48
|
+
1. Does the answer follow from already-stated context?
|
|
49
|
+
2. Does any option violate [`commit-policy`](commit-policy.md),
|
|
50
|
+
[`scope-control § git-ops`](scope-control.md), or
|
|
51
|
+
[`non-destructive-by-default`](non-destructive-by-default.md)?
|
|
52
|
+
3. Are options pure sequencing / format with no trade-off?
|
|
53
|
+
4. Is one option obviously dominant?
|
|
54
|
+
5. Did the user fence the next step (*"plan only"*, *"review first"*)?
|
|
55
|
+
→ deliver + handback per [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
|
|
56
|
+
6. Did the user already decline? Re-asking is forbidden per
|
|
57
|
+
[`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
58
|
+
|
|
59
|
+
Any "yes" → **do not ask**. Pick the dominant path, state the
|
|
60
|
+
assumption inline (*"assuming X — adjust if wrong"*), hand back. The
|
|
61
|
+
one-question-per-turn Iron Law from
|
|
62
|
+
[`ask-when-uncertain`](ask-when-uncertain.md) still applies when the
|
|
63
|
+
question is genuine.
|
|
64
|
+
|
|
65
|
+
## When asking IS allowed
|
|
66
|
+
|
|
67
|
+
- Real architectural / scope decision with non-obvious trade-offs.
|
|
68
|
+
- Vague-request trigger per
|
|
69
|
+
[`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
|
|
70
|
+
- Security-sensitive path per
|
|
71
|
+
[`security-sensitive-stop`](security-sensitive-stop.md).
|
|
72
|
+
- Hard Floor in [`non-destructive-by-default`](non-destructive-by-default.md)
|
|
73
|
+
fires — confirmation is mandatory, never cheap.
|
|
74
|
+
- Two genuinely-equivalent paths; user preference is the tiebreaker.
|
|
75
|
+
|
|
76
|
+
In doubt → genuine. Ask. This rule narrows asking, never widens silence.
|
|
77
|
+
|
|
78
|
+
## Interactions
|
|
79
|
+
|
|
80
|
+
- [`ask-when-uncertain`](ask-when-uncertain.md) — vague triggers +
|
|
81
|
+
one-question-per-turn; this rule narrows the cheap subset.
|
|
82
|
+
- [`autonomous-execution`](autonomous-execution.md) — mode-scoped
|
|
83
|
+
triviality there; mode-independent floor here.
|
|
84
|
+
- [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) ·
|
|
85
|
+
[`non-destructive-by-default`](non-destructive-by-default.md) —
|
|
86
|
+
the Iron Laws this rule defends.
|
|
87
|
+
- [`user-interaction`](user-interaction.md) — numbered-options shape;
|
|
88
|
+
this rule decides whether the block is sent at all.
|
|
89
|
+
- [`direct-answers`](direct-answers.md) — brevity, no flattery.
|