PR #22554 real dev verification, 2026-10-28, Linux Boat VM head: ad46cba6602e1ce14bf64bd1829c8a5bf7c5359a baseline: github/main f17c9d202b (separate worktree) browser: repository Playwright 1.60.0, /usr/bin/google-chrome, 1440x1000 data: project added in web UI, real /home/user/main git checkout, real Codex provider turns provider: codex / gpt-6.1-sol (an initial PR baseline turn used gpt-6-astra; all recovery scenarios used gpt-6.1-sol) main dev: server 16733, web 8693, isolated /home/user/main/.t3 PR dev: server 13773, web 5733, isolated /home/user/t3code/.t3 one dev server at a time; stopped all task-owned servers after verification $ timeout 600 vp i (both checkouts) passed $ T3CODE_DEV_SEED=0 setsid nohup timeout 6000 vp run dev --home-dir /home/user/t3code/.t3 startup migration 70_StartupRecoveryIndexes applied; both indexes installed $ timeout 60 node /tmp/recovery-plan.mjs read-only actual ProjectionStore.getRecoveryThreadIds("runtime") with SQL tracer, then EXPLAIN QUERY PLAN main before: SCAN orchestration_v2_projection_runs USING COVERING INDEX orchestration_v2_projection_runs_thread_status_idx SCAN orchestration_v2_projection_runs USING INDEX orchestration_v2_projection_runs_thread_status_idx SEARCH node EXISTS USING INDEX orchestration_v2_projection_nodes_thread_run_idx (thread_id=? AND run_id=?) SCAN orchestration_v2_projection_subagents USING INDEX orchestration_v2_projection_subagents_thread_idx SEARCH run USING INDEX sqlite_autoindex_orchestration_v2_projection_runs_1 (run_id=?) PR after: SEARCH orchestration_v2_projection_runs USING INDEX orchestration_v2_projection_runs_recovery_idx (status=?) SEARCH node EXISTS USING INDEX orchestration_v2_projection_nodes_unattached_recovery_idx (thread_id=? AND kind=? AND status=?) SCAN orchestration_v2_projection_subagents USING INDEX orchestration_v2_projection_subagents_live_native_idx SEARCH run USING INDEX sqlite_autoindex_orchestration_v2_projection_runs_1 (run_id=?) same app-created native-running data, main and PR candidate IDs: main-query-on-pr-data.json: ["809f985b-9a93-406f-a875-c5f688c79539","thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d"] pr-native-plan.json: ["809f985b-9a93-406f-a875-c5f688c79539","thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d"] pr-before-restart.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: running, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: queued, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} pr-after-restart.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: queued, queueHeld=1, model={"instanceId":"codex","model":"gpt-6.1-sol"} pr-second-restart.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: queued, queueHeld=1, model={"instanceId":"codex","model":"gpt-6.1-sol"} pr-queue-resumed.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: completed, queueHeld=0, model={"instanceId":"codex","model":"gpt-6.1-sol"} pr-native-before.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: completed, queueHeld=0, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:5: running, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} native child thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d: running unattached root thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d: running pr-native-after.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: completed, queueHeld=0, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:5: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} native child thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d: cancelled unattached root thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d: cancelled pr-final-state.json run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:1: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6-astra"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:2: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:3: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:4: completed, queueHeld=0, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:5: cancelled, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} run:thread:809f985b-9a93-406f-a875-c5f688c79539:ordinal:6: completed, queueHeld=null, model={"instanceId":"codex","model":"gpt-6.1-sol"} native child thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d: cancelled unattached root thread:provider:codex:native-thread:01a181bd-1681-79d1-8fb9-3128ae1fbf1d: cancelled first PR crash restart: terminalizedRuns=1, stoppedSessions=1 second restart: terminalizedRuns=0, stoppedSessions=0; held queue unchanged clicked Send now: queueHeld=0, completed, client displayed QUEUED_OK native crash restart: terminalizedRuns=1, stoppedSessions=1; native roster and unattached root cancelled; client displayed Cancelled fresh user turn after native recovery: completed, client displayed RESTART_RESUME_OK $ blacksmith-check run --id "vp test run apps/server/src/persistence/Migrations.test.ts apps/server/src/persistence/reconcileV2PreviewMigration.test.ts apps/server/src/orchestration-v2/ProjectionStore.test.ts" 3 files, 59 tests passed $ blacksmith-check run --id "vp test run apps/server/src/orchestration-v2/ProviderRuntimeRecoveryService.test.ts apps/server/src/orchestration-v2/ProviderRuntimeRecoveryService.regression.test.ts" 2 files, 14 tests passed worker stopped limits: no end-to-end performance claim; original Windows 2.94GB startup failure, cold-cache timing, production migration/write cost, native desktop/mobile and other providers not verified. current main uses migration 70_PeerLinks, unlike this exact head. Separate data prevented migration-id collision. GitHub reports CONFLICTING/DIRTY against current main; no history changes attempted. no source edits, commits, pushes, labels, merge, close, rebase or force-push.