t3-code-android-nightly/docs/operations/background-verification.md
Julius Marminge de34391427
feat(orchestrator): introduce new orchestrator (#2829)
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Vitalii Yehorov <vitalyiegorov@gmail.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nicholas Wasmiller <derped@mineperial.com>
Co-authored-by: PB <poilmb@gmail.com>
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Gabriel De Andrade <30420087+gabrielelpidio@users.noreply.github.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: scratchyone <scratchywon@gmail.com>
Co-authored-by: Dominic Roy <dominic@sdko.org>
Co-authored-by: chukfinley <chuk@chuk.dev>
Co-authored-by: Primož Ajdišek <bigpod@bigpod.si>
Co-authored-by: benthecarman <benthecarman@live.com>
Co-authored-by: NaveDanan <nave0712@gmail.com>
Co-authored-by: aaditagrawal <103925638+aaditagrawal@users.noreply.github.com>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: Nick Anisimov <n.anisimov.23@gmail.com>
Co-authored-by: MacKinley Smith <smithmackinley@gmail.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: AKolenda <akole779@mtroyal.ca>
Co-authored-by: Guillermo Casanova <75276669+Gigioxx@users.noreply.github.com>
Co-authored-by: Otavio Salvador <otavio@ossystems.com.br>
Co-authored-by: Shirish Pothi <183252392+shirishpothi@users.noreply.github.com>
Co-authored-by: Ishaan Kothari <ishaanko.mail@gmail.com>
Co-authored-by: Bob Fowler <bob@rjf.ca>
Co-authored-by: Anton Bezdenezhnykh <gamer392@yandex.ru>
Co-authored-by: ValeraZSD <48602572+ValeraZSD@users.noreply.github.com>
Co-authored-by: Ephraim <ephraim39hr14m@gmail.com>
Co-authored-by: Ryan Ilano <ryanilano@users.noreply.github.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: maco <gosarmarcel7@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Tristan Knight <admin@snappeh.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: kamkm <99585688+Kamkmgamer@users.noreply.github.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
2026-10-02 12:22:22 -07:00

2.8 KiB

Live background-work verification

Run from the repository root with Node 24 and installed dependencies. This uses real provider CLI credentials and consumes model usage:

node apps/server/scripts/verify-background-live.ts --repeat 2

Each scenario starts the production server in a fresh temporary T3 home and Git project. It connects through authenticated HTTP and the same typed WebSocket RPC contract as clients. There are no substituted adapters, in-memory databases, or seeded projection rows. Existing T3 environments are not modified.

The scenarios exercise delegated completion after the parent ends its turn, delivery into an active foreground command, native background-command wake-up, and nested delegated results. A local HTTP request holds the actual background command until the required parent state is observed. Its random response is not included in the parent prompt. Passing requires the agent to retrieve that result, acknowledge it, and finish; a delivery receipt alone is insufficient.

Assertions also check task-result publication, acknowledgement state, typed notifications rather than additional user-message items, run boundaries, and an empty provider background roster. Successful scenarios restart the real server and check that the acknowledgement survives and runs remain completed. This is a clean-restart persistence check, not proof of crash recovery during delivery.

Use --scenario idle|active|native|nested, --model, --provider, and --timeout in seconds to narrow a run. The default provider is claudeAgent and the default model is claude-sonnet-4-6. The native scenario specifically requests Claude's background Bash tool; do not treat it as generic provider conformance. Active delivery expects a provider supporting active steering. Missing authentication, unsupported capabilities, provider failures, and model instruction violations are failures, never skipped passes. Inspect the retained trace to distinguish them.

Check the verifier's failure detection with a real failing HTTP dependency:

node apps/server/scripts/verify-background-live.ts --scenario active --fail-gate

That command must exit nonzero. It must not be counted as a passing product test.

Each run prints its evidence directory. It retains the SQLite database, native provider logs, streamed events, final projection, prompt, revision and dirty-file inventory, and machine-readable verdict. Suite reports link every attempt, including failures; repeating a test does not erase an earlier failure. Evidence is local and may contain provider output. Do not upload the entire T3 home.

This loop does not verify rendered folding, mobile UI, cancellation, or abrupt process loss between provider acceptance and receipt persistence. Those require additional scenarios before claiming complete background-lifecycle coverage.