Skip to content

Live provider evaluation

Measured 2026-10-04 against the public storefront fixture. Each run used a fresh isolated clone of the same baseline and a $1 package budget. Targets: zod 4.6.5 and stripe 23.0.0. Dependency installation used lifecycle scripts off. Credentials were read from process environment only; no keys, request headers or raw API errors are included here. These are single trials, with some runs concurrent, not a general model quality or latency benchmark. Wall time includes clone, analysis, install, agent calls and verification.

“Verified” requires both compiler and fixture tests to pass through the existing publish gate. Successful zod runs fixed 25 mechanical + 4 agent sites (5 tests); successful Stripe runs fixed 3 mechanical + 3 agent sites (3 tests). Attempts are provider requests, including rejected patches and HTTP/transport failures; one accepted patch may resolve several sites. Cost is calculated from returned usage and the dated standard price table, not an invoice; this also applies to Gemini’s free-tier calls.

Reservation is the sum of individual pre-call worst-case bounds, not actual spend or a permanently withheld total. Reported usage settles each reservation. “Unknown” is the retained reservation for calls with no trustworthy usage; it still counts against the $1 ceiling. No run exceeded its budget.

Provider / modelEffortPackageVerifiedAgent sitesAttemptsSpend USDReservations USDUnknown USDSeconds
anthropic / claude-sonnet-4-6API defaultzodpass420.0178020.3830940.00000042.90
anthropic / claude-sonnet-4-6API defaultstripepass330.0333660.6091680.00000058.93
anthropic / claude-sonnet-5-5API default (high)zodpass420.0157340.2552200.00000040.46
anthropic / claude-sonnet-5-5API default (high)stripepass320.0247520.2711840.00000051.89
anthropic / claude-sonnet-5-5mediumzodpass420.0132440.2555080.00000038.59
anthropic / claude-sonnet-5-5mediumstripepass320.0215920.2714720.00000049.69
openai / gpt-6.1-solAPI defaultzodpass420.0068060.2213630.00000036.74
openai / gpt-6.1-solAPI defaultstripepass330.0186770.3481450.00000047.80
gemini / gemini-3.8-flashAPI defaultzodfail (service errors)0120.0000000.4738860.473886126.27
gemini / gemini-3.8-flashAPI defaultstripefail (service errors)170.0049650.2873970.246836154.88

The first Gemini zod run received eleven HTTP 503 responses and one HTTP 429; Stripe received one HTTP 200, four 503s and two 429s. Rate limits honored Retry-After, defaulting to 60 seconds when absent, before retrying. These runs did not verify; the publish gate stayed closed. They demonstrate service unavailability/rate limiting, not an invalid model ID or failed tool protocol. The smoke and Stripe’s successful call both echoed gemini-3.8-flash.

The serial reruns also failed verification after waiting and retrying:

ModelPackageVerifiedAgent sitesAttemptsSpend USDReservations / unknown USDSecondsResponses
gemini-3.8-flashzodfail0120.0000000.473901359.997 × HTTP 503, 5 × HTTP 429
gemini-3.8-flashstripefail090.0000000.368667223.801 × HTTP 429, 8 transport failures without an HTTP response

No model ID or token usage was returned in these serial reruns. The zero confirmed spend is not a claim of zero possible billing: every failed request kept its full reservation. Zod retained four compiler errors; Stripe retained three (its three tests passed, which alone cannot pass verification). Gemini migration quality remains unmeasured under successful service conditions; a live rerun is needed when the free tier is available. These are not classified as adapter protocol failures.

Model / effortAgent sites (zod + Stripe)AttemptsNo-tool calls / attemptsSpend USDSeconds
claude-sonnet-4-6 / API default750 / 50.051168101.82
claude-sonnet-5-5 / API default (high)740 / 40.04048692.34
claude-sonnet-5-5 / medium740 / 40.03483688.28

Select Sonnet 5.5 with medium effort: equal sites and verification, no skipped tool calls, one fewer attempt than 4.6, and lower cost/time in this small sample. The high-effort comparison omitted output_config, preserving 5.5’s documented API default (adaptive thinking, high effort). The medium trial explicitly set output_config.effort=medium. Thinking itself was left at the API default in both. Sonnet 4.6 remains selectable and retains forced tool use. The sample is too small to estimate a reliable general no-tool-call rate.

Every smoke returned HTTP 200 and exactly one valid submit_patch, in one attempt. Model IDs below are the exact strings echoed by the APIs (also matching the requested IDs). No 429 occurred in these minimal calls.

Echoed model IDEffortSpend USDReservation USDSeconds
claude-sonnet-4-6API default0.003795000.184374009.20
claude-sonnet-5-5API default0.002614000.122828005.72
claude-sonnet-5-5medium0.002614000.122972002.48
gpt-6.1-solAPI default0.001128000.107692503.86
gemini-3.8-flashAPI default0.000681750.038430753.23

A separate controlled Sonnet 5.5 call capped output at 16 tokens to capture a real no-tool response for offline regression testing. It echoed claude-sonnet-5-5, ended at max_tokens, and reported 757 input / 16 output tokens ($0.001674). It is excluded from the normal no-tool frequency above. CI checks that it consumes an attempt and budget, adds “respond only by calling submit_patch” feedback, and can recover on a valid subsequent response. Successful protocol fixtures are synthetic; this truncated response is a sanitized live capture.

Build core and use scripts/eval-providers.ts with --smoke, or --repo plus --only=zod|stripe. Provider/model overrides and --effort=high|medium|low allow controlled comparisons. API keys come only from environment variables. See model pricing for commands and exact budget accounting. Initial harness setup errors occurred before any API call and cost $0; the helper was corrected to import built core so worker entry points resolve.

Official documentation checked 2026-10-04:

Custom OPENAI_BASE_URL uses Chat Completions, tested offline against a protocol fixture. The official OpenAI default uses Responses and was verified live above. Custom deployments remain compatible, not verified.