# Native service handoff proof for PR 14361

Reviewed source head: a4c9601be0fcf668b8d8fb582f6f4f02de139ca8
System manager: systemd 255 (255.4-1ubuntu8.17)

Two real standalone CLI binaries built from this head. Only embedded server package version differs: 0.1.0 and 0.1.1. These are disposable proof builds, not two published release artifacts. Runtime dependencies resolve to this worktree’s installed packages; the existing built web client is served for readiness only.

Both --version checks succeeded. Binary SHA256:
- 0.1.0: c906c0c93e1d693fdf2ca7992b74c928fafa6bfbb610cf936deddad75e058174
- 0.1.1: 6a03e562d84cca75eed240d11629f29d69291f3cc196d5175ccf55d82ece3554

The isolated home and base directory are under /tmp/desktop-app-11/native-service-14361. The base contains spaces, %, ${T3_PROOF_UNSET}, and $literal. Production marker remains T3_BOOT_SERVICE_UNIT=t3code.service. Only external unit-name/config-location adapters route fixed-name operations to t3code-proof-desktop-app-11-14361.service; original and adapted argv were recorded. No synthetic success or state changes are returned. Real systemctl and systemd-run run throughout. The generated production ExecStart, KillMode=mixed, state files and launcher are used.

The adapter intentionally holds the submitter’s return after real systemd accepts the detached install (and after accepting restart --no-block). This makes old-caller death deterministic. A helper inside the disposable service cgroup runs the actual target CLI; this does not drive a T3 terminal UI or provider tool. The target CLI in the detached unit clears the marker and executes its normal stop-first install.

Filesystem milestones use inotify and bounded deadlines, not sleeps. At each ready milestone, the actual local HTTP root returned 200 and persisted server version/pid matched.

## old-ready.json
```json
{
  "runtime": {
    "version": 1,
    "pid": 911404,
    "host": "127.0.0.1",
    "port": 41287,
    "origin": "http://127.0.0.1:41287",
    "startedAt": "2026-10-19T11:50:10.472Z",
    "serviceManaged": true,
    "serverVersion": "0.1.0",
    "ownerId": "bca99c4d-3232-4be6-89d7-ac9385ec4517"
  },
  "unit": "MainPID=911390\nControlGroup=/user.slice/user-1000.slice/user@1000.service/app.slice/t3code-proof-desktop-app-11-14361.service\nActiveState=active\nInvocationID=d4ca2f793d734ad7898ceab9a8ffdc13"
}
```

## new-ready.json
```json
{
  "runtime": {
    "version": 1,
    "pid": 911792,
    "host": "127.0.0.1",
    "port": 41287,
    "origin": "http://127.0.0.1:41287",
    "startedAt": "2026-10-19T11:50:22.920Z",
    "serviceManaged": true,
    "serverVersion": "0.1.1",
    "ownerId": "52c5bb47-14d0-4577-90fb-a993d39bd8ad"
  },
  "unit": "MainPID=911778\nControlGroup=/user.slice/user-1000.slice/user@1000.service/app.slice/t3code-proof-desktop-app-11-14361.service\nActiveState=active\nInvocationID=e64fce2c84e141048868f93190d102aa",
  "state": {
    "protocol": 3,
    "activeVersion": "0.1.1"
  },
  "submission": {
    "unit": "t3code-proof-14361-install-911724.service",
    "adapter_pid": 911724,
    "caller_pid": 911689,
    "cgroup": "0::/user.slice/user-1000.slice/user@1000.service/app.slice/t3code-proof-desktop-app-11-14361.service\n"
  }
}
```

## restart-ready.json
```json
{
  "runtime": {
    "version": 1,
    "pid": 912319,
    "host": "127.0.0.1",
    "port": 41287,
    "origin": "http://127.0.0.1:41287",
    "startedAt": "2026-10-19T11:50:30.017Z",
    "serviceManaged": true,
    "serverVersion": "0.1.1",
    "ownerId": "03ce7681-a52e-4f27-8e85-979f3ccd89f6"
  },
  "unit": "MainPID=912304\nControlGroup=/user.slice/user-1000.slice/user@1000.service/app.slice/t3code-proof-desktop-app-11-14361.service\nActiveState=active\nInvocationID=c3066fd0c1e742639bae332880a913ea",
  "submission": {
    "adapter_pid": 912302,
    "caller_pid": 912256,
    "cgroup": "0::/user.slice/user-1000.slice/user@1000.service/app.slice/t3code-proof-desktop-app-11-14361.service\n"
  }
}
```

## stream-proof.json
```json
{
  "returncode": 7,
  "log": "proof stdout\nproof stderr\n",
  "unit": "t3code-proof-14361-streams.service"
}
```

The new install log records Updated T3 Code service with t3@0.1.1. The separate stream check uses the same two append properties, prints known stdout and stderr, and exits 7; this does not claim the successful target CLI emitted stderr.

Cleanup stopped/disabled only the disposable unit and removed its runtime link/wants entry. Final disposable LoadState=not-found, ActiveState=inactive. The real t3code.service MainPID, InvocationID, FragmentPath, and SHA256 were equal before and after. No live home/database was opened for writing.

Limits: no simultaneous remote-update acceptance while install runs; no systemd before 254 (255 tested); no published old-release compatibility/downgrade test; no actual t3 update network download or terminal/provider UI; no macOS/launchd, Windows, Electron, iOS or Android. Earlier scratch attempts exposed an incomplete trigger-file read and a stale disposable unit file after teardown; the atomic-trigger/fresh-unit run passed. No production changes were needed.

Raw startup logs contain disposable pairing credentials and are deliberately excluded from publication. This report includes only safe operational state.
