# N=3 vast.ai deployment post-mortem — 2026-05-25 Companion to `N3_DEPLOYMENT_REPORT.md` and `DEPLOYMENT_TEST.md`. Covers one invocation of `pp-smoke-run --vastai --num-stages 3` on 2026-05-25 (`vastai-N3-1779720002`). The cluster came up, lost one peer's relay session ~5 s into SWIM convergence, never recovered, and was killed by the operator at ~10 min. The orchestrator never produced an `InferenceResponse`. The diagnostic bundle was recovered by hand (no finalize record was written) and post-processed. ## Cleanup note The run was terminated with `TaskStop` (SIGKILL). The orchestrator's destroy-on-exit handler did not run. Three rentals (`37777187`, `37777190`, `37777192`) were destroyed manually by `DELETE /api/v0/instances//`. Post-cleanup instance count = 0. ## Sequence 3 instances leased (`37777187` → stage 0 / `95d01a36…`, `37777190` → stage 2 / `a040c0d2…`, `37777192` → stage 1 / `0cc5ed32…`). Orchestrator node id `66b61b4a…`. All four nodes used `SWACTOR_IROH_RELAY_URL=http://146.190.110.128:7843/` (docean), as recorded in every node's `body.iroh.home_relay_url` field. Live log progression: ``` t=0 orchestrator boots, custom-relay banner emitted t=~135s contract 37777187 (stage 0) reaches running, others follow t=158s 3 contracts leased, "waiting for SWIM convergence (3 alive)" t=~190s members ["0cc5ed32=alive", "95d01a36=alive", "a040c0d2=suspect"] iroh driver: connect attempt N/3 to a040c0d2 failed: connect timeout (repeated) t=~340s stage-0 marks stage-2 (a040c0d2) Dead, reason "suspicion-timeout" t=~420s stage-1 (0cc5ed32) also goes suspect from orchestrator's view t=~600s members ["0cc5ed32=dead", "95d01a36=alive", "a040c0d2=dead"] t=~600s operator killed the orchestrator (SIGKILL via TaskStop) ``` ## Bundle recovery `GET /diag/bundle/vastai-N3-1779720002` returned HTTP 404. The collector finalises tarballs only on receipt of a finalize record from the orchestrator; SIGKILL skipped that step. Per-node staging files under `docean:/var/lib/swactor-diag/vastai-N3-1779720002/` survived and were retrievable by tar + scp. Recovery steps applied to produce a postproc-compatible bundle: 1. Tar `/var/lib/swactor-diag//` from docean and copy down. 2. Synthesize `MANIFEST.json` from the four `boot-000001.json` records (run_id, role, stage_index, node_id_hex; file counts via `ls -1`). 3. Reshape staging layout (flat `boot-NNN.json`, `events-NNN.json`, `snapshot-NNN.json` under `/`) into bundle layout (`