# PR #27034 evidence matrix (lead-scoped, round 3)

Derived from proof audit pass 1 (full matrix: https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/6e77eb64f33042bc/fixture-matrix.md).
The lead collapsed its 25 rows to one capture per changed render path. Seed recipes C / L / P and the data shapes in the pass-1 matrix still apply; this file only decides which rows are captured and how.

Before = merge-base on main, After = PR head. Viewports: D = web 1440x900 dark; N = web 390x700 light; I = iOS "iPhone 17 Pro" portrait dark; A = Android "Pixel 9" portrait dark.

| Row | From pass 1 | Surface | Fixture and what the After must show | Before shows | Capture |
|---|---|---|---|---|---|
| R1 | W01+W02 | web D | Opus 5.5, Low, Standard. Open the model picker: Reasoning list has no Ultracode entry; footer has Standard / Fast and an Ultracode button. Toggle Ultracode on: button pressed, Low stays selected, composer trigger shows the Workflow icon. Change Low -> High with Ultracode on, toggle off, reopen. | Ultracode is an entry in the Reasoning list; no footer button | recording (scripted steps with timestamps) + one still of the open picker each side |
| R2 | W03 | web D | High + Fast + Ultracode on: trigger shows the effort, Fast bolt and Workflow icon together | base cannot express High+Ultracode: still of base trigger with Ultracode (effort) + Fast, labelled | still |
| R3 | W04 | web N | Same fixture, 390 wide light, picker open (stacked layout); the footer with the Ultracode button (on) fits on one line at this width (corrected after audit pass 2: the footer is `flex-wrap` and does not need to wrap here) | base picker open at same width | still |
| R4 | W05 | web D | Legacy thread seeded with raw options `[{effort: ultracode}]`: picker shows Extra High selected and Ultracode button on, trigger Extra High + Workflow icon | same thread on base: Ultracode selected as effort | still |
| R5 | W08 | web D | Settings -> a Claude text-generation (or default) model TraitsPicker menu open: Reasoning without Ultracode, separate Ultracode On/Off group, trigger summary adds "Ultracode" when on | base menu with Ultracode in Reasoning | still (menu open) |
| R6 | A01 | web D | Provider-native workflow coordinator subagent with `model: null` and an explicit matching modelSelection (Opus 5.5 / High): its timeline hover card names "Claude Opus 5.5" (+ effort) | "Not reported" | still with the hover card open (seed P) |
| R7 | A03 | web D | Lineage/relationships panel, workflow expanded, phase expanded, hover a member with model `opus`, effort `high`, speed `fast`: card shows model, effort and Fast | member card with the model but no effort/Fast (corrected after audit pass 2) | still with card open (seed P) |
| R8 | A05 | web D | Coordinator thread's workflow opening block, hover a member with model + effort: card shows them; a member without effort shows no invented effort | same with the model but no effort (corrected after audit pass 2) | still with card open (seed P) |
| R9 | M01 | iOS I | New task -> model settings sheet: Options has an Ultracode switch (on), Reasoning list has no Ultracode; composer summary after Done shows effort + Ultracode; the label is visible only while the composer editor is expanded (`iconOnly={!compactEditor.isExpanded}`), so it is captured with a typed draft (row R9-summary-expanded, added after audit pass 2) | Reasoning list contains Ultracode, no switch | stills (sheet; reasoning list; composer summary) |
| R10 | M02 | Android A | Existing thread -> ThreadSettingsSheet: Ultracode switch on with High selected, Reasoning list without Ultracode | Reasoning list contains Ultracode | stills (sheet; reasoning list) |
| R11 | M07 | iOS I | Coordinator thread's workflow opening member rows: "provider · model · effort" for a member with effort (including a `claude-opus-5[1m]` member), no effort for one without | rows with provider · model only | still (seed P) |
| R12 | M04 | iOS I | Agents sheet ordinary subagent with `model: null` and explicit Opus/Low selection: "Claude · Claude Opus 5.5 · Low" | "Not reported" / no effort | still (seed P) |

Dropped from the pass-1 matrix, with reason:
- W06 (Fable, no speed), W07 (Ultrathink lock), G01-G03: unchanged branches or shared logic covered by unit tests (model.test.ts, claudeModelOptions.test.ts).
- W08's other four callers: same TraitsPicker component; one caller proves the render.
- W09 / M08 (provider-subagent legacy bar), M03 (iOS legacy settings), M05/M06 (other SubagentRow callers), A02, A04, A06, A07: same components as R4/R6-R12 with different data; the data mapping is unit-tested (threadExecution.test.ts, subagentRuntime.test.ts).
- A08 (raw `ultracode` token on a legacy web hover card): web hover cards show the raw effort token on main too; unchanged behaviour, not a claim of this PR.

Hover-card rows are stills with the card open: the change is the card's content, not the hover interaction. R1 is the one recording: it proves Ultracode and effort are independent.
Every capture states its seed provenance (C app controls / L legacy selection via `thread.model-selection.set` RPC or projection edit / P projected subagent rows written into the isolated dev DB while its server is stopped). A row that cannot be seeded through P is a labelled harness capture (actual component from the head), never a lookalike.
