LearnNewsExamplesServices
Frontmatter
id19770
titleTwo Workstation NL witnesses flake on their own instruments
stateClosed
labels
bugaitesting
assigneesneo-opus-grace
createdAtOct 15, 2026, 8:01 PM
updatedAtOct 15, 2026, 8:26 PM
githubUrlhttps://github.com/neomjs/neo/issues/19770
authorneo-opus-grace
commentsCount0
parentIssue19655
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtOct 15, 2026, 8:26 PM

Two Workstation NL witnesses flake on their own instruments

Closed Backlog/active-chunk-9 bugaitesting
neo-opus-grace
neo-opus-grace commented on Oct 15, 2026, 8:01 PM

Context

On #19767 (4fed2f7c3a), two Brain-gated e2e shards failed both their attempt and their retry, then passed on re-run (run 38777334496, attempt 3). Sophie's receipt names the jobs (…827, …725); the shards' only code change was a unit fixture. Both failures come from the witness's own instrument, not from a product regression.

The Problem

WorkstationTabDragLabelOverlapNL.spec.mjs:57. The positive control "phase A exercised the sort machinery" asserts that a sampled frame shows the designed same-row slide-past crossing (sameLayer.length > 0). Locally on dev 7f0856c106 the spec failed 2 of 3 runs, always with 0 crossings, never a few. CI showed the same signature: canary 1/17/1, two DockFlip.play calls with geometryOnly: false. A probe of the same gesture recorded the strip's label order before and after. In 4 of 4 runs the order flipped, from ['Metrics', 'Audit'] to ['Audit', 'Metrics']; one of those runs sampled 0 crossings and the other three 10. The sort always runs. Whether a sampled frame catches the slide-past overlap is a race, so the control fails on a sort that happened.

WorkstationEdgeSplitterNL.spec.mjs:35. findEdgeSplitter lists the splitters, then calls getResizeConfig on each inside try/catch. A projection tick can replace a splitter generation between the two calls. The call then hits a destroyed id: the spec catches the throw, but Neo.ai.Client logs Failed to handle message Instance not found: neo-dashboard-dock-splitter-1 (src/ai/Client.mjs:295). The workerErrors fixture (test/playwright/fixtures.mjs:136) fails every test whose page received a worker error the test did not name. So the spec's own probe trips its own oracle, more often on slower runners.

The Architectural Reality

  • test/playwright/fixtures.mjs workerErrors: a test names an error it causes with workerErrors.expect(RegExp). Precedent: DockCrossWindowWitnessNL.spec.mjs:25, CanvasGroupPainting.spec.mjs:200.
  • The tab-drag witness's other terminal controls stay as they are: the canary, DockFlip.play with geometryOnly: false, and the branch classification. The same-row crossings stay recorded as diagnostics, as the spec already labels them.

The Fix

  1. WorkstationTabDragLabelOverlapNL.spec.mjs: read the strip's header-label order before and after the gesture, and replace the sampled-crossing control with "the order flipped". Keep the crossings as a logged diagnostic.
  2. WorkstationEdgeSplitterNL.spec.mjs: take the workerErrors fixture, and when a probe of a candidate id throws, name that id's Instance not found line, and only that id's.

Acceptance Criteria

  • AC-1: The tab-drag witness's sort control asserts the order flip, and fails when the gesture does not cross the other label's centre (a mutation shown in the PR).
  • AC-2: The edge-splitter witness names only the Instance not found lines of ids its own probe hit; any other worker error still fails it.
  • AC-3: Both specs pass on repeated local runs (--repeat-each=4 --retries=0), with the receipt in the PR.

Out of Scope

Whether the slide-past animation should always paint an overlapping frame, which is cosmetic and not this witness's defect. Neo.ai.Client logging failed requests it also returns to the caller is a product contract, left as it is.

Related

#19655 (the hosted tier, parent) · #19767 (where both surfaced) · #16406 (the tab-drag witness's defect) · #18705, #18521 (the last fixes to each spec)

Live latest-open sweep: latest 20 open issues at 2026-10-15T18:00:49Z; no equivalent found A2A claim sweep: Sophie's 17:37Z receipt and my 17:41Z reply taking both; no other claim MC sweep: "tab drag label overlap witness positive control same-row slide-past crossing flaky; edge splitter Instance not found dock splitter worker error", 5 results, no prior decision on either Own-assignment sweep: 4 open (#19766, #19765, #19652, #15000), none overlapping

Retrieval Hint: "Workstation NL witness instrument flake order flip workerErrors probe miss" Origin Session ID: 77c3c004-7908-4549-9190-b4f9c3cfa9dc

tobiu referenced in commit 298ef00 - "test(workstation): two NL witnesses prove their gesture by its outcome and name their own probe misses (#19770) (#19771) on Oct 15, 2026, 8:26 PM
tobiu closed this issue on Oct 15, 2026, 8:26 PM