Loading articleโฆ
Loading 4weirdโฆ
Loading 4weirdโฆ
Loading articleโฆ
DocsVibeCodeWorker
Docs ยท the QA lab
Evidence-driven QA: point VibeCodeWorker at a game, watch it observe โ reason โ act, and get runs, findings, bugs, and portable handoffs with proof. Start at /vibecodeworker.
The floor plan
Overview, hub, run, full, phone, docs, and demo - each pairs a guide with the live surface plus a public service-status pill. If the pill reports trouble, wait before opening runs: the loop depends on the service underneath.
The assembly line
Signed in, every route returns success envelopes and rate-limits per user. Read the full run (trail + findings) before every next step.
?game_slug= + ?status=open|completed + ?verdict=pass|fail|inconclusive + ?limit= + ?before= cursor paging; bugs filter by ?severity= + ?game_slug= + ?run_id= the same way.Exhibit A
run #4821 - boss-spawn verification
verdict: passOBSERVE screenshot: 3 adds spawn at 0:42, HP bars visible
REASON spawn matches spec ยง2.1 โ engage, record score events
ACT cleared wave, no console errors, 60fps held
FINDING goal met - no bug filed, evidence attached
Field notes
๐ฏ Goals
One verifiable claim per run: โmenu โ new game โ first checkpoint, no console errors.โ
๐ฌ Steps
Small, timestamped, evidence-first: โscreenshot showsโฆโ, โscore event firedโฆโ.
๐ Bugs
Expected vs. actual + repro path + severity + run link. Critical = data loss, payment error, safety.
๐ Verdicts
Pass (evidence), fail (repro defect filed), inconclusive (blocked - say what blocked you).
Keys + gateway
The run loop above uses your login session. The gateway (under /api/vcw/gateway/*) gives the same loop a key you can paste into your own agent tools - hosted on our GPUs, or routed to your own provider keys (BYOK).
๐ฐ Gateway prices (gross, cut inside)
run-open 10 ยท action-step 1 ยท bug-file 2 ยท handoff 5 ยท worker-min 6 ยท byok-route 2 coins. Hosted adds 15% over provider cost (9% enterprise); BYOK bills the base price. 100 coins = $1.00, always.
๐ Key hygiene
Copy the secret once, store it like a password, set a budget + expiry, revoke keys you stop using. Gateway-key reads and writes are metered to your coins like session calls.
Full fidelity
The run detail caps the trail for speed (steps_limit 1-200, bugs_limit 1-100), but nothing is lost: the export removes the caps for archiving, and compare answers โdid the fix workโ side-by-side. Detail, export, and compare are read-only, so none of them meter coins.
GET /api/vcw/runs/[id]/export
format: vcw-run-export/1run id ยท game_slug ยท goal ยท status ยท verdict ยท summary ยท timestamps
steps every step in order, up to 2000 (id ยท kind ยท text ยท data ยท created_at)
bugs every filed bug in order, up to 500 (id ยท title ยท severity ยท description ยท created_at)
COMPARE GET /api/vcw/runs/compare?a=<uuid>&b=<uuid> - verdicts, step-kind mix, bug-severity mix, plus same_game
Batch + media
The loop usually produces a whole observe โ reason โ act triplet per iteration. Recording it one step at a time costs three metered round trips - batch appends 1-20 steps in one call, validated exactly like single steps.
{ steps: [{ kind, text, data? }] }. Each item needs a legal kind, 1-5000 characters of text, and a data object that fits in 10 KB - the first bad item rejects the whole batch.[tool: fal.generate; op=<op> prompt="..."] in an action-step text or data object and the route answers with the gross quote plus the next hop (POST /api/fal/generate with source โvcwโ). Unknown ops get a hint naming the 30-op catalog instead.Remotes
Autoplay starts a RunPod remote that drives the play page for you - cpu for cheap, gpu for vision, gpu-boosted (pinned RTX 4090 class) for the hardest titles. It never fakes a worker URL: no stock, no credentials, or over budget comes back as started:false with the code and the manual next step.
๐ฅ๏ธ cpu ยท 0.14/min
Cheapest seat: a CPU remote drives the first-party play page. A 60-minute run lands around 9 coins.
๐ฎ gpu ยท 0.63/min
Vision seat: a GPU remote watches and plays the same on-site page. About 38 coins for a full hour.
๐ gpu-boosted ยท 2.2/min
Fastest eyes, exact quote at start: pinned RTX 4090 class (5090 fallback), required for off-site Xonotic. About 132 coins per hour ceiling.
Look before you leap
Two authenticated reads prove the loop is usable before you spend a coin: status for the control plane, dashboard for your own recent runs and bugs. Both are rate-limited per user and both refuse strangers with 401.
๐ก GET /api/vcw/status
Service health (ok, degraded, unavailable, or unconfigured), catalog game count, your run/bug totals, every fal op grouped by observe/reason/act phase, plus the swarm tools hint for multi-agent QA.
๐๏ธ GET /api/vcw/dashboard
Service state plus your 10 most recent runs and 10 most recent bugs in one call - with counts for open runs, runs by verdict, and bugs by severity. The hint field points at the deeper run/bug filters.
Who may do what
Every gateway call resolves its caller from exactly one credential, tried in order: your login session, a bot key carrying a vcw scope, or a vcw_live_ gateway key. All failures collapse to one uniform โauthentication requiredโ - the how is never leaked.
vcw:read or vcw:write rides the same loop; write implies read. Keys are looked up by prefix with constant-time comparison, and unknown prefixes still burn a dummy compare so timing leaks nothing.vcw:read default, vcw:write for writes), optional lifetime/daily budgets, max uses, and a future expiry date. Max 10 active keys; the full secret shows once, only its hash is stored. Present it via x-vcw-key, x-gateway-key, or Bearer.Take it with you
POST /api/vcw/handoff with an optional run_id and reason (defaults to your latest run) returns a portable markdown brief capped for pasting: trail digest, 50 steps, 50 bugs, and next actions for the coding agent. Metered at 5 coins gross - assembled only for a paid handoff.
handoff.md - goal, digest, steps, bugs, next
50 + 50 caps# VCW run handoff game slug ยท goal ยท status + verdict ยท reason ยท run id ยท updated-at ยท summary
## Trail digest step count by kind ยท bug count by severity ยท fal.generate mentions
## Steps (50) [kind] @ timestamp + first 300 chars each
## Bugs (50) [severity] title + first 300 chars of description
NEXT replay last observe โ action ยท fix critical โ low ยท emit fal tags for media ยท complete with verdict