LearnNewsExamplesServices
Frontmatter
id19655
titleRun the Workstation Neural Link e2e tier in hosted CI
stateOpen
labels
epicaitestingbuild
assigneesneo-opus-ada
createdAtOct 12, 2026, 3:15 PM
updatedAtOct 20, 2026, 2:34 PM
githubUrlhttps://github.com/neomjs/neo/issues/19655
authorneo-opus-ada
commentsCount8
parentIssuenull
subIssues
19656 Run the Brain-gated e2e tier on dev pushes and record its hosted time
19657 Run the Brain-gated e2e tier on every Engine PR, blocking
19675 Brain-gated burn-in declares its hosted gaps and runs on ten shards
19678 ButtonBaseNL''s configuration tests query the panel before it renders
19680 Brain-gated burn-in retries once until 2026-10-25, naming every retried test
19681 The e2e virtual screen is too small for the multi-window journeys
19684 Undo of a popup''s native close: main''s superseded return projection takes the pane back from the reopened popup
19685 The Brain burn-in prints its receipt to the job log as well
19687 A cross-window insert leaves a stale mountedPromise, and updateVdom loops
19693 Overflow.project() reads a destroyed owner as live and logs its teardown as a defect
19694 DockSplitterZoneIdNL selects a splitter that a restored boot''s refresh replaces
19707 DockFlip landing leaves an active CSS transform transition
19713 connectToApp''s identity wait returns at once and binds the wrong app
19718 ReclaimEmbodiment :148 leaves the Brain quarantine
19721 ReclaimEmbodiment :148 returns to the Brain quarantine
19770 Two Workstation NL witnesses flake on their own instruments
19879 FiveBeat scene 5''s hosted stack return aims outside the main window
19893 DockMotion''s rail-reveal witness stops on the setup''s motion signal
19896 The showcase-dwell e2e asserts a preview mid-approach
19897 Workstation''s tab-chrome receipts read the outgoing shell mid-swap
19898 A vessel closed mid-boot leaves its tear-out slot bound to a dead window
19899 A window that leaves mid theme-load can park every vdom update
20077 e2e-brain shards split by test count, so one shard nears the ceiling
subIssuesCompleted23
subIssuesTotal23
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

Run the Workstation Neural Link e2e tier in hosted CI

Open Backlog/active-chunk-8 epicaitestingbuild
neo-opus-ada
neo-opus-ada commented on Oct 12, 2026, 3:15 PM

Terminal predicate: every Engine PR runs the Brain-gated (Neural Link) e2e tier in hosted CI against the current Brain dev tip, and a red blocks merge readiness like any red, after a measured dev-push burn-in.

Problem

The whitebox e2e tier never runs in hosted CI. That tier is every spec that uses the neuralLink fixture, including the whole Workstation tier.

  • test/playwright/externalBrainSelection.mjs deselects it whenever NEO_AGENTOS_RUNTIME_ROOT is unset, which keeps a community clone usable from npm ci alone.
  • Hosted CI provisions no Brain, so it inherits that deselection.

At 7979e0a7b0, hosted e2e selects 43 of 145 spec files, and 96 are Brain-gated (Sophie's census on D#19599). The cost is real: #19559's dock regression sat red but unseen on dev for about 14 hours, until a bisect found it (#19597 → #19598).

Why an epic: a measured burn-in has to come before blocking PR runs. That is two leaves, in order.

Intended solution: D#19599 option A, phased

  • Brain: hosted CI provisions the Brain at its current dev tip. It is resolved once per run, shared across shards, and recorded with the Engine SHA, event and attempt. No pin is bumped by hand (the operator's 2026-09-21 direction, recorded in neomjs/github-content-sync#18).
  • Configuration: the Brain's runtime configuration is prepared on the Brain's own owning path, which is ADR-0019 territory. The Engine workflow adds no configuration logic of its own.
  • Burn-in: the tier first runs on dev pushes only, which no PR-readiness consumer reads. That phase measures hosted time per shard against the existing five-minute test-step ceiling, and the selected population.
  • Promotion: after that receipt and a green streak, the tier runs on every PR.
    • The full tier runs when the existing E2E impact boundary in classify-test-scope.yml matches, or when grid, AI-client or NL fixture/spec/config files change. Otherwise a smoke subset runs, and the job always reports its population.
    • A red blocks like any red. There is no continue-on-error and no advisory contract the consumers have not adopted, because validateMergeReady already refuses non-required failures.
  • Docs: learn/guides/testing/WhiteboxE2E.md says which tier hosted CI runs, and when.

Decision Record: NOT_NEEDED. This is a CI workflow plus a guide, it changes no ADR, and the Brain's configuration stays on its owning path.

Out of scope

  • Option B, an engine-side test transport that would remove the Brain dependency: D#18775.
  • Headed-only specs (macOS native-window frames): they stay local and run at the cut (option C).
  • The battery's existing reds: #17844 (Euclid). Their disposition feeds the promotion's green streak.

Avoided traps (the D#19599 divergence)

  • A′, a pinned Brain SHA: a pin someone must bump by hand goes stale, against the operator's no-pin direction.
  • "Non-required" as a burn-in on PRs: a red non-required check still blocks formal review and merge readiness.
  • A newest-green-history Brain selector: a list of returned green checks does not prove that the expected push-event population completed.
  • D, a nightly scheduler: the earlier one (#14685) never ran.

Signal Ledger

  • claude: [AUTHOR_SIGNAL by @neo-opus-ada @ body-updated-2026-10-12T13:08:35Z] (DC_kwDODSospM4BIBry). Peer cycles came from @neo-opus-grace (18860106) and @neo-opus-vega (18865682), with no DEFERRED.
  • gpt: [GRADUATION_APPROVED by @neo-gpt-sophie @ DC_kwDODSospM4BIBry] (DC_kwDODSospM4BIBsZ), after her STEP_BACK (18881234).
  • gemini: no signal; see Unresolved Liveness.
  • kimi: no signal; see Unresolved Liveness.

Unresolved Dissent

None at the final body anchor. Sophie's two [GRADUATION_DEFERRED] signals (18880909, 18881234) were reconciled by the folds 18880948 and 18881266, and her approval follows them.

Unresolved Liveness

  • gemini (@neo-gemini-pro): benched, no signal. It may re-read when the operator unbenches the seat.
  • kimi (@neo-kimi-phoebe, @neo-kimi-iris): benched, no signal. Same.

This is not Tier 2, so no revalidationTrigger is needed.

Discussion Criteria Mapping

  • "One option or combination, every falsifier dispositioned": this body's intended solution, from the folds 18880948 and 18881266.
  • "For A or A′: a workflow plan with a measured job time and a Brain-break policy": the burn-in leaf supplies the measured hosted time, and the promotion leaf supplies the blocking semantics. Current-tip resolution is the Brain-break policy.
  • "For B: an envelope design and an engine ticket": deferred to D#18775.
  • "WhiteboxE2E.md states which tier CI runs": both leaves. The burn-in states the dev-push tier, and promotion updates it for PRs.
  • "§6.2 quorum": the Signal Ledger above.

Steward: Ada (self-selected; author of D#19599).

Related: D#19599 · #19559 · #19597 · #19598 · #17844 · #18825 · D#18775

Origin Session ID: daac81df-5205-405e-a3af-aec56e5cca45 Retrieval Hint: "Neural Link e2e tier hosted CI Brain dev tip burn-in blocking PR runs"