LearnNewsExamplesServices
Frontmatter
id19656
titleRun the Brain-gated e2e tier on dev pushes and record its hosted time
stateClosed
labels
enhancementaitestingbuild
assigneesneo-opus-grace
createdAtOct 12, 2026, 3:15 PM
updatedAtOct 12, 2026, 5:33 PM
githubUrlhttps://github.com/neomjs/neo/issues/19656
authorneo-opus-ada
commentsCount0
parentIssue19655
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[x] 19657 Run the Brain-gated e2e tier on every Engine PR, blocking
closedAtOct 12, 2026, 5:33 PM

Run the Brain-gated e2e tier on dev pushes and record its hosted time

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

Context

Phase 1 of epic #19655, graduated from D#19599 (Signal Ledger on the epic). Hosted CI has never run the Brain-gated e2e tier, so nobody knows its hosted job time or which population can run hosted. Blocking PR runs (the sibling leaf) must not start without that measurement.

The Problem

The graduation set a criterion: "a workflow plan with a measured job time". Hosted time can only be measured by a running workflow. It must also run where no PR-readiness consumer reads it: validateMergeReady and the review audit block on any red, so a red on PR runs blocks even when the check is non-required.

The Architectural Reality

  • The fixture: test/playwright/fixtures.mjs requires an absolute, provisioned Brain root (NEO_AGENTOS_RUNTIME_ROOT). It resolves the Brain's services and bridge script from there, and externalBrainSelection.mjs deselects every fixture spec when the root is unset.
  • The census (Sophie, D#19599 STEP_BACK, at 7979e0a7b0): 145 spec files, 96 Brain-gated, 49 Brain-free, with 43 selected by today's hosted e2e. These are files, not tests, and nothing yet certifies that all 96 run on hosted Linux.
  • The ceiling: today's e2e workflow shards (components, e2e-engine) with a five-minute test-step ceiling per shard.
  • The precedent: Institution CI's resolve-org-dev resolves org dev tips and records their revisions. This leaf resolves the current Brain dev tip the same way, once per run.

The Fix

  1. A hosted job triggered by push to dev only, never by pull_request.
    • It checks out the Engine and neomjs/neo-agent-brain, resolving Brain's current dev tip once and sharing that SHA with every shard.
    • It prepares the Brain's runtime through the Brain's own documented path and sets NEO_AGENTOS_RUNTIME_ROOT to the runner workspace.
    • It runs the Brain-gated tier in shards.
    • Read ADR-0019 before authoring (critical gate 10): Brain configuration stays on its owning path, and the Engine workflow adds no configuration logic.
  2. Each shard's job summary records:
    • the event and attempt;
    • the Engine and Brain SHAs;
    • the selected population (files, Brain-gated vs Brain-free);
    • the hosted test time against the five-minute ceiling.
  3. learn/guides/testing/WhiteboxE2E.md states that the Brain-gated tier runs in hosted CI on dev pushes as a burn-in, and where its receipts are.

Contract Ledger

Target surface Source of authority Proposed behavior Fallback / edge case Docs Evidence
New hosted job, Brain-gated e2e on dev push D#19599 graduation (#19655) Runs on dev pushes only; records event, attempt, both SHAs, population and per-shard time A Brain install failure fails the job visibly; no continue-on-error WhiteboxE2E.md First dev-push runs' summaries
WhiteboxE2E.md This leaf States the hosted burn-in tier and where its receipts live — itself Diff

Acceptance Criteria

  • A push to dev runs the Brain-gated e2e tier in hosted CI, and a pull_request event never triggers this job.
  • The Brain's current dev tip is resolved once per run, every shard uses it, and the job summary records it with the Engine SHA, event and attempt.
  • The Brain runtime is prepared through the Brain's own path, with no configuration logic in the Engine workflow.
  • Each shard records its hosted test time against the five-minute ceiling and the population it ran.
  • WhiteboxE2E.md states the dev-push burn-in and where its receipts are.

Post-Merge Validation

  • The first dev-push runs' receipts (time per shard, population, SHAs) are posted on #19655. They are the input the promotion leaf is blocked by.

Out of Scope

  • PR runs and blocking semantics, which belong to the sibling leaf.
  • Option B (D#18775).
  • Headed-only specs, which stay local at the cut.
  • Fixing the battery's existing reds (#17844).

Avoided Traps

  • A hand-bumped Brain pin (A′): rejected by the operator's no-pin direction.
  • A newest-green-history selector: withdrawn, since returned checks don't prove completeness.
  • continue-on-error: it would mask reds.
  • PR triggers during the burn-in: a red would block PRs even as non-required.

Related

#19655 (epic) · D#19599 · #17844 · #19559 · ADR-0019

unowned-rationale: open for any peer. Ada stewards the epic and picks it up if no one claims it.

Origin Session ID: daac81df-5205-405e-a3af-aec56e5cca45 Retrieval Hint: "Brain-gated e2e tier dev push burn-in hosted time NEO_AGENTOS_RUNTIME_ROOT"

Live latest-open sweep: the latest 20 open issues at 2026-10-12T13:14:24Z have no equivalent; #17844 is related (the local battery census) and not duplicated.

tobiu closed this issue on Oct 12, 2026, 5:33 PM
tobiu referenced in commit a16db4d - "ci(e2e): run the Brain-gated tier on dev pushes as a measured burn-in (#19656) (#19667) on Oct 12, 2026, 5:33 PM