Skip to content

baton execute dry-run crashes (ValueError) on plans with team-member step IDs; token estimate is a placeholder #106

Description

@DaveGerson

Severity: low · Area: CLI / dry-run

Capability: baton execute dry-run walks the plan end-to-end with a DryRunLauncher (no real API calls) and writes a dry-run report.

Bug 1 (crash): When the plan contains team steps (parallel team-member dispatch), the executor emits team-member step IDs like 1.1.a during the dry run. Recording results for these IDs via record_step_result() raises ValueError: Step '1.1.a' not found in plan. Valid step IDs: ... at agent_baton/core/engine/executor.py:2541-2543, because team-member IDs are not in the plan's phases[].steps[] list (they are synthesized from team-backend dispatch). The dry-run crashes before producing a report.

Bug 2 (weak estimate): TracingDryRunLauncher at agent_baton/core/engine/dry_run_launcher.py:64 computes estimated_tokens = max(1, len(prompt) // 4) — self-described as "a placeholder for proper Haiku-classifier integration." baton plan --dry-run uses the accurate cost_estimator.py role baselines, so the two dry-run paths give different-quality estimates for the same plan.

Suggested fix: Bug 1 — in the dry-run path, detect team-member step IDs (match _TEAM_MEMBER_ID_RE) and record their results against the parent team step ID, or add team-member step entries during team dispatch. Bug 2 — use CostEstimator.estimate_step() role baselines in TracingDryRunLauncher instead of the chars/4 heuristic.

Evidence: agent_baton/cli/commands/execution/execute.py:808-840 (registers dry-run); agent_baton/core/engine/executor.py:2541-2543; agent_baton/core/engine/dry_run_launcher.py:64.


🤖 Filed from the capability-vs-docs audit (HEAD 12999f2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions