diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index 67abc5c1..6563d421 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -12,7 +12,7 @@
"name": "bmad-loop",
"source": "./src/bmad_loop/data/skills",
"description": "Automation-mode skills driven by the bmad-loop orchestrator: project bootstrap (bmad-loop-setup), interactive escalation resolution (bmad-loop-resolve) and deferred-work sweep triage (bmad-loop-sweep) — the inner dev primitive (which self-reviews and commits) is the upstream bmad-dev-auto skill",
- "version": "0.10.0",
+ "version": "0.11.0",
"author": {
"name": "pinkyd"
},
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1c0214a5..7e2fc1e9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,8 @@ breaking changes may land in a minor release.
## [Unreleased]
+## [0.11.0] — 2026-08-19
+
### Added
- **Plugins can now observe structured dev verification results (#641).** The existing
@@ -31,9 +33,10 @@ breaking changes may land in a minor release.
ceiling bounds what is held in memory while the remaining commands run, so a
pathologically chatty suite cannot grow peak memory with the number of configured
verify commands; the record still reports what the command emitted, so a stream the
- ceiling cut is never mistaken for a whole one. Retaining a stream is observation, so a failed write (ENOSPC, a read-only run
- dir) degrades — the record still lands, with a null pointer and `capture_error` —
- instead of taking down a dev pass whose verify commands passed.
+ ceiling cut is never mistaken for a whole one. Retaining a stream is observation, so a
+ failed write (ENOSPC, a read-only run dir) degrades — the record still lands, with a
+ null pointer and `capture_error` — instead of taking down a dev pass whose verify
+ commands passed.
- **A refused auto-sweep is now visible outside the journal (#501).** A run whose deferred-work
sweep was refused ended looking exactly like one that swept, and under `[sweep] auto = "run-end"`
@@ -55,9 +58,9 @@ breaking changes may land in a minor release.
validate is the command used to decide whether a checkout is safe to run at all, so a clone's own
config cannot choose which binary it launches. The gate bounds which NAME is probed, not what
that name resolves to — resolution runs through the user's `PATH`, and a probed name resolves to
- whatever the session launch would itself run. That boundary is the profile's provenance and not the spelling of
- `binary`, because a bare name still resolves into the checkout whenever a checkout-local
- directory is on `PATH`. The severity is `warning`, so validate's exit code is
+ whatever the session launch would itself run. That boundary is the profile's provenance and not
+ the spelling of `binary`, because a bare name still resolves into the checkout whenever a
+ checkout-local directory is on `PATH`. The severity is `warning`, so validate's exit code is
unchanged for a live CLI that merely answers `--version` oddly, and `adapter.binary` keeps its
existing found/absent meaning. The check id is additive, so `VALIDATE_SCHEMA_VERSION` is
unchanged.
@@ -430,12 +433,12 @@ breaking changes may land in a minor release.
`MoveFileEx(MOVEFILE_REPLACE_EXISTING)`, which is not guaranteed atomic and may fall back to a
non-atomic copy. What holds everywhere is that a failed write cannot truncate the original.
-- **An atomic write no longer fails on a file whose name fills the filesystem's limit.** The helpers
- stage a temp named after their target, and `mkstemp` inserts eight random characters, so the temp
- ran `len(name) + 13` — long enough that a target with a perfectly legal name produced an illegal
- _temp_ name and the write died with `ENAMETOOLONG` — or, on Windows, with `ENOENT` carrying
- `winerror` 206, which is the same condition under a different name. On ext4 the cutoff was a
- 243-byte basename.
+- **An atomic write no longer fails on a file whose name fills the filesystem's limit (#595).** The
+ helpers stage a temp named after their target, and `mkstemp` inserts eight random characters, so
+ the temp ran `len(name) + 13` — long enough that a target with a perfectly legal name produced an
+ illegal _temp_ name and the write died with `ENAMETOOLONG` — or, on Windows, with `ENOENT`
+ carrying `winerror` 206, which is the same condition under a different name. On ext4 the cutoff
+ was a 243-byte basename.
Latent in the helpers since they were written, and reachable from this release because the story
spec writers moved onto them: a spec is named by your planning skills, and nothing bounds that
name. When the readable temp name cannot fit, the helpers now fall back to a short digest of it
@@ -3317,7 +3320,8 @@ enforced in CI.
implementation phase, driven by a Python control loop with hook-based session transport and
resumable on-disk run state.
-[Unreleased]: https://github.com/bmad-code-org/bmad-loop/compare/v0.10.0...HEAD
+[Unreleased]: https://github.com/bmad-code-org/bmad-loop/compare/v0.11.0...HEAD
+[0.11.0]: https://github.com/bmad-code-org/bmad-loop/releases/tag/v0.11.0
[0.10.0]: https://github.com/bmad-code-org/bmad-loop/releases/tag/v0.10.0
[0.9.1]: https://github.com/bmad-code-org/bmad-loop/releases/tag/v0.9.1
[0.9.0]: https://github.com/bmad-code-org/bmad-loop/releases/tag/v0.9.0
diff --git a/docs/images/dashboard.png b/docs/images/dashboard.png
index 68c280d4..c7167bb9 100644
Binary files a/docs/images/dashboard.png and b/docs/images/dashboard.png differ
diff --git a/docs/images/dashboard.svg b/docs/images/dashboard.svg
index b89588a2..aeeebd9b 100644
--- a/docs/images/dashboard.svg
+++ b/docs/images/dashboard.svg
@@ -19,229 +19,229 @@
font-weight: 700;
}
- .terminal-3525455179-matrix {
+ .terminal-1535585647-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3525455179-title {
+ .terminal-1535585647-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3525455179-r1 { fill: #c5c8c6 }
-.terminal-3525455179-r2 { fill: #e0e0e0 }
-.terminal-3525455179-r3 { fill: #a0a3a6 }
-.terminal-3525455179-r4 { fill: #0053aa }
-.terminal-3525455179-r5 { fill: #e2e2e2;font-weight: bold }
-.terminal-3525455179-r6 { fill: #e0e0e0;font-weight: bold }
-.terminal-3525455179-r7 { fill: #98e024 }
-.terminal-3525455179-r8 { fill: #9d9d9d }
-.terminal-3525455179-r9 { fill: #fd971f }
-.terminal-3525455179-r10 { fill: #a1a1a1 }
-.terminal-3525455179-r11 { fill: #ddedf9;font-weight: bold }
-.terminal-3525455179-r12 { fill: #272727 }
-.terminal-3525455179-r13 { fill: #003054 }
-.terminal-3525455179-r14 { fill: #1e1e1e }
-.terminal-3525455179-r15 { fill: #0053aa;font-weight: bold }
-.terminal-3525455179-r16 { fill: #797979 }
-.terminal-3525455179-r17 { fill: #3e3e3e }
-.terminal-3525455179-r18 { fill: #262626 }
-.terminal-3525455179-r19 { fill: #0178d4 }
-.terminal-3525455179-r20 { fill: #121212 }
-.terminal-3525455179-r21 { fill: #191919 }
-.terminal-3525455179-r22 { fill: #9e9e9e }
-.terminal-3525455179-r23 { fill: #58d1eb }
-.terminal-3525455179-r24 { fill: #f4005f }
-.terminal-3525455179-r25 { fill: #f4005f;font-weight: bold }
-.terminal-3525455179-r26 { fill: #ffa62b;font-weight: bold }
-.terminal-3525455179-r27 { fill: #495259 }
+ .terminal-1535585647-r1 { fill: #c5c8c6 }
+.terminal-1535585647-r2 { fill: #e0e0e0 }
+.terminal-1535585647-r3 { fill: #a0a3a6 }
+.terminal-1535585647-r4 { fill: #0053aa }
+.terminal-1535585647-r5 { fill: #e2e2e2;font-weight: bold }
+.terminal-1535585647-r6 { fill: #e0e0e0;font-weight: bold }
+.terminal-1535585647-r7 { fill: #98e024 }
+.terminal-1535585647-r8 { fill: #9d9d9d }
+.terminal-1535585647-r9 { fill: #fd971f }
+.terminal-1535585647-r10 { fill: #a1a1a1 }
+.terminal-1535585647-r11 { fill: #ddedf9;font-weight: bold }
+.terminal-1535585647-r12 { fill: #272727 }
+.terminal-1535585647-r13 { fill: #003054 }
+.terminal-1535585647-r14 { fill: #1e1e1e }
+.terminal-1535585647-r15 { fill: #0053aa;font-weight: bold }
+.terminal-1535585647-r16 { fill: #797979 }
+.terminal-1535585647-r17 { fill: #3e3e3e }
+.terminal-1535585647-r18 { fill: #262626 }
+.terminal-1535585647-r19 { fill: #0178d4 }
+.terminal-1535585647-r20 { fill: #121212 }
+.terminal-1535585647-r21 { fill: #191919 }
+.terminal-1535585647-r22 { fill: #9e9e9e }
+.terminal-1535585647-r23 { fill: #58d1eb }
+.terminal-1535585647-r24 { fill: #f4005f }
+.terminal-1535585647-r25 { fill: #f4005f;font-weight: bold }
+.terminal-1535585647-r26 { fill: #ffa62b;font-weight: bold }
+.terminal-1535585647-r27 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- bmad-loop
+ bmad-loop
-
+
-
- ⭘bmad-loop — ~/code/acme-search
-─Runs─────────────────────────────│20260612-141000-e5f6▶ running started 2026-06-12T14:10:00 epic 2
- st run type │tasks 5 done 2 deferred 1 escalated 0 1,059,100 tokens (2,473,900 raw)
-✔ 20260610-090000-a1b2 story │───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-▶ 20260611-101500-c3d4 sweep │ story phase agent dev review tokens info
- ▶ 20260612-141000-e5f6 story │ 2-1-search-index done - ×1 ×1 338,400 a1b2c3d4e5f6
-│ 2-2-typeahead done - ×1 ×2 283,200 b2c3d4e5f607
-│ 2-3-search-ranking review-running - ×1 ×1 224,300
-│ 2-4-saved-searches dev-running - ×1 ×0 81,900
-│ 2-5-search-analytics deferred - ×2 ×1 131,300 dev budget exhausted
-▎│▉
-─ Sprint ─────────────────────────│───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-▼ Epic 1 · 3/3 ✓│JournalLogAttention
-├ ✓ 1-auth│╸━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-├ ✓ 2-session-tokens│▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-├ ✓ 3-password-reset│▊08:42:24session-start task_id=2-1-search-index role=dev story_key=2-1-search-index▎
-└ ✓ retrospective│▊08:42:24story-done story_key=2-1-search-index commit=a1b2c3d4e5f6▎
-▼ Epic 2 · 2/5│▊08:42:24session-start task_id=2-2-typeahead role=dev story_key=2-2-typeahead▎
-├ ✓ 1-search-index│▊08:42:24review-cycle story_key=2-2-typeahead cycle=2 findings=3▎
-├ ✓ 2-typeahead│▊08:42:24story-done story_key=2-2-typeahead commit=b2c3d4e5f607▎
-├ ▶ 3-search-ranking│▊08:42:24story-start story_key=2-3-search-ranking epic=2▎
-├ ◆ 4-saved-searches│▊08:42:24spec-approved story_key=2-3-search-ranking tokens=1834▎
-└ ○ 5-search-analytics│▊08:42:24dev-done story_key=2-3-search-ranking tasks_done=3 tasks_total=3▎
-▼ Epic 3 · 0/2│▊08:42:24verify-ok story_key=2-3-search-ranking commands=pytest -q, ruff check .▎
-├ · 1-billing-portal│▊08:42:24review-start story_key=2-3-search-ranking role=review▎
-└ · 2-invoices│▊08:42:24escalation-preference story_key=2-3-search-ranking detail=reviewer used codex for the scoring math▎
-│▊08:42:24story-deferred story_key=2-5-search-analytics reason=dev budget exhausted▎
-│▊▎
-│▊▎
-─ Deferred Work ──────────────────│▊▎
-DW-1 Harden the OAuth token refre…│▊▎
-DW-2 Add pagination to the search…│▊▎
-DW-3 Replace the ad-hoc ranking w…│▊▎
-DW-4 Flaky retry in the indexer i…│▊▎
-DW-5 ✓ Polish the empty-state cop…│▊▎
-│▊▎
-│▊▎
-│▊▎
-│▊▎
-│▊▎
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
- y copy ^w resize q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-stop D delete A archive▏^p palette
+
+ ⭘bmad-loop — ~/code/acme-search
+─Runs─────────────────────────────│20260612-141000-e5f6▶ running started 2026-06-12T14:10:00 epic 2
+ st run type │tasks 5 done 2 deferred 1 escalated 0 1,059,100 tokens (2,473,900 raw)
+✔ 20260610-090000-a1b2 story │───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+▶ 20260611-101500-c3d4 sweep │ story phase agent dev review tokens info
+ ▶ 20260612-141000-e5f6 story │ 2-1-search-index done - ×1 ×1 338,400 a1b2c3d4e5f6
+│ 2-2-typeahead done - ×1 ×2 283,200 b2c3d4e5f607
+│ 2-3-search-ranking review-running - ×1 ×1 224,300
+│ 2-4-saved-searches dev-running - ×1 ×0 81,900
+│ 2-5-search-analytics deferred - ×2 ×1 131,300 dev budget exhausted
+▎│▉
+─ Sprint ─────────────────────────│───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+▼ Epic 1 · 3/3 ✓│JournalLogAttention
+├ ✓ 1-auth│╸━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+├ ✓ 2-session-tokens│▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+├ ✓ 3-password-reset│▊14:46:08session-start task_id=2-1-search-index role=dev story_key=2-1-search-index▎
+└ ✓ retrospective│▊14:46:08story-done story_key=2-1-search-index commit=a1b2c3d4e5f6▎
+▼ Epic 2 · 2/5│▊14:46:08session-start task_id=2-2-typeahead role=dev story_key=2-2-typeahead▎
+├ ✓ 1-search-index│▊14:46:08review-cycle story_key=2-2-typeahead cycle=2 findings=3▎
+├ ✓ 2-typeahead│▊14:46:08story-done story_key=2-2-typeahead commit=b2c3d4e5f607▎
+├ ▶ 3-search-ranking│▊14:46:08story-start story_key=2-3-search-ranking epic=2▎
+├ ◆ 4-saved-searches│▊14:46:08spec-approved story_key=2-3-search-ranking tokens=1834▎
+└ ○ 5-search-analytics│▊14:46:08dev-done story_key=2-3-search-ranking tasks_done=3 tasks_total=3▎
+▼ Epic 3 · 0/2│▊14:46:08verify-ok story_key=2-3-search-ranking commands=pytest -q, ruff check .▎
+├ · 1-billing-portal│▊14:46:08review-start story_key=2-3-search-ranking role=review▎
+└ · 2-invoices│▊14:46:08escalation-preference story_key=2-3-search-ranking detail=reviewer used codex for the scoring math▎
+│▊14:46:08story-deferred story_key=2-5-search-analytics reason=dev budget exhausted▎
+│▊▎
+│▊▎
+─ Deferred Work ──────────────────│▊▎
+DW-1 Harden the OAuth token refre…│▊▎
+DW-2 Add pagination to the search…│▊▎
+DW-3 Replace the ad-hoc ranking w…│▊▎
+DW-4 Flaky retry in the indexer i…│▊▎
+DW-5 ✓ Polish the empty-state cop…│▊▎
+│▊▎
+│▊▎
+│▊▎
+│▊▎
+│▊▎
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+ y copy ^w resize q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-stop D delete A archive▏^p palette
diff --git a/docs/images/demo.gif b/docs/images/demo.gif
index 2673b72c..9ca27fbb 100644
Binary files a/docs/images/demo.gif and b/docs/images/demo.gif differ
diff --git a/docs/images/settings.svg b/docs/images/settings.svg
index 76987d4e..dfdff825 100644
--- a/docs/images/settings.svg
+++ b/docs/images/settings.svg
@@ -19,210 +19,210 @@
font-weight: 700;
}
- .terminal-1953764602-matrix {
+ .terminal-2985956687-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1953764602-title {
+ .terminal-2985956687-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1953764602-r1 { fill: #c5c8c6 }
-.terminal-1953764602-r2 { fill: #e0e0e0 }
-.terminal-1953764602-r3 { fill: #a0a3a6 }
-.terminal-1953764602-r4 { fill: #121212 }
-.terminal-1953764602-r5 { fill: #6f6f6f }
-.terminal-1953764602-r6 { fill: #000000 }
-.terminal-1953764602-r7 { fill: #ffa62b;font-weight: bold }
-.terminal-1953764602-r8 { fill: #495259 }
+ .terminal-2985956687-r1 { fill: #c5c8c6 }
+.terminal-2985956687-r2 { fill: #e0e0e0 }
+.terminal-2985956687-r3 { fill: #a0a3a6 }
+.terminal-2985956687-r4 { fill: #121212 }
+.terminal-2985956687-r5 { fill: #6f6f6f }
+.terminal-2985956687-r6 { fill: #000000 }
+.terminal-2985956687-r7 { fill: #ffa62b;font-weight: bold }
+.terminal-2985956687-r8 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- bmad-loop
+ bmad-loop
-
+
-
- ⭘bmad-loop — ~/code/acme-search
-
-~/code/acme-search/.bmad-loop/policy.toml
-running engines snapshot policy at start — changes apply to new runs and resumes
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ gates — approval gates, escalation & retrospective behavior
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ review — separate adversarial review session toggle
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ stories — story-queue source: classic sprint board vs. folder+id dispatch
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ limits — cycle/attempt caps, timeout & token budget
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ verify — post-implementation verification commands
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ notify — desktop & file notifications
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ adapter — CLI client, model & bypass flags (base for all stages)
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ adapter.dev — dev-stage adapter overrides
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▇▇
-▶ adapter.review — review-stage adapter overrides
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ adapter.triage — triage-stage adapter overrides
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ sweep — deferred-work sweep automation
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ scm — git isolation, branching & merge-back
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- esc back ^s save ^e expand/collapse all q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-s▏^ppalette
+
+ ⭘bmad-loop — ~/code/acme-search
+
+~/code/acme-search/.bmad-loop/policy.toml
+running engines snapshot policy at start — changes apply to new runs and resumes
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ gates — approval gates, escalation & retrospective behavior
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ review — separate adversarial review session toggle
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ stories — story-queue source: classic sprint board vs. folder+id dispatch
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ limits — cycle/attempt caps, timeout & token budget
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ verify — post-implementation verification commands
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ notify — desktop & file notifications
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ adapter — CLI client, model & bypass flags (base for all stages)
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ adapter.dev — dev-stage adapter overrides
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▇▇
+▶ adapter.review — review-stage adapter overrides
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ adapter.triage — triage-stage adapter overrides
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ sweep — deferred-work sweep automation
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ scm — git isolation, branching & merge-back
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ esc back ^s save ^e expand/collapse all q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-s▏^ppalette
diff --git a/docs/images/start-run-modal.png b/docs/images/start-run-modal.png
index 20f38cb8..02d4f8ae 100644
Binary files a/docs/images/start-run-modal.png and b/docs/images/start-run-modal.png differ
diff --git a/docs/images/start-run-modal.svg b/docs/images/start-run-modal.svg
index 9fbaad28..c55169ea 100644
--- a/docs/images/start-run-modal.svg
+++ b/docs/images/start-run-modal.svg
@@ -19,242 +19,242 @@
font-weight: 700;
}
- .terminal-2592887055-matrix {
+ .terminal-899895571-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2592887055-title {
+ .terminal-899895571-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2592887055-r1 { fill: #e0e0e0 }
-.terminal-2592887055-r2 { fill: #646464 }
-.terminal-2592887055-r3 { fill: #4a4c4d }
-.terminal-2592887055-r4 { fill: #c5c8c6 }
-.terminal-2592887055-r5 { fill: #0a2c4e }
-.terminal-2592887055-r6 { fill: #646464;font-weight: bold }
-.terminal-2592887055-r7 { fill: #476419 }
-.terminal-2592887055-r8 { fill: #494949 }
-.terminal-2592887055-r9 { fill: #0053aa }
-.terminal-2592887055-r10 { fill: #4a4a4a }
-.terminal-2592887055-r11 { fill: #704717;font-weight: bold }
-.terminal-2592887055-r12 { fill: #704717 }
-.terminal-2592887055-r13 { fill: #e0e0e0;font-weight: bold }
-.terminal-2592887055-r14 { fill: #1e1e1e }
-.terminal-2592887055-r15 { fill: #191919 }
-.terminal-2592887055-r16 { fill: #7f7f7f }
-.terminal-2592887055-r17 { fill: #161616 }
-.terminal-2592887055-r18 { fill: #0a1e2c }
-.terminal-2592887055-r19 { fill: #737373 }
-.terminal-2592887055-r20 { fill: #0a2c4e;font-weight: bold }
-.terminal-2592887055-r21 { fill: #1a1a1a }
-.terminal-2592887055-r22 { fill: #0b3a5f }
-.terminal-2592887055-r23 { fill: #121212 }
-.terminal-2592887055-r24 { fill: #141414 }
-.terminal-2592887055-r25 { fill: #232323 }
-.terminal-2592887055-r26 { fill: #2e5e68 }
-.terminal-2592887055-r27 { fill: #6c0a30 }
-.terminal-2592887055-r28 { fill: #242f38 }
-.terminal-2592887055-r29 { fill: #000f18 }
-.terminal-2592887055-r30 { fill: #9e9e9e }
-.terminal-2592887055-r31 { fill: #455969;font-weight: bold }
-.terminal-2592887055-r32 { fill: #6c0a30;font-weight: bold }
-.terminal-2592887055-r33 { fill: #4b4b4b }
-.terminal-2592887055-r34 { fill: #6db2ff }
-.terminal-2592887055-r35 { fill: #2d2d2d }
-.terminal-2592887055-r36 { fill: #ddedf9;font-weight: bold }
-.terminal-2592887055-r37 { fill: #004295 }
-.terminal-2592887055-r38 { fill: #0d0d0d }
-.terminal-2592887055-r39 { fill: #704d1c;font-weight: bold }
-.terminal-2592887055-r40 { fill: #282b2e }
+ .terminal-899895571-r1 { fill: #e0e0e0 }
+.terminal-899895571-r2 { fill: #646464 }
+.terminal-899895571-r3 { fill: #4a4c4d }
+.terminal-899895571-r4 { fill: #c5c8c6 }
+.terminal-899895571-r5 { fill: #0a2c4e }
+.terminal-899895571-r6 { fill: #646464;font-weight: bold }
+.terminal-899895571-r7 { fill: #476419 }
+.terminal-899895571-r8 { fill: #494949 }
+.terminal-899895571-r9 { fill: #0053aa }
+.terminal-899895571-r10 { fill: #4a4a4a }
+.terminal-899895571-r11 { fill: #704717;font-weight: bold }
+.terminal-899895571-r12 { fill: #704717 }
+.terminal-899895571-r13 { fill: #e0e0e0;font-weight: bold }
+.terminal-899895571-r14 { fill: #1e1e1e }
+.terminal-899895571-r15 { fill: #191919 }
+.terminal-899895571-r16 { fill: #7f7f7f }
+.terminal-899895571-r17 { fill: #161616 }
+.terminal-899895571-r18 { fill: #0a1e2c }
+.terminal-899895571-r19 { fill: #737373 }
+.terminal-899895571-r20 { fill: #0a2c4e;font-weight: bold }
+.terminal-899895571-r21 { fill: #1a1a1a }
+.terminal-899895571-r22 { fill: #0b3a5f }
+.terminal-899895571-r23 { fill: #121212 }
+.terminal-899895571-r24 { fill: #141414 }
+.terminal-899895571-r25 { fill: #232323 }
+.terminal-899895571-r26 { fill: #2e5e68 }
+.terminal-899895571-r27 { fill: #6c0a30 }
+.terminal-899895571-r28 { fill: #242f38 }
+.terminal-899895571-r29 { fill: #000f18 }
+.terminal-899895571-r30 { fill: #9e9e9e }
+.terminal-899895571-r31 { fill: #455969;font-weight: bold }
+.terminal-899895571-r32 { fill: #6c0a30;font-weight: bold }
+.terminal-899895571-r33 { fill: #4b4b4b }
+.terminal-899895571-r34 { fill: #6db2ff }
+.terminal-899895571-r35 { fill: #2d2d2d }
+.terminal-899895571-r36 { fill: #ddedf9;font-weight: bold }
+.terminal-899895571-r37 { fill: #004295 }
+.terminal-899895571-r38 { fill: #0d0d0d }
+.terminal-899895571-r39 { fill: #704d1c;font-weight: bold }
+.terminal-899895571-r40 { fill: #282b2e }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- bmad-loop
+ bmad-loop
-
+
-
- ⭘bmad-loop — ~/code/acme-search
-─Runs─────────────────────────────│20260611-101500-c3d4 [sweep] ▶ running started 2026-06-11T10:15:00 epic 2
- st run type │tasks 1█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
-✔ 20260610-090000-a1b2 story │⚑ decis██ for the auth hardening epic?
- ▶ 20260611-101500-c3d4 sweep │ press█start run█
-▶ 20260612-141000-e5f6 story │────────██───────────────────────────────────────────
-│ story █▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█ review tokens info
-│ dw-sear█▊sprint mode — sprint-status.yaml▼▎█ ×1 153,300 2b7f0a91c440
-│█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▉
-│────────█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█───────────────────────────────────────────
-▎│Journal█▊stories mode: spec folder holding stories.yaml + ▎█
-─ Sprint ─────────────────────────│╸━━━━━━━█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-▼ Epic 1 · 3/3 ✓│▊▔▔▔▔▔▔▔█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-├ ✓ 1-auth│▊08:42:█▊epic — blank for all (sprint mode)▎█▎
-├ ✓ 2-session-tokens│▊08:42:█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█ions=2▎
-├ ✓ 3-password-reset│▊08:42:█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█2▎
-└ ✓ retrospective│▊08:42:█▊story — 3-1 / slug / full key (sprint), or story id ▎█h refresh race now, or hold it for the ▎
-▼ Epic 2 · 2/5│▊█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▎
-├ ✓ 1-search-index│▊█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▎
-├ ✓ 2-typeahead│▊█▊max stories — blank for no limit▎█▎
-├ ▶ 3-search-ranking│▊█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▎
-├ ◆ 4-saved-searches│▊█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▎
-└ ○ 5-search-analytics│▊█▊▐X▌ dry run (print the plan, spawn nothing) ▎█▎
-▼ Epic 3 · 0/2│▊█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▎
-├ · 1-billing-portal│▊██▎
-└ · 2-invoices│▊█┌────────────────────────────────────────────────────────┐█▎
-│▊█│sprint mode — walks sprint-status.yaml│█▎
-│▊█└────────────────────────────────────────────────────────┘█▎
-│▊██▎
-─ Deferred Work ──────────────────│▊██▎
-DW-1 Harden the OAuth token refre…│▊██▎
-DW-2 Add pagination to the search…│▊██▎
-DW-3 Replace the ad-hoc ranking w…│▊██▎
-DW-4 Flaky retry in the indexer i…│▊██▎
-DW-5 ✓ Polish the empty-state cop…│▊█▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔█▎
-│▊█ start cancel █▎
-│▊█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▎
-│▊██▎
-│▊█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█▎
-│▊▎
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
- y copy ^w resize q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-stop D delete A archive▏^p palette
+
+ ⭘bmad-loop — ~/code/acme-search
+─Runs─────────────────────────────│20260611-101500-c3d4 [sweep] ▶ running started 2026-06-11T10:15:00 epic 2
+ st run type │tasks 1█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
+✔ 20260610-090000-a1b2 story │⚑ decis██ for the auth hardening epic?
+ ▶ 20260611-101500-c3d4 sweep │ press█start run█
+▶ 20260612-141000-e5f6 story │────────██───────────────────────────────────────────
+│ story █▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█ review tokens info
+│ dw-sear█▊sprint mode — sprint-status.yaml▼▎█ ×1 153,300 2b7f0a91c440
+│█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▉
+│────────█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█───────────────────────────────────────────
+▎│Journal█▊stories mode: spec folder holding stories.yaml + ▎█
+─ Sprint ─────────────────────────│╸━━━━━━━█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ Epic 1 · 3/3 ✓│▊▔▔▔▔▔▔▔█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+├ ✓ 1-auth│▊14:46:█▊epic — blank for all (sprint mode)▎█▎
+├ ✓ 2-session-tokens│▊14:46:█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█ions=2▎
+├ ✓ 3-password-reset│▊14:46:█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█2▎
+└ ✓ retrospective│▊14:46:█▊story — 3-1 / slug / full key (sprint), or story id ▎█h refresh race now, or hold it for the ▎
+▼ Epic 2 · 2/5│▊█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▎
+├ ✓ 1-search-index│▊█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▎
+├ ✓ 2-typeahead│▊█▊max stories — blank for no limit▎█▎
+├ ▶ 3-search-ranking│▊█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▎
+├ ◆ 4-saved-searches│▊█▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▎
+└ ○ 5-search-analytics│▊█▊▐X▌ dry run (print the plan, spawn nothing) ▎█▎
+▼ Epic 3 · 0/2│▊█▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▎
+├ · 1-billing-portal│▊██▎
+└ · 2-invoices│▊█┌────────────────────────────────────────────────────────┐█▎
+│▊█│sprint mode — walks sprint-status.yaml│█▎
+│▊█└────────────────────────────────────────────────────────┘█▎
+│▊██▎
+─ Deferred Work ──────────────────│▊██▎
+DW-1 Harden the OAuth token refre…│▊██▎
+DW-2 Add pagination to the search…│▊██▎
+DW-3 Replace the ad-hoc ranking w…│▊██▎
+DW-4 Flaky retry in the indexer i…│▊██▎
+DW-5 ✓ Polish the empty-state cop…│▊█▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔█▎
+│▊█ start cancel █▎
+│▊█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▎
+│▊██▎
+│▊█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█▎
+│▊▎
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+ y copy ^w resize q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-stop D delete A archive▏^p palette
diff --git a/docs/images/sweep-decision.png b/docs/images/sweep-decision.png
index 844a649b..e102c2d2 100644
Binary files a/docs/images/sweep-decision.png and b/docs/images/sweep-decision.png differ
diff --git a/docs/images/sweep-decision.svg b/docs/images/sweep-decision.svg
index 9e04d437..b3d1e644 100644
--- a/docs/images/sweep-decision.svg
+++ b/docs/images/sweep-decision.svg
@@ -19,230 +19,230 @@
font-weight: 700;
}
- .terminal-1606406294-matrix {
+ .terminal-2680934562-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1606406294-title {
+ .terminal-2680934562-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1606406294-r1 { fill: #c5c8c6 }
-.terminal-1606406294-r2 { fill: #e0e0e0 }
-.terminal-1606406294-r3 { fill: #a0a3a6 }
-.terminal-1606406294-r4 { fill: #0053aa }
-.terminal-1606406294-r5 { fill: #e2e2e2;font-weight: bold }
-.terminal-1606406294-r6 { fill: #e0e0e0;font-weight: bold }
-.terminal-1606406294-r7 { fill: #98e024 }
-.terminal-1606406294-r8 { fill: #9d9d9d }
-.terminal-1606406294-r9 { fill: #fd971f }
-.terminal-1606406294-r10 { fill: #a1a1a1 }
-.terminal-1606406294-r11 { fill: #fd971f;font-weight: bold }
-.terminal-1606406294-r12 { fill: #ddedf9;font-weight: bold }
-.terminal-1606406294-r13 { fill: #1e1e1e }
-.terminal-1606406294-r14 { fill: #003054 }
-.terminal-1606406294-r15 { fill: #272727 }
-.terminal-1606406294-r16 { fill: #797979 }
-.terminal-1606406294-r17 { fill: #0053aa;font-weight: bold }
-.terminal-1606406294-r18 { fill: #262626 }
-.terminal-1606406294-r19 { fill: #0178d4 }
-.terminal-1606406294-r20 { fill: #121212 }
-.terminal-1606406294-r21 { fill: #191919 }
-.terminal-1606406294-r22 { fill: #3e3e3e }
-.terminal-1606406294-r23 { fill: #9e9e9e }
-.terminal-1606406294-r24 { fill: #58d1eb }
-.terminal-1606406294-r25 { fill: #f4005f }
-.terminal-1606406294-r26 { fill: #f4005f;font-weight: bold }
-.terminal-1606406294-r27 { fill: #ffa62b;font-weight: bold }
-.terminal-1606406294-r28 { fill: #495259 }
+ .terminal-2680934562-r1 { fill: #c5c8c6 }
+.terminal-2680934562-r2 { fill: #e0e0e0 }
+.terminal-2680934562-r3 { fill: #a0a3a6 }
+.terminal-2680934562-r4 { fill: #0053aa }
+.terminal-2680934562-r5 { fill: #e2e2e2;font-weight: bold }
+.terminal-2680934562-r6 { fill: #e0e0e0;font-weight: bold }
+.terminal-2680934562-r7 { fill: #98e024 }
+.terminal-2680934562-r8 { fill: #9d9d9d }
+.terminal-2680934562-r9 { fill: #fd971f }
+.terminal-2680934562-r10 { fill: #a1a1a1 }
+.terminal-2680934562-r11 { fill: #fd971f;font-weight: bold }
+.terminal-2680934562-r12 { fill: #ddedf9;font-weight: bold }
+.terminal-2680934562-r13 { fill: #1e1e1e }
+.terminal-2680934562-r14 { fill: #003054 }
+.terminal-2680934562-r15 { fill: #272727 }
+.terminal-2680934562-r16 { fill: #797979 }
+.terminal-2680934562-r17 { fill: #0053aa;font-weight: bold }
+.terminal-2680934562-r18 { fill: #262626 }
+.terminal-2680934562-r19 { fill: #0178d4 }
+.terminal-2680934562-r20 { fill: #121212 }
+.terminal-2680934562-r21 { fill: #191919 }
+.terminal-2680934562-r22 { fill: #3e3e3e }
+.terminal-2680934562-r23 { fill: #9e9e9e }
+.terminal-2680934562-r24 { fill: #58d1eb }
+.terminal-2680934562-r25 { fill: #f4005f }
+.terminal-2680934562-r26 { fill: #f4005f;font-weight: bold }
+.terminal-2680934562-r27 { fill: #ffa62b;font-weight: bold }
+.terminal-2680934562-r28 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- bmad-loop
+ bmad-loop
-
+
-
- ⭘bmad-loop — ~/code/acme-search
-─Runs─────────────────────────────│20260611-101500-c3d4 [sweep] ▶ running started 2026-06-11T10:15:00 epic 2
- st run type │tasks 1 done 1 deferred 0 escalated 0 153,300 tokens (369,300 raw)
-✔ 20260610-090000-a1b2 story │⚑ decision needed: DW-1 — Reopen the OAuth refresh race now, or hold it for the auth hardening epic?
- ▶ 20260611-101500-c3d4 sweep │ press a to attach and answer
-▶ 20260612-141000-e5f6 story │───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-│ story phase agent dev review tokens info
-│ dw-search-pagination done - ×1 ×1 153,300 2b7f0a91c440
-│▉
-│───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-▎│JournalLogAttention
-─ Sprint ─────────────────────────│╸━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-▼ Epic 1 · 3/3 ✓│▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-├ ✓ 1-auth│▊08:42:24sweep-start cycle=1▎
-├ ✓ 2-session-tokens│▊08:42:24triage-done bundles=1 already_resolved=1 decisions=2▎
-├ ✓ 3-password-reset│▊08:42:24bundle-done bundle=search-pagination dw_ids=DW-2▎
-└ ✓ retrospective│▊08:42:24decision-pending dw_id=DW-1 question=Reopen the OAuth refresh race now, or hold it for the ▎
-▼ Epic 2 · 2/5│▊auth … ▎
-├ ✓ 1-search-index│▊▎
-├ ✓ 2-typeahead│▊▎
-├ ▶ 3-search-ranking│▊▎
-├ ◆ 4-saved-searches│▊▎
-└ ○ 5-search-analytics│▊▎
-▼ Epic 3 · 0/2│▊▎
-├ · 1-billing-portal│▊▎
-└ · 2-invoices│▊▎
-│▊▎
-│▊▎
-│▊▎
-─ Deferred Work ──────────────────│▊▎
-DW-1 Harden the OAuth token refre…│▊▎
-DW-2 Add pagination to the search…│▊▎
-DW-3 Replace the ad-hoc ranking w…│▊▎
-DW-4 Flaky retry in the indexer i…│▊▎
-DW-5 ✓ Polish the empty-state cop…│▊▎
-│▊▎
-│▊▎
-│▊▎
-│▊▎
-│▊▎
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
- y copy ^w resize q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-stop D delete A archive▏^p palette
+
+ ⭘bmad-loop — ~/code/acme-search
+─Runs─────────────────────────────│20260611-101500-c3d4 [sweep] ▶ running started 2026-06-11T10:15:00 epic 2
+ st run type │tasks 1 done 1 deferred 0 escalated 0 153,300 tokens (369,300 raw)
+✔ 20260610-090000-a1b2 story │⚑ decision needed: DW-1 — Reopen the OAuth refresh race now, or hold it for the auth hardening epic?
+ ▶ 20260611-101500-c3d4 sweep │ press a to attach and answer
+▶ 20260612-141000-e5f6 story │───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+│ story phase agent dev review tokens info
+│ dw-search-pagination done - ×1 ×1 153,300 2b7f0a91c440
+│▉
+│───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+▎│JournalLogAttention
+─ Sprint ─────────────────────────│╸━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▼ Epic 1 · 3/3 ✓│▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+├ ✓ 1-auth│▊14:46:08sweep-start cycle=1▎
+├ ✓ 2-session-tokens│▊14:46:08triage-done bundles=1 already_resolved=1 decisions=2▎
+├ ✓ 3-password-reset│▊14:46:08bundle-done bundle=search-pagination dw_ids=DW-2▎
+└ ✓ retrospective│▊14:46:08decision-pending dw_id=DW-1 question=Reopen the OAuth refresh race now, or hold it for the ▎
+▼ Epic 2 · 2/5│▊auth … ▎
+├ ✓ 1-search-index│▊▎
+├ ✓ 2-typeahead│▊▎
+├ ▶ 3-search-ranking│▊▎
+├ ◆ 4-saved-searches│▊▎
+└ ○ 5-search-analytics│▊▎
+▼ Epic 3 · 0/2│▊▎
+├ · 1-billing-portal│▊▎
+└ · 2-invoices│▊▎
+│▊▎
+│▊▎
+│▊▎
+─ Deferred Work ──────────────────│▊▎
+DW-1 Harden the OAuth token refre…│▊▎
+DW-2 Add pagination to the search…│▊▎
+DW-3 Replace the ad-hoc ranking w…│▊▎
+DW-4 Flaky retry in the indexer i…│▊▎
+DW-5 ✓ Polish the empty-state cop…│▊▎
+│▊▎
+│▊▎
+│▊▎
+│▊▎
+│▊▎
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+ y copy ^w resize q quit r run s sweep e resume p review R resolve d decisions a attach x stop S soft-stop D delete A archive▏^p palette
diff --git a/module.yaml b/module.yaml
index 93f644e8..a9ab75d4 100644
--- a/module.yaml
+++ b/module.yaml
@@ -1,7 +1,7 @@
code: bmad-loop
name: BMAD Loop Skills
description: "Automation-mode skills driven by the bmad-loop orchestrator: interactive escalation resolution (bmad-loop-resolve) and deferred-work sweep triage (bmad-loop-sweep) — the inner dev primitive (which self-reviews and commits) is the upstream bmad-build-auto skill (bmad-dev-auto on pre-rename releases)"
-module_version: 0.10.0
+module_version: 0.11.0
default_selected: false
module_greeting: >
BMAD Loop installed — both the automation skills and the
diff --git a/pyproject.toml b/pyproject.toml
index 6727803f..9deead70 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "bmad-loop"
-version = "0.10.0"
+version = "0.11.0"
description = "Deterministic ralph-loop orchestrator for the BMAD implementation phase"
readme = "README.md"
license = "MIT"
diff --git a/src/bmad_loop/__init__.py b/src/bmad_loop/__init__.py
index a4079ac7..fb859c67 100644
--- a/src/bmad_loop/__init__.py
+++ b/src/bmad_loop/__init__.py
@@ -8,4 +8,4 @@
directory under .bmad-loop/runs/.
"""
-__version__ = "0.10.0"
+__version__ = "0.11.0"
diff --git a/src/bmad_loop/data/skills/bmad-loop-setup/assets/module.yaml b/src/bmad_loop/data/skills/bmad-loop-setup/assets/module.yaml
index 93f644e8..a9ab75d4 100644
--- a/src/bmad_loop/data/skills/bmad-loop-setup/assets/module.yaml
+++ b/src/bmad_loop/data/skills/bmad-loop-setup/assets/module.yaml
@@ -1,7 +1,7 @@
code: bmad-loop
name: BMAD Loop Skills
description: "Automation-mode skills driven by the bmad-loop orchestrator: interactive escalation resolution (bmad-loop-resolve) and deferred-work sweep triage (bmad-loop-sweep) — the inner dev primitive (which self-reviews and commits) is the upstream bmad-build-auto skill (bmad-dev-auto on pre-rename releases)"
-module_version: 0.10.0
+module_version: 0.11.0
default_selected: false
module_greeting: >
BMAD Loop installed — both the automation skills and the
diff --git a/uv.lock b/uv.lock
index f92affe5..a3a9891d 100644
--- a/uv.lock
+++ b/uv.lock
@@ -17,7 +17,7 @@ wheels = [
[[package]]
name = "bmad-loop"
-version = "0.10.0"
+version = "0.11.0"
source = { editable = "." }
dependencies = [
{ name = "psutil", marker = "sys_platform == 'win32'" },