# Revised server evidence matrix

PR [#22792](https://git.cafe/pingdotgg/t3code/pulls/22792), mirrored [#22792](https://github.com/pingdotgg/t3code/pull/22792).

Base: [74541bab17](https://git.cafe/pingdotgg/t3code/commit/74541bab17270c35f4418d4e543d85628632ed8f) (`74541bab17270c35f4418d4e543d85628632ed8f`). Core runtime after: [95d01097c4](https://git.cafe/pingdotgg/t3code/commit/95d01097c4bfe841543640f0e3864080eb22af15) (`95d01097c4bfe841543640f0e3864080eb22af15`). Reproducible test head: [b3f248adfd](https://git.cafe/pingdotgg/t3code/commit/b3f248adfd45d18371df6566b5e831f529312746) (`b3f248adfd45d18371df6566b5e831f529312746`).

10/10 rows evidenced; R5–R7 gaps closed with committed SDK-boundary fixtures. No required row remains unverified. Scoped means adapter runtime driven by scripted SDK messages, not an upstream Claude completion.

## Complete inventory retained from initial audit

All source anchors below refer to [ClaudeAdapterV2.ts at the audited head](https://git.cafe/pingdotgg/t3code/blob/95d01097c4bfe841543640f0e3864080eb22af15/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts).

| Changed site | Caller / input / condition / interaction | Collapsed fixtures |
| --- | --- | --- |
| `makeClaudeQueryOptions`, line 1268 | `openQuery` calls with instance settings; direct test/replay/recording helpers also call with settings omitted. Compilation now scopes the bundled catalog with `settings?.customModels ?? []`. Settings shapes: absent/empty, string custom entry, object without capabilities, object with descriptors, alias-shadowing custom slug, built-in slug collision. | R1, R4, R5, R6, R7 |
| Adapter catalog initialization, line 3822 | `createClaudeAdapterV2` supplies configured instance settings; default layer supplies `DEFAULT_CLAUDE_SETTINGS`; tests construct adapters directly. The existing subagent catalog is renamed and shared with parent compilation. It is constructed per adapter, not refreshed per turn. | R1–R10; dynamic live catalog refresh excluded |
| `claudeSubagentModelSelection`, line 5581 | Subagent updates include selection when new or already carrying one; uses observed/requested model or parent fallback plus effort. Renamed catalog only; behavior unchanged. | R10 |
| Assistant snapshot canonicalization, line 7871 | Nonempty, non-`<synthetic>` model plus non-null parent tool ID; update a running child or remember pending launch when child does not yet exist. Renamed catalog only. | R10 |
| Assistant Agent tool block, line 8155 | Each assistant tool-use block named `Agent` records launch input and parent ownership. Other tools skip this branch. Renamed catalog only. | R10 |
| Permission callback Agent branch, line 8714 | Active turn required; `toolName === "Agent"` records launch with callback tool ID. No active turn denies earlier. Renamed catalog only. | R10 |
| `openQuery`, line 9053 | Ordinary `startTurn`: compile selection for query identity. Same-thread provider continuation returns existing process regardless of selection. Otherwise identical selection/policy reuses; compatible changes use `setModel`/`applyFlagSettings`; Thinking change or clearing effort requires replacement; running background work refuses replacement. A new/replaced query passes scoped settings through launch; resumed native thread uses resume identity/cursor. | R1–R4, R8, R9 |
| `startTurn` prompt construction, line 9344 | User/agent prompt when not provider continuation; text and attachments pass through scoped `promptEffort` compilation. Continuation has null prompt and skips message construction. | R7, R9 |
| `steerTurn`, line 9782 | Requires live query and matching active provider turn. Uses active turn's selection, not a new steer selection; message priority `now`; retains attachment/skill behavior. | R7 |
| New custom settings and tests | Exact committed fixture: dated Sonnet slug, select effort low/high, boolean Thinking; explicit High plus false, then false/false/true/false scripted turn sequence with fresh queues on reopen. | R1–R3 |


## Row evidence

| Row | Fixture | Before / After or scoped provenance |
| --- | --- | --- |
| R1 | Custom Thinking Off launch | [Before](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/1d9ea38e27bb5670/before-runtime.json): explicit false fresh open omits alwaysThinkingEnabled; [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ddeec11fb2ef14d8/after-runtime.json): run 6 supplies false, high preserved, completed. Committed launch regression passes. |
| R2 | Unchanged custom reuse | Scoped: existing custom Thinking sequence false/false/true/false asserts one query for the first two turns and four messages overall. |
| R3 | Toggle both directions | [After](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/ddeec11fb2ef14d8/after-runtime.json): runs 6–8 complete with false/true/false distinct opens; scoped process counts independently prove replacement. |
| R4 | Built-in/default/opaque fallback | Scoped: compiler/catalog and adapter suite, absent settings and opaque effort fallback. New parent string opus and object sonnet aliases stay opaque. Built-in collision retains [1m] and max. Before built-in Haiku launch honors Off, but upstream completion failed. |
| R5 | Custom effort/default/catalog precedence | NEW scoped six parent launch cases: tuned omitted→gentle, bogus→gentle, brutal→brutal; string opus omitted→no effort; object sonnet max→max and slug unchanged; built-in claude-opus-4-6 colliding custom descriptor ignored, [1m]/max retained. |
| R6 | Custom boolean shapes | NEW scoped five-turn sequence Fast omitted/false/true/false/omitted; one query throughout, only true/false transitions invoke live flags. Initial Fast=false. Omitted Thinking leaves alwaysThinkingEnabled absent; unsupported descriptor and alternating selection ignored in both launch and identity. Existing automatic showThinkingSummaries=true remains. |
| R7 | Custom prompt send/steer | NEW scoped four cases, each ordinary send plus active steer with file attachment: prose prefixed once, already-prefixed prose unchanged, slash command preserved, High control unprefixed. Custom ultrathink descriptor resolves SDK effort high; steer priority now; exact attachment path note retained. |
| R8 | Replacement guard/live updates | Scoped: existing background-shell model/effort/Fast live-update test and background-subagent Thinking replacement refusal pass. R3 proves custom Thinking enters replacement identity; R6 proves custom Fast enters live identity. |
| R9 | Continuation/resume | Scoped: existing continuation/wake/resume adapter tests pass. Provider continuation intentionally bypasses fresh prompt/selection application; no custom-specific upstream continuation claim. |
| R10 | Subagent catalog rename | Scoped: existing custom model/effort, requested/observed/synthetic/inheritance, permission callback and nested effort tests pass. Four changed uses share the same pre-existing per-instance scoped catalog; no new subagent upstream capture claimed. |

All scoped rows use the committed existing ClaudeAdapterV2.test.ts harness plus claudeModelOptions.test.ts and provider/ClaudeModelCatalog.test.ts: [223 passing tests](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/88a56c8fdf1458cc/scoped-tests.log). R5–R7 are individually named in [11 passing focused cases](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/52c25b7aeba6db7f/gap-tests.log); the 205 skipped entries are the intentional name filter, all exercised in the full scoped run.

Limitations: built-in Haiku upstream completion remains unverified (unknown-provider failure); dynamic catalog refresh, other platforms and new custom-specific continuation/subagent upstream sessions were not tested and are outside this proof scope. Base regression failures were reported by lead, not independently rerun here. Screenshots, pixel differences, viewports and themes N/A; no render paths changed. Web/desktop/mobile, local/remote/tunnel, palette/keybindings, scheduled and MCP callers converge on this adapter; their transports are unchanged. Other provider adapters unchanged.

VERDICT: SUFFICIENT for the accepted server-only evidence scope.
