# N2 incremental proof audit

Read-only artifact audit; no app/browser launch, tests, implementation changes, forge writes, or uploads. Prior pass2 independent seeder/rebuild accepted as already fulfilled.

No blocking findings. N2 is now covered for the bounded Linux GNOME-libsecret/X11 setup. Source checkouts resolve to baseline 044f07257c9684ae4543bd1e1ebf9c394e9e3830 and corrected fdee11371a81e2132cf2a24e7a133e4cade7a8b7; main.cjs hashes independently match the index (57a61ad9... and 9838ed54...). Driver creates separate fresh homes and checks catalog/legacy absence, with no connection seeding. Initial absence is supported by the retained driver and empty UI; no separately retained prelaunch filesystem snapshot was found in inspected logs. Later legacy files remain absent.

Inspected public recording frames: baseline 32/38/106/109/117/123/134/177.5 seconds; head 32/38/42/45/48/51/60/72 seconds. They show local-only onboarding, actual expanded pairing form, redacted entry and Pair submission, second connected target, window disappearance during restart, and both computers Connected after restart without credential reentry. Baseline 123s and 177.5s and head 51s and 72s clearly expose target 4788 Connected. Retained driver uses DOM input/click in real Electron renderer, not direct catalog setter. Restart driver stops tracked process group and starts a new process: cold termination/relaunch, not graceful quit proof.

Both retained disk catalogs have exactly version/encryptedCatalog, version 1 and nonempty ciphertext. Native IPC observations identify gnome_libsecret and one target/profile/credential after restart. This supports protected persistence plus working credentials; no independent cryptographic decryption or native rerun was attempted in this supplement.

Independent lossless RGB recomputation: added and restarted each 1440x1000; changed pixels 0/1,440,000, pixels max-channel delta >8 = 0, maximum delta = 0. Both delivered clamp(8*abs(delta)) gain images and >8 threshold masks match recomputation exactly.

Redaction covers secret input during documented entry windows (base ~105.93–122.62s; head ~41.40–50.48s). Sampled pre-entry frames contain placeholder only. Fixed mask temporarily overlaps lower connected row after collapse, but subsequent unredacted frames show successful connection; outcome is not concealed. This is sampled visual inspection plus redaction-script review, not a forensic every-frame secret-leak certification.

Limits unchanged: native macOS Keychain and Windows credential protection old-ciphertext/read/save/restart compatibility and actual async selection; KWallet locked/unlock; Niri and Wayland compositor behavior; actual native async-false/sync-true fallback and both-unavailable branch combinations remain unverified. basic_text refusal and mock coverage do not establish those native branches. No new dark/narrow coverage or graceful shutdown claim. Prior 840px native minimum constraint remains; no 390px native proof.

Own scratch: /tmp/issue9239-n2-audit/ contains this report, 16 timestamped decoded frames and timestamp-sheet.jpg. No raw private source artifacts copied or uploaded. No persistent processes spawned.

FRICTION public-fetch | web reader could not fetch supplied artifact URLs | audited matching local retained index/report/media instead; remote-byte identity not independently verified.
FRICTION frame-extraction | first image read raced ffmpeg extraction | waited for extraction, then inspected completed frames.
FRICTION evidence-scope | prelaunch absence relies on retained driver/empty UI rather than independent rerun; termination differs from graceful quit | kept scope explicit; prior independent rebuild not repeated.

VERDICT: SUFFICIENT for N2 supplement and the existing bounded Linux proof audit; remaining native platform/branch limits stand.
