Opus
BudgetCheck.exhausted optional field not provided in early-return when budget disabled (type/contract gap)
- src/budget.ts:28-36
- src/budget.ts:86-92
Actually the disabled branch DOES return exhausted: false — that's fine. But the interface declares exhausted as REQUIRED while at least one usage site (formatWarning) destructures `{ warning, ok, tokensPercent, turnsPercent }` and never checks `exhausted`. This is harmless but worth noting only briefly. More importantly: BudgetCheck has `reason?: string` and `exhausted: boolean` — callers cannot tell from the type whether to expect a reason on !ok. No real bug. Withdrawing.
Recommendation
No action; consider documenting that reason is always present when ok=false.