@event4u/agent-config 14.6.0 → 14.7.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +260 -7
- package/README.md +1 -1
- package/dist/agent-src/commands/analyze/inbox.md +264 -10
- package/dist/agent-src/commands/analyze.md +1 -1
- package/dist/agent-src/commands/roadmap/process-full.md +116 -30
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +31 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +135 -104
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +3 -0
- package/dist/agent-src/rules/fix-what-you-see.md +108 -0
- package/dist/agent-src/rules/no-roadmap-references.md +0 -5
- package/dist/agent-src/rules/recurring-criticism.md +110 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
- package/dist/agent-src/rules/rule-type-governance.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +17 -0
- package/dist/agent-src/rules/skill-quality.md +0 -2
- package/dist/agent-src/rules/source-confidentiality.md +37 -7
- package/dist/agent-src/scripts/archival_sweep.ts +117 -0
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +19 -3
- package/dist/agent-src/scripts/gate_budget.ts +282 -0
- package/dist/agent-src/scripts/gate_execute.ts +72 -31
- package/dist/agent-src/scripts/roadmap_gates.ts +74 -3
- package/dist/agent-src/scripts/update_roadmap_progress.ts +251 -7
- package/dist/agent-src/skills/ai-council/SKILL.md +48 -807
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +320 -0
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +99 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +162 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +125 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +143 -0
- package/dist/agent-src/skills/quality-tools/SKILL.md +34 -326
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +113 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +222 -0
- package/dist/agent-src/skills/roadmap-management/SKILL.md +15 -409
- package/dist/agent-src/skills/roadmap-management/references/archival.md +226 -0
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +107 -0
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +47 -0
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +58 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +34 -570
- package/dist/agent-src/skills/skill-writing/references/procedure.md +275 -0
- package/dist/agent-src/skills/skill-writing/references/read-only-scripts.md +18 -0
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +298 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +45 -2
- package/dist/agent-src/templates/scripts/telemetry/flush_sender.mjs +163 -0
- package/dist/agent-src/templates/scripts/telemetry/remote.ts +160 -7
- package/dist/agent-src/templates/scripts/telemetry/transport.ts +169 -0
- package/dist/cli/registry.js +1 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/chunk-2GNWGMAL.js +172 -0
- package/dist/cli-delegate/{chunk-RLN73PR5.js → chunk-4VR4ORQ6.js} +10 -7
- package/dist/cli-delegate/chunk-6EOCNQAM.js +402 -0
- package/dist/cli-delegate/{chunk-XURJ4AQC.js → chunk-74E3TKWV.js} +381 -280
- package/dist/cli-delegate/{chunk-3UCJWMMP.js → chunk-7F3VYSM2.js} +4 -4
- package/dist/cli-delegate/{chunk-BKO2AZ7Z.js → chunk-B2ERU2VA.js} +1 -1
- package/dist/cli-delegate/{chunk-NXFWFAYV.js → chunk-G23AT6GD.js} +1 -0
- package/dist/cli-delegate/{chunk-63WSP6YZ.js → chunk-GJ5BVHXM.js} +72 -165
- package/dist/cli-delegate/{chunk-P6LQDIWK.js → chunk-JZ4NR2TW.js} +338 -0
- package/dist/cli-delegate/chunk-MWRD5YOH.js +100 -0
- package/dist/cli-delegate/{chunk-GRRPEPRN.js → chunk-T7L2QK3K.js} +24 -5
- package/dist/cli-delegate/{chunk-EVTY7ISR.js → chunk-YM4GZDJG.js} +9 -1
- package/dist/cli-delegate/cmd_conformance.js +459 -709
- package/dist/cli-delegate/cmd_doctor.js +6 -6
- package/dist/cli-delegate/cmd_explain.js +1 -1
- package/dist/cli-delegate/cmd_export.js +7 -6
- package/dist/cli-delegate/cmd_handoff.js +6 -6
- package/dist/cli-delegate/cmd_packs_active.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +7 -6
- package/dist/cli-delegate/cmd_session_recycle.js +840 -30
- package/dist/cli-delegate/cmd_settings_migrate.js +7 -6
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +7 -6
- package/dist/cli-delegate/cmd_uninstall.js +9 -7
- package/dist/cli-delegate/cmd_update.js +1 -1
- package/dist/cli-delegate/cmd_upgrade.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +7 -6
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +68 -25
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +10 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +8 -6
- package/dist/hooks/dispatch.js +2901 -2053
- package/dist/install/claudePathsPlan.js +187 -0
- package/dist/install/claudePathsPlan.js.map +1 -0
- package/dist/install/hostLayerFingerprint.js +136 -0
- package/dist/install/hostLayerFingerprint.js.map +1 -0
- package/dist/install/install.mjs +553 -425
- package/dist/install/partitionEligibility.js +276 -0
- package/dist/install/partitionEligibility.js.map +1 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1744 -1191
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_src.js +41 -0
- package/dist/scripts/_lib/agent_src.js.map +1 -1
- package/dist/scripts/_lib/install_layout.js +83 -0
- package/dist/scripts/_lib/install_layout.js.map +1 -0
- package/dist/scripts/_lib/installed_lock.js +444 -0
- package/dist/scripts/_lib/installed_lock.js.map +1 -0
- package/dist/scripts/condense.js +13 -164
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/contracts/settings-classes.md +12 -6
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +8 -3
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +26 -0
- package/docs/guidelines/agent-infra/memory-access.md +17 -0
- package/docs/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
- package/package.json +1 -1
- package/src/agent-src/scripts/archival_sweep.ts +117 -0
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +19 -3
- package/src/agent-src/scripts/gate_budget.ts +282 -0
- package/src/agent-src/scripts/gate_execute.ts +72 -31
- package/src/agent-src/scripts/roadmap_gates.ts +74 -3
- package/src/agent-src/scripts/update_roadmap_progress.ts +251 -7
- package/src/agent-src/templates/scripts/telemetry/flush_sender.mjs +163 -0
- package/src/agent-src/templates/scripts/telemetry/remote.ts +160 -7
- package/src/agent-src/templates/scripts/telemetry/transport.ts +169 -0
- package/src/config/agent-settings.template.yml +27 -2
- package/src/config/ci-local-parity.yml +18 -0
- package/src/config/estate-count-budget.json +339 -3
- package/src/config/gate-violation-baselines.json +41 -41
- package/src/config/rule-activation-census.json +14 -6
- package/src/config/rule-stub-ceilings.json +19 -6
- package/src/install/claudePathsPlan.ts +196 -0
- package/src/install/hostLayerFingerprint.ts +145 -0
- package/src/install/partitionEligibility.ts +325 -0
- package/src/scripts/_cli/cmd_session_recycle.ts +9 -1
- package/src/scripts/_dispatch.bash +6 -1
- package/src/scripts/_lib/ac_heading.ts +30 -0
- package/src/scripts/_lib/agent_src.ts +42 -0
- package/src/scripts/_lib/bench_ab_pinned_repo.ts +162 -0
- package/src/scripts/_lib/bench_ab_workspace.ts +10 -1
- package/src/scripts/_lib/envelope_grounding.ts +38 -8
- package/src/scripts/_lib/installed_lock.ts +50 -5
- package/src/scripts/_lib/md_section.ts +129 -0
- package/src/scripts/_lib/scope_guard.sh +26 -3
- package/src/scripts/_lib/self_repair.ts +19 -0
- package/src/scripts/_lib/self_repair_class_b.ts +171 -0
- package/src/scripts/ai_council/cli_help.ts +55 -0
- package/src/scripts/before_complete_hook.ts +153 -28
- package/src/scripts/bench_ab_v2_complexity.ts +27 -7
- package/src/scripts/check_references.ts +60 -0
- package/src/scripts/check_release_published.ts +32 -11
- package/src/scripts/check_single_delivery.ts +59 -15
- package/src/scripts/ci_settle.ts +170 -0
- package/src/scripts/condense.ts +20 -170
- package/src/scripts/council_cli.ts +3 -3
- package/src/scripts/dispatch_r2_reviewer.ts +6 -14
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +77 -14
- package/src/scripts/hooks/block_no_verify.ts +61 -10
- package/src/scripts/hooks/block_unauthorized_git.ts +1 -1
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +8 -3
- package/src/scripts/hooks/run_continuation_hook.ts +8 -5
- package/src/scripts/hooks/ship_diff_volume_hook.ts +81 -15
- package/src/scripts/hooks/source_first_gate_hook.ts +464 -0
- package/src/scripts/hooks/state_io.ts +782 -20
- package/src/scripts/hooks/subagent_ledger_hook.ts +44 -15
- package/src/scripts/hooks/telemetry_flush_hook.ts +139 -0
- package/src/scripts/hooks/telemetry_self_repair.ts +128 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +22 -4
- package/src/scripts/hooks/turn_end_gate_hook.ts +81 -15
- package/src/scripts/install.ts +16 -11
- package/src/scripts/language_mirror_hook.ts +561 -25
- package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
- package/src/scripts/lint_plan_risk_register.ts +4 -3
- package/src/scripts/lint_skill_router_head.ts +4 -4
- package/src/scripts/mcp_server/tools.ts +2 -2
- package/src/scripts/new_roadmap.ts +136 -0
- package/src/scripts/pack_mcp_content.ts +20 -5
- package/src/scripts/release.ts +37 -38
- package/src/scripts/report_layer_overlap.ts +6 -0
- package/src/scripts/self_repair_hook.ts +37 -5
- package/src/scripts/session_register_hook.ts +11 -0
- package/src/scripts/skill_usage_collect.ts +11 -1
- package/src/scripts/skill_usage_report.ts +278 -8
- package/src/scripts/sync_pr_branch.ts +7 -0
- package/src/server/schemas/settings.ts +8 -0
- package/dist/cli-delegate/chunk-EJITJBJX.js +0 -172
- package/dist/cli-delegate/chunk-PZWRPRWP.js +0 -38
- /package/dist/cli-delegate/{chunk-RYNADUFG.js → chunk-LWTYTX6F.js} +0 -0
|
@@ -98,419 +98,25 @@ actual paths in the current project; never assume `app/Modules/`.
|
|
|
98
98
|
The file `.augment/templates/roadmaps.md` defines the canonical structure.
|
|
99
99
|
**Always read it first** before creating or modifying roadmaps.
|
|
100
100
|
|
|
101
|
-
## Roadmap structure
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
## Modes
|
|
104
103
|
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
This skill is a router head. The dashboard-sync obligation above, the procedure
|
|
105
|
+
skeleton, and the location table are true in every mode and stay here. The
|
|
106
|
+
per-mode procedure bodies live in `references/`; load the one the task calls
|
|
107
|
+
for, not the set.
|
|
107
108
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
## Prerequisites
|
|
111
|
-
|
|
112
|
-
- [ ] Read `AGENTS.md` and relevant docs
|
|
113
|
-
- [ ] {specific prerequisites}
|
|
114
|
-
|
|
115
|
-
## Context
|
|
116
|
-
|
|
117
|
-
{Why this roadmap exists. Which module/domain. Links to Jira tickets.}
|
|
118
|
-
|
|
119
|
-
## Phase 1: {Phase name}
|
|
120
|
-
|
|
121
|
-
- [ ] **Step 1:** {Clear, actionable instruction}
|
|
122
|
-
- [ ] **Step 2:** {Next step — reference files/classes}
|
|
123
|
-
- [ ] ...
|
|
124
|
-
|
|
125
|
-
## Phase 2: {Phase name}
|
|
126
|
-
|
|
127
|
-
- [ ] **Step 1:** {description}
|
|
128
|
-
- [ ] ...
|
|
129
|
-
|
|
130
|
-
## Acceptance Criteria
|
|
131
|
-
|
|
132
|
-
- [ ] {Observable, testable criterion}
|
|
133
|
-
- [ ] All quality gates pass — the project's type-checker, auto-fixer, linter, and full test suite (see the `quality-tools` skill for stack-specific invocations)
|
|
134
|
-
|
|
135
|
-
## Notes
|
|
136
|
-
|
|
137
|
-
{Edge cases, decisions, links}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Key rules for roadmaps
|
|
141
|
-
|
|
142
|
-
### Checkboxes — mandatory, not decorative
|
|
143
|
-
|
|
144
|
-
- **Every active roadmap MUST contain at least one `- [ ]` per non-intro phase.** Decision tables, ICE matrices, and block-sequencing tables are valid rationale, but they do not satisfy this rule on their own — pair them with a `## Phase N` or `## Implementation Checklist` section whose checkboxes execute the decision. A roadmap without checkboxes is invisible to `agents/roadmaps-progress.md` and violates [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md) Iron Law #2.
|
|
145
|
-
- Every actionable step uses `- [ ]` (unchecked) or `- [x]` (completed).
|
|
146
|
-
- Mark steps as `[x]` immediately after completing them.
|
|
147
|
-
- Never remove completed steps — they serve as history.
|
|
148
|
-
- **Status is binary: `ready` (default, implicit) or `draft`.** New roadmaps are created **ready** unless the user explicitly says otherwise — `ready` is implicit and need not be written. A roadmap that is still being authored, awaiting upstream decisions, or capturing options without a worked plan declares `status: draft` in YAML frontmatter at the top of the file. Drafts are hidden from `agents/roadmaps-progress.md` until the flag is removed or flipped to `ready`. There are no other status values; legacy banners (`**Status: directional**`, `Status: capture-only`, `mode: feedback`) are removed.
|
|
149
|
-
|
|
150
|
-
### Awaiting evidence — a blocker entry, never a new glyph
|
|
151
|
-
|
|
152
|
-
- Waiting on **evidence that has not arrived** (soak still running, benchmark unfunded, adopter absent) is neither `[~]` nor `[-]`. Signal it with a structured `## Blockers` entry — five-field shape in [`templates/roadmaps.md` rule 20](../../agent-src/templates/roadmaps.md) — whose `Resolved when:` names the decidable signal ending the wait. The item stays `- [ ]` and points at it: `<!-- blocked-by: <id> -->`.
|
|
153
|
-
- **No new glyph.** `[ ]` + `blocked-by:` = open, awaiting named evidence (stays active) · `[~]` = deferred by decision (bars archival, Iron Law 3) · `[-]` = cancelled with a reason (does not bar it). A fifth state buys nothing the entry above does not already carry.
|
|
154
|
-
|
|
155
|
-
### Phases
|
|
156
|
-
|
|
157
|
-
- Group related steps into phases (e.g. "Preparation", "Migration", "Cleanup").
|
|
158
|
-
- Complete one phase before starting the next (unless steps are independent).
|
|
159
|
-
- After completing a phase, summarize what was done.
|
|
160
|
-
|
|
161
|
-
### Quality gates
|
|
162
|
-
|
|
163
|
-
Every roadmap implicitly includes the project's quality pipeline
|
|
164
|
-
(static analysis, autofixes, tests). Whether the agent runs it locally
|
|
165
|
-
at all is gated by `quality.local_auto_run`: `false` or missing (the
|
|
166
|
-
default) → the agent never runs the pipeline locally; the user runs it
|
|
167
|
-
manually and remote CI on the PR is the authoritative gate (run-end
|
|
168
|
-
report: *"quality gates delegated to remote CI"*; new-gate carve-out
|
|
169
|
-
steps still run once). When `local_auto_run: true`, **when** the
|
|
170
|
-
pipeline runs during `/roadmap:process-step|phase|full` is controlled
|
|
171
|
-
by `roadmap.quality_cadence` in `.agent-settings.yml`:
|
|
172
|
-
|
|
173
|
-
| Cadence | Pipeline runs (`local_auto_run: true` only) | Trade-off |
|
|
174
|
-
|---|---|---|
|
|
175
|
-
| `end_of_roadmap` (default) | Once before archiving | Fastest, fewest tokens; errors compound across phases |
|
|
176
|
-
| `per_phase` | After every completed phase + final | Balanced; catches drift at phase boundaries |
|
|
177
|
-
| `per_step` | After every completed step + final | Legacy verbose; highest token cost |
|
|
178
|
-
|
|
179
|
-
The default is `end_of_roadmap` because most steps are checkbox-only
|
|
180
|
-
content edits and a final pipeline run is the cheapest way to satisfy
|
|
181
|
-
`verify-before-complete`. Switch to `per_phase` for risky migrations or
|
|
182
|
-
unfamiliar codebases.
|
|
183
|
-
|
|
184
|
-
**Always-on, regardless of cadence:**
|
|
185
|
-
|
|
186
|
-
- Step checkboxes flip `[ ] → [x]` and the dashboard regenerates **same
|
|
187
|
-
response** (enforced by `roadmap-progress-sync`).
|
|
188
|
-
- Before any "roadmap complete" claim or archival, the pipeline runs
|
|
189
|
-
fresh (enforced by `verify-before-complete`).
|
|
190
|
-
|
|
191
|
-
### Step granularity
|
|
192
|
-
|
|
193
|
-
- Each step should be completable in one session (< 1 hour of work).
|
|
194
|
-
- If a step is too large, break it down into sub-steps.
|
|
195
|
-
- Steps should reference specific files/classes when possible.
|
|
196
|
-
|
|
197
|
-
### Language
|
|
198
|
-
|
|
199
|
-
- Roadmap files are written in **English** (per project convention).
|
|
200
|
-
- Step descriptions should be precise and actionable, not vague.
|
|
201
|
-
|
|
202
|
-
## Working with roadmaps
|
|
203
|
-
|
|
204
|
-
### Creating a roadmap
|
|
205
|
-
|
|
206
|
-
1. Ask the user for goal, context-create, and phases.
|
|
207
|
-
2. Use the template structure from `.augment/templates/roadmaps.md`.
|
|
208
|
-
3. Review with the user iteratively until approved.
|
|
209
|
-
4. **Branch & release questions — at most once, only if genuinely useful.**
|
|
210
|
-
Default: stay on the current branch, no version numbers in the
|
|
211
|
-
roadmap. Only propose a separate branch when there is concrete,
|
|
212
|
-
evidence-based reason (e.g. risky migration benefits from a spike).
|
|
213
|
-
Never include release versions, deprecation dates, or git tags in
|
|
214
|
-
the roadmap text. If the user declines, do **not** re-propose during
|
|
215
|
-
`/roadmap:process-*`. Decline = silence. See [`scope-control`](../../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
216
|
-
5. Save with a kebab-case filename (e.g. `optimize-webhook-jobs.md`).
|
|
217
|
-
**Before writing**, scan the entire roadmap namespace for a
|
|
218
|
-
collision — active, `archive/`, `skipped/`, and nested subdirs —
|
|
219
|
-
with `find agents/roadmaps -type f -iname "<name>.md"`. If any
|
|
220
|
-
hit comes back, stop and ask the user to rename, open the
|
|
221
|
-
existing file, or abort. Never silently overwrite an archived
|
|
222
|
-
or skipped roadmap. Detailed prompt in
|
|
223
|
-
[`commands/roadmap/create.md`](../../commands/roadmap/create.md)
|
|
224
|
-
step 6.
|
|
225
|
-
6. Regenerate the dashboard so the new roadmap is included.
|
|
226
|
-
|
|
227
|
-
### Executing a roadmap
|
|
228
|
-
|
|
229
|
-
0. Resolve the mode per `roadmap-process-loop` § 3a: suffix, frontmatter
|
|
230
|
-
`execution.mode`, invocation form (absent = derived, not
|
|
231
|
-
`interactive`). Under `/roadmap:process-*` the mode selects the
|
|
232
|
-
interaction pattern via the run-start execution contract — see
|
|
233
|
-
[`roadmap-execution-contract`](../../contexts/execution/roadmap-execution-contract.md).
|
|
234
|
-
The manual flow below describes `interactive`; under `autonomous`
|
|
235
|
-
/ `phase-checkpoints` step 4's per-step ask is replaced by the
|
|
236
|
-
accepted contract. **Mode never changes archival semantics** —
|
|
237
|
-
glyph counting, the closure decision table, and the Iron Law 3
|
|
238
|
-
deferred-resolution gate below apply identically in every mode.
|
|
239
|
-
1. Read the full roadmap.
|
|
240
|
-
2. Find the next unchecked step (`- [ ]`).
|
|
241
|
-
3. Summarize what needs to be done.
|
|
242
|
-
4. Ask the user before implementing (numbered options: implement / adjust / skip).
|
|
243
|
-
5. After implementation: mark `[x]`, run quality gates, then regenerate the dashboard.
|
|
244
|
-
6. Move to the next step.
|
|
245
|
-
|
|
246
|
-
### Resuming a roadmap
|
|
247
|
-
|
|
248
|
-
When picking up a roadmap in a new session:
|
|
249
|
-
1. Read the roadmap to understand the full context.
|
|
250
|
-
2. Check which steps are already completed (`[x]`).
|
|
251
|
-
3. Summarize progress to the user.
|
|
252
|
-
4. Continue from the next open step.
|
|
253
|
-
|
|
254
|
-
### Completing, archiving & skipping a roadmap
|
|
255
|
-
|
|
256
|
-
Every roadmap ends in exactly one of four states:
|
|
257
|
-
|
|
258
|
-
| State | Folder | Trigger |
|
|
109
|
+
| Task | Mode body | Covers |
|
|
259
110
|
|---|---|---|
|
|
260
|
-
|
|
|
261
|
-
|
|
|
262
|
-
|
|
|
263
|
-
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
0. **Completion review (Gate R2)** — last open item done → findings BEFORE
|
|
270
|
-
fixes, before any archival decision:
|
|
271
|
-
- `dispatch_r2_reviewer` builds the reviewer input; a **fresh subagent
|
|
272
|
-
without the implementation context** writes
|
|
273
|
-
`agents/evidence/reviews/<slug>.findings.md`.
|
|
274
|
-
- Work findings in priority order — each ends `fixed` / `accepted-risk` /
|
|
275
|
-
`deferred`. No code surface → explicit skip, never silent.
|
|
276
|
-
- Grammar, scope-hash binding, escape hatch:
|
|
277
|
-
[`plan-review-gates § 2`](../../../docs/contracts/plan-review-gates.md).
|
|
278
|
-
|
|
279
|
-
1. **Scan the file** for all checkbox markers: `- [x]`, `- [ ]`, `- [~]`, `- [-]`.
|
|
280
|
-
2. **Classify:**
|
|
281
|
-
- `[x]` = completed
|
|
282
|
-
- `[ ]` = open (not done)
|
|
283
|
-
- `[~]` = deferred (intentionally pushed out, may come back)
|
|
284
|
-
- `[-]` = cancelled (individual item dropped)
|
|
285
|
-
|
|
286
|
-
3. **Decision rule — `count_open == 0` means the roadmap has no active
|
|
287
|
-
work left. `[x]`, `[-]` are final states. `[~]` deferred items
|
|
288
|
-
block silent closure — they carry plans the user has not consented
|
|
289
|
-
to drop (enforced by [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)
|
|
290
|
-
Iron Law 3).**
|
|
291
|
-
|
|
292
|
-
| count_x | count_open | count_deferred | count_cancelled | Action |
|
|
293
|
-
|---|---|---|---|---|
|
|
294
|
-
| ≥ 1 | 0 | 0 | 0 | **Auto-archive** (silent) — pure completion |
|
|
295
|
-
| ≥ 1 | 0 | 0 | ≥ 1 | **Auto-archive** (silent) — done with explicit drops |
|
|
296
|
-
| ≥ 1 | 0 | ≥ 1 | ≥ 0 | **STOP — Iron Law 3 flow.** Surface deferred items, present the options, resolve by the preservation test (council where the item survives, user where it does not). See step 4b. |
|
|
297
|
-
| 0 | 0 | ≥ 1 | ≥ 0 | **STOP — Iron Law 3 flow.** Was this a scope-drop or deferred-to-later? Same options and same routing as 4b. |
|
|
298
|
-
| 0 | 0 | 0 | ≥ 1 | **Auto-skip** (silent) — no work, all cancelled |
|
|
299
|
-
| ≥ 0 | ≥ 1 | ≥ 0 | ≥ 0 | **Ask the user** — open work remains (step 4a) |
|
|
300
|
-
|
|
301
|
-
Show on auto-move:
|
|
302
|
-
|
|
303
|
-
- Archive: `✅ Roadmap archived → agents/roadmaps/archive/{filename}`
|
|
304
|
-
- Skip: `⏭️ Roadmap skipped → agents/roadmaps/skipped/{filename}`
|
|
305
|
-
- Later: `🕒 Roadmap parked for later → agents/roadmaps/later/{filename}`
|
|
306
|
-
|
|
307
|
-
`[-]` cancelled items remain searchable inside the archived file —
|
|
308
|
-
they were explicit drops. `[~]` deferred items, by contrast, may
|
|
309
|
-
not silently follow the file into archive: they represent work the
|
|
310
|
-
user planned and would lose track of. Step 4b is the gate.
|
|
311
|
-
|
|
312
|
-
4a. **Open items remain (`count_open ≥ 1`)** → **Ask the user.** Show what's incomplete:
|
|
313
|
-
|
|
314
|
-
```
|
|
315
|
-
📋 Roadmap completion check:
|
|
316
|
-
|
|
317
|
-
✅ Completed: {count_x}
|
|
318
|
-
⬜ Open: {count_open} — {list of open items, 1 line each}
|
|
319
|
-
⏭️ Deferred: {count_deferred} — {list of deferred items, 1 line each}
|
|
320
|
-
❌ Cancelled: {count_cancelled} — {list of cancelled items, 1 line each}
|
|
321
|
-
|
|
322
|
-
> 1. Archive — mark open items as cancelled [-] and archive now
|
|
323
|
-
> 2. Keep active — I want to finish the open items
|
|
324
|
-
> 3. Mark open items as deferred [~] and archive (triggers Iron Law 3 flow)
|
|
325
|
-
> 4. Skip — move to skipped/ (no meaningful work done, not pursuing)
|
|
326
|
-
> 5. Later — park in later/ (open work is blocked on an external trigger / decision but will resume)
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
Option 4 is only appropriate when `count_x == 0` or the completed items were
|
|
330
|
-
trivial (e.g. prerequisites only). If the user picks 4 despite meaningful work
|
|
331
|
-
being done, confirm once — archive is usually the right choice. Picking option 3
|
|
332
|
-
does NOT archive immediately — it converts open → deferred and re-enters the
|
|
333
|
-
`count_deferred > 0` branch, which runs step 4b.
|
|
334
|
-
|
|
335
|
-
**Option 5 (Later) is the right choice when the open items are real but
|
|
336
|
-
cannot proceed now** — gated on an external trigger or a decision. Set the
|
|
337
|
-
roadmap's frontmatter `status: later`, ensure it carries a `Blocked until` /
|
|
338
|
-
`Trigger` resume line, `git mv` it to `agents/roadmaps/later/`, migrate any
|
|
339
|
-
inbound references to the new path, and regenerate the dashboard. The open
|
|
340
|
-
`[ ]` items stay open (they are not cancelled or deferred) — the roadmap is
|
|
341
|
-
parked whole, ready to resume when the trigger fires. **Roadmaps with open
|
|
342
|
-
tasks deferred for later are always moved to `later/`**, never left to rot in
|
|
343
|
-
the active tree.
|
|
344
|
-
|
|
345
|
-
4b. **Deferred items present (`count_deferred ≥ 1`, `count_open == 0`)** — Iron Law 3 flow.
|
|
346
|
-
Archive **blocked** until resolved. WHO resolves is the preservation test in
|
|
347
|
-
[`roadmap-progress-sync § Who resolves it`](../../rules/roadmap-progress-sync.md),
|
|
348
|
-
never the mode — same menu either way, only the resolver differs:
|
|
349
|
-
|
|
350
|
-
- **1, 2, 4** keep the item alive → **council**, recorded at the item (2 only
|
|
351
|
-
if the follow-up lands in the SAME change).
|
|
352
|
-
- **3, 5** drop or weaken it → **user**, always. In doubt: user.
|
|
353
|
-
|
|
354
|
-
```
|
|
355
|
-
📋 Roadmap closure check — deferred items must resolve before archive:
|
|
356
|
-
|
|
357
|
-
✅ Completed: {count_x}
|
|
358
|
-
⏭️ Deferred: {count_deferred}
|
|
359
|
-
{for each deferred item:}
|
|
360
|
-
- Phase {N}: {step text} {<!-- deferred: <annotation> --> if present}
|
|
361
|
-
|
|
362
|
-
These items carry plans you would lose to a silent archive.
|
|
363
|
-
|
|
364
|
-
> 1. Spawn follow-up roadmap as DRAFT
|
|
365
|
-
> → agents/roadmaps/road-to-{auto-slug}.md, status: draft,
|
|
366
|
-
> parent_roadmap: {this-slug}. Hidden from the dashboard until
|
|
367
|
-
> you flip status to "ready".
|
|
368
|
-
> 2. Spawn follow-up roadmap as READY (with blocked-until note)
|
|
369
|
-
> → status: ready (default), parent_roadmap: {this-slug}, plus
|
|
370
|
-
> a `> Blocked until <condition>` line in the body. Visible
|
|
371
|
-
> in the dashboard; execution waits on the condition.
|
|
372
|
-
> 3. Keep deferred items in this archive — confirm "no follow-up"
|
|
373
|
-
> is an intentional drop. Items stay searchable in archive/.
|
|
374
|
-
> 4. Restore selected items to [ ] — finish them here before archive.
|
|
375
|
-
> 5. Convert selected items to [-] cancelled — drop with rationale.
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
Picks 1 or 2 → see "Spawn follow-up from deferred items" procedure below.
|
|
379
|
-
Picks 3, 4, or 5 → apply the change in this roadmap; re-evaluate the
|
|
380
|
-
decision table; archive when the gate clears.
|
|
381
|
-
|
|
382
|
-
### Spawn follow-up from deferred items (procedure)
|
|
383
|
-
|
|
384
|
-
When the user picks option 1 or 2 in step 4b:
|
|
385
|
-
|
|
386
|
-
1. **Derive the slug.** Default `<parent-slug>-followup` (e.g.
|
|
387
|
-
`road-to-x.md` → `road-to-x-followup.md`). If a user-supplied
|
|
388
|
-
slug was given in the picker, use that. Avoid collisions with
|
|
389
|
-
`agents/roadmaps/` (active + `archive/` + `skipped/`).
|
|
390
|
-
|
|
391
|
-
2. **Write the new file** at `agents/roadmaps/<slug>.md`:
|
|
392
|
-
|
|
393
|
-
```markdown
|
|
394
|
-
---
|
|
395
|
-
complexity: lightweight # bump if the parent was structural
|
|
396
|
-
status: draft # option 1; omit for option 2 (= ready)
|
|
397
|
-
parent_roadmap: <parent-slug> # back-link to source
|
|
398
|
-
---
|
|
399
|
-
|
|
400
|
-
# Roadmap: Follow-up to <parent-title>
|
|
401
|
-
|
|
402
|
-
> <One sentence stating the carried-over outcome.>
|
|
403
|
-
|
|
404
|
-
## Context
|
|
405
|
-
|
|
406
|
-
This roadmap collects items deferred from
|
|
407
|
-
[`agents/roadmaps/archive/<parent-slug>.md`](archive/<parent-slug>.md).
|
|
408
|
-
See the parent's archive entry for the original rationale.
|
|
409
|
-
|
|
410
|
-
## Prerequisites
|
|
411
|
-
|
|
412
|
-
- [ ] Read `AGENTS.md` and the parent archive entry.
|
|
413
|
-
{parent prerequisites still relevant, copied verbatim}
|
|
414
|
-
|
|
415
|
-
<!-- Option 2 only — body note, NOT a frontmatter key: -->
|
|
416
|
-
> Blocked until <condition>. Execution starts when the condition clears.
|
|
417
|
-
|
|
418
|
-
## Phase 1: <name carried from parent>
|
|
419
|
-
|
|
420
|
-
- [ ] {deferred step text, copied verbatim with parent-phase pointer}
|
|
421
|
-
{repeat per deferred item, regrouped by parent phase}
|
|
422
|
-
|
|
423
|
-
## Acceptance Criteria
|
|
424
|
-
|
|
425
|
-
- [ ] {restate or adjust per the deferred scope}
|
|
426
|
-
- [ ] All quality gates pass — see `quality-tools`.
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
3. **In the parent roadmap** (still in the working tree), append a
|
|
430
|
-
line at the bottom (above any final `---`):
|
|
431
|
-
|
|
432
|
-
```
|
|
433
|
-
<!-- Deferred items migrated to agents/roadmaps/<followup-slug>.md on YYYY-MM-DD -->
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
Do **not** delete the `[~]` lines — keep them visible in the
|
|
437
|
-
archived parent so the trail stays grep-able. The follow-up
|
|
438
|
-
carries forward the executable copy.
|
|
439
|
-
|
|
440
|
-
4. **Regenerate the dashboard.** The follow-up appears (draft hidden,
|
|
441
|
-
ready visible) and the parent — once moved — drops off.
|
|
442
|
-
|
|
443
|
-
5. **Archive the parent** (`git mv` → `archive/`) and regen one
|
|
444
|
-
more time per [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)
|
|
445
|
-
Iron Laws 1 + 3.
|
|
446
|
-
|
|
447
|
-
5. **Move the file** with `git mv` so history is preserved:
|
|
448
|
-
|
|
449
|
-
```bash
|
|
450
|
-
# Archive (work was done)
|
|
451
|
-
git mv agents/roadmaps/{file} agents/roadmaps/archive/{file}
|
|
452
|
-
|
|
453
|
-
# Skipped (not pursuing)
|
|
454
|
-
git mv agents/roadmaps/{file} agents/roadmaps/skipped/{file}
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
6. **Regenerate the dashboard** (see "Command" below). The moved roadmap is
|
|
458
|
-
excluded from the active set once it sits in `archive/` or `skipped/`.
|
|
459
|
-
|
|
460
|
-
### When to use `skipped/` vs `archive/`
|
|
461
|
-
|
|
462
|
-
| Situation | Destination |
|
|
463
|
-
|---|---|
|
|
464
|
-
| Finished all phases | `archive/` |
|
|
465
|
-
| Finished some phases, rest deferred/cancelled on purpose | `archive/` |
|
|
466
|
-
| Whole roadmap deferred or cancelled (no `[x]` at all) | `skipped/` |
|
|
467
|
-
| Never started, scope decision reversed | `skipped/` |
|
|
468
|
-
| Superseded by another roadmap | `skipped/` — add a pointer line at the top: `> Superseded by agents/roadmaps/{other}.md` |
|
|
469
|
-
| Research proved the direction wrong | `skipped/` — add a 1-line reason at the top |
|
|
470
|
-
|
|
471
|
-
If in doubt: archive beats skipped. `skipped/` is reserved for roadmaps where
|
|
472
|
-
no meaningful work was invested and the scope itself was rejected.
|
|
473
|
-
|
|
474
|
-
## Progress dashboard — `agents/roadmaps-progress.md`
|
|
475
|
-
|
|
476
|
-
A generated dashboard aggregates progress across every open roadmap. It sits at
|
|
477
|
-
`agents/roadmaps-progress.md` (outside `roadmaps/` to keep the folder clean) and
|
|
478
|
-
is rewritten by `.augment/scripts/update_roadmap_progress.ts`.
|
|
479
|
-
|
|
480
|
-
**Always regenerate in the SAME response** after any of the following
|
|
481
|
-
(enforced by [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)):
|
|
482
|
-
|
|
483
|
-
- Creating a new roadmap (`/roadmap:create`)
|
|
484
|
-
- Marking a step `[x]`, `[~]`, or `[-]` during `/roadmap:process-*`
|
|
485
|
-
- Archiving or moving a roadmap to `skipped/`
|
|
486
|
-
- Adding, renaming, or removing a phase
|
|
487
|
-
|
|
488
|
-
Command:
|
|
489
|
-
|
|
490
|
-
```bash
|
|
491
|
-
./agent-config roadmap:progress # rewrite the dashboard
|
|
492
|
-
./agent-config roadmap:progress-check # CI: fail if stale
|
|
493
|
-
```
|
|
494
|
-
|
|
495
|
-
The `./agent-config` wrapper lives in the project root (written by the
|
|
496
|
-
package installer, gitignored) and delegates to the master CLI inside
|
|
497
|
-
`node_modules/@event4u/agent-config/` or `vendor/event4u/agent-config/`.
|
|
498
|
-
No global tooling required.
|
|
499
|
-
|
|
500
|
-
The dashboard is a **read-only snapshot**. Do not edit it by hand — regenerate it.
|
|
501
|
-
|
|
502
|
-
### Blockers on the dashboard
|
|
503
|
-
|
|
504
|
-
The overview table's `Blocker` column counts each roadmap's open
|
|
505
|
-
`## Blockers` entries (or the legacy `> Blocked until` note) and links
|
|
506
|
-
to the per-roadmap breakdown, which lists every open blocker with
|
|
507
|
-
owner, blocked scope, and full instructions. Authoring shape:
|
|
508
|
-
[`templates/roadmaps.md` rule 20](../../agent-src/templates/roadmaps.md);
|
|
509
|
-
authoring guidance: [`roadmap-writing § 5b`](../roadmap-writing/SKILL.md).
|
|
510
|
-
Clearing a blocker flips its `Status: resolved` and regenerates the
|
|
511
|
-
dashboard in the same reply, same cadence as a checkbox flip. The
|
|
512
|
-
blocker entry is also the canonical **awaiting-evidence** signal —
|
|
513
|
-
see [§ Awaiting evidence](#awaiting-evidence--a-blocker-entry-never-a-new-glyph).
|
|
111
|
+
| Author a roadmap — structure and the rules it must satisfy | [`references/authoring.md`](references/authoring.md) | The canonical structure block, checkbox semantics, awaiting-evidence as a blocker entry, phases, quality gates, step granularity, language |
|
|
112
|
+
| Create, execute, or resume a roadmap | [`references/lifecycle.md`](references/lifecycle.md) | Creating a roadmap, executing one step by step, resuming a partially-done one |
|
|
113
|
+
| Complete, archive, or skip a roadmap | [`references/archival.md`](references/archival.md) | The four end states, the archival sweep and its manual fallback, spawning a follow-up from deferred items, `skipped/` versus `archive/` |
|
|
114
|
+
| Regenerate or read the progress dashboard | [`references/dashboard.md`](references/dashboard.md) | The generated dashboard, its regeneration cadence, blockers on the dashboard |
|
|
115
|
+
|
|
116
|
+
Archival is the mode with the sharpest failure: an archive that buries deferred
|
|
117
|
+
work or open blockers is the thing the sweep refuses to do, so load
|
|
118
|
+
[`references/archival.md`](references/archival.md) before archiving anything
|
|
119
|
+
rather than working from memory of it.
|
|
514
120
|
|
|
515
121
|
## Rubric pass (optional, surfacing-only)
|
|
516
122
|
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# roadmap-management — completing, archiving, skipping
|
|
2
|
+
|
|
3
|
+
> Mode body of the [`roadmap-management`](../SKILL.md) skill (router-head
|
|
4
|
+
> retrofit, 2026-08-20). Content moved VERBATIM from SKILL.md — load this
|
|
5
|
+
> file when the mode table in SKILL.md routes here.
|
|
6
|
+
|
|
7
|
+
### Completing, archiving & skipping a roadmap
|
|
8
|
+
|
|
9
|
+
Every roadmap ends in exactly one of four states:
|
|
10
|
+
|
|
11
|
+
| State | Folder | Trigger |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| **Active** | `agents/roadmaps/` | Work in progress or planned **and workable now** |
|
|
14
|
+
| **Archived** | `agents/roadmaps/archive/` | Work was done (fully or partially) and no more work is planned |
|
|
15
|
+
| **Skipped** | `agents/roadmaps/skipped/` | Decision against pursuit — superseded, scope rejected, wrong direction. Typically **0 items `[x]`** |
|
|
16
|
+
| **Later** | `agents/roadmaps/later/` | Open work remains but is **blocked-for-later** — gated on an external trigger or a decision, **will resume** when unblocked. Set frontmatter `status: later` + a `Blocked until` / `Trigger` resume line. Excluded from the dashboard and `/roadmap:process-*` (parked, not abandoned). |
|
|
17
|
+
|
|
18
|
+
**Active vs. Later — the test:** can the agent make progress on this roadmap *now*, autonomously? If every open item is gated on something outside this roadmap (a real consumer repo, a benchmark re-open, host-model access, a kernel soak, a pruning track, a human decision), it is **not** active — move it to `later/` with its resume condition. A blocked roadmap left in the active tree silently lies to the dashboard and to `/roadmap:process-*`, which will keep trying to execute it. The `lint_roadmap_later_disposition` guard enforces the placement↔`status: later` contract.
|
|
19
|
+
|
|
20
|
+
After the last step of a roadmap is done, check completion status:
|
|
21
|
+
|
|
22
|
+
0. **Completion review (Gate R2)** — last open item done → findings BEFORE
|
|
23
|
+
fixes, before any archival decision:
|
|
24
|
+
- `dispatch_r2_reviewer` builds the reviewer input; a **fresh subagent
|
|
25
|
+
without the implementation context** writes
|
|
26
|
+
`agents/evidence/reviews/<slug>.findings.md`.
|
|
27
|
+
- Work findings in priority order — each ends `fixed` / `accepted-risk` /
|
|
28
|
+
`deferred`. No code surface → explicit skip, never silent.
|
|
29
|
+
- Grammar, scope-hash binding, escape hatch:
|
|
30
|
+
[`plan-review-gates § 2`](../../../../docs/contracts/plan-review-gates.md).
|
|
31
|
+
|
|
32
|
+
1. **Scan the file** for all checkbox markers: `- [x]`, `- [ ]`, `- [~]`, `- [-]`.
|
|
33
|
+
2. **Classify:**
|
|
34
|
+
- `[x]` = completed
|
|
35
|
+
- `[ ]` = open (not done)
|
|
36
|
+
- `[~]` = deferred (intentionally pushed out, may come back)
|
|
37
|
+
- `[-]` = cancelled (individual item dropped)
|
|
38
|
+
|
|
39
|
+
3. **Decision rule — `count_open == 0` means the roadmap has no active
|
|
40
|
+
work left. `[x]`, `[-]` are final states. `[~]` deferred items
|
|
41
|
+
block silent closure — they carry plans the user has not consented
|
|
42
|
+
to drop (enforced by [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)
|
|
43
|
+
Iron Law 3).**
|
|
44
|
+
|
|
45
|
+
| count_x | count_open | count_deferred | count_cancelled | Action |
|
|
46
|
+
|---|---|---|---|---|
|
|
47
|
+
| ≥ 1 | 0 | 0 | 0 | **Auto-archive** (silent) — pure completion |
|
|
48
|
+
| ≥ 1 | 0 | 0 | ≥ 1 | **Auto-archive** (silent) — done with explicit drops |
|
|
49
|
+
| ≥ 1 | 0 | ≥ 1 | ≥ 0 | **STOP — Iron Law 3 flow.** Surface deferred items, present the options, resolve by the preservation test (council where the item survives, user where it does not). See step 4b. |
|
|
50
|
+
| 0 | 0 | ≥ 1 | ≥ 0 | **STOP — Iron Law 3 flow.** Was this a scope-drop or deferred-to-later? Same options and same routing as 4b. |
|
|
51
|
+
| 0 | 0 | 0 | ≥ 1 | **Auto-skip** (silent) — no work, all cancelled |
|
|
52
|
+
| ≥ 0 | ≥ 1 | ≥ 0 | ≥ 0 | **Ask the user** — open work remains (step 4a) |
|
|
53
|
+
|
|
54
|
+
Show on auto-move:
|
|
55
|
+
|
|
56
|
+
- Archive: `✅ Roadmap archived → agents/roadmaps/archive/{filename}`
|
|
57
|
+
- Skip: `⏭️ Roadmap skipped → agents/roadmaps/skipped/{filename}`
|
|
58
|
+
- Later: `🕒 Roadmap parked for later → agents/roadmaps/later/{filename}`
|
|
59
|
+
|
|
60
|
+
`[-]` cancelled items remain searchable inside the archived file —
|
|
61
|
+
they were explicit drops. `[~]` deferred items, by contrast, may
|
|
62
|
+
not silently follow the file into archive: they represent work the
|
|
63
|
+
user planned and would lose track of. Step 4b is the gate.
|
|
64
|
+
|
|
65
|
+
4a. **Open items remain (`count_open ≥ 1`)** → **Ask the user.** Show what's incomplete:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
📋 Roadmap completion check:
|
|
69
|
+
|
|
70
|
+
✅ Completed: {count_x}
|
|
71
|
+
⬜ Open: {count_open} — {list of open items, 1 line each}
|
|
72
|
+
⏭️ Deferred: {count_deferred} — {list of deferred items, 1 line each}
|
|
73
|
+
❌ Cancelled: {count_cancelled} — {list of cancelled items, 1 line each}
|
|
74
|
+
|
|
75
|
+
> 1. Archive — mark open items as cancelled [-] and archive now
|
|
76
|
+
> 2. Keep active — I want to finish the open items
|
|
77
|
+
> 3. Mark open items as deferred [~] and archive (triggers Iron Law 3 flow)
|
|
78
|
+
> 4. Skip — move to skipped/ (no meaningful work done, not pursuing)
|
|
79
|
+
> 5. Later — park in later/ (open work is blocked on an external trigger / decision but will resume)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Option 4 is only appropriate when `count_x == 0` or the completed items were
|
|
83
|
+
trivial (e.g. prerequisites only). If the user picks 4 despite meaningful work
|
|
84
|
+
being done, confirm once — archive is usually the right choice. Picking option 3
|
|
85
|
+
does NOT archive immediately — it converts open → deferred and re-enters the
|
|
86
|
+
`count_deferred > 0` branch, which runs step 4b.
|
|
87
|
+
|
|
88
|
+
**Option 5 (Later) is the right choice when the open items are real but
|
|
89
|
+
cannot proceed now** — gated on an external trigger or a decision. Set the
|
|
90
|
+
roadmap's frontmatter `status: later`, ensure it carries a `Blocked until` /
|
|
91
|
+
`Trigger` resume line, `git mv` it to `agents/roadmaps/later/`, migrate any
|
|
92
|
+
inbound references to the new path, and regenerate the dashboard. The open
|
|
93
|
+
`[ ]` items stay open (they are not cancelled or deferred) — the roadmap is
|
|
94
|
+
parked whole, ready to resume when the trigger fires. **Roadmaps with open
|
|
95
|
+
tasks deferred for later are always moved to `later/`**, never left to rot in
|
|
96
|
+
the active tree.
|
|
97
|
+
|
|
98
|
+
4b. **Deferred items present (`count_deferred ≥ 1`, `count_open == 0`)** — Iron Law 3 flow.
|
|
99
|
+
Archive **blocked** until resolved. WHO resolves is the preservation test in
|
|
100
|
+
[`roadmap-progress-sync § Who resolves it`](../../rules/roadmap-progress-sync.md),
|
|
101
|
+
never the mode — same menu either way, only the resolver differs:
|
|
102
|
+
|
|
103
|
+
- **1, 2, 4** keep the item alive → **council**, recorded at the item (2 only
|
|
104
|
+
if the follow-up lands in the SAME change).
|
|
105
|
+
- **3, 5** drop or weaken it → **user**, always. In doubt: user.
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
📋 Roadmap closure check — deferred items must resolve before archive:
|
|
109
|
+
|
|
110
|
+
✅ Completed: {count_x}
|
|
111
|
+
⏭️ Deferred: {count_deferred}
|
|
112
|
+
{for each deferred item:}
|
|
113
|
+
- Phase {N}: {step text} {<!-- deferred: <annotation> --> if present}
|
|
114
|
+
|
|
115
|
+
These items carry plans you would lose to a silent archive.
|
|
116
|
+
|
|
117
|
+
> 1. Spawn follow-up roadmap as DRAFT
|
|
118
|
+
> → agents/roadmaps/road-to-{auto-slug}.md, status: draft,
|
|
119
|
+
> parent_roadmap: {this-slug}. Hidden from the dashboard until
|
|
120
|
+
> you flip status to "ready".
|
|
121
|
+
> 2. Spawn follow-up roadmap as READY (with blocked-until note)
|
|
122
|
+
> → status: ready (default), parent_roadmap: {this-slug}, plus
|
|
123
|
+
> a `> Blocked until <condition>` line in the body. Visible
|
|
124
|
+
> in the dashboard; execution waits on the condition.
|
|
125
|
+
> 3. Keep deferred items in this archive — confirm "no follow-up"
|
|
126
|
+
> is an intentional drop. Items stay searchable in archive/.
|
|
127
|
+
> 4. Restore selected items to [ ] — finish them here before archive.
|
|
128
|
+
> 5. Convert selected items to [-] cancelled — drop with rationale.
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Picks 1 or 2 → see "Spawn follow-up from deferred items" procedure below.
|
|
132
|
+
Picks 3, 4, or 5 → apply the change in this roadmap; re-evaluate the
|
|
133
|
+
decision table; archive when the gate clears.
|
|
134
|
+
|
|
135
|
+
### Spawn follow-up from deferred items (procedure)
|
|
136
|
+
|
|
137
|
+
When the user picks option 1 or 2 in step 4b:
|
|
138
|
+
|
|
139
|
+
1. **Derive the slug.** Default `<parent-slug>-followup` (e.g.
|
|
140
|
+
`road-to-x.md` → `road-to-x-followup.md`). If a user-supplied
|
|
141
|
+
slug was given in the picker, use that. Avoid collisions with
|
|
142
|
+
`agents/roadmaps/` (active + `archive/` + `skipped/`).
|
|
143
|
+
|
|
144
|
+
2. **Write the new file** at `agents/roadmaps/<slug>.md`:
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
---
|
|
148
|
+
complexity: lightweight # bump if the parent was structural
|
|
149
|
+
status: draft # option 1; omit for option 2 (= ready)
|
|
150
|
+
parent_roadmap: <parent-slug> # back-link to source
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
# Roadmap: Follow-up to <parent-title>
|
|
154
|
+
|
|
155
|
+
> <One sentence stating the carried-over outcome.>
|
|
156
|
+
|
|
157
|
+
## Context
|
|
158
|
+
|
|
159
|
+
This roadmap collects items deferred from
|
|
160
|
+
[`agents/roadmaps/archive/<parent-slug>.md`](archive/<parent-slug>.md).
|
|
161
|
+
See the parent's archive entry for the original rationale.
|
|
162
|
+
|
|
163
|
+
## Prerequisites
|
|
164
|
+
|
|
165
|
+
- [ ] Read `AGENTS.md` and the parent archive entry.
|
|
166
|
+
{parent prerequisites still relevant, copied verbatim}
|
|
167
|
+
|
|
168
|
+
<!-- Option 2 only — body note, NOT a frontmatter key: -->
|
|
169
|
+
> Blocked until <condition>. Execution starts when the condition clears.
|
|
170
|
+
|
|
171
|
+
## Phase 1: <name carried from parent>
|
|
172
|
+
|
|
173
|
+
- [ ] {deferred step text, copied verbatim with parent-phase pointer}
|
|
174
|
+
{repeat per deferred item, regrouped by parent phase}
|
|
175
|
+
|
|
176
|
+
## Acceptance Criteria
|
|
177
|
+
|
|
178
|
+
- [ ] {restate or adjust per the deferred scope}
|
|
179
|
+
- [ ] All quality gates pass — see `quality-tools`.
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
3. **In the parent roadmap** (still in the working tree), append a
|
|
183
|
+
line at the bottom (above any final `---`):
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
<!-- Deferred items migrated to agents/roadmaps/<followup-slug>.md on YYYY-MM-DD -->
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Do **not** delete the `[~]` lines — keep them visible in the
|
|
190
|
+
archived parent so the trail stays grep-able. The follow-up
|
|
191
|
+
carries forward the executable copy.
|
|
192
|
+
|
|
193
|
+
4. **Regenerate the dashboard.** The follow-up appears (draft hidden,
|
|
194
|
+
ready visible) and the parent — once moved — drops off.
|
|
195
|
+
|
|
196
|
+
5. **Archive the parent** (`git mv` → `archive/`) and regen one
|
|
197
|
+
more time per [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)
|
|
198
|
+
Iron Laws 1 + 3.
|
|
199
|
+
|
|
200
|
+
5. **Move the file** with `git mv` so history is preserved:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Archive (work was done)
|
|
204
|
+
git mv agents/roadmaps/{file} agents/roadmaps/archive/{file}
|
|
205
|
+
|
|
206
|
+
# Skipped (not pursuing)
|
|
207
|
+
git mv agents/roadmaps/{file} agents/roadmaps/skipped/{file}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
6. **Regenerate the dashboard** (see "Command" below). The moved roadmap is
|
|
211
|
+
excluded from the active set once it sits in `archive/` or `skipped/`.
|
|
212
|
+
|
|
213
|
+
### When to use `skipped/` vs `archive/`
|
|
214
|
+
|
|
215
|
+
| Situation | Destination |
|
|
216
|
+
|---|---|
|
|
217
|
+
| Finished all phases | `archive/` |
|
|
218
|
+
| Finished some phases, rest deferred/cancelled on purpose | `archive/` |
|
|
219
|
+
| Whole roadmap deferred or cancelled (no `[x]` at all) | `skipped/` |
|
|
220
|
+
| Never started, scope decision reversed | `skipped/` |
|
|
221
|
+
| Superseded by another roadmap | `skipped/` — add a pointer line at the top: `> Superseded by agents/roadmaps/{other}.md` |
|
|
222
|
+
| Research proved the direction wrong | `skipped/` — add a 1-line reason at the top |
|
|
223
|
+
|
|
224
|
+
If in doubt: archive beats skipped. `skipped/` is reserved for roadmaps where
|
|
225
|
+
no meaningful work was invested and the scope itself was rejected.
|
|
226
|
+
|