Overview
The PyAutoMind dashboard lists every task individually, which is right for one-at-a-time work. As more work moves to a model where a Fable session orchestrates several related tasks with Opus subagents, the dashboard needs an additional Bundles view: sets of independent prompts that make sense in one orchestrated session. Bundles are distinct from epics (ordered, phase-gated); every task still appears in its usual section, and bundles refresh on the existing nightly dashboard_refresh.yml.
Plan
- Add
PyAutoMind/bundles.md registry (human-pinned bundles only, epics.md-style schema) and document the optional Bundle: <slug> prompt header in REFERENCE.md.
- Parse
bundles.md + Bundle: headers in _intake.py; add deterministic render-time auto-bundling of the draft pool (same Target, exclusions, size cap, min 2 members).
- Render a new "Bundles" H2 in
dashboard.md and dashboard.html between Backlog and Recent — pinned first, then auto — each with a members table, total size and a one-tap Fable orchestration prompt (copy button in HTML). Existing sections untouched.
- Add a
start_bundle skill body in PyAutoBrain/skills describing the orchestration contract (one issue per member, shared worktree per repo, per-task PRs so /prm works unchanged, Fable plans / Opus executes) plus a WORKFLOW.md paragraph.
- Regenerate the dashboard via
pyauto-brain intake --apply dashboard; the nightly needs no change beyond adding bundles.md to its path triggers.
Detailed implementation plan
Affected Repositories
- PyAutoBrain (primary)
- PyAutoMind
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoBrain |
main |
clean |
| ./PyAutoMind |
main |
clean (prompt file only) |
Suggested branch: feature/dashboard-bundles
Implementation Steps
PyAutoBrain/agents/conductors/intake/_intake.py
- Extend the light-header regex (~L453) with
Bundle.
- Add
parse_bundles(mind) beside parse_epics (~L569): ## <slug> then - title: / - members: (prompt paths) / - rationale: / - status:.
- Add
auto_bundles(census): group draft/ prompts by Target; drop Epic: members, unresolved Blocked-by:, Autonomy: human-required, Difficulty: too-large, and members of pinned bundles; pack greedily under a size cap (≤ 1 large + 3 small, or ≤ 4 medium); minimum 2 members; deterministic ordering (priority desc, path asc). Returns {slug, title, members, total, origin: "auto"} — render-only, never written back.
- Add
bundle_prompt(bundle) producing the Fable orchestration prompt: read each member prompt, run start_dev per member, one shared worktree per repo, delegate implementation to Opus subagents, per-task PRs.
- Render in
render_dashboard() (~L1111, after Backlog, before Recent) and render_dashboard_html() (~L1348) with copy buttons; pinned before auto. Warn on a Bundle: slug absent from bundles.md, mirroring the epic warning (~L1277).
PyAutoMind: create bundles.md (intro + schema, no entries initially); add Bundle: to the header table in REFERENCE.md (~L287-351); add bundles.md to .github/workflows/dashboard_refresh.yml path triggers (L28-49).
PyAutoBrain/skills/start_bundle/ (start_bundle.md + SKILL.md, symlinked into ~/.claude/commands like siblings) + a paragraph in skills/WORKFLOW.md under the delegation ladder.
- Tests (PyAutoBrain intake tests): fixture Mind with one pinned bundle, auto-bundle-able drafts and each excluded case; assert grouping, exclusions, size cap, determinism, unknown-slug warning,
dashboard --check idempotence.
- Regenerate
dashboard.md/dashboard.html and commit to Mind.
Key Files
PyAutoBrain/agents/conductors/intake/_intake.py — census, epics parsing, both renderers
PyAutoMind/epics.md — schema to mirror
PyAutoMind/REFERENCE.md — prompt header documentation
PyAutoMind/.github/workflows/dashboard_refresh.yml — nightly regen + self-heal
PyAutoBrain/skills/WORKFLOW.md — delegation ladder
Trade-offs
- Render-only auto bundles keep nightly bot commits noise-free; only human pins are persisted.
- Deterministic rules over LLM grouping for reproducibility; an optional Claude refinement pass is deferred to a phase 2.
Original Prompt
Click to expand starting prompt
Dashboard "Bundles" — grouping tasks for Fable-orchestrated multi-task sessions
Type: feature
Target: PyAutoMind
Repos:
- PyAutoMind
- PyAutoBrain
Difficulty: medium
Autonomy: supervised
Priority: high
Status: formalised
Filed: 2026-08-27
Original request (verbatim)
I am slowly moving to a model where Fable orchestrates larger tasks with opus.
I therefore think we need a grouping mechanism on the pyautomind dashboard,
where similar tasks which make sense to be done in on go with fable as an
orchestrator make sense. This should not change the dashboard as it is, seeing
all tasks listed individually is still highly valueable and makes sense when I
want to do one at a time. I think we need a group section, and a sensible
mechanism which will update the grouped tasks regularly (every night?).
Approved design (2026-08-27)
A bundle is a set of independent prompts that make sense in one Fable
session, with Opus subagents executing the members. Distinct from an epic
(ordered, phase-gated, one phase at a time). Every task still appears in its
usual dashboard section — a bundle is an additional view, never a replacement.
PyAutoMind/bundles.md registry — holds only human-pinned bundles,
schema like epics.md: ## <slug> then - title: / - members: (prompt
paths) / - rationale: / - status:. Optional Bundle: <slug> prompt
header mirrors Epic: so a human can force membership. Nothing ever
rewrites prompt files automatically.
- Render-only auto-bundling in
PyAutoBrain/agents/conductors/intake/_intake.py — deterministic, computed
at dashboard-render time, never written to the registry. Rules: same
Target repo; exclude Epic: members, unresolved Blocked-by:,
Autonomy: human-required, Difficulty: too-large; size cap (≤ 1 large +
3 small, or ≤ 4 medium); minimum 2 members; pinned members leave the auto
pool. Refresh rides the existing nightly dashboard_refresh.yml — no new
schedule.
- New "Bundles" H2 in
dashboard.md + dashboard.html, placed between
Backlog and Recent. One card per bundle (pinned first, then auto): members
table (size / priority / status), total size, and a one-tap Fable
orchestration prompt with copy button (HTML), analogous to the epic
resume prompt. Existing sections unchanged.
- Brain orchestration contract —
start_bundle skill (or
start_dev --bundle <slug>) describing: one issue per member (keeps the
no-bulk-issue rule), shared worktree per repo, per-task PRs so /prm works
unchanged, Fable plans / Opus executes. Plus a paragraph in
PyAutoBrain/skills/WORKFLOW.md.
Deferred (phase 2, only if auto bundles feel dumb): an optional Claude
refinement pass over the deterministic proposals.
Overview
The PyAutoMind dashboard lists every task individually, which is right for one-at-a-time work. As more work moves to a model where a Fable session orchestrates several related tasks with Opus subagents, the dashboard needs an additional Bundles view: sets of independent prompts that make sense in one orchestrated session. Bundles are distinct from epics (ordered, phase-gated); every task still appears in its usual section, and bundles refresh on the existing nightly
dashboard_refresh.yml.Plan
PyAutoMind/bundles.mdregistry (human-pinned bundles only,epics.md-style schema) and document the optionalBundle: <slug>prompt header inREFERENCE.md.bundles.md+Bundle:headers in_intake.py; add deterministic render-time auto-bundling of the draft pool (same Target, exclusions, size cap, min 2 members).dashboard.mdanddashboard.htmlbetween Backlog and Recent — pinned first, then auto — each with a members table, total size and a one-tap Fable orchestration prompt (copy button in HTML). Existing sections untouched.start_bundleskill body inPyAutoBrain/skillsdescribing the orchestration contract (one issue per member, shared worktree per repo, per-task PRs so/prmworks unchanged, Fable plans / Opus executes) plus aWORKFLOW.mdparagraph.pyauto-brain intake --apply dashboard; the nightly needs no change beyond addingbundles.mdto its path triggers.Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/dashboard-bundlesImplementation Steps
PyAutoBrain/agents/conductors/intake/_intake.pyBundle.parse_bundles(mind)besideparse_epics(~L569):## <slug>then- title:/- members:(prompt paths) /- rationale:/- status:.auto_bundles(census): groupdraft/prompts byTarget; dropEpic:members, unresolvedBlocked-by:,Autonomy: human-required,Difficulty: too-large, and members of pinned bundles; pack greedily under a size cap (≤ 1 large + 3 small, or ≤ 4 medium); minimum 2 members; deterministic ordering (priority desc, path asc). Returns{slug, title, members, total, origin: "auto"}— render-only, never written back.bundle_prompt(bundle)producing the Fable orchestration prompt: read each member prompt, runstart_devper member, one shared worktree per repo, delegate implementation to Opus subagents, per-task PRs.render_dashboard()(~L1111, after Backlog, before Recent) andrender_dashboard_html()(~L1348) with copy buttons; pinned before auto. Warn on aBundle:slug absent frombundles.md, mirroring the epic warning (~L1277).PyAutoMind: createbundles.md(intro + schema, no entries initially); addBundle:to the header table inREFERENCE.md(~L287-351); addbundles.mdto.github/workflows/dashboard_refresh.ymlpath triggers (L28-49).PyAutoBrain/skills/start_bundle/(start_bundle.md+SKILL.md, symlinked into~/.claude/commandslike siblings) + a paragraph inskills/WORKFLOW.mdunder the delegation ladder.dashboard --checkidempotence.dashboard.md/dashboard.htmland commit to Mind.Key Files
PyAutoBrain/agents/conductors/intake/_intake.py— census, epics parsing, both renderersPyAutoMind/epics.md— schema to mirrorPyAutoMind/REFERENCE.md— prompt header documentationPyAutoMind/.github/workflows/dashboard_refresh.yml— nightly regen + self-healPyAutoBrain/skills/WORKFLOW.md— delegation ladderTrade-offs
Original Prompt
Click to expand starting prompt
Dashboard "Bundles" — grouping tasks for Fable-orchestrated multi-task sessions
Type: feature
Target: PyAutoMind
Repos:
Difficulty: medium
Autonomy: supervised
Priority: high
Status: formalised
Filed: 2026-08-27
Original request (verbatim)
Approved design (2026-08-27)
A bundle is a set of independent prompts that make sense in one Fable
session, with Opus subagents executing the members. Distinct from an epic
(ordered, phase-gated, one phase at a time). Every task still appears in its
usual dashboard section — a bundle is an additional view, never a replacement.
PyAutoMind/bundles.mdregistry — holds only human-pinned bundles,schema like
epics.md:## <slug>then- title:/- members:(promptpaths) /
- rationale:/- status:. OptionalBundle: <slug>promptheader mirrors
Epic:so a human can force membership. Nothing everrewrites prompt files automatically.
PyAutoBrain/agents/conductors/intake/_intake.py— deterministic, computedat dashboard-render time, never written to the registry. Rules: same
Targetrepo; excludeEpic:members, unresolvedBlocked-by:,Autonomy: human-required,Difficulty: too-large; size cap (≤ 1 large +3 small, or ≤ 4 medium); minimum 2 members; pinned members leave the auto
pool. Refresh rides the existing nightly
dashboard_refresh.yml— no newschedule.
dashboard.md+dashboard.html, placed betweenBacklog and Recent. One card per bundle (pinned first, then auto): members
table (size / priority / status), total size, and a one-tap Fable
orchestration prompt with copy button (HTML), analogous to the epic
resume prompt. Existing sections unchanged.
start_bundleskill (orstart_dev --bundle <slug>) describing: one issue per member (keeps theno-bulk-issue rule), shared worktree per repo, per-task PRs so
/prmworksunchanged, Fable plans / Opus executes. Plus a paragraph in
PyAutoBrain/skills/WORKFLOW.md.Deferred (phase 2, only if auto bundles feel dumb): an optional Claude
refinement pass over the deterministic proposals.