@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
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "always"
|
|
3
|
-
description: "Agent is never destructive
|
|
3
|
+
description: "Agent is never destructive — Hard Floor always asks for prod-trunk merges, deploys, pushes, prod data/infra, bulk deletions, and bulk-deletion/infra commits; no autonomy or roadmap bypass"
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
source: package
|
|
6
|
+
load_context:
|
|
7
|
+
- .agent-src.uncompressed/contexts/authority/destructive-mechanics.md
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
# Non-Destructive by Default
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
production systems.
|
|
12
|
-
every conversation, every turn. Autonomy settings, "just
|
|
13
|
-
directives, roadmap authorizations, and standing
|
|
14
|
-
other rules; **none lift this one**.
|
|
12
|
+
The agent is **never** destructive and **never** endangers user work
|
|
13
|
+
or production systems. This is the universal safety floor — it applies
|
|
14
|
+
in every mode, every conversation, every turn. Autonomy settings, "just
|
|
15
|
+
keep going" directives, roadmap authorizations, and standing
|
|
16
|
+
permissions narrow other rules; **none of them lift this one**.
|
|
15
17
|
|
|
16
18
|
## The Iron Law
|
|
17
19
|
|
|
@@ -23,8 +25,8 @@ NO "JUST KEEP GOING" CAN BYPASS IT.
|
|
|
23
25
|
|
|
24
26
|
Triggers below require explicit user confirmation **on this turn** —
|
|
25
27
|
not from a previous turn, not from a roadmap, not from a standing
|
|
26
|
-
autonomy directive (
|
|
27
|
-
|
|
28
|
+
autonomy directive (see [`autonomous-execution`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)
|
|
29
|
+
for the anchor list of recognized phrases):
|
|
28
30
|
|
|
29
31
|
| Trigger | Examples |
|
|
30
32
|
|---|---|
|
|
@@ -32,7 +34,7 @@ autonomy directive (anchor list of recognized phrases:
|
|
|
32
34
|
| **Deploy / release** | `terraform apply` on prod, `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment |
|
|
33
35
|
| **Push to remote** | any `git push` (also covered by [`scope-control`](scope-control.md), restated so the floor never weakens) |
|
|
34
36
|
| **Production data / infra** | prod DB writes or migrations, prod config, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline |
|
|
35
|
-
| **Whimsical or unscoped bulk deletion** | `rm -rf <dir>`, `git rm -r`, glob deletions, `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work — when **not required by the current task**. Task-aligned bulk deletions are allowed during WIP — see below. |
|
|
37
|
+
| **Whimsical or unscoped bulk deletion** | `rm -rf <dir>`, `git rm -r`, glob deletions, `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work — when the deletions are **not required by the current task**. Task-aligned bulk deletions are allowed during WIP — see below. |
|
|
36
38
|
| **Commit containing bulk deletions or infra changes** | a commit whose diff removes a directory, deletes ≥5 unrelated files, or touches Terraform / Pulumi / k8s manifests / Ansible / cloud-config — surface the diff and confirm even when [`commit-policy`](commit-policy.md) otherwise authorizes the commit |
|
|
37
39
|
|
|
38
40
|
Standing "just keep going" + next step crosses the floor → STOP,
|
|
@@ -51,63 +53,27 @@ of truth makes it reversible. Lives in
|
|
|
51
53
|
## Bulk deletions during WIP — allowed if task-connected
|
|
52
54
|
|
|
53
55
|
Deletions inside an **active, user-stated task** are allowed in the
|
|
54
|
-
working tree, **even multiple files or multiple folders
|
|
55
|
-
moves to the **commit** (row 6 above), not the in-progress edit.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- Refactor naturally drops deprecated code the user already agreed is dead
|
|
61
|
-
- Cleanup of generated artifacts — `node_modules/`, `dist/`, `.next/`,
|
|
62
|
-
build caches, `vendor/` reinstall — never source code
|
|
63
|
-
- Single-file edits, single-class refactors, deleting **one** file the
|
|
64
|
-
user just named
|
|
65
|
-
- Renames and moves (technically delete + add)
|
|
66
|
-
|
|
67
|
-
**Floor fires on the edit when the deletion is:**
|
|
68
|
-
|
|
69
|
-
- Whimsical — "while I was in there", drive-by cleanup not part of the task
|
|
70
|
-
- Unnamed scope — "delete all the old tests" without a list, glob
|
|
71
|
-
across unrelated files, "clean up the legacy folder" with no inventory
|
|
72
|
-
- ≥5 unrelated files in one operation, outside current task scope
|
|
73
|
-
- Content destruction — `DROP TABLE`, `TRUNCATE`, `git reset --hard`
|
|
74
|
-
past unpushed work, database wipes (destroys *content*, not just tree)
|
|
75
|
-
|
|
76
|
-
Ambiguous → floor wins. Ask.
|
|
77
|
-
|
|
78
|
-
**The commit of task-aligned bulk deletions still needs its own ask.**
|
|
79
|
-
A roadmap or task authorizes the *edit*; only the user-this-turn
|
|
80
|
-
authorizes the *commit* (row 6). Surface the diff (paths + counts), get
|
|
81
|
-
confirmation, then commit.
|
|
56
|
+
working tree, **even multiple files or multiple folders** — the Hard
|
|
57
|
+
Floor moves to the **commit** (row 6 above), not the in-progress edit.
|
|
58
|
+
Whimsical / drive-by / unnamed-scope deletions still trip the floor on
|
|
59
|
+
the edit. Full allowed/forbidden lists in
|
|
60
|
+
[`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
|
|
61
|
+
§ Bulk deletions during WIP.
|
|
82
62
|
|
|
83
63
|
## Failure modes
|
|
84
64
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
only the user-this-turn authorizes the floor crossing.
|
|
92
|
-
- Refusing to delete files the user already named because "the floor
|
|
93
|
-
fires on `rm`". It does not — task-aligned WIP deletions are
|
|
94
|
-
allowed, even multi-folder. Floor fires when the deletion is
|
|
95
|
-
whimsical, unscoped, or about to be committed.
|
|
96
|
-
- Committing a diff that removes a directory, deletes ≥5 unrelated
|
|
97
|
-
files, or touches Terraform / k8s manifests / Ansible without
|
|
98
|
-
surfacing the diff first — even when [`commit-policy`](commit-policy.md)
|
|
99
|
-
otherwise authorizes commits (e.g. `/commit-in-chunks`, roadmap
|
|
100
|
-
pre-scan, an explicit "commit this now"). Bulk-deletion / infra
|
|
101
|
-
commits need their own ask, every time.
|
|
102
|
-
- Reading a roadmap step listing files to delete as authorization to
|
|
103
|
-
*commit* the deletion. Step authorizes the *edit*; the commit is
|
|
104
|
-
row 6 of the Hard Floor and needs its own confirmation.
|
|
65
|
+
The full failure-mode catalog (autonomy-as-cover, roadmap-as-authorization,
|
|
66
|
+
refusing-named-deletions, commit-without-diff-surface,
|
|
67
|
+
roadmap-step-≠-commit-authorization) lives in
|
|
68
|
+
[`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
|
|
69
|
+
§ Failure modes. Reach for it when a Hard-Floor situation feels
|
|
70
|
+
ambiguous; the rule itself stays focused on the trigger table.
|
|
105
71
|
|
|
106
72
|
## Cloud Behavior
|
|
107
73
|
|
|
108
74
|
The Hard Floor applies on every surface, including Claude.ai Web,
|
|
109
|
-
Skills API, and any cloud agent.
|
|
110
|
-
predates and outranks any platform-specific autonomy default.
|
|
75
|
+
Skills API, and any cloud agent. There is no "cloud override" — the
|
|
76
|
+
floor predates and outranks any platform-specific autonomy default.
|
|
111
77
|
|
|
112
78
|
## See also
|
|
113
79
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
description: "First
|
|
4
|
-
alwaysApply:
|
|
2
|
+
type: "auto"
|
|
3
|
+
description: "First turn of a conversation on a project — check onboarding.onboarded in .agent-settings.yml; when false, prompt the user to run /onboard before executing any other request"
|
|
4
|
+
alwaysApply: false
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -73,7 +73,7 @@ gate. This protects projects that were set up before this rule shipped.
|
|
|
73
73
|
conversation, max.
|
|
74
74
|
- Replace normal settings edits. Mid-life changes are ad-hoc (edit the
|
|
75
75
|
file directly or ask the agent, which follows
|
|
76
|
-
[`layered-settings`](
|
|
76
|
+
[`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules));
|
|
77
77
|
this rule is a one-time gate.
|
|
78
78
|
- Run on every agent turn. First turn only.
|
|
79
79
|
|
|
@@ -89,6 +89,6 @@ gate. This protects projects that were set up before this rule shipped.
|
|
|
89
89
|
## See also
|
|
90
90
|
|
|
91
91
|
- [`/onboard`](../commands/onboard.md) — the command this gate invokes
|
|
92
|
-
- [`layered-settings`](
|
|
92
|
+
- [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md) — merge rules for mid-life edits
|
|
93
93
|
- [`agent-settings` template](../templates/agent-settings.md) — `onboarding.onboarded` reference
|
|
94
94
|
- [`rule-type-governance`](rule-type-governance.md) — why this is `always`
|
|
@@ -37,8 +37,8 @@ Look, in order, for:
|
|
|
37
37
|
- `.github/historical-bug-patterns.yml` (or
|
|
38
38
|
`agents/historical-bug-patterns.yml`)
|
|
39
39
|
|
|
40
|
-
If neither exists, fall back to engineering-memory via
|
|
41
|
-
[`memory-access`](
|
|
40
|
+
If neither file exists, fall back to the engineering-memory layer via
|
|
41
|
+
[`memory-access`](../../docs/guidelines/agent-infra/memory-access.md):
|
|
42
42
|
|
|
43
43
|
```python
|
|
44
44
|
from scripts.memory_lookup import retrieve
|
|
@@ -50,11 +50,11 @@ extra = retrieve(
|
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
Curated memory (`agents/memory/ownership.yml`,
|
|
53
|
-
`agents/memory/historical-patterns.yml`)
|
|
54
|
-
project-local YAMLs and is merged into the routing output
|
|
55
|
-
memory and project YAMLs are absent, skip this rule and
|
|
56
|
-
[`reviewer-awareness`](reviewer-awareness.md) defaults. **Do
|
|
57
|
-
owners or patterns** from context.
|
|
53
|
+
`agents/memory/historical-patterns.yml`) carries the same schema as the
|
|
54
|
+
project-local YAMLs and is merged into the routing output alongside
|
|
55
|
+
them. If both memory and project YAMLs are absent, skip this rule and
|
|
56
|
+
rely on [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do
|
|
57
|
+
not invent owners or patterns** from context.
|
|
58
58
|
|
|
59
59
|
### 2. Match the diff
|
|
60
60
|
|
|
@@ -66,7 +66,7 @@ For every changed file, collect:
|
|
|
66
66
|
mode and the minimum control or test the project expects.
|
|
67
67
|
|
|
68
68
|
Matching uses glob patterns (see
|
|
69
|
-
[`review-routing-data-format`](
|
|
69
|
+
[`review-routing-data-format`](../../docs/guidelines/agent-infra/review-routing-data-format.md)
|
|
70
70
|
for the schema).
|
|
71
71
|
|
|
72
72
|
### 3. Surface findings
|
|
@@ -117,7 +117,7 @@ When producing a review plan, include:
|
|
|
117
117
|
|
|
118
118
|
- [`reviewer-awareness`](reviewer-awareness.md) — formatting reviewer
|
|
119
119
|
suggestions.
|
|
120
|
-
- [`review-routing-data-format`](
|
|
120
|
+
- [`review-routing-data-format`](../../docs/guidelines/agent-infra/review-routing-data-format.md)
|
|
121
121
|
— YAML schemas for ownership-map and historical-bug-patterns.
|
|
122
122
|
- [`review-routing`](../skills/review-routing/SKILL.md) — the skill
|
|
123
123
|
that produces the merged routing report.
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Any touch to agents/roadmaps/ — create/rename/delete/move, edit checkboxes ([x]/[~]/[-]), add/rename/remove phases — must regenerate dashboard and archive if 0 open items, same response"
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
<!-- cloud_safe: degrade -->
|
|
9
|
+
<!-- Authoring discipline applies in cloud; local script + regen are no-ops there. -->
|
|
10
|
+
|
|
8
11
|
# Roadmap Progress Sync
|
|
9
12
|
|
|
10
|
-
## Iron Law
|
|
13
|
+
## Iron Law — dashboard sync
|
|
11
14
|
|
|
12
15
|
```
|
|
13
16
|
ANY ROADMAP TOUCH → REGENERATE THE DASHBOARD, SAME RESPONSE.
|
|
@@ -15,21 +18,75 @@ NO EXCEPTIONS. NO "I'LL DO IT AT THE END". NO BATCHING ACROSS TURNS.
|
|
|
15
18
|
A ROADMAP NOT IN THE DASHBOARD IS A RULE VIOLATION, NOT AN OVERSIGHT.
|
|
16
19
|
```
|
|
17
20
|
|
|
18
|
-
**Roadmap touch =** create file, rename, delete, move
|
|
19
|
-
`roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove
|
|
20
|
-
**OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
|
|
21
|
+
**Roadmap touch =** create the file, rename it, delete it, move it
|
|
22
|
+
between `roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove a
|
|
23
|
+
phase, **OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
|
|
24
|
+
|
|
25
|
+
`agents/roadmaps-progress.md` is the read-only dashboard. Every
|
|
26
|
+
unsynced edit makes it lie to the next reader. Created a roadmap
|
|
27
|
+
without regenerating? The dashboard claims it does not exist. Marked
|
|
28
|
+
8 steps `[x]` and forgot the regen? The dashboard says 0 done.
|
|
21
29
|
|
|
22
|
-
|
|
23
|
-
edit lies to next reader. Created roadmap, no regen → dashboard
|
|
24
|
-
claims it does not exist. Marked 8 steps `[x]`, forgot regen →
|
|
25
|
-
dashboard says 0 done.
|
|
30
|
+
## Iron Law — every active roadmap is trackable
|
|
26
31
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
```
|
|
33
|
+
EVERY ACTIVE ROADMAP MUST CONTAIN AT LEAST ONE TRACKABLE CHECKBOX
|
|
34
|
+
(`- [ ]`) PER NON-INTRO PHASE. ROADMAPS WITHOUT EXECUTABLE STEPS
|
|
35
|
+
EITHER GET A CHECKLIST OR THE `status: draft` FLAG.
|
|
36
|
+
CI-ENFORCED: `scripts/check_roadmap_trackable.py` (CANNOT BE DEFERRED).
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Active roadmap =** any file in `agents/roadmaps/` (root, not
|
|
40
|
+
`archive/` or `skipped/`) without `status: draft` frontmatter.
|
|
41
|
+
|
|
42
|
+
**Trackable checkbox =** an actionable `- [ ]` line under a `## Phase N`
|
|
43
|
+
or `### Phase N` heading (numeric `Phase 1`, roman `Phase II`, or
|
|
44
|
+
letter-track `Phase A1` — matched by the dashboard's `PHASE_RE`).
|
|
45
|
+
Tables of decisions, ICE matrices, ADR captures, and "block
|
|
46
|
+
sequencing" tables are valid **rationale**, but they do not satisfy
|
|
47
|
+
this rule on their own — they must be paired with at least one
|
|
48
|
+
`## Phase N` section whose checkboxes execute the decision.
|
|
49
|
+
Headings such as `## Phase steps`, `### Sequencing — Phase 1 …`,
|
|
50
|
+
`### P0 #1 — …`, or `## Block A` do **not** count — only the
|
|
51
|
+
canonical `Phase <id>` form parsed by the dashboard.
|
|
52
|
+
|
|
53
|
+
**CI backstop.** `scripts/check_roadmap_trackable.py` (package-shipped,
|
|
54
|
+
wire into the consumer's pre-commit / pre-push / Actions gate) fails
|
|
55
|
+
when an active roadmap has zero canonical `Phase` headings or when
|
|
56
|
+
any parsed phase has zero checkboxes. Last line of defence — real-time
|
|
57
|
+
authoring still flips checkboxes and regenerates the dashboard the
|
|
58
|
+
same response.
|
|
59
|
+
|
|
60
|
+
## Status — binary `ready` (default) vs `draft`
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
---
|
|
64
|
+
status: draft # hidden from the dashboard until flipped
|
|
65
|
+
---
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Two values, no synonyms. Anything else — no frontmatter at all,
|
|
69
|
+
`status: ready`, an unknown value — counts as **ready** and lands
|
|
70
|
+
in the dashboard.
|
|
71
|
+
|
|
72
|
+
- **Ready** is the implicit default. New roadmaps are created
|
|
73
|
+
ready unless the user explicitly says draft. Ready roadmaps are
|
|
74
|
+
listed in the dashboard, count towards open/done totals, and
|
|
75
|
+
trip the "completed but not archived" warning when they close.
|
|
76
|
+
- **Draft** hides the file from the dashboard entirely (not
|
|
77
|
+
counted, not listed). Use it while the roadmap is still being
|
|
78
|
+
authored, while waiting for upstream decisions, or as a
|
|
79
|
+
capture-only synthesis that has not yet been promoted to
|
|
80
|
+
executable phases. Flip to ready (or remove the field) the
|
|
81
|
+
moment the roadmap is ready to track.
|
|
82
|
+
|
|
83
|
+
**Completion = archival, same response.** When the edit takes a
|
|
84
|
+
roadmap to `count_open == 0` (every item is `[x]`, `[~]`, or `[-]`),
|
|
85
|
+
`git mv` it into `agents/roadmaps/archive/` (or `skipped/` if no `[x]`
|
|
86
|
+
at all) **before** regenerating the dashboard. A 100%-complete
|
|
87
|
+
roadmap left under `agents/roadmaps/` is a rule violation, not an
|
|
88
|
+
optional cleanup. See `roadmap-management` skill for the archive vs
|
|
89
|
+
skipped decision table.
|
|
33
90
|
|
|
34
91
|
## How to regenerate
|
|
35
92
|
|
|
@@ -37,30 +94,32 @@ skipped table.
|
|
|
37
94
|
./agent-config roadmap:progress
|
|
38
95
|
```
|
|
39
96
|
|
|
40
|
-
`./agent-config` wrapper
|
|
41
|
-
delegates to master CLI
|
|
42
|
-
`vendor/event4u/agent-config/`.
|
|
97
|
+
The `./agent-config` wrapper is written into the project root by the
|
|
98
|
+
package installer and delegates to the master CLI inside
|
|
99
|
+
`node_modules/@event4u/agent-config/` or `vendor/event4u/agent-config/`.
|
|
100
|
+
No global tooling required.
|
|
43
101
|
|
|
44
102
|
## Triggers
|
|
45
103
|
|
|
46
104
|
| Edit | Must run, same response |
|
|
47
105
|
|---|---|
|
|
48
|
-
| **Create new roadmap file** | regenerate dashboard |
|
|
49
|
-
| **Rename or delete roadmap file** | regenerate dashboard |
|
|
106
|
+
| **Create a new roadmap file** | regenerate dashboard |
|
|
107
|
+
| **Rename or delete a roadmap file** | regenerate dashboard |
|
|
50
108
|
| Mark step `[x]`, `[~]`, `[-]`, or unmark back to `[ ]` | regenerate dashboard |
|
|
51
|
-
| Add, rename, or remove phase | regenerate dashboard |
|
|
109
|
+
| Add, rename, or remove a phase | regenerate dashboard |
|
|
52
110
|
| **Last `[ ]` flips** — roadmap reaches `count_open == 0` | `git mv` → `archive/` (or `skipped/`) **then** regenerate dashboard |
|
|
53
111
|
| Move roadmap between `roadmaps/` ↔ `archive/` ↔ `skipped/` | regenerate dashboard |
|
|
54
112
|
|
|
55
|
-
**Batching:** multiple
|
|
56
|
-
|
|
57
|
-
|
|
113
|
+
**Batching rule:** if you edit multiple checkboxes in one response, a
|
|
114
|
+
**single** regeneration at the end of that response is enough — but
|
|
115
|
+
the response must not end without it. If one of those edits closes a
|
|
116
|
+
roadmap, archive it first, then run the single regen.
|
|
58
117
|
|
|
59
118
|
## Autonomous execution — checkbox cadence
|
|
60
119
|
|
|
61
|
-
|
|
62
|
-
loses progress unless checkboxes flip
|
|
63
|
-
Iron Law:
|
|
120
|
+
When executing a roadmap autonomously (multi-turn, no per-step user
|
|
121
|
+
prompt), the user loses progress visibility unless checkboxes flip
|
|
122
|
+
**as work lands**, not in a batch at the end. Iron Law:
|
|
64
123
|
|
|
65
124
|
```
|
|
66
125
|
EVERY DONE STEP FLIPS [ ] → [x] IN NEXT REPLY THAT ACKNOWLEDGES IT.
|
|
@@ -68,73 +127,66 @@ NO "I UPDATE ROADMAP AT END OF PHASE."
|
|
|
68
127
|
NO "FOUR STEPS DONE, ONE COMMIT, ONE REGEN."
|
|
69
128
|
```
|
|
70
129
|
|
|
71
|
-
Step counts as
|
|
72
|
-
|
|
73
|
-
- Code / docs change for step **written and saved** AND
|
|
74
|
-
- Verification cited in step (project CI command, targeted test, lint) **passed
|
|
75
|
-
in this response or earlier** — fresh output, not memory.
|
|
76
|
-
|
|
77
|
-
Then in **same reply**: flip checkbox, regen dashboard, commit if
|
|
78
|
-
commit policy allows.
|
|
130
|
+
Step counts as completed when:
|
|
79
131
|
|
|
80
|
-
**
|
|
132
|
+
- Code / docs change for that step has been **written and saved** AND
|
|
133
|
+
- Verification cited in the step (project CI command, targeted test, lint) has
|
|
134
|
+
**passed in this response or an earlier one** — fresh output, not memory.
|
|
81
135
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
> turns without dashboard movement.
|
|
136
|
+
Then in the **same reply**: flip the checkbox, regenerate the
|
|
137
|
+
dashboard, commit if commit policy allows.
|
|
85
138
|
|
|
86
|
-
**
|
|
139
|
+
**Forbidden:** four turns of step work, dashboard flat, single regen at the end.
|
|
140
|
+
**Required:** each turn — implement step, flip `[x]`, regen, commit (if policy allows).
|
|
141
|
+
A reply that lands a verified step without flipping its checkbox is a rule violation.
|
|
87
142
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
**In-progress marker:** step takes more than one reply → mark `[~]`
|
|
94
|
-
moment work starts, regen. User sees row move `[ ]` → `[~]` → `[x]`
|
|
95
|
-
instead of silent rows. `[~]` open for `count_open` but moves phase
|
|
96
|
-
percentage forward.
|
|
143
|
+
**In-progress marker:** when a step takes more than one reply,
|
|
144
|
+
mark it `[~]` the moment work starts on it and regenerate. The
|
|
145
|
+
user sees one row move from `[ ]` to `[~]` to `[x]` instead of
|
|
146
|
+
silent rows. `[~]` is treated as open for `count_open` but moves
|
|
147
|
+
the phase percentage forward in the dashboard.
|
|
97
148
|
|
|
98
149
|
## Pre-send self-check — MANDATORY
|
|
99
150
|
|
|
100
|
-
Before sending any reply that touched `agents/roadmaps/`,
|
|
151
|
+
Before sending any reply that touched `agents/roadmaps/`, run this
|
|
152
|
+
silent gate:
|
|
101
153
|
|
|
102
|
-
1. Did this turn create, rename, delete, or move a roadmap file? → regen MUST be in reply.
|
|
103
|
-
2. Did this turn flip any checkbox in a roadmap file? → regen MUST be in reply.
|
|
104
|
-
3. Did the regen output (`✅ Wrote agents/roadmaps-progress.md · …`) actually appear this turn? → no
|
|
154
|
+
1. Did this turn create, rename, delete, or move a roadmap file? → regen MUST be in the reply.
|
|
155
|
+
2. Did this turn flip any checkbox in a roadmap file? → regen MUST be in the reply.
|
|
156
|
+
3. Did the regen output (`✅ Wrote agents/roadmaps-progress.md · …`) actually appear this turn? → if no, run it now before sending.
|
|
105
157
|
4. **Autonomous roadmap execution gate** — did this turn complete a roadmap step (code saved + verification passed) without flipping its checkbox? → flip `[x]` (or `[~]` if multi-turn) and regen before sending.
|
|
158
|
+
5. **Trackable-roadmap gate** — did this turn create or substantially edit a roadmap file? → does it now contain at least one `- [ ]` per non-intro phase, **or** carry `status: draft` in frontmatter? → if neither, add the checklist or the draft flag before sending.
|
|
106
159
|
|
|
107
160
|
Any "yes" + no regen run = rule violation. Rerun before sending.
|
|
108
161
|
|
|
109
|
-
##
|
|
162
|
+
## Failure modes
|
|
110
163
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
164
|
+
- **Created the roadmap, marked Phase 1 done across multiple turns,
|
|
165
|
+
never regenerated** — dashboard silently lies "this roadmap does
|
|
166
|
+
not exist" to the next reader. Canonical failure of this rule;
|
|
167
|
+
the rule was hardened in response to it.
|
|
168
|
+
- **Regenerated yesterday, edited today, "I'll regen at session
|
|
169
|
+
end"** — session ends from a crash, regen never lands.
|
|
170
|
+
- **Closed a roadmap (last `[ ]` → `[x]`) and regenerated before
|
|
171
|
+
`git mv`** — the closed roadmap reappears in "Open roadmaps".
|
|
172
|
+
- **Edited the dashboard by hand to "fix it quickly"** — next regen
|
|
173
|
+
overwrites the manual edit; no audit trail of why.
|
|
174
|
+
- **Autonomous run, four steps shipped across four turns, dashboard
|
|
175
|
+
flat the whole time, single regen at the end** — user lost
|
|
176
|
+
progress visibility for the entire run. Each completed step must
|
|
177
|
+
flip its checkbox in the reply that ships it.
|
|
178
|
+
- **Decision-only roadmap shipped without checkboxes** — file
|
|
179
|
+
contains decisions / ICE / block-sequencing but zero `- [ ]`,
|
|
180
|
+
dashboard shows `0/0` or omits it. Pair with a `## Phase N`
|
|
181
|
+
section or mark `status: draft` (CI catches this now).
|
|
182
|
+
- **Headings off-canon (`### P0 #N`, `## Block A`, `### Sequencing
|
|
183
|
+
— Phase 1`)** — `PHASE_RE` skips them, roadmap invisible to the
|
|
184
|
+
dashboard. Rename to `## Phase <id>` or mark `status: draft`.
|
|
115
185
|
|
|
116
186
|
## Do NOT
|
|
117
187
|
|
|
118
188
|
- Do NOT edit `agents/roadmaps-progress.md` by hand — always regenerate.
|
|
119
|
-
- Do NOT defer regen to "next commit" or "before push" — same response.
|
|
120
|
-
- Do NOT rely on CI (`--check` mode) as first line of defence — CI is last-line, not real-time.
|
|
121
|
-
- Do NOT skip regen because "only one checkbox changed" — dashboard aggregates counts and phase percentages that shift on single edits.
|
|
122
|
-
- Do NOT leave 100%-complete roadmap in `agents/roadmaps/` "for review" — archive
|
|
123
|
-
- Do NOT regenerate dashboard before `git mv` when roadmap closes — otherwise it reappears in "Open roadmaps".
|
|
124
|
-
|
|
125
|
-
## Failure modes
|
|
126
|
-
|
|
127
|
-
- **Created roadmap, marked Phase 1 done across multiple turns,
|
|
128
|
-
never regenerated** — dashboard silently lies "this roadmap does
|
|
129
|
-
not exist" to next reader. Canonical failure of this rule; rule
|
|
130
|
-
hardened in response to it.
|
|
131
|
-
- **Regenerated yesterday, edited today, "regen at session end"** —
|
|
132
|
-
session ends from crash, regen never lands.
|
|
133
|
-
- **Closed roadmap (last `[ ]` → `[x]`) and regenerated before
|
|
134
|
-
`git mv`** — closed roadmap reappears in "Open roadmaps".
|
|
135
|
-
- **Edited dashboard by hand to "fix it quickly"** — next regen
|
|
136
|
-
overwrites manual edit; no audit trail.
|
|
137
|
-
- **Autonomous run, four steps shipped across four turns, dashboard
|
|
138
|
-
flat whole time, single regen at end** — user lost progress
|
|
139
|
-
visibility for entire run. Each done step must flip checkbox in
|
|
140
|
-
reply that ships it.
|
|
189
|
+
- Do NOT defer the regen to "next commit" or "before push" — same response.
|
|
190
|
+
- Do NOT rely on CI (`--check` mode) as the first line of defence — CI is last-line, not real-time.
|
|
191
|
+
- Do NOT skip the regen because "only one checkbox changed" — the dashboard aggregates counts and phase percentages that shift on single edits.
|
|
192
|
+
- Do NOT leave a 100%-complete roadmap in `agents/roadmaps/` "for review" — `git mv` to archive **before** regenerating, otherwise it reappears in "Open roadmaps".
|
|
@@ -9,7 +9,7 @@ source: package
|
|
|
9
9
|
|
|
10
10
|
Auto-activates when `.agent-settings.yml` sets `roles.active_role` to
|
|
11
11
|
one of the six modes defined in
|
|
12
|
-
[`role-contracts`](
|
|
12
|
+
[`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md):
|
|
13
13
|
`developer`, `reviewer`, `tester`, `po`, `incident`, `planner`.
|
|
14
14
|
|
|
15
15
|
Read `roles.active_role` from `.agent-settings.yml` at session start.
|
|
@@ -42,12 +42,12 @@ When active, every closing output MUST:
|
|
|
42
42
|
|
|
43
43
|
## What this rule does NOT do
|
|
44
44
|
|
|
45
|
-
Infer the mode (Phase-3 router does that).
|
|
45
|
+
Infer the mode (Phase-3 router does that). Touch `.agent-settings.yml`
|
|
46
46
|
(only `/mode` writes). Change the contracts (guideline is source of truth).
|
|
47
47
|
|
|
48
48
|
## See also
|
|
49
49
|
|
|
50
|
-
- [`role-contracts`](
|
|
50
|
+
- [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md)
|
|
51
51
|
- [`/mode`](../commands/mode.md)
|
|
52
52
|
- [`ask-when-uncertain`](ask-when-uncertain.md)
|
|
53
53
|
- [`scope-control`](scope-control.md)
|
|
@@ -3,6 +3,8 @@ type: "always"
|
|
|
3
3
|
description: "Scope control — no unsolicited architectural changes, refactors, or library replacements"
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
source: package
|
|
6
|
+
load_context:
|
|
7
|
+
- .agent-src.uncompressed/contexts/authority/scope-mechanics.md
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
# Scope Control
|
|
@@ -20,62 +22,79 @@ source: package
|
|
|
20
22
|
|
|
21
23
|
The user decides the git shape of the work. Never improvise.
|
|
22
24
|
|
|
23
|
-
> **Commit specifics:** see [`commit-policy`](commit-policy.md)
|
|
24
|
-
> than the general "no git ops without permission"
|
|
25
|
-
>
|
|
25
|
+
> **Commit specifics:** see the canonical [`commit-policy`](commit-policy.md)
|
|
26
|
+
> rule — narrower than the general "no git ops without permission"
|
|
27
|
+
> below (covers the never-ask-about-committing default and the
|
|
28
|
+
> roadmap-authorized exception).
|
|
26
29
|
|
|
27
30
|
- NEVER commit, push, merge, rebase, or force-push without explicit user permission.
|
|
28
|
-
- NEVER create, switch
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
- NEVER create a new branch, switch to a different branch, or delete a
|
|
32
|
+
branch without explicit user permission. This includes spike, scratch,
|
|
33
|
+
throwaway, and worktree branches.
|
|
34
|
+
- NEVER create, close, reopen, or change the target of a pull request
|
|
35
|
+
without explicit user permission.
|
|
32
36
|
- NEVER push a tag or create a release without explicit user permission.
|
|
33
|
-
- NEVER include version numbers, releases, deprecation dates,
|
|
34
|
-
release-tied milestones, or git tags
|
|
35
|
-
any planning artifact. Roadmaps plan **work**; releases
|
|
36
|
-
separate
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
- NEVER include version numbers, target releases, deprecation dates,
|
|
38
|
+
release-tied milestones, or git tags inside roadmaps, plans, tickets,
|
|
39
|
+
or any other planning artifact. Roadmaps plan **work**; releases and
|
|
40
|
+
tags are a separate decision the user makes outside the roadmap.
|
|
41
|
+
Never surface "which release should this ship in?" as an option in
|
|
42
|
+
numbered choices, ADRs, or roadmap text. If the user wants a release
|
|
43
|
+
pinned to a milestone, they will say so explicitly.
|
|
39
44
|
- If a task seems to need a separate branch or PR, STOP and **brief
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"Explicit permission" = the user said so this turn or gave a standing
|
|
49
|
-
instruction they have not revoked. Earlier permission for another op
|
|
50
|
-
does not carry over.
|
|
45
|
+
the user before asking** — see
|
|
46
|
+
[`scope-mechanics`](../contexts/authority/scope-mechanics.md)
|
|
47
|
+
§ Brief-before-asking for the required Why / What / How sequence.
|
|
48
|
+
|
|
49
|
+
"Explicit permission" means the user said so **in this turn or in a
|
|
50
|
+
standing instruction they have not revoked**. Earlier permission for a
|
|
51
|
+
different operation does not carry over.
|
|
51
52
|
|
|
52
53
|
## Production, infrastructure, bulk-destructive — Hard Floor
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
by a standing autonomy directive. Canonical rule:
|
|
56
|
-
[`non-destructive-by-default`](non-destructive-by-default.md).
|
|
57
|
-
|
|
55
|
+
A subset of the operations above is **never** autonomous and never
|
|
56
|
+
auto-permitted by a standing autonomy directive. Canonical rule:
|
|
57
|
+
[`non-destructive-by-default`](non-destructive-by-default.md). The
|
|
58
|
+
trigger list (production-branch merges, deploys / releases, prod
|
|
59
|
+
data / infra, bulk-destructive ops) and the
|
|
60
|
+
"authorization is this turn, not earlier" clarification live in
|
|
61
|
+
[`scope-mechanics`](../contexts/authority/scope-mechanics.md)
|
|
62
|
+
§ Production, infrastructure, bulk-destructive.
|
|
58
63
|
|
|
59
|
-
|
|
60
|
-
- **Deploys / releases** — `terraform apply` / `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment. Always ask.
|
|
61
|
-
- **Production data / infrastructure** — prod DB writes / migrations, prod config edits, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline. Always ask.
|
|
62
|
-
- **Bulk-destructive ops** — wildcard or directory deletion (`rm -rf <dir>`, `git rm -r`), `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work, mass class / module / migration deletion. Always ask.
|
|
64
|
+
## Decline = silence — no re-asking on the same task
|
|
63
65
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
After the user **declines** a proposal (branch switch, PR creation,
|
|
67
|
+
tag/release entry, separate worktree, version pinning in a roadmap),
|
|
68
|
+
do **not** raise the same proposal again on the same task. The decline
|
|
69
|
+
stands until the user reopens the topic themselves.
|
|
66
70
|
|
|
67
|
-
|
|
71
|
+
Timing and "is this worth asking?" guidance lives in
|
|
72
|
+
[`scope-mechanics`](../contexts/authority/scope-mechanics.md)
|
|
73
|
+
§ Decline = silence — context.
|
|
74
|
+
|
|
75
|
+
## Fenced step — user-set review gates
|
|
76
|
+
|
|
77
|
+
When the user explicitly fences off the next step — *"don't implement
|
|
78
|
+
yet"*, *"plan only"*, *"just write the roadmap, I'll review"*,
|
|
79
|
+
*"review first"*, *"erst Roadmap, ich schau drüber"*, *"nichts
|
|
80
|
+
implementieren"*, *"nur planen"*, *"erstmal nur X, dann ich"* — the
|
|
81
|
+
agent's reply is **the deliverable plus a handoff**, never the
|
|
82
|
+
deliverable plus *"shall we start?"*.
|
|
68
83
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
84
|
+
```
|
|
85
|
+
USER FENCED OFF EXECUTION → DELIVER + HAND BACK.
|
|
86
|
+
NO NUMBERED OPTION OFFERING TO BEGIN WORK.
|
|
87
|
+
NO "READY TO IMPLEMENT?" RE-ASK.
|
|
88
|
+
NO "STARTEN WIR MIT PHASE 1?" PIVOT.
|
|
89
|
+
```
|
|
72
90
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
91
|
+
The fence stands until the user reopens the topic themselves, exactly
|
|
92
|
+
like `Decline = silence` above. Permitted follow-up questions on the
|
|
93
|
+
same turn cover **the deliverable** (adjust scope, fix wording, add a
|
|
94
|
+
section), never **its execution**.
|
|
77
95
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
96
|
+
For the failure-mode catalog (Option 1 = "start now", re-asking after
|
|
97
|
+
delivery, hand-off-to-execution drift, inferring acceptance from a
|
|
98
|
+
thumbs-up) and the explicit bypass phrases that lift the fence, see
|
|
99
|
+
[`scope-mechanics`](../contexts/authority/scope-mechanics.md)
|
|
100
|
+
§ Fenced step.
|