Context
This is a substantive macOS execution child of #15243 under epic #15239. The foundation leaf #15426 / PR #15411 is merged and explicitly keeps the complete 7×3 authority on #15243 while reserving remaining rows and platforms for child tickets that update the single living ledger.
This child owns the four now-executable macOS rows that the ledger names together: object permanence/reintegration, screen-topology fallback, multi-window targeting identity, and terminal cleanup. The parent remains open for rows 1–3 completion plus Windows/Linux hardware receipts.
The Problem
The foundation currently leaves rows 4–7 as test.fixme, so no macOS terminal verdict exists for the merged choreography’s most important integrity properties.
The live runner also has a provenance defect that must be repaired before any new receipt is admissible:
playwright.config.matrix.mjs resolves a free PORT for its web server and baseURL;
tearOutMatrix.spec.mjs ignores baseURL and builds an absolute URL from process.env.NEO_E2E_PORT || 8080;
- unlike the accepted e2e/component runners, the matrix config does not pin the resolved port back into
process.env.NEO_E2E_PORT.
An unpinned run can therefore serve this checkout on one port while the test navigates to 8080. reuseExistingServer:false does not protect the page from that split.
The Architectural Reality
The implementation substrate required by these receipts is already merged:
- PR #15413 repaired the false re-entry birth race.
- PR #15444 landed the dock tear-out composition.
- PR #15465 landed deterministic G3 claim arbitration and continuous native preview.
- PR #15480 landed whole-stack reintegration and vessel close.
- PR #15501 landed atomic popup-stack return.
- PR #15505 completed the keyboard-return parity path.
This leaf measures those contracts through their real product surfaces. It does not add another park machine, claim protocol, return reducer, or production fallback.
Placement is existing test/document authority:
test/playwright/playwright.config.matrix.mjs
- the current matrix witness family under
test/playwright/e2e/
learn/guides/specificfeatures/TearOutPortabilityMatrix.md
The repository structure map was run before filing. Production source is out of scope.
The Fix
- Repair matrix-runner navigation provenance so every spec consumes the exact resolved server/base URL. Prefer relative navigation through Playwright’s configured
baseURL; no second port resolver.
- Replace the macOS row-4–7 fixmes with headed native-Chrome witnesses on the authoritative landed surface for each row.
- Attach structured receipts and update the one living ledger.
- Promote a macOS cell from
NOT_YET_MEASURED only when the row receipt and all five universal invariants are asserted. Otherwise retain the honest hole and record only qualified probe progress.
Contract Ledger
| Row |
Producer / mechanism |
Required macOS receipt |
Consumer |
| Runner provenance |
matrix config + relative navigation |
page and web server share the same resolved checkout/port |
every row |
| 4 — permanence |
merged tear-out + whole-stack return |
identical component identity and live store references before detach and after reintegration; streaming remains live |
G1/G4 defaults |
| 5 — topology |
denied getScreenDetails permission |
full flow completes through the documented fallback; denial is not a prerequisite failure |
portable placement default |
| 6 — targeting |
merged G3 workspace-set claim protocol |
with at least three windows, at most one target exposes one menu and one preview for the gesture; identity remains stable |
overlap arbitration |
| 7 — cleanup |
merged terminal/outcome machines |
drop, cancel, and blocked acquisition each clean exactly once; a repeated terminal is a no-op |
lifecycle correctness |
| Every completed cell |
universal invariant set |
gesture continuity, same-instance permanence, JSON-only persisted state, exact-once commit, idempotent cleanup |
#15243 verdict |
Decision Record Impact
No ADR change. This child consumes ADR 0029 and the graduated Discussion #15204 matrix contract.
Decision Record
No new decision record is needed; this is executable evidence against already merged contracts.
Acceptance Criteria
Out of Scope
- Completing macOS rows 1–3.
- Windows/Linux receipts; #15239 assigns those to operator-provided real desktop runs.
- Production fixes or new choreography.
- The #15395/#15396 in-gesture park composition.
- Replacing the matrix runner or creating a second evidence ledger.
Avoided Traps
- No headless/virtual-display result presented as native placement evidence.
- No mocked reducer proof substituted for the real headed product surface.
- No verdict promoted from partial probe receipts.
- No second port authority or hard-coded 8080 fallback.
- No scope absorption from the still-owned park-machine lane.
Related
Freshness Receipt
Immediately before creation at 2026-07-18T23:23:22.223Z, the latest 20 open issues, the latest 30 A2A messages across read states, a targeted all-state GitHub search, and the local issue/ledger archive were checked. No equivalent rows-4–7 macOS child or active collision was found.
Handoff
Start from fresh origin/dev. Keep the change test+ledger-only. The first executable red control is the current config/spec port split; repair it before accepting any new headed receipt.
Origin Session ID: ad71d4c3-3e37-4a17-8df7-8415509def84
Retrieval Hint: macOS tear-out matrix rows 4 5 6 7 permanence topology targeting cleanup port split
Context
This is a substantive macOS execution child of #15243 under epic #15239. The foundation leaf #15426 / PR #15411 is merged and explicitly keeps the complete 7×3 authority on #15243 while reserving remaining rows and platforms for child tickets that update the single living ledger.
This child owns the four now-executable macOS rows that the ledger names together: object permanence/reintegration, screen-topology fallback, multi-window targeting identity, and terminal cleanup. The parent remains open for rows 1–3 completion plus Windows/Linux hardware receipts.
The Problem
The foundation currently leaves rows 4–7 as
test.fixme, so no macOS terminal verdict exists for the merged choreography’s most important integrity properties.The live runner also has a provenance defect that must be repaired before any new receipt is admissible:
playwright.config.matrix.mjsresolves a freePORTfor its web server andbaseURL;tearOutMatrix.spec.mjsignoresbaseURLand builds an absolute URL fromprocess.env.NEO_E2E_PORT || 8080;process.env.NEO_E2E_PORT.An unpinned run can therefore serve this checkout on one port while the test navigates to 8080.
reuseExistingServer:falsedoes not protect the page from that split.The Architectural Reality
The implementation substrate required by these receipts is already merged:
This leaf measures those contracts through their real product surfaces. It does not add another park machine, claim protocol, return reducer, or production fallback.
Placement is existing test/document authority:
test/playwright/playwright.config.matrix.mjstest/playwright/e2e/learn/guides/specificfeatures/TearOutPortabilityMatrix.mdThe repository structure map was run before filing. Production source is out of scope.
The Fix
baseURL; no second port resolver.NOT_YET_MEASUREDonly when the row receipt and all five universal invariants are asserted. Otherwise retain the honest hole and record only qualified probe progress.Contract Ledger
getScreenDetailspermissionDecision Record Impact
No ADR change. This child consumes ADR 0029 and the graduated Discussion #15204 matrix contract.
Decision Record
No new decision record is needed; this is executable evidence against already merged contracts.
Acceptance Criteria
NOT_YET_MEASURED.src/**orapps/**file changes.Out of Scope
Avoided Traps
Related
Freshness Receipt
Immediately before creation at 2026-07-18T23:23:22.223Z, the latest 20 open issues, the latest 30 A2A messages across read states, a targeted all-state GitHub search, and the local issue/ledger archive were checked. No equivalent rows-4–7 macOS child or active collision was found.
Handoff
Start from fresh
origin/dev. Keep the change test+ledger-only. The first executable red control is the current config/spec port split; repair it before accepting any new headed receipt.Origin Session ID:
ad71d4c3-3e37-4a17-8df7-8415509def84Retrieval Hint:
macOS tear-out matrix rows 4 5 6 7 permanence topology targeting cleanup port split