The last candidate turned away by a key's or account's queue answers 429 with
Retry-After, and shows in the Routing trace and the recent-calls ring — but no
lane refusal reached the usage ledger, so Usage, the CSV export and the failure
filter never said it happened.
The final write is guarded by `call.To != ""`, and call.To is only set inside
s.attempt, which a lane refusal never reaches (the attempt is gated on
`err == nil`). Every other turn-away that happens before any provider was asked
goes through turnedAway(), which records it with Rejected: true: an unknown
model, a usage cap, an account barred, a sealed subagent task.
turnedAway's ledger half is now `logged`, and the lane branch calls that alone:
serve still reaches its end and writes the one recent-calls entry it always
wrote, so the refusal is one entry in Recent calls and one row in the ledger.
Calling turnedAway here recorded it twice.
Unchanged: the 429, its Retry-After, which members are skipped, and that nobody
rests for it (#892).
TestQueueRefusalIsInTheUsageLedger fails without the change — the ledger holds
no rejected 429 after a full queue — and passes with it, asserting exactly one
recent-calls entry and exactly one rejected 429 row;
TestUnknownModelRefusalIsInTheUsageLedger is the contrast that shows an unknown
model's refusal was recorded all along. go vet ./... and the builds for darwin,
GOOS=linux and GOOS=windows pass, and the lane tests pass under -race -count=20.