# R04: after-side rerun

After [4b55798444](https://git.cafe/pingdotgg/t3code/commit/4b557984448fd3d2e5bb506b3d9ff180e32f7748), OpenCode 2.2.6, Linux x86_64. Fresh synthetic data only. Actual UTC timestamps; private model labels replaced by `<model>`. Browser Date is frozen for visual consistency and is not elapsed-time evidence.

Outcome unchanged. At 13:48:30.034 sleep 500 PID 782796 and OpenCode runtime PID 778259 are alive; one command is pending and run count is 1. The isolated backend owner PID 777704 of port 15059 is verified via ss and /proc cwd, then receives SIGTERM at 13:48:41.561. By 13:49:06.433 both processes are absent, roster [], and run count remains 1. A fresh backend starts at 13:49:06.304 and listens at 13:49:13.002. The next explicit user message is sent at 13:49:19.682; it completes as run 2 and receives the restart cancellation note in its native input and assistant reply. There is no automatic continuation between restart and that explicit turn. This is graceful restart only; abrupt crash is not tested. No new stills were needed.

| UTC observation | Run states | Pending roster | Owned processes |
|---|---|---|---|
| 2026-11-10T13:48:30.033622+00:00 | `[{"ordinal": 1, "status": "completed"}]` | `[[{"taskId": "shell_15", "description": "sleep 500", "kind": "command"}]]` | `[{"pid": 782796, "cwd": "/tmp/lead-32851-r1/capture-4/fixture", "ps": "PID    PPID STAT     ELAPSED COMMAND\n 782796  778259 Ss         01:08 sleep 500"}, {"pid": 778259, "cwd": "/home/user/wt/pr-32851-cap/apps/server", "ps": "PID    PPID STAT     ELAPSED COMMAND\n 778259  777704 Ssl        03:03 /tmp/lead-32851-r1/capture-1/opencode-runtime/node_modules/.bin/opencode serve --hostname=127.0.0.1 --port=37279"}]` |
| 2026-11-10T13:49:06.433451+00:00 | `[{"ordinal": 1, "status": "completed"}]` | `[[]]` | `[{"pid": 782796, "state": "absent from /proc"}, {"pid": 778259, "state": "absent from /proc"}]` |
| 2026-11-10T13:49:31.224353+00:00 | `[{"ordinal": 1, "status": "completed"}, {"ordinal": 2, "status": "completed"}]` | `[[]]` | `[{"pid": 782796, "state": "absent from /proc"}, {"pid": 778259, "state": "absent from /proc"}]` |
| 2026-11-10T13:49:58.064434+00:00 | `[{"ordinal": 1, "status": "completed"}, {"ordinal": 2, "status": "completed"}]` | `[[]]` | `[{"pid": 782796, "state": "absent from /proc"}, {"pid": 778259, "state": "absent from /proc"}]` |

## Final persisted counts

```json
{
  "observedAt": "2026-11-10T13:56:00.718244+00:00",
  "runCount": 2,
  "nativeDescendantSessions": 0,
  "pendingBackgroundTasks": []
}
```

## Native user and synthetic inputs

### user / 2026-11-10T13:47:18.555000+00:00

```text
Use the shell tool to launch exactly `sleep 500` with background: true. Do not use ampersand. Do not wait for it or stop it. After the launch, reply only `Background shell started.` and finish your turn.
```

### user / 2026-11-10T13:49:22.723000+00:00

```text
Note: the T3 server restarted, and this background work was cancelled before it finished. It will not report back on its own, so resume or restart what you still need and wait for its result:
- shell: sleep 500 (id shell_15)

User message:
Do not call any tools. If T3 supplied a note about background work being lost on restart, quote that note exactly. Otherwise reply NO_RESTART_NOTE.
```


The companion JSON retains full redacted ordered events, rosters, process observations, and native inputs. These observations are bounded; no universal future-time claim is made.
