feat(snapshot): move scope into presentation - #1855
Conversation
|
Exact Rebase, drop the merged eligibility commit, preserve the first-preorder-match-whose-presented-subtree-contributes contract, and add decorative-first/later-contributing parity plus production-boundary regressions. The PR body is only stack boilerplate, full CI did not run, and the required live iOS tree/private-AX plus Android evidence is absent. |
bd59d47 to
8b1c813
Compare
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
|
Re-reviewed exact P1 remains on Swift: Coverage is red only from inherited #1860 ratchet drift. The body also still needs the required 24-file scope disclosure and specific live private-AX production evidence. |
Use one preorder label/identifier/value policy across Swift and TypeScript, keep scoped iOS acquisition conservative, and remove the daemon's second scope pass. Non-vacuity: label-only matching failed identifier/value parity fixtures; Android pass-through failed its boundary test; disconnecting Swift applyScope produced eight scope/depth/projection failures.
8b1c813 to
70ef0b6
Compare
|
|
Finished and re-reviewed exact head The exact-head live iOS Settings route also exposed and fixed the simulator's healthy-empty boundary: a scoped empty capture is accepted only with an active scope plus a structured non-sparse runner verdict; unscoped, sparse, and legacy empty captures still fail closed. Live private-AX evidence covers
|
|
Follow-up at |
|
Exact-head update: Coverage is now green on |
Summary
Move snapshot scope selection into each platform's presentation boundary.
Part of #1797.
Validation
Evidence head:
85ac56681b51c0f1a71a7a090e5e879c440f03ae.pnpm check:affected --runpnpm buildpnpm check:xctest-selection— 156 declared methods; 0 unreachableAGENT_DEVICE_XCUITEST_INCLUDE_UNIT_TESTS=1 pnpm build:xcuitest:macospnpm build:xcuitest:ios1 !== 2); before the scoped-empty interactor fix, the production-boundary regression throwsXCTest snapshot returned 0 nodes on iOS simulator70ef0b6d(the final commit changes only the test-size ratchet), Settings on iPhone 17 Pro:snapshot --actions -s General -d 0 --jsonselectedprivate-axand returned only the re-rooted General root;-s zzzz-no-match-tokenreturnedsuccess: truewithnodes: []and the structured private-AX verdict;closesucceededScope: 30 files, 594 additions / 221 deletions, with no expansion beyond snapshot scope ownership, parity evidence, and command documentation. Of that, 332 additions / 124 deletions are the Swift runner policy, presentation move, and XCTest evidence; TypeScript production is 71 additions / 46 deletions; the remainder is tests, the shared fixture, workflow ownership, and docs. CI Size reports +225 B raw JS / +121 B gzip / +3.9 kB npm unpacked. The unpacked-size review trigger was examined: the new Swift policy and presentation seam are the necessary cross-process twin of the TypeScript contract, while keeping scope in the daemon would duplicate the invariant. A tightening pass removed 537 lines of unrelated provider-scenario churn before publication.