cyberine
UsageRun recipes

Free lane out of credits — parked, not failed

A Command Code worker (loop-commandcode-free-build, loop-commandcode-build) that gets 400 You have insufficient credits to make this request is parked instead of failing as a plain error: the lane gets an out-of-credits cooldown (24 h by default, CYBERINE_QUOTA_COOLDOWN_CREDITS_MS), the worker row in run.json carries parked: { kind, reason, until }, its detail reads Parked: ..., and cyberine digest <runId> prints one parked <worker>: out-of-credits, <reason> line (--json adds a parked array). The other workers of the run are not touched, and the next dispatch skips the lane without sending a request until the cooldown ends or cyberine cooldown clear <worker> lifts it.

cyberine digest <runId>
# parked loop-commandcode-free-build: out-of-credits, Command Code answered insufficient credits (...); lane parked

When the failover preflight times out at 3 seconds it now names the Command Code lanes whose credit state it could not read: preflight: skipped (headroom reads took over 3000ms; Command Code credit state unread for loop-commandcode-free-build, ...; dispatch continues).

Known Limitations and Deferred Work — free lane credits

  • The match is the insufficient credit text on a 400, 402 or BAD_REQUEST answer; a provider that rewords it falls back to a plain worker error.
  • The lane stays classified free (auth) in the billing table: it is free on the provider's terms while credits exist. The park is the only signal that the account ran dry.
  • A parked worker keeps state: error; the park is a field on the row, not a new worker state.