LearnNewsExamplesServices
Frontmatter
id19188
titleA window beat can show an empty black vessel with nothing inside
stateClosed
labels
bugaidashboard
assigneesneo-fable
createdAtSep 24, 2026, 7:45 PM
updatedAtSep 25, 2026, 1:36 PM
githubUrlhttps://github.com/neomjs/neo/issues/19188
authorneo-fable
commentsCount5
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtSep 25, 2026, 1:36 PM

A window beat can show an empty black vessel with nothing inside

neo-fable
neo-fable commented on Sep 24, 2026, 7:45 PM

Context

Observed by @tobiu on 2026-09-24 (16:19–16:23Z) on his own display, during a headed replay series of the Workstation film (WorkstationFilmTourNL.spec.mjs -g 'under autoGates' --headed, PR #19182 head 63df09f156 = dev@df68d34493 with #19181's native return): one green run, one red at the second-window beat, one red at the morph. The operator escalated the sighting; this ticket promotes the defect-note (Memory Core b5912c84ec357a47).

The Problem

Observation: one drag produced a popup with a black background and nothing else in it — no pane, no tab strip.

Series facts (from the runs' popup probe): every created vessel closed again in all three runs (3/3, 2/2, 3/3), so the black vessel was transient, not an orphan; the first run created only two vessels because the tour stopped at its failed conversion. Which beat produced the black vessel and for how long it stayed black is unmeasured — the probe records created / loaded / closed, not what a vessel painted.

Inference — three candidates, none proven:

  1. a born vessel painted before its document and pane materialised (the tear-out's mid-gesture birth, or the morph's birth under its 1500 ms hold);
  2. the morph's retiring vessel painted after its pane had left (the re-entry cancels the tear-out, the vessel retires);
  3. a vessel whose theme background never applied, so the body fell to a dark default (the class of VesselPlaceholder's own history: an unaddressed component inherits the user-agent ground).

The Architectural Reality

  • Vessel birth and retirement: src/dashboard/dock/window/TearOut.mjs (the vessel is born mid-gesture, birthHold in the film's morph, previewNodeId), VesselPark.mjs, VesselConversion.mjs; the popup boots its own Workstation app from the ?popout= / ?tearout= URL and adopts the opener's theme at birth (#18672: an adopted instance takes its container's theme).
  • The film's window beats: GestureDriver#executeTearOutStep (tear-out; the morph = tear-out + re-entry), executeCrossWindowDockStep (the second window), NativeGestureDriver#executeNativeReturnStep (the stack's return; the vessel closes after the transfer).

The Fix

Measured 2026-09-25 (comments below): the black window is the morph's vessel (beat 16) — born, viewport mounted, and never given its pane for its whole 2.7 s life, 4 of 4 headed runs. The tear-out vessel's own first-paint void is 150–170 ms (a flash, not this sighting). Mechanism: after the whole-stack native return brings Metrics home, the item's vessel-ownership record stays in the native lifecycle registry with its window nulled; the morph's new vessel binds into that stale record, the connect handler reads it as an already-adopted (terminal-first) vessel, registers the target and skips the connect-first stage.

  1. Clear the returned items' ownership when the return's vessel retires — the native return must leave the registry the way the DOM-grip return does, so the next tear-out of the same item starts clean and stages its pane on connect.
  2. Red-first unit arm on the return path: after the release, getOwner for the returned item is null and a following connect stages.
  3. The film's morph vessel mounts its pane headed, read by the per-frame sampler.

Acceptance Criteria

  • AC-1 The instrumented headed series names the beat, the vessel and the duration of the black frame (or records five runs without one, which closes this as not reproduced with the receipt attached). Met 2026-09-25: the morph's vessel, beat 16, empty for 2.7 s, 4 of 4 at dev@79f81045b3 (issuecomment-5830853813); the mechanism trail in issuecomment-5830993522.
  • AC-2 After the fix the morph's vessel mounts its pane: the per-frame sampler reads pane content within 300 ms of the window's creation, headed 3 of 3 on the film-stage display; the tear-out vessel's first-paint void stays at or under 200 ms. (Restated 2026-09-25: the earlier "and the tab strip before the re-entry" clause is dropped — the connect-first stage embodies the live pane without the document projection, so a pre-terminal vessel carries the pane and no strip by design, exactly as the tear-out vessel does for its first half second; a strip during the morph is a screenplay question, not this defect.)
  • AC-3 The film replay is green headed 3/3 at the PR head on the film-stage display, and a red-first unit arm shows the returned item's ownership cleared after the vessel's release and the next connect staging the pane.
  • AC-4 The PR body names the mechanism.

Out of Scope

The stand-in mask in the parked vessel and the merged vessel's tab-strip gap (their own tickets, filed alongside); the film's screenplay and pacing.

Related

  • #15252 (the film epic; its take is blocked by this), #19126 (the opening), #19182 (the replay series)
  • #18672 (adopted-instance theme), #16498 (resident cards after a place-cycle restore), #19170 / #19181 (the native return, where vessels retire)
  • Sibling tickets filed alongside: #19186 (the stand-in mask in the parked vessel), #19187 (the merged vessel's tab-strip gap)

Live latest-open sweep: checked the latest 20 open issues at 2026-09-24T17:40:30Z; no equivalent found. A2A in-flight sweep 17:42Z: @neo-opus-ada's [lane-claim] 16:45Z on this investigation — this ticket is that lane's record, hence the assignee. Memory Core sweep: no prior ticket on an empty painted vessel; the 2026-09-13 trace covers the mask and the strip only. Own-assignment sweep: none of mine covers it.

Retrieval Hint: query_raw_memories("operator-seen popup glitches Workstation film black empty vessel transient popup probe")

Origin Session ID: 10d33d2d-fa43-45e5-9ae7-d3b985dc6dce

tobiu referenced in commit 4dc6f74 - "fix(workstation): a whole-stack return home retires the returned items' vessel ownership (#19188) (#19208)" on Sep 25, 2026, 1:36 PM
tobiu closed this issue on Sep 25, 2026, 1:36 PM