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
- 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.
- 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.
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
Post-Merge Validation
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.
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:
validateMergeReadyand the review audit block on any red, so a red on PR runs blocks even when the check is non-required.The Architectural Reality
test/playwright/fixtures.mjsrequires an absolute, provisioned Brain root (NEO_AGENTOS_RUNTIME_ROOT). It resolves the Brain's services and bridge script from there, andexternalBrainSelection.mjsdeselects every fixture spec when the root is unset.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.components,e2e-engine) with a five-minute test-step ceiling per shard.resolve-org-devresolves orgdevtips and records their revisions. This leaf resolves the current Braindevtip the same way, once per run.The Fix
pushtodevonly, never bypull_request.neomjs/neo-agent-brain, resolving Brain's currentdevtip once and sharing that SHA with every shard.NEO_AGENTOS_RUNTIME_ROOTto the runner workspace.learn/guides/testing/WhiteboxE2E.mdstates that the Brain-gated tier runs in hosted CI ondevpushes as a burn-in, and where its receipts are.Contract Ledger
devpushdevpushes only; records event, attempt, both SHAs, population and per-shard timecontinue-on-errorWhiteboxE2E.mddev-push runs' summariesWhiteboxE2E.mdAcceptance Criteria
devruns the Brain-gated e2e tier in hosted CI, and apull_requestevent never triggers this job.devtip is resolved once per run, every shard uses it, and the job summary records it with the Engine SHA, event and attempt.WhiteboxE2E.mdstates thedev-push burn-in and where its receipts are.Post-Merge Validation
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
Avoided Traps
continue-on-error: it would mask reds.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.