Prețuri și limite
Cotații fixe de 7 $, 19 $ sau 49 $ facturate doar la un fix verificat; trei remedieri gratuite; cum ajunge o taxă pe factura ta Stripe; plafoane per utilizator și timeout-uri.
Resolve pune preț pe rezultat, nu pe tokeni. Triajul cotează unul din trei praguri fixe; plătești acea sumă dacă — și doar dacă — job-ul se termină resolved cu o atestare. Refuzurile, eșecurile și erorile de infrastructură sunt mereu 0 $.
Praguri
| Prag | Preț | Forma tipică |
|---|---|---|
t7 | 7 $ | Bug mic, bine delimitat: un fișier, reproducere clară. |
t19 | 19 $ | Moderat: mai multe fișiere, are nevoie de investigație. |
t49 | 49 $ | Greu dar plauzibil: subtil, transversal. |
free | 0 $ | Primele tale 3 remedieri verificate, indiferent de dificultate. |
Fiecare câmp de bani pe fir este un întreg în micro-USD — quote_micro_usd: 19000000 înseamnă 19,00 $. Nu există nicio conversie nicăieri în pipeline.
Prețurile sunt în USD pentru că aceasta este moneda costului de model din spate. Factura ta Stripe este emisă în moneda de facturare a contului tău; Stripe convertește la momentul facturării.
Nivelul gratuit
3 remedieri verificate per utilizator, peste toate cheile tale. Este revendicat atomic când sosește un job cotabil: job-ul este creat deja accepted cu tier: "free" și quote_micro_usd: 0, iar free_tier_remaining îți spune ce rămâne după. Un job gratuit care se termină failed sau error își returnează locul. Odată consumate cele trei, job-urile cotabile revin ca quoted și așteaptă acceptul tău.
Job-urile gratuite rulează un singur candidat de fix (greedy); cele plătite se pot ramifica în până la patru — vezi Cum funcționează.
Cum ajunge o taxă pe factura ta
Întâi atestarea
Când un job se rezolvă, worker-ul scrie rândul de atestare și apoi un rând resolve_charges pentru suma cotată, cu statusul due. Ordinea este impusă în cod: fără atestare, fără rând de taxă. Job-urile gratuite primesc un rând de 0 $ cu sursa free_tier, pentru evidență.
Decontare orară
Un job programat (resolve-settle, la fiecare oră la :15) golește taxele due și le raportează fiecare către Stripe ca eveniment de contor cu identificatorul resolve_<chargeId>. Acel identificator face raportarea idempotentă — Stripe ignoră un duplicat — iar rândul trece în settled doar după ce Stripe a confirmat.
Factura ta Stripe
Evenimentele de contor ajung la clientul tău Stripe sub contorul de succese verificate și apar pe următoarea factură a planului tău. Dacă contul tău nu are încă un client Stripe (nu te-ai abonat niciodată și nu ai adăugat o metodă de plată), taxa rămâne due și se reîncearcă la rularea următoare — nu dispare și nu este facturată nimănui altcuiva.
Poți vedea costul upstream de model per job (nu ce plătești tu — ce a cheltuit Resolve) ca cost_micro_usd pe GET /v1/resolve/jobs/{id}; este suma utilizării gateway-ului sub id-urile de sesiune ale job-ului.
Limite
Toate limitele sunt per utilizator, numărate peste fiecare cheie pe care o deții.
| Limită | Valoare | Ce vezi când o atingi |
|---|---|---|
| Trimiteri | 6 pe minut | 429 rate limited: too many resolve submissions, retry in a minute |
Job-uri în zbor (accepted / running) | 2 | 429 too many resolve jobs in flight, wait for one to finish |
| Job-uri pe zi | 10 | 429 daily resolve job cap reached, retry tomorrow |
| Remedieri verificate gratuite | 3, pe viață | Cotațiile revin quoted în loc de accepted |
| Text de issue | 50 000 de caractere (acțiunea trunchiază) | — |
Plafoanele sunt verificate înaintea triajului, așa că o trimitere respinsă nu costă nici un loc, nici un apel de triaj.
Timeout-uri
| Buget | Valoare | Efect |
|---|---|---|
| Job întreg | 30 de minute | Depășit, job-ul se termină failed (niciun fix verificat în buget) — 0 $. |
| O rulare în sandbox (setup + teste) | 15 minute | O suită lentă încheie candidatul; job-ul poate încerca următorul. |
| Ture de agent per candidat | 4 | Editările peste acest număr nu sunt încercate. |
| Candidați de fix | 1 (gratuit) / 4 (plătit) | Primul succes verificat câștigă; restul sunt săriți. |
| Watchdog de orfani | buget job + 15 minute | Un job al cărui worker a murit este marcat error (watchdog: worker lost — not billed, safe to resubmit) și un loc gratuit este returnat. |
| Interogarea acțiunii GitHub | 25 de minute | Acțiunea nu mai așteaptă și comentează ultimul status; job-ul în sine continuă până la propriul buget. |
Triajul rulează inline în POST-ul tău și este limitat de timeout-ul de cerere al gateway-ului; un triaj lent returnează declined cu triage unavailable, please retry în loc să blocheze.
Repository-uri suportate
- Doar
https://github.com/<owner>/<repo>publice. Repo-urile private, alte host-uri și sub-căile de monorepo sunt respinse la trimitere cu400. - Python cu pytest, sau JavaScript/TypeScript cu vitest, jest sau
node:test(detectat dinpackage.json). - Suita repo-ului trebuie să ruleze dintr-o clonă curată plus manifestul de dependențe comis. Testele care au nevoie de secrete, servicii pornite sau pachete de sistem în afara imaginii runner-ului se termină de regulă în
declinedsauerror.
Cum funcționează
Ciclul de viață al unui job Resolve de la triaj la atestare, ce dovedește de fapt documentul public de dovadă și ce atinge și ce nu atinge runner-ul izolat.
Referință API
Cum citești referința — URL-uri de bază, autentificare, plicul de eroare, convențiile SSE și unde se anunță schimbările.