# Server evidence: issue 8578

UI matrix: EMPTY, rows 0/0. No UI captures or seed artifacts required. No product edits, commits, pushes, PR, or forge writes performed.

Before: [3b95e7831b](https://git.cafe/pingdotgg/t3code/commit/3b95e7831b11b17627dff16843bc087bfca397ec), supplied lead dev-server transcript, plus a separately labelled direct-helper transcript. Red test commit: [25e9fe51f8](https://git.cafe/pingdotgg/t3code/commit/25e9fe51f8d54c64b40e37248fa80ff36208830d), independently run in a disposable adjacent detached worktree with installed dependencies reused. After: [e85b25d13d](https://git.cafe/pingdotgg/t3code/commit/e85b25d13d3203be20bb51e6d42590277548f3f3).

Environment: Linux x86_64, machine fs-39, Node v24.21.0, vp v1.3.0, Vitest v5.0.5. Test command from apps/server: `vp test run src/provider/Drivers/CodexHomeLayout.test.ts`. Red: exit 1, 2 failed / 8 passed. Green: exit 0, 10 passed. Raw output includes revision, command, failing assertions and counts.

Runtime command, from /home/ubuntu/wt/issue-8578: `vp run dev:server --no-seed --home-dir <scenario>/t3 --port 13856`. Each scenario used disposable settings/state, synthetic shared/shadow Codex homes and a harmless fixture executable that records app-server launch attempts. Settings, fixture credentials and complete startup logs are excluded. Existing live T3 state was never used. Successful-path evidence establishes the real server reaches the fixture Codex app-server; it does not claim real-provider authentication or inference.

Observed before: shared alternate auth files became shadow symlinks; dangling auth-orphan.json was accepted by the supplemental helper.

Observed after:

- Fresh overlay: auth, auth-fixture-a.json, auth_fixture_b.json, auth.json.bak and AUTH.Backup remain absent in shadow by lstat; no auth-like links are created. Shared auth.json and other shared auth-like files, and regular shadow auth.json, preserve their content and 0600 modes.
- Distinct regular alternate auth-like files in both homes remain regular and unchanged through two server startups. Auth-like snapshots assert type, content hash or link target, and regular-file mode equality.
- author.json, sessions, config.toml, skills and cache remain linked to shared targets. A fixture write through shadow/cache is visible in shared/cache. models_cache.json has no shared link.
- Live auth-fixture-a.json symlink: private-entry error before any fixture executable launch; link and shared file unchanged.
- Dangling auth-orphan.json symlink, absent from shared: same private-entry rejection; dangling link remains; zero fixture launches.
- Original lead before-fix overlay: rejected at AUTH.Backup before any fixture launch; all pre-existing auth-like links/files remain unchanged. Fail closed, with no self-healing.

The after transcript records owned process groups and their shutdown. Port 13856 was checked free afterward. Red/green tests and all runtime scenarios were ultimately run serially. All required runtime scenarios verified; real-provider authentication/inference intentionally untested. The lead reports format and lint passed; its check:changed was interrupted at the stalled knip export phase, so no full local dependency/type-gate claim is made.

FRICTION resource|Initial parallel root test runs and the first runtime attempt overlapped VM resource contention; test sessions were interrupted with exit 130 and the first server timed out before fixture launch; its captured group 1467511 was stopped|After the lead stopped its broad check, run red, green, and each runtime scenario serially.

FRICTION test-scope|Root-level focused test commands initialized unrelated project infrastructure and yielded no usable results|Run the focused test from apps/server, which completed in 7.90 seconds red and 5.83 seconds green.

FRICTION evidence-secrets|Full startup logs contain pairing credentials and must not be published|Publish only generated fixture metadata/error excerpts and inspected raw unit-test output; exclude settings, credentials and full logs.
