Skip to content

v1.5.1 — Clef free allocation on the record; retries that match the failure

Latest

Choose a tag to compare

@0xDarkMatter 0xDarkMatter released this 05 Oct 08:46

Added

  • conclave models shows Workers AI's free daily allocation beside the Clef
    prices. Workers AI bills Neurons ($0.011 per 1,000) and gives every
    Cloudflare account 10,000 a day free, reset 00:00 UTC; a new FREE/DAY
    column puts that in each model's own input tokens (about 458K for clef,
    1.2M for clef-flash), with a note saying the costs Conclave reports use the
    metered price. --json rows gain neurons_per_m_in and
    free_neurons_per_day. On conclave models --frontier --deciders, Clef
    and Clef-flash are marked + with a legend line (terminal) or a note and
    tooltip (HTML), and frontier points carry free_daily. Costs are
    unchanged: cost_usd and the frontier keep the metered price, an upper
    bound on the bill, because the allocation is account-wide and Conclave
    cannot see how much is left. ADR-019.

Changed

  • Clef prices re-verified on 2026-10-05 against the Workers AI pricing page
    (updated 2026-10-01): $0.240 (21,818 Neurons) and $0.090 (8,182 Neurons) per
    million input tokens, still with no output price. The dollar figures are
    unchanged; the rows now record the Neuron rate, a test pins one to the
    other, and their source links to the "Other model pricing" table.

Fixed

  • A Clef or Clef-flash call on a Workers Free account that has spent its
    daily free allocation now fails at once. Workers AI answers HTTP 429 with
    Cloudflare code 4006 until 00:00 UTC, and Conclave read it as a rate limit:
    three backoffs (~7 s per decider per call) before the same error. It is now
    a BillingError, so it is not retried, with Cloudflare's own message and
    remedy in the error. The code on the wire is 4006, not the 3036 that
    Cloudflare's errors page lists; both are matched, and only inside
    Cloudflare's error envelope. "Out of capacity" (3040, also a 429) still
    retries. Regression tests: TestClefFreeAllocationSpentIsNotRetried,
    TestBillingIsToldApartFromRateLimits.
  • An API-mode Anthropic query (-g claude, claude@api) no longer fails on
    the first HTTP 529 overloaded_error. The retry rule listed 429, 500, 502,
    503 and 504, so Anthropic's "temporarily overloaded" status got no backoff.
    Every 5xx now retries, as ADR-004 always described and Anthropic's own SDKs
    do, which also covers Cloudflare's 520-524 for any API provider. Batch
    --retries already retried a 529 item, but each attempt failed on its
    first call.
  • Batch --retries no longer re-sends an item that cannot succeed. The
    item-level retry loop re-ran any failed item with 1s/2s/4s backoff, so an
    out-of-credit key, a revoked key or a rejected parameter was sent the same
    request --retries more times for the same refusal, despite the README
    promising that 400-class errors never retry. An item now fails on its
    first attempt when every provider in the panel failed permanently: a
    billing failure, or an HTTP 4xx other than 429. Its error line says so
    (query error after 1 of 3 attempts (permanent failure, not retried): ...);
    without --retries the line is unchanged. One transient cause (a 429, a
    5xx, a timeout, a CLI error) still earns the retry, and a failed item still
    stays out of the checkpoint, so --resume retries it once the key or the
    credit is fixed. To classify by status rather than text, API errors are now
    typed (*providers.APIError, classified by providers.IsPermanent), with
    their messages byte-identical. A batch that runs out of credit is
    deliberately not aborted (keys rotate per request, an OpenRouter 402 can be
    one oversized request, a top-up can land mid-run); it prints one stderr
    warning instead. ADR-015. Regression tests:
    TestPermanentFailureIsNotRetried,
    TestClientErrorsArePermanentAndKeepTheirText.
  • An API-mode Anthropic key past its usage tier's monthly spend cap
    (-g claude, claude@api) now fails on the first call with Anthropic's
    message ("You will regain access on ..."), instead of retrying the HTTP 429
    three times (~7 s) per call, and batch no longer counts it as a rate limit
    that slows the remaining items. It is told apart from a real rate limit,
    which still backs off and retries, by Anthropic's documented
    enforced_spend_limit_reached error code, not by its missing retry-after.
    Batch's once-per-run billing warning now says "hit a billing limit" and
    names both remedies (add credit, or raise the limit / wait for the date in
    the message) instead of only "add credit".