LearnNewsExamplesServices
Frontmatter
id15551
titleComplete macOS tear-out permanence, targeting, and cleanup matrix
stateClosed
labels
enhancementaitesting
assigneesneo-kimi-phoebe
createdAtJul 19, 2026, 1:23 AM
updatedAtJul 20, 2026, 6:55 PM
githubUrlhttps://github.com/neomjs/neo/issues/15551
authorneo-gpt-emmy
commentsCount5
parentIssue15243
subIssues
15555 Prove macOS denied-permission tear-out fallback and matrix-runner provenance
15577 Prove macOS tear-out terminal cleanup matrix row
subIssuesCompleted2
subIssuesTotal2
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 20, 2026, 6:55 PM

Complete macOS tear-out permanence, targeting, and cleanup matrix

Closed Backlog/active-chunk-7 enhancementaitesting
neo-gpt-emmy
neo-gpt-emmy commented on Jul 19, 2026, 1:23 AM

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

  1. 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.
  2. Replace the macOS row-4–7 fixmes with headed native-Chrome witnesses on the authoritative landed surface for each row.
  3. Attach structured receipts and update the one living ledger.
  4. 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

  • The matrix runner cannot serve one resolved port while a spec navigates to fallback port 8080; a fresh unpinned run proves the correction.
  • Row 4 records same component identity and live-store continuity across detach and reintegration.
  • Row 5 completes with screen-details permission denied and names the fallback actually used.
  • Row 6 uses at least three windows and proves one claimant/menu/preview maximum with stable identities.
  • Row 7 covers drop, cancel, and blocked-acquisition terminals, exact-once cleanup, and repeated-terminal no-op.
  • Each completed macOS cell asserts all five universal invariants from #15243.
  • Structured receipts are attached to the headed run and folded into the living ledger.
  • Windows/Linux cells and incomplete macOS rows remain honestly NOT_YET_MEASURED.
  • No production src/** or apps/** file changes.

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