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-reset08:42:24session-start           task_id=2-1-search-index  role=dev  story_key=2-1-search-index -└ ✓ retrospective08:42:24story-done              story_key=2-1-search-index  commit=a1b2c3d4e5f6 -▼ Epic 2 · 2/508:42:24session-start           task_id=2-2-typeahead  role=dev  story_key=2-2-typeahead -├ ✓ 1-search-index08:42:24review-cycle            story_key=2-2-typeahead  cycle=2  findings=3 -├ ✓ 2-typeahead08:42:24story-done              story_key=2-2-typeahead  commit=b2c3d4e5f607 -├ ▶ 3-search-ranking08:42:24story-start             story_key=2-3-search-ranking  epic=2 -├ ◆ 4-saved-searches08:42:24spec-approved           story_key=2-3-search-ranking  tokens=1834 -└ ○ 5-search-analytics08:42:24dev-done                story_key=2-3-search-ranking  tasks_done=3  tasks_total=3 -▼ Epic 3 · 0/208:42:24verify-ok               story_key=2-3-search-ranking  commands=pytest -q, ruff check . -├ · 1-billing-portal08:42:24review-start            story_key=2-3-search-ranking  role=review -└ · 2-invoices08: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-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 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   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-auth08:42:epic — blank for all (sprint mode) -├ ✓ 2-session-tokens08:42:▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ions=2 -├ ✓ 3-password-reset08:42:▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔2 -└ ✓ retrospective08: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-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-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 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-auth08:42:24sweep-start             cycle=1 -├ ✓ 2-session-tokens08:42:24triage-done             bundles=1  already_resolved=1  decisions=2 -├ ✓ 3-password-reset08:42:24bundle-done             bundle=search-pagination  dw_ids=DW-2 -└ ✓ retrospective08:42:24decision-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-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 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'" },