LearnNewsExamplesServices
Frontmatter
id17564
titleWorkstation headed witnesses: four pre-existing dev-red cases, one stage-bound precondition, one brain-tier-blocked file on the Fable host
stateClosed
labels
bugtesting
assigneesneo-gpt
createdAtAug 22, 2026, 7:33 PM
updatedAtAug 23, 2026, 6:35 PM
githubUrlhttps://github.com/neomjs/neo/issues/17564
authorneo-fable
commentsCount1
parentIssue13158
subIssues
17602 Perspective E2Es import the Brain barrel for one NL service
subIssuesCompleted1
subIssuesTotal1
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 23, 2026, 6:35 PM

Workstation headed witnesses: four pre-existing dev-red cases, one stage-bound precondition, one brain-tier-blocked file on the Fable host

neo-fable
neo-fable commented on Aug 22, 2026, 7:33 PM

Context

The #17546 migration verification ran all 18 test/playwright/e2e/workstation/*.spec.mjs files headed on the Fable author host, with a detached-worktree baseline at unmodified origin/dev (51d6072d79) for every red. Six findings are NOT caused by that branch — each fails identically on the unmodified tree, same case, same error signature, same host. This ticket is their surviving owner: symptom-level receipts, honest classification, no diagnosis beyond what the receipts state.

The findings

Pre-existing red cases (identical on branch and unmodified dev, solo-confirmed where noted):

  1. WorkstationDragAffordancesNL.spec.mjs:388 — "the flagship journey": "the fresh vessel follows the continuing pointer" expects {x: 120, y: 70}, receives {x: 0, y: 0} after a 15s predicate timeout. Red solo on both trees. The fresh vessel never follows the pointer on this host in this run mode — vessel/popup positioning is environment-sensitive; undiagnosed whether host-env or real.
  2. WorkstationNL.spec.mjs:483 — "the real tour keeps dense…" and
  3. WorkstationNL.spec.mjs:1963 — "the body-mounted overflow…": the identical case pair fails on both trees with the identical two error signatures ("Workstation owns one root StateProvider"; a deep-equality mismatch). Red solo on both trees.
  4. WorkstationHumanPopupOverlapNL.spec.mjs:597 — the popup-over-popup conversion case: red on both trees.

Stage-bound by design (not witness debt):

  1. WorkstationTearOutSourceContinuityNL.spec.mjs:668 — "#16756 no-drag native place-cycle": fails at its own DESIGNED precondition, screen.availWidth must be ≥ 1200 (received 800 in this run mode). The witness historically runs on the operator rig at exact native bounds; on a smaller stage it refuses fail-closed exactly as written. Listed here so evidence tables have one canonical reference, not because it needs repair.

Host-tier package gate:

  1. WorkstationPerspectivesNL.spec.mjs cannot load on a host without the brain-tier package set: its import chain (ai/services.mjsai/services/knowledge-base/ChromaManager.mjschromadb) crashes module resolution before any test runs — identical crash on unmodified dev. The unit config already skips unit-brain* projects when package.brain.json is not installed; this e2e spec has no equivalent gate. Fix shape worth considering: the same install-brain gating for e2e specs that import the services barrel, or a leaner import that avoids the barrel.

Receipts

Author host, Chromium, --retries=0, test/playwright/playwright.config.e2e.mjs; branch head 93553e5897 (#17546) vs detached worktree at origin/dev 51d6072d79:

  • WorkstationDragAffordancesNL: solo branch 5 passed / 1 failed; solo dev 5 passed / 1 failed — same case :388, same {120,70}{0,0} diff.
  • WorkstationNL: solo branch 2 failed; solo dev 2 failed — same cases :483 + :1963, same signatures.
  • WorkstationHumanPopupOverlapNL: solo branch 1 failed; dev 1 failed — same case :597.
  • WorkstationTearOutSourceContinuityNL: branch 2 passed / 1 failed; dev 2 passed / 1 failed — same case :668, same precondition message.
  • WorkstationPerspectivesNL: Cannot find package 'chromadb' on both trees.

Everything else in the 18-file surface ran green at the branch head, including WorkstationFiveBeatNL (16/16 in its chunk).

Acceptance Criteria

  • Each of findings 1–4 is diagnosed to a cause (host environment vs. real defect) with a falsifying receipt, then fixed or reclassified with the reason recorded.
  • Finding 6 gets a decision: an install-brain gate for e2e specs that import the services barrel, a leaner import path, or a recorded won't-fix with the run-mode documented.
  • Finding 5 needs no repair; it discharges by reference.

Related

#17546 / its PR (where these were measured and residualized; the dev-baseline receipts rule the migration out) · #13158 (docking witness lane) · #16498 / #16756 (the stage-bound witness's design provenance) · #17555 (the sibling protocol: pre-existing witness finding, diagnosed then repaired).

Live latest-open sweep: latest 12 open issues checked at creation time; no equivalent found (gh search issues "workstation witness dev" → none). A2A in-flight claim sweep: inbox reads through 2026-08-22T17:05Z; no overlapping claim.

Origin Session ID: bd272031-6109-449d-8a0c-38230064a8f3

Retrieval Hint: query_raw_memories("workstation headed witnesses pre-existing dev-red vessel follows pointer chromadb brain-tier")

Mnemosyne (Claude Fable 5, Claude Code) 🪢

tobiu referenced in commit a5423ca - "fix(workstation): resolve headed witness residuals (#17564) (#17618) on Aug 23, 2026, 6:35 PM
tobiu closed this issue on Aug 23, 2026, 6:35 PM