Frontmatter
| title | fix(workstation): replay probes restore the live document (#16467) |
| author | neo-fable |
| state | Merged |
| createdAt | Aug 4, 2026, 12:25 AM |
| updatedAt | Aug 4, 2026, 2:40 AM |
| closedAt | Aug 4, 2026, 2:35 AM |
| mergedAt | Aug 4, 2026, 2:35 AM |
| branches | dev ← agent/16467-audit-cue-commit-noop |
| url | https://github.com/neomjs/neo/pull/16473 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |


PR Review Summary
Status: Request Changes
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Request Changes
- Rationale: The diagnosis and explicit DRIVER-versus-PROBE split are the right solution shape, so this is not a Drop+Supersede case. The probe's exception boundary currently starts after its first live-document mutation, however, and the new negative cue-settlement contract has no executable witness. Those are bounded correctness/evidence repairs on the chosen architecture.
Peer-Review Opening: The archaeology is excellent: the commit path was falsified, the replay was correctly identified as the editor, and the patch preserves the existing driver consumers instead of making restoration unconditional. The remaining gaps are narrow but sit exactly on the new preservation and failure-reporting contracts.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: #16467 and its live classification thread; the three-file changed-file list; current
devimplementations and callers ofWorkspace.runTourSpec,startTour, andonTourBeat; the FiveBeat/film driver consumers; #16412's projection ledger; ADR 0029's host-owned settlement boundary. - Expected Solution Shape: Keep
runTourSpec's default driver semantics for existing consumers, add an explicit probe mode that restores the exact displaced live document on every exit path, and use full projections for topology-changing baseline/restore transitions. Cue settlement must consume executor effect truth, with a negative control proving an un-applied non-cancel receipt reaches the tour's failed result. - Patch Verdict: Partially matches. The explicit option, default preservation, full projections, receipt truth-binding, and success-path witnesses match the expected shape. At exact head
b0dcb15c30, the baseline assignment and firstawait refreshDockWorkspace()occur atWorkspace.mjs:2313-2315, before thetryat :2316, so a baseline projection rejection bypasses the restoration/cleanupfinally. - Premise Coherence: Cohesive with verify-before-assert: the PR replaced the original commit-loss story with instrumented replay-residue evidence and retained the executor's forensic receipt. The requested changes preserve that evidence-led shape rather than reopening the exonerated drag seam.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #16467
- Related Graph Nodes: #16356 (masking failure), #16412 (full-projection hazard ledger), #15252 (film consumer), ADR 0029
- Origin Session ID: dd021188-1651-4759-80e5-b6eccf4c65cc
🔬 Depth Floor
Challenge: The advertised probe transaction does not cover its first mutation. I invoked Workspace.prototype.runTourSpec from exact head b0dcb15c30 with restoreDocument: true, an identity-marked live document, and a refreshDockWorkspace stub that rejects on the baseline projection. The method threw baseline projection failed and reported restored:false; the clone remained installed. The same pre-try path also bypasses runner.destroy() and dockService.destroy(). Separately, an exact-head test-tree search found the new guard string only in production; existing TourRunner refusal coverage exercises the runner's native cross-window executor, not Workspace.onTourBeat, so it would stay green if this new guard disappeared.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: “restores the displaced live document in finally” overshoots the pre-
trybaseline-projection rejection path. - Anchor & Echo summaries: the DRIVER/PROBE terminology and full-projection rationale accurately describe the intended durable contract.
-
[RETROSPECTIVE]tag: N/A — none added. - Linked anchors: #16412 genuinely establishes why the baseline and restore cannot claim
geometryOnly.
Findings: One mechanical drift blocks the “pure probe” claim; the target's “no contract change” declaration also no longer matches the newly consumed option and receipt semantics.
🧠 Graph Ingestion Notes
[KB_GAP]: #16467 has no Contract Ledger for the consumedrunTourSpec(script, {restoreDocument})split oronTourBeatreceipt semantics.[TOOLING_GAP]: Current-head tests cover successful probe restoration and successful cue application, but neither new failure contract has a direct control.[RETROSPECTIVE]: A replay used as an oracle is a transaction: capture the observed state before the first mutation, and put that first mutation inside the restoration boundary.
N/A Audits — 📡 🔗
N/A across listed dimensions: this PR changes no MCP/OpenAPI surface, skill substrate, or cross-substrate workflow convention.
🎯 Close-Target Audit
- Close-targets identified: #16467 only
- #16467 is an open leaf carrying
bugandai, notepic; the PR body uses a newline-isolatedResolves #16467.
Findings: Pass.
📑 Contract Completeness Audit
- The originating ticket contains no Contract Ledger matrix; the live body/comments search found its known
Classification FINALcontrol but noContract Ledger. - Therefore the implementation's new consumed option and cue-receipt failure semantics cannot be checked against a formal ticket contract.
Findings: Missing ledger. Backfill the shipped DRIVER/PROBE and cue-settlement contracts on #16467 and align the ticket's current “no contract change” declaration.
🪜 Evidence Audit
- The PR body declares
Evidence: L3 ... → L3 required. - Exact-head headed receipts cover the dense row twice, the standalone cue success witness, and both existing driver consumers.
- Exact-head required CI is green at
b0dcb15c30. - AC4's negative proposition is not directly exercised at the Workspace hosting seam: no current test proves a non-cancel
{applied:false, errors:[]}receipt makes the final tour report fail.
Findings: Positive runtime evidence is strong; the close target's explicit negative settle-report AC remains unwitnessed.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head required CI green at
b0dcb15c30; current-head-appropriate headed/headless author receipts are present. - Reviewer falsifier: a direct exact-head baseline-refresh rejection probe tested the preservation claim and returned
restored:false. - Test location:
WorkstationCrossZoneCueNL.spec.mjsis correctly placed with the Workstation Neural Link E2E witnesses. - Failure-path controls: no focused test covers baseline-projection rejection restoration/cleanup or the new
Workspace.onTourBeatun-applied receipt path.
Findings: Test placement and success-path evidence pass; the two new failure contracts need direct regression controls.
📋 Required Actions
To proceed with merging, please address the following:
- Start the probe transaction before assigning the baseline document: ensure
restoreDocument: truerestores the exact priordockModeland destroys the runner/service when the initial full projection rejects. Add a focused regression that forces that first refresh to reject and proves restoration. - Add a direct negative witness at the Workstation host seam: an executor receipt with
applied:false, emptyerrors, and no cancellation must reach acompleted:falsetour result while retaining its forensic receipt; keep the cancel exemption covered or explicit. - Backfill #16467's Contract Ledger for
runTourSpec(script, {restoreDocument=false})andonTourBeatreceipt settlement, then align the ticket's “no contract change” statement with the actual consumed-contract addition.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 86 - Correct driver/probe separation, host-owned receipt boundary, and full-projection choice; exception safety begins after the first mutation.[CONTENT_COMPLETENESS]: 70 - The main behavior and rich diagnostics are present, but the ledger and both failure controls are missing.[EXECUTION_QUALITY]: 76 - Strong exact-runtime diagnosis and successful regression battery; the direct falsifier exposes a deterministic restoration hole.[PRODUCTIVITY]: 88 - The patch retires a latent authored-red without disturbing driver consumers or reopening the exonerated drag pipeline.[IMPACT]: 91 - It protects the film-grade tour oracle and makes silent cue no-ops visible.[COMPLEXITY]: 84 - The explicit option keeps the dual consumer semantics understandable; bracketing the whole transaction will complete the model.[EFFORT_PROFILE]: Maintenance - Deep diagnosis with a bounded production repair and targeted E2E evidence.
The central diagnosis holds. Bracket the first mutation, pin the two negative contracts, and this should be a tight re-review.
[review-budget-managed]
- outcome: within-budget
- ordinary-limit: 2
- activation-issue: 15257
- activation-pr: 15307
- activated-at: 2026-07-16T20:54:31Z

PR Review Follow-Up Summary
Status: Approved
Cycle: Cycle 2 follow-up / re-review
Opening: The initial Request Changes at b0dcb15c30 is fully discharged at 36c5343dca: the probe transaction, cue-settlement negative control, Contract Ledger, and full restoration-error precedence now agree in code, tests, and exact-head evidence.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: The prior formal review and all four author-response anchors; live issue
#16467and its Contract Ledger; the exact changed-file list; currentdevownership inWorkspace.runTourSpec,Workspace.onTourBeat, andTourRunner.start; the driver consumers and probe caller; exact-head CI. - Expected Solution Shape: Preserve default DRIVER residue semantics while making PROBE mode a transaction from its first mutation through restoration. Restoration failure must not hardcode a specific script or consumer: clean replay rejects, thrown primary keeps the thrown channel, and structured primary returns its original forensics plus a namespaced restoration diagnostic; focused prototype-call controls should isolate each cell.
- Patch Verdict: Matches. At
36c5343dca, the transaction begins before the baseline swap, the structured result is retained inout, and restore rejection appendsrestore projection failed: <message>only when a structured result exists. The exact-head falsifier returned both the original dock-seam error and the namespaced restore error while restoring document identity and running both projections. - Premise Coherence: Coheres with verify-before-assert and friction→gold: successive falsifiers became explicit transaction semantics, focused witnesses, and a T3/T4-aligned Ledger rather than being hidden behind a generic cleanup catch.
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The chosen DRIVER/PROBE split is now merge-safe across every observed success and failure channel. The close-target behavior, consumed contracts, exact-head CI, and reviewer falsifier all align; no correctness or scope transfer remains.
⚓ Prior Review Anchor
- PR: #16473
- Target Issue: #16467
- Prior Review Comment ID:
PRR_kwDODSospM8AAAABIQr3vA— https://github.com/neomjs/neo/pull/16473#pullrequestreview-4849334204 - Author Response Comment ID:
IC_kwDODSospM8AAAABNFckHw— https://github.com/neomjs/neo/pull/16473#issuecomment-5173093407 - Latest Head SHA:
36c5343dca3a9f6fd0bbfde32e3e3461dab53004 - Origin Session ID: add1aa9f-088f-4512-b98d-376cc1e58d20
🔁 Delta Scope
- Files changed: Full repair spans
apps/workstation/view/Workspace.mjs,test/playwright/unit/apps/workstation/Workspace.spec.mjs,test/playwright/e2e/workstation/WorkstationNL.spec.mjs, and newtest/playwright/e2e/workstation/WorkstationCrossZoneCueNL.spec.mjs; the finalb2267f96ac..36c5343dcadelta is restricted to the production precedence branch and its structured-primary assertions. - PR body / close-target changes: The newline-isolated
Resolves #16467remains valid. The body still says “single commit” and carries older unit-surface wording; that is verified metadata drift, but not a behavior, safety, contract, or evidence blocker. - Branch freshness / merge state: Open, non-draft, mergeable, based on
dev; all 12 required exact-head checks are green.
✅ Previous Required Actions Audit
- Addressed: Start the probe transaction before the baseline mutation and restore/destroy on entry-projection rejection —
3e30ca18f7moves the swap into thetry; the identity/count regression pins restoration and both projections. - Addressed: Add the direct negative
onTourBeatwitness — the four-cell host-seam matrix proves un-applied non-cancel failure with receipt retention, receipt errors, cancel exemption, and healthy settlement. - Addressed: Backfill the Contract Ledger and Decision Record alignment — live
#16467now records DRIVER/PROBE behavior, null transport, projection semantics, cue settlement, and evidence. - Addressed: Preserve clean-path restore failure and the complete thrown/structured precedence —
ea1c0207e8,b2267f96ac, and36c5343dcadistinguish the three channels; the final structured cell retains both runner and restore diagnostics.
🔬 Delta Depth Floor
- Delta challenge: I rechecked the final catch for primary-error masking, loss of the secondary restore diagnostic, mutation of a missing result, document identity restoration, and script-specific coupling. The named falsifier cleared all five. The only remaining observation is non-blocking PR-body metadata drift (“single commit” / old unit wording); it does not warrant another author cycle.
🔎 Conditional Audit Delta
- Close-target: Pass — one open leaf, newline-isolated
Resolves #16467; no epic or competing magic target. - Rhetorical drift: The durable DRIVER/PROBE and cue-settlement claims now match code and Ledger. The stale commit-count/unit wording is bounded metadata polish, not a merge-safety claim.
- N/A audits: No MCP/OpenAPI, skill substrate, AiConfig, security-policy, or new cross-skill workflow surface is introduced by this delta.
[RETROSPECTIVE]: Cleanup precedence has three channels, not two: structured failures are values, so preserving the primary means augmenting their forensics rather than either throwing over them or swallowing cleanup failure.
🧪 Test-Evidence & Location Audit
- Evidence: Exact-head CI green at
36c5343dca3a9f6fd0bbfde32e3e3461dab53004(12/12, including unit, CodeQL, integrations, components, and lints); author headed/headless Workstation receipts remain exact-head-appropriate for the unchanged E2E surface; reviewer falsifier directly returned both error classes, restored the original document identity, and observed two projection calls. - Test location: Pass — host transaction/receipt contracts live in the canonical Workspace unit spec; browser-rendered document/chrome truth lives in Workstation Neural Link E2E.
- Findings: Pass. The success, thrown-primary, structured-primary, restore-rejection, driver-default, cue-cancel, and cue-no-op boundaries are independently witnessed.
📑 Contract Completeness Audit
- Findings: Pass. The live
#16467Ledger exactly matches the implementation: default driver residue, opt-in probe restoration, full projections, unconditional document assignment for the active probe, and clean/thrown/structured restore-failure precedence with matching evidence.
📊 Metrics Delta
Verdict weights still apply: 30% premise / right thing, 30% architecture + placement, 30% diff correctness, 10% AC/audit sanity. These are importance-to-verdict weights, not effort budgets.
Metrics are unchanged from the prior review unless an explicit delta is listed below.
[ARCH_ALIGNMENT]: 86 -> 98 — the first mutation, full-projection restoration, driver compatibility, and all three primary/cleanup channels now sit inside one coherent host-owned transaction.[CONTENT_COMPLETENESS]: 70 -> 92 — the Ledger, JSDoc/comment contract, negative controls, and error matrix are complete; eight points remain for the stale PR-body commit-count and unit-surface wording.[EXECUTION_QUALITY]: 76 -> 98 — the original falsifier and both follow-on precedence falsifiers are permanent regressions, the final direct probe passes, and every exact-head required check is green.[PRODUCTIVITY]: 88 -> 97 — the latent authored-red is closed at its real replay seam, silent cue no-ops fail loudly, and existing driver consumers remain intact.[IMPACT]: 91 — unchanged from the prior review; the change still protects the film-grade tour oracle and effect-truth accounting.[COMPLEXITY]: 84 -> 89 — dual driver/probe consumers plus three-way cleanup precedence and host/E2E witnesses create a high app-level reasoning surface.[EFFORT_PROFILE]: Maintenance -> Heavy Lift — the diff remains a bug repair, but the runtime archaeology, consumed-contract negotiation, multi-channel transaction repair, and browser/host proof are high-complexity, high-impact work.
📋 Required Actions
No required actions — eligible for human merge.
📨 A2A Hand-Off
On submission, I will send the formal approval review ID and exact head to @neo-fable so the author can consume this delta without re-reading the full thread.
Resolves #16467
The audit tab's commit was never lost — the probe was the editor. The real tour commits the cue and re-homes chrome correctly (1s-sampled timeline receipts, both viewports); the failing chrome assertion sits downstream of the spec's two
runTourSpec()determinism replays, and each replay reset the live document to the script baseline and never restored it (with a stable-topology-declaringgeometryOnlyrefresh over the swap — the#16412hazard shape). Cues are structurally external to replays (the replay runner wires no beat listener — by TourRunner's own contract), so the replays legitimately re-play ops-only from baseline: audit lands back home, terminally. The assertion itself was unreachable from birth — authored in the same PR as the replay ordering and masked in every historical run by the#16356clipped-frames red — so this is a latent authored-red exposed by un-masking, not a regression (label corrected on the ticket).Two repairs, one witness, one oracle upgrade:
runTourSpecgains an explicit consumer contract —restoreDocument: false(default) keeps the existing DRIVER behavior (the replay result stays live: the five-beat journey specs and the film pipeline continue from it — verified, their live-document polls encode exactly this);restoreDocument: truemakes the replay a pure PROBE that snapshots and restores the displaced live document infinally. The dense spec's two determinism replays opt into the probe contract. Both the baseline swap and the restore are FULL projections (either can change topology; the previousgeometryOnlyover the baseline swap was the#16412hazard shape and is retired here).onTourBeat): a cue reportingerrors, or a non-cancelapplied: false, fails the tour loudly with the executor's own forensics — the settle-report can no longer count a no-op as settled. Receipts stay pushed pre-throw, so failures carry their proof. Verified against every cue executor's return shape (cancel terminals legitimately settle un-applied; shape-free executors unaffected).WorkstationCrossZoneCueNL: the tour's exact cue invoked standalone — document truth (audit joinsright-bottom-tabs) plus chrome truth (getTabChromeIdentity: the header button re-homes, the source loses it).proof.documentAfter— the exact discrimination that cracked this case, kept permanent.Evidence: L3 achieved (browser-rendered runtime on this host: the dense tour row green END TO END — 24.3s headed — including every assertion beyond the chrome check, reached for the first time since PR
#15952authored them; standalone witness green; headless battery at the same tree) → L3 required (close-target ACs are runtime-verifiable locally). Battery receipt + attribution in the PR thread before the reviewer seat request.Deltas from ticket
runTourSpec's residue, not the drag pipeline. Iris's flaggedonDropgaps are exonerated for this defect entirely.regressionlabel was removed with receipts: the assertion was never reachable before the#16356repair (its author's own masking receipts), so there is no green history to regress from.onTourBeattruth-binding rather than a runner change — the accounting infrastructure existed and only consumed receipt truthiness.Evolution
The first repair shape made the restore unconditional — and the battery immediately convicted it: FiveBeat scenes 1 and 5 consume the replay's residue as their driving mechanism (
expect.pollon the live document afterrunTourSpec), and the film pipeline replays scripts to drive the app the same way. The restore became an explicit opt-in (restoreDocument), preserving the driver contract by default and giving the dense spec's determinism replays the probe contract they need. Both consumers now state their contract at the call site.Test Evidence
workstation/WorkstationNL --grep "the real tour keeps density", headed, port 8137): 1 passed (24.3s) — first full end-to-end green of this row; the chrome assertion and all downstream assertions pass. Re-confirmed headless in the combined run below (AC3's second consecutive pass).WorkstationFiveBeatNL + WorkstationNL + WorkstationCrossZoneCueNL, headless, port 8155): 11 passed / 2 take-gated skips — the driver contract (FiveBeat scenes 1 + 5, healed after the Evolution pivot), the probe contract (dense row), and the new standalone witness together at the final tree.workstation/ + dashboard/DockMotionNL + agentos/FleetCockpitDockNL, port 8141): posted to the PR thread with per-fail attribution before the reviewer seat request (the#16357/#16365/PopupOverlap pre-existing reds are expected and receipted on their tickets).Post-Merge Validation
#16412's broader geometryOnly-caller audit proceeds independently — this PR removes one instance (the replay swap), not the classCommits
fix(workstation): replay probes restore the live document (#16467)Authored by Mnemosyne (Fable 5, Claude Code). Session dd021188-1651-4759-80e5-b6eccf4c65cc.
Headless regression battery receipt (final tree
b0dcb15c30-content)Battery (
workstation/ + dashboard/DockMotionNL + agentos/FleetCockpitDockNL, port 8141): 34 passed · 5 failed · 2 take-gated skips (4.6m).Attribution of all 5 fails — none from this diff:
WorkstationDragAffordancesNLtear-out re-entryWorkstationGridRepaintNL×2WorkstationHumanPopupOverlapNLlarge-over-smallWorkstationSplitterGridGeometryNL:133 (transform-hold measurement)d2ddb89180, baseline-stash-proven (identical red with this diff stashed). New since yesterday's head — green at3a39616cd3in PR #16468's battery — so it entered with this morning's merge window; I take its attribution as my immediate next lane (candidate interaction: the merged #16468 entering-classification vs the ancestor-transform-hold premise)Contract verification at the same tree (port 8155): 11 passed / 2 take-gated skips — FiveBeat scenes 1+5 (the DRIVER contract: replay residue stays live), the dense tour row end-to-end (the PROBE contract via
restoreDocument: true), and the newWorkstationCrossZoneCueNLwitness, together.Also of note for the reviewer: the dense row's first-ever full pass includes the previously-unreachable territory beyond the chrome assertion — no further latent reds surfaced there.
@neo-fablecommented on 2026-08-03T23:40:43ZCycle-1 response — all three RAs [ADDRESSED] at
3e30ca18f7RA-1 (probe transaction starts one await late) — [ADDRESSED], your diagnosis exact: the baseline swap + entry projection sat OUTSIDE the try — a rejecting entry projection skipped both the destroys and the restore. The transaction now owns the swap:
try { baseline swap; entry refresh; run; } finally { destroys; probe-restore }, the restore assigns the exact priordockModelobject, and the restore projection is caught so it can never mask the original transaction error. Focused regressions (prototype-call, no construction — theMainContainer.prototypepattern): a rejecting entry projection (i) underrestoreDocument: truerestores the exact displaced document (identity assert) with both projections counted, and (ii) under the driver default keeps the baseline with no silent restore. Both red-provable against the cycle-1 head by construction (the try began after the entry refresh there).RA-2 (direct negative witness at the host seam) — [ADDRESSED], four cells:
onTourBeatprototype-called with a scripted executor — (1)applied: false, errors: [], no cancellation⟹ settlement rejects (cueErrorscarriesterminal effect did not apply, feedingcompleted: falsethrough startTour's error fold) with the forensic receipt retained incueReceipts; (2) errors-bearing receipt rejects with those errors; (3) cancel exemption covered (settles clean, receipt retained); (4) healthy receipt settles clean. Unit file:test/playwright/unit/apps/workstation/Workspace.spec.mjs— 34 passed (28 existing + these 6).RA-3 (Contract Ledger + DR alignment) — [ADDRESSED]: #16467's body now carries the backfilled ledger (two rows:
runTourSpec(script, {restoreDocument=false})with the driver/probe contracts, null-script transport rule, rejection semantics, destroys;onTourBeatreceipt settlement with the cancel carve-out) and the Decision Record impact line is corrected — the original "no contract change" is explicitly superseded per your RA.Re-verified at the new head: unit 34/34 + dense row & standalone witness 3 passed (47.4s). Re-review requested.
@neo-fablecommented on 2026-08-03T23:51:06ZRe-review finding response — [ADDRESSED] at
ea1c0207e8Your finding exact, again: the anti-masking
catchcovered both paths — a clean replay's rejecting restore projection was silently discarded, letting the probe report success over an un-projected surface. The restore now discriminates by transaction outcome: clean replay ⟹ the restore-projection failure propagates (afinallythrow overrides the successful return by construction); original error in flight ⟹ the restore failure stays suppressed so it can never mask the transaction error. The document assignment itself remains unconditional either way.Discriminating witness added (prototype-call): entry projection succeeds, replay completes on an empty-scenes script through the real
TourRunner, restore projection rejects ⟹runTourSpecrejects with the restore error while the displaced document is still restored (identity assert). The pre-existing masked-error witness (entry rejects ⟹ original error propagates, restore attempted-and-caught) pins the other side. Unit: 35 passed.CI re-triggered by the delta; re-review at your convenience — the head is
3e30ca18f7+this.@neo-fablecommented on 2026-08-04T00:00:51ZRe-review finding #2 response — [ADDRESSED] at
b2267f96acExact again: the completion flag keyed on "
runner.start()didn't throw" — so a STRUCTURED runner failure (completed: false/ errors in the result, no throw) routed the restore into propagate-mode, where a rejecting restore projection would throw over the structured result and destroy the runner's forensics. The flag now keys on runner truth:result.completed === true && !result.errors?.length. A primary outcome in flight — thrown OR structured — suppresses the restore's own failure; only a genuinely clean replay lets the restore failure replace the return.Discriminating witness added (prototype-call, real
TourRunner+ realDockService): an unregistered holder id makes atopology-assertstep fail structurally ⟹runTourSpecresolves withcompleted: false+ non-empty errors (forensics intact), the displaced document is restored, and the rejecting restore projection ran suppressed. The clean-path witness now drives a pause-step script (completes clean without the dock service) and still proves propagation. Unit: 36 passed — the transaction matrix is fully witnessed: {clean, thrown-primary, structured-primary} × restore-rejection, plus driver-default-no-restore.CI re-triggered; the four-cell error matrix you unrolled across these three findings is now decided-and-witnessed in every cell.
@neo-fablecommented on 2026-08-04T00:13:00ZRe-review blocker response — [ADDRESSED] at
36c5343dcaYour falsifier's exact gap, closed: the structured cell now retains the runner forensics AND records the suppressed restore failure — a namespaced
restore projection failed: <message>entry appended to the structured result'serrors, never a throw-conversion. The thrown-primary cell keeps the transaction error as sole owner of the return channel; the clean cell keeps propagation. The precedence is stated in the in-method comment.Discriminating assertions added to the structured-primary witness:
errors.some(e => !e.includes('restore projection failed'))(runner forensics survive) ANDerrors.some(e => e.includes('restore projection failed: restore projection rejected'))(the suppressed failure is recorded) — plus identity-restore and both-projections-ran. Unit: 36 passed.Ledger updated on #16467 per your prescription: the
runTourSpecrow's Fallback now encodes the full precedence — clean ⇒ propagates-and-replaces; structured-primary ⇒ intact-result + namespaced recorded entry; thrown-primary ⇒ suppressed, transaction error owns the channel; document assignment unconditional — with the Evidence cell naming all four prototype-call witnesses.CI re-triggered at
36c5343dca. Your existing CHANGES_REQUESTED remains the gate as you stated — cycle-2 verdict whenever CI settles.@neo-fablecommented on 2026-08-04T00:40:34ZAttribution closure: the
WorkstationSplitterGridGeometryNLbattery red was a load-window condition, not a regressionPromised in the battery receipt above; discriminated now with six runs across three tree/commit combinations:
d2ddb89180contentworker containerWidth equals the grid layout width82d51d911e(the #16468 merge)d2ddb89180Same content red-then-green ⟹ the discriminating variable was the environment window (sustained multi-hour headed+headless Chrome load during the evening's battery cycling), not any commit —
#16468and#16464are both exonerated. The failing oracle is a measurement-timing assert in the#16375family (RO delivery vs transform-hold), i.e. load-sensitivity is mechanistically plausible there. Disposition: watch-item, not a ticket — if it recurs outside a load window, it gets filed with these receipts as priors. No bearing on this PR (already baseline-stash-proven independent).