@event4u/agent-config 1.14.0 → 1.15.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 +2 -2
- package/.agent-src/commands/chat-history-checkpoint.md +2 -2
- package/.agent-src/commands/chat-history-clear.md +1 -1
- package/.agent-src/commands/chat-history-resume.md +2 -2
- package/.agent-src/commands/chat-history.md +2 -2
- package/.agent-src/commands/check-current-md.md +43 -32
- package/.agent-src/commands/commit-in-chunks.md +43 -23
- package/.agent-src/commands/compress.md +34 -2
- package/.agent-src/commands/feature-roadmap.md +2 -2
- package/.agent-src/commands/fix-portability.md +2 -2
- package/.agent-src/commands/onboard.md +14 -5
- package/.agent-src/commands/optimize-augmentignore.md +9 -0
- package/.agent-src/commands/refine-ticket.md +9 -7
- package/.agent-src/commands/review-changes.md +35 -8
- package/.agent-src/commands/roadmap-create.md +13 -2
- package/.agent-src/commands/roadmap-execute.md +9 -7
- package/.agent-src/commands/set-cost-profile.md +8 -0
- package/.agent-src/commands/sync-agent-settings.md +9 -0
- package/.agent-src/commands/tests-execute.md +2 -3
- package/.agent-src/rules/artifact-engagement-recording.md +1 -1
- package/.agent-src/rules/augment-portability.md +56 -37
- 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 +3 -2
- package/.agent-src/rules/commit-policy.md +44 -34
- package/.agent-src/rules/direct-answers.md +1 -1
- package/.agent-src/rules/language-and-tone.md +19 -15
- package/.agent-src/rules/non-destructive-by-default.md +18 -18
- package/.agent-src/rules/roadmap-progress-sync.md +133 -74
- package/.agent-src/rules/role-mode-adherence.md +1 -1
- package/.agent-src/rules/size-enforcement.md +2 -1
- package/.agent-src/rules/user-interaction.md +28 -4
- package/.agent-src/scripts/update_roadmap_progress.py +56 -4
- package/.agent-src/skills/blade-ui/SKILL.md +29 -10
- package/.agent-src/skills/command-writing/SKILL.md +15 -4
- 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/livewire/SKILL.md +26 -7
- package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
- package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
- package/.agent-src/skills/skill-writing/SKILL.md +3 -3
- package/.agent-src/skills/upstream-contribute/SKILL.md +2 -2
- package/.agent-src/templates/agent-settings.md +1 -1
- package/.agent-src/templates/roadmaps.md +9 -8
- package/.agent-src/templates/scripts/memory_lookup.py +1 -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 +1 -1
- package/AGENTS.md +6 -4
- package/CHANGELOG.md +83 -8
- package/README.md +24 -23
- package/docs/MIGRATION.md +122 -0
- package/docs/architecture.md +83 -34
- package/docs/contracts/STABILITY.md +95 -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/rule-interactions.md +107 -0
- package/docs/contracts/rule-interactions.yml +142 -0
- package/docs/contracts/ui-stack-extension.md +236 -0
- package/docs/contracts/ui-track-flow.md +338 -0
- package/docs/getting-started.md +2 -2
- package/docs/installation.md +42 -6
- package/docs/migrations/commands-1.15.0.md +112 -0
- package/docs/ui-track-mental-model.md +121 -0
- package/package.json +1 -1
- package/scripts/build_linear_digest.py +4 -4
- package/scripts/check_portability.py +2 -0
- package/scripts/check_public_links.py +185 -0
- package/scripts/check_references.py +1 -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/skill_linter.py +14 -0
- package/scripts/update_counts.py +10 -0
- package/.agent-src/rules/chat-history.md +0 -200
|
@@ -7,10 +7,10 @@ source: package
|
|
|
7
7
|
|
|
8
8
|
# Commit Policy
|
|
9
9
|
|
|
10
|
-
Local commits
|
|
11
|
-
makes review harder. **
|
|
12
|
-
[`autonomous-execution`](autonomous-execution.md),
|
|
13
|
-
[`scope-control`](scope-control.md), and roadmap commands.
|
|
10
|
+
Local commits do not change remote state, but committing prematurely
|
|
11
|
+
makes review harder. This is the **canonical** rule for committing,
|
|
12
|
+
referenced by [`autonomous-execution`](autonomous-execution.md),
|
|
13
|
+
[`scope-control`](scope-control.md), and the roadmap commands.
|
|
14
14
|
|
|
15
15
|
## The Iron Law
|
|
16
16
|
|
|
@@ -20,20 +20,24 @@ EXCEPTIONS ARE EXPLICIT, NOT INFERRED.
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Applies regardless of `personal.autonomy`, conversation momentum, or
|
|
23
|
-
"clean stopping point". Default is **no commit, no
|
|
23
|
+
"but it's a clean stopping point". Default is **no commit, no
|
|
24
|
+
question**.
|
|
24
25
|
|
|
25
26
|
## Exceptions — when committing IS allowed
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
Exactly four ways the agent may commit:
|
|
28
29
|
|
|
29
30
|
1. **User says so this turn** — explicit phrase like "commit this now",
|
|
30
|
-
"go ahead and commit".
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
"go ahead and commit". Permission is for **this commit only**, not
|
|
32
|
+
standing.
|
|
33
|
+
2. **Standing instruction not yet revoked** — user said earlier in
|
|
34
|
+
the conversation "commit after every phase" or similar, and has not
|
|
35
|
+
revoked it. Cache and honor.
|
|
33
36
|
3. **Commit command invoked** — `/commit` (with confirmation) or
|
|
34
37
|
`/commit-in-chunks` (auto-split, no confirmation).
|
|
35
|
-
4. **Roadmap authorization** — roadmap lists explicit commit
|
|
36
|
-
and user invoked execution. See
|
|
38
|
+
4. **Roadmap authorization** — the roadmap file lists explicit commit
|
|
39
|
+
steps and the user invoked roadmap execution. See
|
|
40
|
+
[Roadmap-authorized commits](#roadmap-authorized-commits) below.
|
|
37
41
|
|
|
38
42
|
Anything else → no commit.
|
|
39
43
|
|
|
@@ -56,44 +60,50 @@ four exceptions cover *whether* commits happen; the Hard Floor covers
|
|
|
56
60
|
## NEVER ask about committing
|
|
57
61
|
|
|
58
62
|
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.
|
|
63
|
+
variant is **forbidden**. The user invokes a command or says so
|
|
64
|
+
explicitly. Don't surface a commit option in numbered-options blocks
|
|
65
|
+
unless the rest of the message would be incomplete without it.
|
|
62
66
|
|
|
63
|
-
|
|
67
|
+
The same speech-act check from [`autonomous-execution`](autonomous-execution.md#speech-act-check--the-phrase-must-be-a-meta-instruction-to-the-agent)
|
|
64
68
|
applies in reverse: an explicit commit phrase inside a quote, code
|
|
65
69
|
block, or content (e.g. a copy-paste of a chat log) is **not** a
|
|
66
70
|
permission grant.
|
|
67
71
|
|
|
68
72
|
## NEVER write commit steps into roadmaps unsolicited
|
|
69
73
|
|
|
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
|
+
When **creating** a roadmap (via `/roadmap-create`,
|
|
75
|
+
`/feature-roadmap`, or any roadmap-producing flow), do **not** include
|
|
76
|
+
commit steps unless the user explicitly requested them. Commits are a
|
|
77
|
+
delivery decision; roadmaps plan **work**.
|
|
74
78
|
|
|
75
|
-
If the user explicitly wants commit steps, write them
|
|
76
|
-
(e.g. "Commit phase X: chore: …").
|
|
79
|
+
If the user explicitly wants commit steps in the roadmap, write them
|
|
80
|
+
clearly and unambiguously (e.g. "Commit phase X: chore: …").
|
|
77
81
|
|
|
78
82
|
## Roadmap-authorized commits
|
|
79
83
|
|
|
80
84
|
When **executing** a roadmap that contains commit steps:
|
|
81
85
|
|
|
82
|
-
- **Non-autonomous** (`autonomy: off`, or `auto`
|
|
83
|
-
agent may ask before each commit step.
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
the
|
|
86
|
+
- **Non-autonomous mode** (`personal.autonomy: off`, or `auto`
|
|
87
|
+
before opt-in) — agent may ask before each commit step. The user
|
|
88
|
+
authorized commits by writing them into the roadmap, but retains
|
|
89
|
+
step-level control.
|
|
90
|
+
- **Autonomous mode** (`personal.autonomy: on`, or `auto` after
|
|
91
|
+
opt-in) — agent does a quick pre-scan of the roadmap **before
|
|
92
|
+
starting execution**. If commit steps are found, ask **once** at
|
|
93
|
+
the very start: "Roadmap contains N commit steps — should they be
|
|
94
|
+
executed?". After that, honor or skip per the answer.
|
|
95
|
+
No re-asking per step.
|
|
90
96
|
|
|
91
97
|
The pre-scan ask is the **only** permitted commit-related question
|
|
92
|
-
in autonomous mode.
|
|
98
|
+
in autonomous mode. Once answered, the decision is cached for the
|
|
99
|
+
rest of the roadmap execution.
|
|
93
100
|
|
|
94
101
|
## See also
|
|
95
102
|
|
|
96
|
-
- [`autonomous-execution`](autonomous-execution.md) —
|
|
97
|
-
|
|
98
|
-
- [
|
|
99
|
-
|
|
103
|
+
- [`autonomous-execution`](autonomous-execution.md) — when to suppress
|
|
104
|
+
trivial questions; this rule survives the suppression.
|
|
105
|
+
- [`scope-control`](scope-control.md) — git-ops permission gate
|
|
106
|
+
(push, merge, branch, PR, tag stay separately permission-gated).
|
|
107
|
+
- [`/commit`](../commands/commit.md) — split and commit with confirmation.
|
|
108
|
+
- [`/commit-in-chunks`](../commands/commit-in-chunks.md) — auto-split
|
|
109
|
+
and commit without confirmation.
|
|
@@ -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.
|
|
@@ -135,8 +135,9 @@ The `.md` source files are the English blueprint — they define WHAT to say, no
|
|
|
135
135
|
|
|
136
136
|
### Quoted user-input examples — same rule, with one labeled exception
|
|
137
137
|
|
|
138
|
-
Common drift: a rule documents trigger phrases
|
|
139
|
-
|
|
138
|
+
Common drift pattern: a rule documents trigger phrases the agent
|
|
139
|
+
should recognize and writes them as quoted German examples inside
|
|
140
|
+
English prose. **Not allowed**, even when demonstrative.
|
|
140
141
|
|
|
141
142
|
**Wrong** (DE quote embedded in EN prose):
|
|
142
143
|
|
|
@@ -147,33 +148,36 @@ handle that step autonomously.
|
|
|
147
148
|
A standing "arbeite selbstständig" never lifts the floor.
|
|
148
149
|
```
|
|
149
150
|
|
|
150
|
-
|
|
151
|
+
**Correct** — two ways:
|
|
151
152
|
|
|
152
|
-
1. **Translate to English.** Trigger recognition is semantic; the
|
|
153
|
-
matches intent across languages regardless of example
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
1. **Translate to English.** Trigger recognition is semantic; the
|
|
154
|
+
agent matches intent across languages regardless of the example.
|
|
155
|
+
`("you decide for this step")` works as well as the German.
|
|
156
|
+
2. **Use a labeled `DE: … · EN: …` anchor list** when the
|
|
157
|
+
multilingual nature of recognition is the point:
|
|
156
158
|
|
|
157
159
|
```md
|
|
158
160
|
- DE: "arbeite selbstständig" · "frag nicht jedes Mal" · "tue es einfach"
|
|
159
161
|
- EN: "work autonomously" · "don't ask" · "just do it"
|
|
160
162
|
```
|
|
161
163
|
|
|
162
|
-
|
|
163
|
-
an English `.md
|
|
164
|
-
agent-rendered strings, failure modes must be English.
|
|
165
|
-
abstractly later (e.g. "a standing
|
|
164
|
+
The labeled-anchor block is the **only** allowed location for German
|
|
165
|
+
prose in an English `.md` file. Body text, example sentences, prompt
|
|
166
|
+
templates, agent-rendered strings, and failure modes must be English.
|
|
167
|
+
Reference established phrases abstractly later (e.g. "a standing
|
|
168
|
+
autonomy directive") and link back to the anchor block.
|
|
166
169
|
|
|
167
170
|
### Detection heuristic
|
|
168
171
|
|
|
169
172
|
Before saving an `.md` file under `.augment/`, `.agent-src/`,
|
|
170
173
|
`.agent-src.uncompressed/`, or `agents/`, scan for:
|
|
171
174
|
|
|
172
|
-
- Umlauts (`ä`, `ö`, `ü`, `Ä`, `Ö`, `Ü`, `ß`) outside fenced code,
|
|
173
|
-
paths, and labeled anchor
|
|
175
|
+
- Umlauts (`ä`, `ö`, `ü`, `Ä`, `Ö`, `Ü`, `ß`) outside fenced code,
|
|
176
|
+
file paths, and the labeled anchor block.
|
|
174
177
|
- German function words in unquoted prose: `für`, `nicht`, `dass`,
|
|
175
178
|
`wenn`, `sollte`, `werden`, `arbeite`, `selbstständig`, `jetzt`,
|
|
176
179
|
`einfach`, `weiter`, `lösche`, `frag`, `schreib`, `mach`.
|
|
177
|
-
- Non-English quoted phrases in body text
|
|
180
|
+
- Non-English quoted phrases in body text (paragraphs, list items,
|
|
181
|
+
table cells) when the surrounding prose is English.
|
|
178
182
|
|
|
179
|
-
Hit → translate the fragment or move into a `DE: … · EN: …` block.
|
|
183
|
+
Hit → translate the fragment or move it into a `DE: … · EN: …` block.
|
|
@@ -7,11 +7,11 @@ source: package
|
|
|
7
7
|
|
|
8
8
|
# Non-Destructive by Default
|
|
9
9
|
|
|
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**.
|
|
10
|
+
The agent is **never** destructive and **never** endangers user work
|
|
11
|
+
or production systems. This is the universal safety floor — it applies
|
|
12
|
+
in every mode, every conversation, every turn. Autonomy settings, "just
|
|
13
|
+
keep going" directives, roadmap authorizations, and standing
|
|
14
|
+
permissions narrow other rules; **none of them lift this one**.
|
|
15
15
|
|
|
16
16
|
## The Iron Law
|
|
17
17
|
|
|
@@ -23,8 +23,8 @@ NO "JUST KEEP GOING" CAN BYPASS IT.
|
|
|
23
23
|
|
|
24
24
|
Triggers below require explicit user confirmation **on this turn** —
|
|
25
25
|
not from a previous turn, not from a roadmap, not from a standing
|
|
26
|
-
autonomy directive (
|
|
27
|
-
|
|
26
|
+
autonomy directive (see [`autonomous-execution`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)
|
|
27
|
+
for the anchor list of recognized phrases):
|
|
28
28
|
|
|
29
29
|
| Trigger | Examples |
|
|
30
30
|
|---|---|
|
|
@@ -32,7 +32,7 @@ autonomy directive (anchor list of recognized phrases:
|
|
|
32
32
|
| **Deploy / release** | `terraform apply` on prod, `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment |
|
|
33
33
|
| **Push to remote** | any `git push` (also covered by [`scope-control`](scope-control.md), restated so the floor never weakens) |
|
|
34
34
|
| **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. |
|
|
35
|
+
| **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
36
|
| **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
37
|
|
|
38
38
|
Standing "just keep going" + next step crosses the floor → STOP,
|
|
@@ -51,12 +51,12 @@ of truth makes it reversible. Lives in
|
|
|
51
51
|
## Bulk deletions during WIP — allowed if task-connected
|
|
52
52
|
|
|
53
53
|
Deletions inside an **active, user-stated task** are allowed in the
|
|
54
|
-
working tree, **even multiple files or multiple folders**.
|
|
54
|
+
working tree, **even multiple files or multiple folders**. The floor
|
|
55
55
|
moves to the **commit** (row 6 above), not the in-progress edit.
|
|
56
56
|
|
|
57
57
|
**Allowed during WIP (no floor on the edit):**
|
|
58
58
|
|
|
59
|
-
- A roadmap step or current task explicitly names files / folders to remove
|
|
59
|
+
- A roadmap step or current task explicitly names the files / folders to remove
|
|
60
60
|
- Refactor naturally drops deprecated code the user already agreed is dead
|
|
61
61
|
- Cleanup of generated artifacts — `node_modules/`, `dist/`, `.next/`,
|
|
62
62
|
build caches, `vendor/` reinstall — never source code
|
|
@@ -69,7 +69,7 @@ moves to the **commit** (row 6 above), not the in-progress edit.
|
|
|
69
69
|
- Whimsical — "while I was in there", drive-by cleanup not part of the task
|
|
70
70
|
- Unnamed scope — "delete all the old tests" without a list, glob
|
|
71
71
|
across unrelated files, "clean up the legacy folder" with no inventory
|
|
72
|
-
- ≥5 unrelated files in one operation, outside current task scope
|
|
72
|
+
- ≥5 unrelated files in one operation, outside the current task scope
|
|
73
73
|
- Content destruction — `DROP TABLE`, `TRUNCATE`, `git reset --hard`
|
|
74
74
|
past unpushed work, database wipes (destroys *content*, not just tree)
|
|
75
75
|
|
|
@@ -87,11 +87,11 @@ confirmation, then commit.
|
|
|
87
87
|
deploying, pushing, prod-data edits, or whimsical `rm -rf <dir>`
|
|
88
88
|
always ask.
|
|
89
89
|
- Reading a roadmap step that says "deploy to staging" or
|
|
90
|
-
"merge into main" as authorization.
|
|
91
|
-
only the user-this-turn
|
|
90
|
+
"merge into main" as authorization. The roadmap can sequence the
|
|
91
|
+
work; only the user-this-turn can authorize the floor crossing.
|
|
92
92
|
- Refusing to delete files the user already named because "the floor
|
|
93
93
|
fires on `rm`". It does not — task-aligned WIP deletions are
|
|
94
|
-
allowed, even multi-folder.
|
|
94
|
+
allowed, even multi-folder. The floor fires when the deletion is
|
|
95
95
|
whimsical, unscoped, or about to be committed.
|
|
96
96
|
- Committing a diff that removes a directory, deletes ≥5 unrelated
|
|
97
97
|
files, or touches Terraform / k8s manifests / Ansible without
|
|
@@ -100,14 +100,14 @@ confirmation, then commit.
|
|
|
100
100
|
pre-scan, an explicit "commit this now"). Bulk-deletion / infra
|
|
101
101
|
commits need their own ask, every time.
|
|
102
102
|
- Reading a roadmap step listing files to delete as authorization to
|
|
103
|
-
*commit* the deletion.
|
|
104
|
-
row 6 of the Hard Floor and needs its own confirmation.
|
|
103
|
+
*commit* the deletion. The step authorizes the *edit*; the commit
|
|
104
|
+
is row 6 of the Hard Floor and needs its own confirmation.
|
|
105
105
|
|
|
106
106
|
## Cloud Behavior
|
|
107
107
|
|
|
108
108
|
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.
|
|
109
|
+
Skills API, and any cloud agent. There is no "cloud override" — the
|
|
110
|
+
floor predates and outranks any platform-specific autonomy default.
|
|
111
111
|
|
|
112
112
|
## See also
|
|
113
113
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Any touch to agents/roadmaps/ — creating, renaming, deleting, or moving a roadmap file (including into archive/ or skipped/), editing checkboxes ([x], [~], [-]), or adding/renaming/removing phases — must regenerate the roadmap dashboard in the SAME response; a roadmap that hits 0 open items must also be archived in the SAME response"
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Roadmap Progress Sync
|
|
9
9
|
|
|
10
|
-
## Iron Law
|
|
10
|
+
## Iron Law — dashboard sync
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
ANY ROADMAP TOUCH → REGENERATE THE DASHBOARD, SAME RESPONSE.
|
|
@@ -15,21 +15,72 @@ NO EXCEPTIONS. NO "I'LL DO IT AT THE END". NO BATCHING ACROSS TURNS.
|
|
|
15
15
|
A ROADMAP NOT IN THE DASHBOARD IS A RULE VIOLATION, NOT AN OVERSIGHT.
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
**Roadmap touch =** create file, rename, delete, move
|
|
19
|
-
`roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove
|
|
20
|
-
**OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
|
|
18
|
+
**Roadmap touch =** create the file, rename it, delete it, move it
|
|
19
|
+
between `roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove a
|
|
20
|
+
phase, **OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
|
|
21
21
|
|
|
22
|
-
`agents/roadmaps-progress.md` is read-only dashboard. Every
|
|
23
|
-
edit
|
|
24
|
-
claims it does not exist. Marked
|
|
25
|
-
dashboard says 0 done.
|
|
22
|
+
`agents/roadmaps-progress.md` is the read-only dashboard. Every
|
|
23
|
+
unsynced edit makes it lie to the next reader. Created a roadmap
|
|
24
|
+
without regenerating? The dashboard claims it does not exist. Marked
|
|
25
|
+
8 steps `[x]` and forgot the regen? The dashboard says 0 done.
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
## Iron Law — every active roadmap is trackable
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
EVERY ACTIVE ROADMAP MUST CONTAIN AT LEAST ONE TRACKABLE CHECKBOX
|
|
31
|
+
(`- [ ]`) PER NON-INTRO PHASE. ROADMAPS WITHOUT EXECUTABLE STEPS
|
|
32
|
+
EITHER GET A CHECKLIST OR THE `status: draft` FLAG.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Active roadmap =** any file in `agents/roadmaps/` (root, not
|
|
36
|
+
`archive/` or `skipped/`) without `status: draft` frontmatter.
|
|
37
|
+
|
|
38
|
+
**Trackable checkbox =** an actionable `- [ ]` line under a `## Phase N`
|
|
39
|
+
or `### Phase N` heading (numeric `Phase 1`, roman `Phase II`, or
|
|
40
|
+
letter-track `Phase A1` — matched by the dashboard's `PHASE_RE`).
|
|
41
|
+
Tables of decisions, ICE matrices, ADR captures, and "block
|
|
42
|
+
sequencing" tables are valid **rationale**, but they do not satisfy
|
|
43
|
+
this rule on their own — they must be paired with at least one
|
|
44
|
+
`## Phase N` section whose checkboxes execute the decision.
|
|
45
|
+
Headings such as `## Phase steps`, `### Sequencing — Phase 1 …`, or
|
|
46
|
+
`## Block A` do **not** count — only the canonical `Phase <id>`
|
|
47
|
+
form parsed by the dashboard.
|
|
48
|
+
|
|
49
|
+
## Status — binary `ready` (default) vs `draft`
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
---
|
|
53
|
+
status: draft # hidden from the dashboard until flipped
|
|
54
|
+
---
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Two values, no synonyms. Anything else — no frontmatter at all,
|
|
58
|
+
`status: ready`, an unknown value — counts as **ready** and lands
|
|
59
|
+
in the dashboard.
|
|
60
|
+
|
|
61
|
+
- **Ready** is the implicit default. New roadmaps are created
|
|
62
|
+
ready unless the user explicitly says draft. Ready roadmaps are
|
|
63
|
+
listed in the dashboard, count towards open/done totals, and
|
|
64
|
+
trip the "completed but not archived" warning when they close.
|
|
65
|
+
- **Draft** hides the file from the dashboard entirely (not
|
|
66
|
+
counted, not listed). Use it while the roadmap is still being
|
|
67
|
+
authored, while waiting for upstream decisions, or as a
|
|
68
|
+
capture-only synthesis that has not yet been promoted to
|
|
69
|
+
executable phases. Flip to ready (or remove the field) the
|
|
70
|
+
moment the roadmap is ready to track.
|
|
71
|
+
|
|
72
|
+
A `## Decisions` or `## Block sequencing` table is **not** a roadmap
|
|
73
|
+
on its own. Either pair it with a `## Phase N: <name>` section whose
|
|
74
|
+
checkboxes execute the decision, or mark the file `status: draft`
|
|
75
|
+
until the executable phases land.
|
|
76
|
+
|
|
77
|
+
**Completion = archival, same response.** When the edit takes a
|
|
78
|
+
roadmap to `count_open == 0` (every item is `[x]`, `[~]`, or `[-]`),
|
|
79
|
+
`git mv` it into `agents/roadmaps/archive/` (or `skipped/` if no `[x]`
|
|
80
|
+
at all) **before** regenerating the dashboard. A 100%-complete
|
|
81
|
+
roadmap left under `agents/roadmaps/` is a rule violation, not an
|
|
82
|
+
optional cleanup. See `roadmap-management` skill for the archive vs
|
|
83
|
+
skipped decision table.
|
|
33
84
|
|
|
34
85
|
## How to regenerate
|
|
35
86
|
|
|
@@ -37,30 +88,32 @@ skipped table.
|
|
|
37
88
|
./agent-config roadmap:progress
|
|
38
89
|
```
|
|
39
90
|
|
|
40
|
-
`./agent-config` wrapper
|
|
41
|
-
delegates to master CLI
|
|
42
|
-
`vendor/event4u/agent-config/`.
|
|
91
|
+
The `./agent-config` wrapper is written into the project root by the
|
|
92
|
+
package installer and delegates to the master CLI inside
|
|
93
|
+
`node_modules/@event4u/agent-config/` or `vendor/event4u/agent-config/`.
|
|
94
|
+
No global tooling required.
|
|
43
95
|
|
|
44
96
|
## Triggers
|
|
45
97
|
|
|
46
98
|
| Edit | Must run, same response |
|
|
47
99
|
|---|---|
|
|
48
|
-
| **Create new roadmap file** | regenerate dashboard |
|
|
49
|
-
| **Rename or delete roadmap file** | regenerate dashboard |
|
|
100
|
+
| **Create a new roadmap file** | regenerate dashboard |
|
|
101
|
+
| **Rename or delete a roadmap file** | regenerate dashboard |
|
|
50
102
|
| Mark step `[x]`, `[~]`, `[-]`, or unmark back to `[ ]` | regenerate dashboard |
|
|
51
|
-
| Add, rename, or remove phase | regenerate dashboard |
|
|
103
|
+
| Add, rename, or remove a phase | regenerate dashboard |
|
|
52
104
|
| **Last `[ ]` flips** — roadmap reaches `count_open == 0` | `git mv` → `archive/` (or `skipped/`) **then** regenerate dashboard |
|
|
53
105
|
| Move roadmap between `roadmaps/` ↔ `archive/` ↔ `skipped/` | regenerate dashboard |
|
|
54
106
|
|
|
55
|
-
**Batching:** multiple
|
|
56
|
-
|
|
57
|
-
|
|
107
|
+
**Batching rule:** if you edit multiple checkboxes in one response, a
|
|
108
|
+
**single** regeneration at the end of that response is enough — but
|
|
109
|
+
the response must not end without it. If one of those edits closes a
|
|
110
|
+
roadmap, archive it first, then run the single regen.
|
|
58
111
|
|
|
59
112
|
## Autonomous execution — checkbox cadence
|
|
60
113
|
|
|
61
|
-
|
|
62
|
-
loses progress unless checkboxes flip
|
|
63
|
-
Iron Law:
|
|
114
|
+
When executing a roadmap autonomously (multi-turn, no per-step user
|
|
115
|
+
prompt), the user loses progress visibility unless checkboxes flip
|
|
116
|
+
**as work lands**, not in a batch at the end. Iron Law:
|
|
64
117
|
|
|
65
118
|
```
|
|
66
119
|
EVERY DONE STEP FLIPS [ ] → [x] IN NEXT REPLY THAT ACKNOWLEDGES IT.
|
|
@@ -68,73 +121,79 @@ NO "I UPDATE ROADMAP AT END OF PHASE."
|
|
|
68
121
|
NO "FOUR STEPS DONE, ONE COMMIT, ONE REGEN."
|
|
69
122
|
```
|
|
70
123
|
|
|
71
|
-
Step counts as
|
|
124
|
+
Step counts as completed when:
|
|
72
125
|
|
|
73
|
-
- Code / docs change for step **written and saved** AND
|
|
74
|
-
- Verification cited in step (project CI command, targeted test, lint)
|
|
75
|
-
in this response or earlier** — fresh output, not memory.
|
|
126
|
+
- Code / docs change for that step has been **written and saved** AND
|
|
127
|
+
- Verification cited in the step (project CI command, targeted test, lint) has
|
|
128
|
+
**passed in this response or an earlier one** — fresh output, not memory.
|
|
76
129
|
|
|
77
|
-
Then in **same reply**: flip checkbox,
|
|
78
|
-
commit policy allows.
|
|
130
|
+
Then in the **same reply**: flip the checkbox, regenerate the
|
|
131
|
+
dashboard, commit if commit policy allows.
|
|
79
132
|
|
|
80
133
|
**Forbidden pattern** (canonical failure):
|
|
81
134
|
|
|
82
|
-
> Turn 1: Step 1. Turn 2: Step 2. Turn 3:
|
|
83
|
-
>
|
|
84
|
-
>
|
|
135
|
+
> Turn 1: implement Step 1. Turn 2: implement Step 2. Turn 3:
|
|
136
|
+
> implement Step 3. Turn 4: implement Step 4. Turn 5: "all done,
|
|
137
|
+
> let me update the roadmap and commit." → the user spent four turns
|
|
138
|
+
> without dashboard movement.
|
|
85
139
|
|
|
86
140
|
**Required pattern:**
|
|
87
141
|
|
|
88
|
-
> Turn 1: Step 1, flip `[x]`, regen, commit.
|
|
89
|
-
> Turn 2: Step 2, flip `[x]`, regen, commit. …
|
|
142
|
+
> Turn 1: implement Step 1, flip `[x]`, regen, commit.
|
|
143
|
+
> Turn 2: implement Step 2, flip `[x]`, regen, commit. …
|
|
90
144
|
|
|
91
|
-
|
|
145
|
+
A reply that lands a verified step without flipping its checkbox
|
|
146
|
+
is a rule violation.
|
|
92
147
|
|
|
93
|
-
**In-progress marker:** step takes more than one reply
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
148
|
+
**In-progress marker:** when a step takes more than one reply,
|
|
149
|
+
mark it `[~]` the moment work starts on it and regenerate. The
|
|
150
|
+
user sees one row move from `[ ]` to `[~]` to `[x]` instead of
|
|
151
|
+
silent rows. `[~]` is treated as open for `count_open` but moves
|
|
152
|
+
the phase percentage forward in the dashboard.
|
|
97
153
|
|
|
98
154
|
## Pre-send self-check — MANDATORY
|
|
99
155
|
|
|
100
|
-
Before sending any reply that touched `agents/roadmaps/`,
|
|
156
|
+
Before sending any reply that touched `agents/roadmaps/`, run this
|
|
157
|
+
silent gate:
|
|
101
158
|
|
|
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
|
|
159
|
+
1. Did this turn create, rename, delete, or move a roadmap file? → regen MUST be in the reply.
|
|
160
|
+
2. Did this turn flip any checkbox in a roadmap file? → regen MUST be in the reply.
|
|
161
|
+
3. Did the regen output (`✅ Wrote agents/roadmaps-progress.md · …`) actually appear this turn? → if no, run it now before sending.
|
|
105
162
|
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.
|
|
163
|
+
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
164
|
|
|
107
165
|
Any "yes" + no regen run = rule violation. Rerun before sending.
|
|
108
166
|
|
|
109
|
-
##
|
|
167
|
+
## Failure modes
|
|
110
168
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
169
|
+
- **Created the roadmap, marked Phase 1 done across multiple turns,
|
|
170
|
+
never regenerated** — dashboard silently lies "this roadmap does
|
|
171
|
+
not exist" to the next reader. Canonical failure of this rule;
|
|
172
|
+
the rule was hardened in response to it.
|
|
173
|
+
- **Regenerated yesterday, edited today, "I'll regen at session
|
|
174
|
+
end"** — session ends from a crash, regen never lands.
|
|
175
|
+
- **Closed a roadmap (last `[ ]` → `[x]`) and regenerated before
|
|
176
|
+
`git mv`** — the closed roadmap reappears in "Open roadmaps".
|
|
177
|
+
- **Edited the dashboard by hand to "fix it quickly"** — next regen
|
|
178
|
+
overwrites the manual edit; no audit trail of why.
|
|
179
|
+
- **Autonomous run, four steps shipped across four turns, dashboard
|
|
180
|
+
flat the whole time, single regen at the end** — user lost
|
|
181
|
+
progress visibility for the entire run. Each completed step must
|
|
182
|
+
flip its checkbox in the reply that ships it.
|
|
183
|
+
- **Decision-only roadmap shipped without checkboxes** — the file
|
|
184
|
+
documents synthesized decisions, ICE matrices, or block sequencing
|
|
185
|
+
but contains zero `- [ ]` items. The dashboard regenerates with
|
|
186
|
+
`0/0 steps` for that file or omits it from the open set entirely.
|
|
187
|
+
The reader thinks no work is planned. Either pair the decisions
|
|
188
|
+
with a `## Phase N` / `## Implementation Checklist` section, or
|
|
189
|
+
mark the file `status: draft` so it is hidden until the executable
|
|
190
|
+
phases land.
|
|
115
191
|
|
|
116
192
|
## Do NOT
|
|
117
193
|
|
|
118
194
|
- Do NOT edit `agents/roadmaps-progress.md` by hand — always regenerate.
|
|
119
|
-
- Do NOT defer regen to "next commit" or "before push" — same response.
|
|
120
|
-
- Do NOT rely on CI (`--check` mode) as first line of defence — CI is last-line, not real-time.
|
|
121
|
-
- Do NOT skip regen because "only one checkbox changed" — dashboard aggregates counts and phase percentages that shift on single edits.
|
|
122
|
-
- Do NOT leave 100%-complete roadmap in `agents/roadmaps/` "for review" — archive same response, ask user afterwards if needed.
|
|
123
|
-
- Do NOT regenerate dashboard before `git mv` when roadmap closes — otherwise
|
|
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.
|
|
195
|
+
- Do NOT defer the regen to "next commit" or "before push" — same response.
|
|
196
|
+
- Do NOT rely on CI (`--check` mode) as the first line of defence — CI is last-line, not real-time.
|
|
197
|
+
- Do NOT skip the regen because "only one checkbox changed" — the dashboard aggregates counts and phase percentages that shift on single edits.
|
|
198
|
+
- Do NOT leave a 100%-complete roadmap in `agents/roadmaps/` "for review" — archive it in the same response, ask the user afterwards if needed, not before.
|
|
199
|
+
- Do NOT regenerate the dashboard before the `git mv` when a roadmap closes — otherwise the completed roadmap reappears in "Open roadmaps".
|
|
@@ -42,7 +42,7 @@ 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
|
|
@@ -24,4 +24,5 @@ source: package
|
|
|
24
24
|
|
|
25
25
|
→ Size limits and details: `.augment/guidelines/agent-infra/size-and-scope.md`
|
|
26
26
|
|
|
27
|
-
→ Frontmatter contract: schemas live in `scripts/schemas/` and are enforced by
|
|
27
|
+
→ Frontmatter contract: schemas live in `scripts/schemas/` and are enforced by
|
|
28
|
+
`python3 scripts/validate_frontmatter.py`.
|