LearnNewsExamplesServices
Frontmatter
id16683
titlerunTourSpec's full entry projection presents a cleared workspace body
stateClosed
labels
bugai
assigneesneo-fable
createdAtAug 8, 2026, 2:08 PM
updatedAtAug 8, 2026, 3:29 PM
githubUrlhttps://github.com/neomjs/neo/issues/16683
authorneo-fable
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 8, 2026, 3:28 PM

runTourSpec's full entry projection presents a cleared workspace body

neo-fable
neo-fable commented on Aug 8, 2026, 2:08 PM

Context

Falsifier-1 on #16500 (2026-08-08, run under Vega's delegated probe spec with a red-control) located the scene-1 cleared-body red at the TOUR ENTRY, not the resize: control at head ac1c197648 RED minEntropy 0.4088 vs floor 3.4475 with minFrameIndex 7/59 (capture start), treatment with the entry projection under geometry-only admission GREEN 5.3480 vs baseline 5.3515 (no dip). Vega's caveat (green might only prove enclosure) was discharged by the frame index; her verdict on the receipt: the #16473 unconditional full entry projection owns the red. Ownership split agreed on #16500: the oracle instrument (per-step capture + entry-beat coverage) is hers; THIS ticket is the entry seam, mine (62c1a400d3 is my commit). Live latest-open sweep: latest 20 checked 2026-08-08 ~12:07Z, no equivalent; A2A herd-window sweep clean (Vega's DM explicitly assigns me this seam).

The Problem

Workspace.mjs runTourSpec (:2352-2353) swaps the dock document and projects with an unconditional FULL projection. A full projection stages a new shell; the swap-out/swap-in presents at least one compositor frame with a cleared workspace body (~the 40ms blank class from the #16621 era, now measured at tour entry). Every film-mode dense-tour/five-beat run records it; the take-19 v0.4 composition had to trim its opening around exactly this class.

The Architectural Reality

  • DockProjectionReconciler.reconcileStableTopology (src/dashboard/DockProjectionReconciler.mjs:130-166) is STRICTLY validating: returns null on any node-count/type/ancestry/child-order/split-orientation/tab-order delta.
  • reconcileProjection (:314-320) treats geometryOnly as admission to attempt that validated in-place path — null falls through to the full staged transaction. Permissive-when-proven, never skip-validation (Emmy's reconciler read, verified at source this session).
  • The #16473 comment at the call site ("Both projections are full — … neither may declare a geometry-only projection over the transition") is therefore wrong about the FLAG's semantics: a topology-changing swap under admission simply falls back to the staged path. The #16412 hazard it cites belongs to the pre-restore replay-reset era, not to validated admission.
  • runTourSpec entry rebuilds from the same initialDocument the live workspace booted from — the proven-stable case; the validated in-place path applies and no staged repaint (hence no blank) is needed.

The Fix

apps/workstation/view/Workspace.mjs runTourSpec entry: refreshDockWorkspace({geometryOnly: true}) — validated admission, not a blind revert — plus the comment truth-fold to the real contract (admission-with-fallback; cite the reconciler lines). The RESTORE path (restoreDocument branch) deliberately stays full: at probe-restore time the shell typically diverges from the displaced document, so admission would validate-and-fall-back with no gain — an explicit non-change, not an oversight. Witness: unit-level assertion that the entry attempts stable-topology reconciliation and that a changed-topology entry still reaches the staged path (fallback preserved); the film-grade proof rides Vega's per-step oracle once it lands (joint witness run agreed).

Acceptance Criteria

  • The entry projection uses validated in-place admission; the stale comment is truth-folded with contract line citations.
  • Unit witness: same-topology entry takes the in-place path; changed-topology entry falls back to the staged path.
  • Falsifier-1's treatment configuration reproduces green at the repaired head (film-mode scene 1, entropy ≥ floor).
  • Residual documented in-code: a genuinely changed-topology entry still stages fully and may blank — the stronger present-no-intermediate-state shape is explicitly deferred (see Avoided Traps).

Avoided Traps

  • Blind geometryOnly revert: rejected — the fix is admission-to-a-VALIDATING path; framing matters because the old comment claimed the flag was unsafe over transitions.
  • Present-no-intermediate-state (off-document build + atomic commit): stronger (removes the blank for changed-topology swaps too) but disproportionate for the film's need; deferred with the residual documented rather than silently absorbed.
  • Scoping only the oracle capture window: rejected as a substitute — it would green the instrument while the camera still records the blank (Vega's trap note on #16500).

Out of Scope

  • The #16500 oracle refactor (per-step capture + entry-beat coverage) — Vega's, parallel.
  • The restore-path projection (explicit non-change, reasoned above).

Decision Record impact

none — consumes the existing reconciler contract; corrects a wrong code comment.

Related

#16500 (the oracle + the ownership split), #16473 (origin of the full entry), #16412 (the hazard the stale comment cites), #15252 (film epic — the v1 gate).

Origin Session ID: e7da18d8-1563-4ab8-9b88-75afc13aa74e

Retrieval Hint: query_raw_memories("falsifier entry projection geometryOnly validated admission cleared body minFrameIndex")

tobiu referenced in commit 5792ec4 - "fix(workstation): the tour entry projection admits the validated in-place path (#16683) (#16688)" on Aug 8, 2026, 3:28 PM
tobiu closed this issue on Aug 8, 2026, 3:28 PM