diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 6563d421..b4e1212f 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.11.0", + "version": "0.11.1", "author": { "name": "pinkyd" }, diff --git a/CHANGELOG.md b/CHANGELOG.md index c6a8437a..4241bc85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ breaking changes may land in a minor release. ## [Unreleased] +## [0.11.1] — 2026-08-23 + ### Added - **git 2.34 or newer is now a declared prerequisite**, and the first one the orchestrator @@ -151,7 +153,6 @@ breaking changes may land in a minor release. naming the path, on both arms — a file present but unreadable (permissions, a dead mount) was leaking a bare `OSError` on the same route. The packaged built-ins read through the same guard: a corrupt install is a packaging bug and should say so. - - **Merge-back failures are classified from the measured tree state, and the catch-all stopped inventing a conflict (#619).** A merge that died part-way through its checkout — all three strategies, `--ff-only` included — now raises `MergeHalfAppliedError` instead of "refused @@ -204,7 +205,6 @@ breaking changes may land in a minor release. was running in, and the attach return could record a pane the human never came from. The probes now pin to the calling pane via `TMUX_PANE`, and answer `None` without spawning when that value is absent or not pane-shaped. - - **An unresolvable restore-patch or spec-folder path is now a named refusal, not a bare `[Errno ...]` (#560).** `_resolve_restore_patch` (`cli --restore-patch`) and `relativize_spec_folder` (`--spec`, `[stories] source`) each called `.resolve()` outside the @@ -3597,7 +3597,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.11.0...HEAD +[Unreleased]: https://github.com/bmad-code-org/bmad-loop/compare/v0.11.1...HEAD +[0.11.1]: https://github.com/bmad-code-org/bmad-loop/releases/tag/v0.11.1 [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 diff --git a/docs/images/dashboard.png b/docs/images/dashboard.png index c7167bb9..0b717563 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 aeeebd9b..c6e7ed57 100644 --- a/docs/images/dashboard.svg +++ b/docs/images/dashboard.svg @@ -19,229 +19,229 @@ font-weight: 700; } - .terminal-1535585647-matrix { + .terminal-3840421111-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1535585647-title { + .terminal-3840421111-title { font-size: 18px; font-weight: bold; font-family: arial; } - .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 } + .terminal-3840421111-r1 { fill: #c5c8c6 } +.terminal-3840421111-r2 { fill: #e0e0e0 } +.terminal-3840421111-r3 { fill: #a0a3a6 } +.terminal-3840421111-r4 { fill: #0053aa } +.terminal-3840421111-r5 { fill: #e2e2e2;font-weight: bold } +.terminal-3840421111-r6 { fill: #e0e0e0;font-weight: bold } +.terminal-3840421111-r7 { fill: #98e024 } +.terminal-3840421111-r8 { fill: #9d9d9d } +.terminal-3840421111-r9 { fill: #fd971f } +.terminal-3840421111-r10 { fill: #a1a1a1 } +.terminal-3840421111-r11 { fill: #ddedf9;font-weight: bold } +.terminal-3840421111-r12 { fill: #272727 } +.terminal-3840421111-r13 { fill: #003054 } +.terminal-3840421111-r14 { fill: #1e1e1e } +.terminal-3840421111-r15 { fill: #0053aa;font-weight: bold } +.terminal-3840421111-r16 { fill: #797979 } +.terminal-3840421111-r17 { fill: #3e3e3e } +.terminal-3840421111-r18 { fill: #262626 } +.terminal-3840421111-r19 { fill: #0178d4 } +.terminal-3840421111-r20 { fill: #121212 } +.terminal-3840421111-r21 { fill: #191919 } +.terminal-3840421111-r22 { fill: #9e9e9e } +.terminal-3840421111-r23 { fill: #58d1eb } +.terminal-3840421111-r24 { fill: #f4005f } +.terminal-3840421111-r25 { fill: #f4005f;font-weight: bold } +.terminal-3840421111-r26 { fill: #ffa62b;font-weight: bold } +.terminal-3840421111-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-reset14:46:08session-start           task_id=2-1-search-index  role=dev  story_key=2-1-search-index -└ ✓ retrospective14:46:08story-done              story_key=2-1-search-index  commit=a1b2c3d4e5f6 -▼ Epic 2 · 2/514:46:08session-start           task_id=2-2-typeahead  role=dev  story_key=2-2-typeahead -├ ✓ 1-search-index14:46:08review-cycle            story_key=2-2-typeahead  cycle=2  findings=3 -├ ✓ 2-typeahead14:46:08story-done              story_key=2-2-typeahead  commit=b2c3d4e5f607 -├ ▶ 3-search-ranking14:46:08story-start             story_key=2-3-search-ranking  epic=2 -├ ◆ 4-saved-searches14:46:08spec-approved           story_key=2-3-search-ranking  tokens=1834 -└ ○ 5-search-analytics14:46:08dev-done                story_key=2-3-search-ranking  tasks_done=3  tasks_total=3 -▼ Epic 3 · 0/214:46:08verify-ok               story_key=2-3-search-ranking  commands=pytest -q, ruff check . -├ · 1-billing-portal14:46:08review-start            story_key=2-3-search-ranking  role=review -└ · 2-invoices14: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 + + 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-reset21:08:11session-start           task_id=2-1-search-index  role=dev  story_key=2-1-search-index +└ ✓ retrospective21:08:11story-done              story_key=2-1-search-index  commit=a1b2c3d4e5f6 +▼ Epic 2 · 2/521:08:11session-start           task_id=2-2-typeahead  role=dev  story_key=2-2-typeahead +├ ✓ 1-search-index21:08:11review-cycle            story_key=2-2-typeahead  cycle=2  findings=3 +├ ✓ 2-typeahead21:08:11story-done              story_key=2-2-typeahead  commit=b2c3d4e5f607 +├ ▶ 3-search-ranking21:08:11story-start             story_key=2-3-search-ranking  epic=2 +├ ◆ 4-saved-searches21:08:11spec-approved           story_key=2-3-search-ranking  tokens=1834 +└ ○ 5-search-analytics21:08:11dev-done                story_key=2-3-search-ranking  tasks_done=3  tasks_total=3 +▼ Epic 3 · 0/221:08:11verify-ok               story_key=2-3-search-ranking  commands=pytest -q, ruff check . +├ · 1-billing-portal21:08:11review-start            story_key=2-3-search-ranking  role=review +└ · 2-invoices21:08:11escalation-preference   story_key=2-3-search-ranking  detail=reviewer used codex for the scoring math +21:08:11story-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 9ca27fbb..df15f27a 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 dfdff825..b46551ce 100644 --- a/docs/images/settings.svg +++ b/docs/images/settings.svg @@ -19,210 +19,210 @@ font-weight: 700; } - .terminal-2985956687-matrix { + .terminal-1170740573-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2985956687-title { + .terminal-1170740573-title { font-size: 18px; font-weight: bold; font-family: arial; } - .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 } + .terminal-1170740573-r1 { fill: #c5c8c6 } +.terminal-1170740573-r2 { fill: #e0e0e0 } +.terminal-1170740573-r3 { fill: #a0a3a6 } +.terminal-1170740573-r4 { fill: #121212 } +.terminal-1170740573-r5 { fill: #6f6f6f } +.terminal-1170740573-r6 { fill: #000000 } +.terminal-1170740573-r7 { fill: #ffa62b;font-weight: bold } +.terminal-1170740573-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 02d4f8ae..e3e41a4c 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 c55169ea..f36d9188 100644 --- a/docs/images/start-run-modal.svg +++ b/docs/images/start-run-modal.svg @@ -19,242 +19,242 @@ font-weight: 700; } - .terminal-899895571-matrix { + .terminal-3367129347-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-899895571-title { + .terminal-3367129347-title { font-size: 18px; font-weight: bold; font-family: arial; } - .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 } + .terminal-3367129347-r1 { fill: #e0e0e0 } +.terminal-3367129347-r2 { fill: #646464 } +.terminal-3367129347-r3 { fill: #4a4c4d } +.terminal-3367129347-r4 { fill: #c5c8c6 } +.terminal-3367129347-r5 { fill: #0a2c4e } +.terminal-3367129347-r6 { fill: #646464;font-weight: bold } +.terminal-3367129347-r7 { fill: #476419 } +.terminal-3367129347-r8 { fill: #494949 } +.terminal-3367129347-r9 { fill: #0053aa } +.terminal-3367129347-r10 { fill: #4a4a4a } +.terminal-3367129347-r11 { fill: #704717;font-weight: bold } +.terminal-3367129347-r12 { fill: #704717 } +.terminal-3367129347-r13 { fill: #e0e0e0;font-weight: bold } +.terminal-3367129347-r14 { fill: #1e1e1e } +.terminal-3367129347-r15 { fill: #191919 } +.terminal-3367129347-r16 { fill: #7f7f7f } +.terminal-3367129347-r17 { fill: #161616 } +.terminal-3367129347-r18 { fill: #0a1e2c } +.terminal-3367129347-r19 { fill: #737373 } +.terminal-3367129347-r20 { fill: #0a2c4e;font-weight: bold } +.terminal-3367129347-r21 { fill: #1a1a1a } +.terminal-3367129347-r22 { fill: #0b3a5f } +.terminal-3367129347-r23 { fill: #121212 } +.terminal-3367129347-r24 { fill: #141414 } +.terminal-3367129347-r25 { fill: #232323 } +.terminal-3367129347-r26 { fill: #2e5e68 } +.terminal-3367129347-r27 { fill: #6c0a30 } +.terminal-3367129347-r28 { fill: #242f38 } +.terminal-3367129347-r29 { fill: #000f18 } +.terminal-3367129347-r30 { fill: #9e9e9e } +.terminal-3367129347-r31 { fill: #455969;font-weight: bold } +.terminal-3367129347-r32 { fill: #6c0a30;font-weight: bold } +.terminal-3367129347-r33 { fill: #4b4b4b } +.terminal-3367129347-r34 { fill: #6db2ff } +.terminal-3367129347-r35 { fill: #2d2d2d } +.terminal-3367129347-r36 { fill: #ddedf9;font-weight: bold } +.terminal-3367129347-r37 { fill: #004295 } +.terminal-3367129347-r38 { fill: #0d0d0d } +.terminal-3367129347-r39 { fill: #704d1c;font-weight: bold } +.terminal-3367129347-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   pressstart run - 20260612-141000-e5f6  story ─────────────────────────────────────────────────── - story  ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ review  tokens        info                 - dw-searsprint mode — sprint-status.yaml ×1      153,300       2b7f0a91c440         -▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ -────────▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔─────────────────────────────────────────── -Journalstories mode: spec folder holding stories.yaml +  -─ Sprint ─────────────────────────━━━━━━━▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -▼ Epic 1 · 3/3 ✓▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ -├ ✓ 1-auth14:46:epic — blank for all (sprint mode) -├ ✓ 2-session-tokens14:46:▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ions=2 -├ ✓ 3-password-reset14:46:▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔2 -└ ✓ retrospective14: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-typeaheadmax stories — blank for no limit -├ ▶ 3-search-ranking▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ -├ ◆ 4-saved-searches▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ -└ ○ 5-search-analyticsX 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   pressstart run + 20260612-141000-e5f6  story ─────────────────────────────────────────────────── + story  ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ review  tokens        info                 + dw-searsprint mode — sprint-status.yaml ×1      153,300       2b7f0a91c440         +▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +────────▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔─────────────────────────────────────────── +Journalstories mode: spec folder holding stories.yaml +  +─ Sprint ─────────────────────────━━━━━━━▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +▼ Epic 1 · 3/3 ✓▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +├ ✓ 1-auth21:08:epic — blank for all (sprint mode) +├ ✓ 2-session-tokens21:08:▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ions=2 +├ ✓ 3-password-reset21:08:▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔2 +└ ✓ retrospective21:08: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-typeaheadmax stories — blank for no limit +├ ▶ 3-search-ranking▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ +├ ◆ 4-saved-searches▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ +└ ○ 5-search-analyticsX 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 e102c2d2..3815da96 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 b3d1e644..dddf55b4 100644 --- a/docs/images/sweep-decision.svg +++ b/docs/images/sweep-decision.svg @@ -19,230 +19,230 @@ font-weight: 700; } - .terminal-2680934562-matrix { + .terminal-1950470266-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2680934562-title { + .terminal-1950470266-title { font-size: 18px; font-weight: bold; font-family: arial; } - .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 } + .terminal-1950470266-r1 { fill: #c5c8c6 } +.terminal-1950470266-r2 { fill: #e0e0e0 } +.terminal-1950470266-r3 { fill: #a0a3a6 } +.terminal-1950470266-r4 { fill: #0053aa } +.terminal-1950470266-r5 { fill: #e2e2e2;font-weight: bold } +.terminal-1950470266-r6 { fill: #e0e0e0;font-weight: bold } +.terminal-1950470266-r7 { fill: #98e024 } +.terminal-1950470266-r8 { fill: #9d9d9d } +.terminal-1950470266-r9 { fill: #fd971f } +.terminal-1950470266-r10 { fill: #a1a1a1 } +.terminal-1950470266-r11 { fill: #fd971f;font-weight: bold } +.terminal-1950470266-r12 { fill: #ddedf9;font-weight: bold } +.terminal-1950470266-r13 { fill: #1e1e1e } +.terminal-1950470266-r14 { fill: #003054 } +.terminal-1950470266-r15 { fill: #272727 } +.terminal-1950470266-r16 { fill: #797979 } +.terminal-1950470266-r17 { fill: #0053aa;font-weight: bold } +.terminal-1950470266-r18 { fill: #262626 } +.terminal-1950470266-r19 { fill: #0178d4 } +.terminal-1950470266-r20 { fill: #121212 } +.terminal-1950470266-r21 { fill: #191919 } +.terminal-1950470266-r22 { fill: #3e3e3e } +.terminal-1950470266-r23 { fill: #9e9e9e } +.terminal-1950470266-r24 { fill: #58d1eb } +.terminal-1950470266-r25 { fill: #f4005f } +.terminal-1950470266-r26 { fill: #f4005f;font-weight: bold } +.terminal-1950470266-r27 { fill: #ffa62b;font-weight: bold } +.terminal-1950470266-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-auth14:46:08sweep-start             cycle=1 -├ ✓ 2-session-tokens14:46:08triage-done             bundles=1  already_resolved=1  decisions=2 -├ ✓ 3-password-reset14:46:08bundle-done             bundle=search-pagination  dw_ids=DW-2 -└ ✓ retrospective14:46:08decision-pending        dw_id=DW-1  question=Reopen the OAuth refresh race now, or hold it for the    -▼ Epic 2 · 2/5auth …                                                                        -├ ✓ 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-auth21:08:11sweep-start             cycle=1 +├ ✓ 2-session-tokens21:08:11triage-done             bundles=1  already_resolved=1  decisions=2 +├ ✓ 3-password-reset21:08:11bundle-done             bundle=search-pagination  dw_ids=DW-2 +└ ✓ retrospective21:08:11decision-pending        dw_id=DW-1  question=Reopen the OAuth refresh race now, or hold it for the    +▼ Epic 2 · 2/5auth …                                                                        +├ ✓ 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 a9ab75d4..2a2d1264 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.11.0 +module_version: 0.11.1 default_selected: false module_greeting: > BMAD Loop installed — both the automation skills and the diff --git a/pyproject.toml b/pyproject.toml index 183820e3..dd10f132 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "bmad-loop" -version = "0.11.0" +version = "0.11.1" 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 fb859c67..6ea1a1b5 100644 --- a/src/bmad_loop/__init__.py +++ b/src/bmad_loop/__init__.py @@ -8,4 +8,4 @@ directory under .bmad-loop/runs/. """ -__version__ = "0.11.0" +__version__ = "0.11.1" 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 a9ab75d4..2a2d1264 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.11.0 +module_version: 0.11.1 default_selected: false module_greeting: > BMAD Loop installed — both the automation skills and the diff --git a/uv.lock b/uv.lock index 45588239..5c2343e4 100644 --- a/uv.lock +++ b/uv.lock @@ -17,7 +17,7 @@ wheels = [ [[package]] name = "bmad-loop" -version = "0.11.0" +version = "0.11.1" source = { editable = "." } dependencies = [ { name = "psutil", marker = "sys_platform == 'win32'" },