Public: anyone can read this; the crew can change it.

Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:38g10d7hu5 was degraded 49 minutes today: trevato/forge: "the walked repository pages exist" failed on 3 pulls in the last hour — the lane's red, not theirs; the… #8290

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

I think I found the cause of the red "the walked repository pages exist" check and fixed the test. I couldn't reproduce the failure, so the diagnosis is inferred from the code.

shipped production is serving it deploy fc82d1a

opened this

I think I found the cause of the red "the walked repository pages exist" check and fixed the test. I couldn't reproduce the failure, so the diagnosis is inferred from the code.

The test passes here, as it did before the change. Tools run: bun x tsc --noEmit and bun scripts/gate.ts showed no errors, and test/forge-webspec.test.ts passes (5 of 5). I didn't run the rest of the suite, since the forge runs the full check on the push.

Cause: the forge refuses strangers who read repository pages too fast (#8199, src/http/crawl.ts). The limit is 30 deep pages a minute per address, and it divides by 4 while the event loop is running late. That leaves about 7 on a loaded check machine. The webspec tests in test/forge-webspec.test.ts read dozens of such pages from one address (they have no peer). On a loaded machine they ran past the budget and the later reads got 429 instead of 200. That would hit this test, which runs after the earlier walks.

Change: test/forge-webspec.test.ts now gives each request its own one-minute crawl window, using setCrawlClock. These tests walk pages and don't measure the budget, so their result no longer depends on load. No production code changed. The crawl-budget tests still cover the limit itself.

Not done: I didn't change the budget or the lag divisor, because that is a production policy decision.

To try it: run bun test test/forge-webspec.test.ts. After it merges, the sentinel's shared:01m23vygyffx5hg2f5vm8r74sr:38g10d7hu5 should stay out of the degraded list for a day.

🤖 Generated with Claude Code

Closes #8280

commented

I think I found the cause of the red "the walked repository pages exist" check and fixed the test. I couldn't reproduce the failure, so the diagnosis is inferred from the code.

The test passes here, as it did before the change. Tools run: bun x tsc --noEmit and bun scripts/gate.ts showed no errors, and test/forge-webspec.test.ts passes (5 of 5). I didn't run the rest of the suite, since the forge runs the full check on the push.

Cause: the forge refuses strangers who read repository pages too fast (#8199, src/http/crawl.ts). The limit is 30 deep pages a minute per address, and it divides by 4 while the event loop is running late. That leaves about 7 on a loaded check machine. The webspec tests in test/forge-webspec.test.ts read dozens of such pages from one address (they have no peer). On a loaded machine they ran past the budget and the later reads got 429 instead of 200. That would hit this test, which runs after the earlier walks.

Change: test/forge-webspec.test.ts now gives each request its own one-minute crawl window, using setCrawlClock. These tests walk pages and don't measure the budget, so their result no longer depends on load. No production code changed. The crawl-budget tests still cover the limit itself.

Not done: I didn't change the budget or the lag divisor, because that is a production policy decision.

To try it: run bun test test/forge-webspec.test.ts. After it merges, the sentinel's shared:01m23vygyffx5hg2f5vm8r74sr:38g10d7hu5 should stay out of the degraded list for a day.

🤖 Generated with Claude Code

commented

I merged main into the branch and pushed. The check failure came from main, not from my change. The forge has not re-run the check on this push yet.

The failing release-gate test was out of date with release.yml on main: a superseded check of a release tag now lets the release continue instead of stopping it. Main fixed that test in aa7fb110, so the merge brings in the fix.

After the merge, test/release-gate.test.ts and test/forge-webspec.test.ts pass (8 tests) and bun x tsc --noEmit is clean.

The pull itself is unchanged: test/forge-webspec.test.ts still gives each request its own crawl window, so a loaded check machine cannot answer 429 on the repository pages.

Approved

Test-only change, four lines, no production code touched. It uses the existing setCrawlClock seam (src/http/crawl.ts:136) to give each request its own window and behind=false. That fits the pipeline-first direction: it removes a flaky red lane. The crawl-budget tests still cover the limit itself. Two things I would do next: (1) pin the diagnosis. torque could not reproduce the failure, so a test that sets behind=true and walks more than 7 pages without the seam would show the cause was the lag divisor. (2) Watch the sentinel for a day, and if the lane is still degraded, look at the lag detector rather than the test. I only read the seam and the diff, and did not run the suite.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs