# Evidence capture inventory — PR 12524

PR: [#12524](https://git.cafe/pingdotgg/t3code/pulls/12524) / [#12524](https://github.com/pingdotgg/t3code/pull/12524).
Source: [complete proof matrix](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/058d2a4020c1f9a2/proof-audit-pass-1.md), all M1–M8 rows read.

Before/base/merge-base: [3cc31ed](https://github.com/pingdotgg/t3code/commit/3cc31ed27c8956b36cee35a50509fb7c6869592b) (`3cc31ed27c8956b36cee35a50509fb7c6869592b`).
After/replacement takeover/pr-12524: [f1ad4b2](https://github.com/pingdotgg/t3code/commit/f1ad4b2523d3f6501519c55f1a768ca92a929dd6) (`f1ad4b2523d3f6501519c55f1a768ca92a929dd6`).
Original rashidgg/t3code fix/snapshot-device-hub-window-lookup: [4f5fba9](https://github.com/rashidgg/t3code/commit/4f5fba971e1c93b33bee0acbf1283c8e78b89b08).

Environment: 2026-10-24 UTC; Linux 6.1.102 x86_64 VM; worktree `/home/ubuntu/wt/pr-12524`; scratch `/tmp/to-12524`. HEAD and merge-base verified against the values above. Worktree initially clean. No native macOS session or Device Hub available; no remote access attempted.

## Inventory

Captured rows: **0/8**. Captured row IDs: **none**. Unverified: **M1, M2, M3, M4, M5, M6, M7, M8**. No screenshots, recordings, native identity traces, attachment captures, or before/after runtime captures collected. No visible result is claimed. Explicit dispatcher exception applies: unsupported macOS rows remain UNVERIFIED, not blocked or passed.

The original required fixtures and media are preserved below; status describes this evidence-capture step.

| ID | Fixture / conditional case | Required observable evidence | Medium | Runtime status |
|---|---|---|---|---|
| M1 | Actual Device Hub frontmost with NSWorkspace PID -1; exact nonempty name and eligible layer-zero window | Invoke configured global snapshot shortcut with Device Hub focused. Before fails to find window; after captures Device Hub pixels and correct title/bounds/owner PID, reveals T3 and delivers attachment. Show completion and absence of stale error. | Before/after recording + final attachment capture + native identity trace | UNVERIFIED |
| M2 | Positive PID; earlier same-name window owned by another PID; matching-PID window has different owner name | Both versions choose matching PID, never name fallback. Capture correct pixels and unchanged app metadata. Include valid PID with empty localized app name: owner-name fallback remains. | Before/after captures + native identity trace; recording if trigger shown | UNVERIFIED |
| M3 | Invalid PID (-1, and 0 boundary) with empty app name; also nonempty app name with only prefix/suffix/case-different or empty owner names | No fallback match, no wrong attachment; normal capture reports window-unavailable. Exact equality excludes Device Hub Helper and case variants. | Before/after failure captures + native identity trace; recording for trigger/error sequence | UNVERIFIED |
| M4 | Invalid PID, exact-name candidates offscreen or nonzero layer, then two eligible exact-name windows | Ignore excluded candidates; select first on-screen layer-zero match in CG list order; metadata PID is that selected owner. If only excluded candidates exist, no match. | Before/after captures + ordered native identity trace | UNVERIFIED |
| M5 | Device Hub invalid PID, accessibility inclusion enabled versus disabled | Capture image in both settings; enabled path uses selected positive owner PID for accessibility and associates context with captured window; disabled path omits context. Graceful lack of accessible controls is not proof of wrong PID. | Before/after recording covering toggle and capture + resulting attachment/context capture + PID trace | UNVERIFIED |
| M6 | Settings capture setup, permissions granted: Test capture and continue; optional delayed native focus to Device Hub after click if a controlled native harness permits | Exercise independent setup caller, verify success/progression after capture, temporary test image discarded and no composer attachment. Ordinary T3-focused positive PID checks regression; controlled Device Hub focus checks fallback here. | Before/after recording of Settings action and result + native identity trace | UNVERIFIED |
| M7 | Settings verification with no eligible window (nil frontmost or invalid-PID nonmatch); denied capture permission when a window is found | Missing lookup produces find-window error; capture denial produces capture-window error and stays in setup. No false success or phantom attachment. These are existing error paths newly reached/passed by fallback. | Before/after recording of action/error/progression + lookup/capture trace | UNVERIFIED |
| M8 | Actual Device Hub via alternate configured shortcut registration: modifier pair versus ordinary accelerator | Both dispatch to same capture service; no stale focus selection, duplicate attachment, or reveal before capture. Animation enabled in main M1 run; no separate visual-style matrix required. | Before/after recording; may share M1 session | UNVERIFIED |

## Per-row unsupported reason and source anchors

All anchors below are under `apps/desktop/src/snapShot/` at the after SHA.

| Row | Status | Reason | File:line |
|---|---|---|---|
| M1 | UNVERIFIED | Actual Device Hub, NSWorkspace PID -1, attachment delivery and reveal need native macOS. | ActiveWindow.ts:55,71,79; DesktopSnapShot.ts:480 |
| M2 | UNVERIFIED | Positive-PID and empty-name native identity controls need AppKit/CoreGraphics. | ActiveWindow.ts:68,71,78 |
| M3 | UNVERIFIED | Invalid/zero PID and exact-name failure cases need native lookup and error captures. | ActiveWindow.ts:58,71; DesktopSnapShot.ts:481 |
| M4 | UNVERIFIED | Ordered native CG candidates and exclusion outcomes need CoreGraphics. | ActiveWindow.ts:59,65,67,71,79 |
| M5 | UNVERIFIED | Accessibility on/off needs captured native window identity and native accessibility runtime. | ActiveWindow.ts:79; DesktopSnapShot.ts:535,548 |
| M6 | UNVERIFIED | Independent Settings test capture is explicitly darwin-only. | DesktopSnapShot.ts:1364,1365,1377,1397 |
| M7 | UNVERIFIED | Settings no-match and capture-permission failures are inside darwin-only setup. | DesktopSnapShot.ts:1365,1388,1406 |
| M8 | UNVERIFIED | Both shortcut forms require native Device Hub focus, capture and attachment sequence. | DesktopSnapShot.ts:1167,1296,1316; ActiveWindow.ts:139 |

## Platform dispatch and other changes

Inspected production platform dispatch: `ActiveWindow.ts:138-141` calls JXA only for darwin, Win32 lookup only for win32, and returns undefined otherwise. The changed script imports AppKit/CoreGraphics at `ActiveWindow.ts:52-53` and is executed through `/usr/bin/osascript` at `:88-93`.

Linux does not execute the changed selection code: `DesktopSnapShot.ts:286-289` selects portal for Wayland and unavailable for X11; `:473-475` invokes activeWindow only in direct mode; `:500-529` handles Linux capture separately. Settings test-mac-capture rejects non-darwin at `:1364-1366`. Therefore no applicable changed Linux runtime path exists, and no unrelated Electron/headless-desktop capture was taken.

The complete base-to-head diff changes only `ActiveWindow.ts` (10 lines, macOS lookup name fallback and selected owner PID metadata) and `ActiveWindow.test.ts` (116 new lines of mocked VM fixtures). Tests mock child_process and execute the JXA string using node:vm (`ActiveWindow.test.ts:1,7,29,75`); these are not native runtime captures. No tests were run during this capture step, and no prior test result is counted as evidence here.

No renderer/layout/style change exists. No width/theme matrix applies to the unchanged layout. No standalone web/mobile/provider/contracts/server change is present. No additional visible change is claimed.

No code changes, commits, push, PR comments/edits/watches, remote machine access, browsers, or servers were performed. Only this scratch inventory was created and uploaded; app-owned PR registration was performed as required by the harness. Final worktree cleanliness checked separately before upload.

FRICTION: All eight required rows depend on native macOS, AppKit/CoreGraphics/osascript and native Device Hub or controlled native fixtures; this Linux VM cannot capture them. Dispatcher explicitly accepts UNVERIFIED status. No substitute or VM-test capture is offered. Native before/after sessions remain necessary to verify M1–M8.
