Skip to content

Finish the BURR migration: post-merge cleanup tracking #135

@pofallon

Description

@pofallon

Tracks the remaining work after the 9-PR gap-closing run (#121#134). Each box below is a self-contained sub-task that can be handed to a fresh sub-agent.

Subtasks

  • (1) Cleanup stale xoscar references in docs/comments

    • CLAUDE.md still describes xoscar as the actor runtime; has a "Actor-mailbox + xoscar runtime" section and references the deleted src/maverick/actors/xoscar/ tree.
    • Module docstrings in src/maverick/workflows/{fly_beads,refuel_maverick,generate_flight_plan}/actions.py say "Default driver remains xoscar; opt in via MAVERICK_USE_BURR=…" — there is no flag and no alternative driver. Update to reflect the current state.
    • Stragglers to sweep: src/maverick/agents/__init__.py, src/maverick/library/actions/__init__.py, src/maverick/squadron/__init__.py, src/maverick/squadron/fly.py, src/maverick/squadron/decomposer_pool.py, src/maverick/burr/driver.py, src/maverick/cli/lazy_group.py, src/maverick/workflows/fly_beads/graceful_stop.py, src/maverick/workflows/fly_beads/_spec_check.py, src/maverick/workflows/refuel_maverick/actions.py.
    • Mark docs/BURR.md as done or retire it.
  • (2) Inline the _*_with_burr wrappers

    • _generate_with_burr (workflows/generate_flight_plan/workflow.py:210), _run_with_burr (workflows/refuel_maverick/workflow.py:827), and _run_fly_with_burr (workflows/fly_beads/workflow.py:400) are vestigial from the flag-gated era. Inline them into their callers and drop the indirection.
  • (3) Refuel per-tier decomposer runtime bindings (real substrate work)

    • The Burr refuel action layer escalates default → trivial → simple → moderate → complex and the tier name reaches DecomposerAgentPool.acquire(tier), but RefuelSquadron._build_decomposer calls runtime_for_agent(\"decompose\") with no tier-awareness, so every tier resolves to the same model. Escalation today is a retry against the same binding.
    • Real fix: per-tier overrides in the runtime / agent_factory layer, matching how FlySquadron already handles implementer + reviewer tiers (_binding_for_complexity, TIER_ORDER etc.). Mirror that pattern for decompose.
    • See PR feat(burr): escalate decomposer tier on transient refuel detail failures (#116) #133 body for the original gap notes.
  • (4a) Refuel cache read-side (consumes the write-back from feat(burr): write refuel artifacts back to the per-plan cache dir (#117) #134)

    • PR feat(burr): write refuel artifacts back to the per-plan cache dir (#117) #134 added per-plan write-back under <cwd>/.maverick/plans/<plan>/refuel-cache/ (briefings.json, outline.json, details/<unit_id>.json) but nothing loads these on a subsequent run. Add a load step (workflow entry or init_state action) that seeds Burr state from the cache if files exist, and have the producing actions short-circuit when their slot is already populated. Schema-version + key checks should match the pre-migration envelope shape so corrupted/drifted caches fail closed.
  • (4b) Refuel quota-error special handling

    • Refuel currently treats quota errors (airframe.errors.RuntimeBudgetExceededError and friends) like any other failure. The pre-migration supervisor had a distinct quota path that surfaced a structured event and aborted the run cleanly without cycling through the tier ladder. Restore that behaviour in the Burr _run_one_detail / _run_detail_with_escalation helpers.
  • (5) End-to-end smoke against sample-maverick-project

    • Every gap PR's test plan said "Manual smoke against sample-maverick-project — deferred." Run the full pipeline once on that repo:
      1. maverick init (if needed)
      2. maverick plan generate <name> --from-prd <file>
      3. maverick refuel <plan-name>
      4. maverick fly --epic <id> --max-beads 3
    • Capture: any UX regressions in the Rich live tables, any unexpected warning: / error: rows, and whether artifacts land where docs say they should (.maverick/plans/<name>/, .maverick/runs/<run_id>/, .maverick/plans/<plan>/refuel-cache/).
    • File a follow-up bug per regression rather than fixing in-line.

Out of scope

  • Parity tests (tests/integration/test_*_burr_xoscar_parity.py) — moot since xoscar is deleted. Drop from any internal planning doc that still mentions them.

Done definition

All subtasks checked. grep -rn xoscar src/ returns only intentional historical references (e.g. git log is the authoritative record; code shouldn't claim xoscar exists).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions