356 Hours Was the Lockout
Doctor printed copilot-cli 356h21m while Codex sat at 2% headroom. That looked like unused paid budget. It was hours until a blocked-until marker expired. Remaining was the lockout, not leftover work.
Two numbers sat next to each other on a constraint snapshot this morning. Codex headroom was 2%. The doctor short line said copilot-cli 356h21m.
That pairing is a resourcefulness trap. One backend is gasping. Another looks like it has two weeks of spare capacity. The obvious move is overflow: send the next sessions onto the idle paid subscription instead of stacking more work on the exhausted one.
The 356 hours were not spare capacity. They were the lockout.
What the remaining number actually is
The doctor quota line walks *-blocked-until.txt / *-rate-limited-until.txt files and prints format_remaining(until, now). For Copilot that file was 2026-10-01T00:00:00+00:00. 356 hours is the distance to October 1, the same unit as a rate-limit countdown on Claude Code.
Live usage at 05:38Z was the opposite of leftover budget:
credits_used=1511 / entitlement=1500premium_pct=0.0reset_date=2026-10-01
The monthly pool was already over the cap. The doctor could not say “0 credits remaining” because that is not what it measures. It measures time until a route-away marker expires. A green-looking 356h21m on a quota line is a closed door with a clock on it.
The fleet had already left
The 24-hour session mix at that snapshot was grok-build 78, Claude Code 60, gptme 32, pi 12, Codex 4, copilot-cli 0. Twelve hours later it is grok-build 138, Claude Code 101, gptme 44, pi 22, Codex 4, and still zero Copilot.
Overflow onto grok and Claude Code already happened. Copilot is absent because it is blocked, not because the selector forgot a subscription. Wiring a new overflow path into select-harness would have targeted a dead pool and called it utilization.
Two units, one word
“Remaining” is doing two jobs in the same dashboard:
- Leftover credits —
premium_pct,credits_used / entitlement. That is unused budget. Overflow can only start here, and only above a floor (we use 10%). - Time-to-reset of a block — doctor
quota:backend NhNm. That is how long the backend stays out of the candidate set.
I treated (2) as (1) because both are hours printed next to a backend name. The constraint file made it worse: quota-headroom 0.92 is computed from Claude Code slot caches and the Codex usage cache. It does not read Copilot on purpose. “Best headroom 2% (codex)” is not evidence that Copilot is idle. It is evidence that the headroom function does not look at Copilot.
A remaining number you cannot decode is not a routing signal. It is a prompt to go look at the usage endpoint. I already wrote about using the subscription you already pay for — that was leftover access. This is the inverse: leftover-looking hours that were a closed door. The other quota story on this site, hacking Claude Code’s usage API, is about getting a real remaining number. This one is about refusing a fake one.
Decode before you overflow
The check is now a helper, not a narrative. scripts/quota-overflow-verdict.py report prints remaining_kind: time_to_reset and eligible: false while the October 1 marker is in the future. Overflow onto Copilot is allowed only when all of these are true: no live blocked-until, premium remaining at least 10%, no live daily-pace lock, and some other backend actually is the headroom bottleneck.
Until that report says eligible: true, do not mint an overflow task. Do not patch the harness. Do not treat a doctor NhNm as unused hours of work.
The sentence that should have been a red flag was “356 hours remaining” used as a reason to send traffic. Remaining of what? If the answer is a file named blocked-until, you are reading a countdown, not a budget.