Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:3tgtaj5heo is past its budget: trevato/forge: "origins on the web > Mirror starts a job, shows its stages, and lands on the mirror" failed on 5 pulls … #10558
Check · Review · Land · Live done — Landed and live in production.
"Mirror starts a job, shows its stages, and lands on the mirror" now passes no matter which test files share its shard. The failure was state leaking from another test file, not load on the check machine.
shipped production is serving it deploy a5a2512
"Mirror starts a job, shows its stages, and lands on the mirror" now passes no matter which test files share its shard. The failure was state leaking from another test file, not load on the check machine.
Cause. test/packs-up.test.ts changes the mirror's outbound vet for one test, then sets it back to {} instead of to what it found. That wipes out the preload's loopback allowance (allow: ["127.0.0.1", "::1"]) for every later file in the same bun test process. When the shard split put test/web-origins.test.ts after it, every fetch from the test's loopback origin was refused. The job then failed once its 40 retries ran out, which is why each failure in the check log lasted 10.5 s. "the repo header wears the where strip" failed alongside it because it needs that mirror. Main stayed green because the split depends on learned timings, so only some pulls got that order. Running bun test test/packs-up.test.ts test/web-origins.test.ts on main reproduces it every time.
Change (tests only, no source changes):
test/packs-up.test.tsputs back the vet setting it found (mirrorOutboundForTest()).test/web-origins.test.tsdeclares its own loopback allowance with the existingmirrorOutbound(...)helper, so a neighbouring file cannot decide its result.- The mirror test's assertion now includes the job's
error, so a future failure says why instead of onlyReceived: "failed". This changes a test; the test was right, it just gave no reason when it failed.
Each of the first two fixes is enough by itself: with either one alone, the reproducing pair passes (44 of 44).
Not done: I did not add a preload-level guard that would catch any file leaving this setting changed. That would be a bigger change to the test harness and could be its own issue.
Checks: bun scripts/gate.ts and bun x tsc --noEmit are green. Of the 19 files scripts/fast.ts names, one test fails: test/unreached.test.ts "an allowed module that has become reached leaves the list". It fails the same way with this change stashed, so it is already failing on the base and is not caused by this pull.
To try it: bun test test/packs-up.test.ts test/web-origins.test.ts fails on main and passes here.
🤖 Generated with Claude Code
"Mirror starts a job, shows its stages, and lands on the mirror" now passes whichever test files share its shard. The cause was a test file that changed shared state and did not restore it, not load on the check machine.
Cause. test/packs-up.test.ts changes the mirror's outbound vet for one test, then sets it back to {} instead of to what it found. That drops the preload's loopback allowance (allow: ["127.0.0.1", "::1"]) for every later file in the same bun test process. When the shard split put test/web-origins.test.ts after it, every fetch from the test's loopback origin was refused. The job failed once its 40 retries ran out, which is why each failure in the check log took 10.5 s. "the repo header wears the where strip" failed next to it because it needs that mirror. Shard placement depends on learned timings, so only some pulls got that order, and main stayed green. bun test test/packs-up.test.ts test/web-origins.test.ts reproduces it every time on main.
Change
test/packs-up.test.tsputs back the vet setting it found (mirrorOutboundForTest()).test/web-origins.test.tsdeclares its own loopback allowance with the existingmirrorOutbound(...)helper, so a neighbouring file cannot decide its result. Either fix alone makes the reproducing pair pass.- The mirror test's assertion now includes the job's
error, so a future failure says why instead of onlyReceived: "failed". This changes a test; the test was right, it just gave no reason when it failed. scripts/unreached-allow.jsondropssrc/kernel/why_now.ts. #10425 (64e585b98) deleted that file and left its entry, so "an allowed module that has become reached leaves the list" failed on main too. That was the failure in this pull's first check.
Not done: a preload-level guard that would catch any file leaving this setting changed. It would be a bigger change to the test harness and could be its own issue.
Checks: bun scripts/gate.ts and bun x tsc --noEmit pass. test/unreached.test.ts passes (4 of 4), and the files scripts/fast.ts named for the test fixes passed except that unreached failure, which is now fixed. A full-suite run I started by mistake is still going in the background, and I had no tool to stop it. Its failures are the sandbox refusing network access (for example kid--localhost:80) and say nothing about this change.
To try it: bun test test/packs-up.test.ts test/web-origins.test.ts fails on main and passes here.
🤖 Generated with Claude Code
"Mirror starts a job, shows its stages, and lands on the mirror" now passes whichever files share its shard. The failure was state leaking between test files, not load on the check machine. test/packs-up.test.ts changed the mirror's outbound vet for one test, then reset it to {} instead of to what it found. That removed the preload's loopback allowance (allow: ["127.0.0.1", "::1"]) for every later file in the same bun test process. When the shard split put test/web-origins.test.ts after it, every fetch from the test's loopback origin was refused, and the job failed once its retries ran out.
Changed (tests only, no source):
test/packs-up.test.tsrestores the vet it found, usingmirrorOutboundForTest().test/web-origins.test.tsdeclares its own loopback allowance at the top of the file instead of relying on the preload. Its assertion on the finished job now also shows the job'serror, so a future failure says why.
The previous red check failed on 7 tests outside this change: the child-forge-in-a-cell tests in spawn-cell-e2e and spawn-cell, child-quota, crew-sandbox #560 and outsiders-member. They failed because main at 47d7b4f was red on them, and pull #10551 (main at 1be62c1ae) has since fixed them. This branch now merges that main.
- The earlier
unreached-allow.jsoncommit is the same edit main already has, so it adds nothing to the diff. - The diff against main is the two test files above.
Checks run here: bun scripts/gate.ts, bun x tsc --noEmit and the 19 files scripts/fast.ts names (258 pass) are green. I also ran the previously failing files: packs-up, web-origins, child-quota, crew-sandbox, outsiders-member and unreached all pass, with one skip. The cell suites skip in this sandbox, which has no cell tools, so the forge's check is the first run of those.
To try it: bun test test/packs-up.test.ts test/web-origins.test.ts fails on 47d7b4f and passes on this branch.
🤖 Generated with Claude Code
Tests-only fix, and it is the right one. packs-up restored {} instead of what it found, which dropped the preload loopback allowance for later files in the shard. It now restores mirrorOutboundForTest(), and web-origins declares its own allowance through the existing mirrorOutbound helper, which restores in afterAll. Adding error to the assertion makes the next failure explain itself. No source, README, UI or dependency changes, so the web, terminal and docs criteria do not apply. Nothing in the diff touches security. Two things I would do next: (1) the preload-level guard Mason skipped, which fails any file that leaves the mirror vet changed, should be its own issue; (2) packs-up could use the mirrorOutbound helper instead of the manual save and restore, to keep one pattern.
"Mirror starts a job, shows its stages, and lands on the mirror" now passes no matter which test files share its shard. The failure was state leaking from another test file, not load on the check machine.
Cause.
test/packs-up.test.tschanges the mirror's outbound vet for one test, then sets it back to{}instead of to what it found. That wipes out the preload's loopback allowance (allow: ["127.0.0.1", "::1"]) for every later file in the samebun testprocess. When the shard split puttest/web-origins.test.tsafter it, every fetch from the test's loopback origin was refused. The job then failed once its 40 retries ran out, which is why each failure in the check log lasted 10.5 s. "the repo header wears the where strip" failed alongside it because it needs that mirror. Main stayed green because the split depends on learned timings, so only some pulls got that order. Runningbun test test/packs-up.test.ts test/web-origins.test.tson main reproduces it every time.Change (tests only, no source changes):
test/packs-up.test.tsputs back the vet setting it found (mirrorOutboundForTest()).test/web-origins.test.tsdeclares its own loopback allowance with the existingmirrorOutbound(...)helper, so a neighbouring file cannot decide its result.error, so a future failure says why instead of onlyReceived: "failed". This changes a test; the test was right, it just gave no reason when it failed.Each of the first two fixes is enough by itself: with either one alone, the reproducing pair passes (44 of 44).
Not done: I did not add a preload-level guard that would catch any file leaving this setting changed. That would be a bigger change to the test harness and could be its own issue.
Checks:
bun scripts/gate.tsandbun x tsc --noEmitare green. Of the 19 filesscripts/fast.tsnames, one test fails:test/unreached.test.ts"an allowed module that has become reached leaves the list". It fails the same way with this change stashed, so it is already failing on the base and is not caused by this pull.To try it:
bun test test/packs-up.test.ts test/web-origins.test.tsfails on main and passes here.🤖 Generated with Claude Code
Closes #10507