v0.2.10 — loop proxy budget (Phase 3 PR-A)
Runaway guard for the unattended durable loop (Phase 3, cost-governance track).
- Proxy budget over countable signals (a real dollar cap isn't observable inside the loop — it makes no LLM calls): plan-configurable
max_steps(50) andmax_api_calls(1000), pluserror_budget/verification_plateausurfaced as plan fields. - Enforced per-step in
_drive_loop— a runaway loop is stopped mid-run (status="stopped"+budget_exhaustedevent), not only at post-write verify checkpoints. - Retired the inert
HUBSPOT_LOOP_COST/$0.50ceiling. Counters persist across resume.
Writes still pause at every write; the loop stays resumable. Full suite green on Python 3.12 (1151 passed). See #22.