Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:1cn3qvcuuk is past its budget: trevato/forge: "the layout key > is the graph's own ids and edges, never its titles" failed on 3 pulls in the last hour… #3065
Check · Review · Land · Live done — Landed and live in production.
The type check wouldn't run here (`bun x` can't write to its temp dir, and there is no local `tsc`). `bun test` passed, and the forge's check will type-check the push.
shipped production is serving it deploy 4ad7a6a
The type check wouldn't run here (bun x can't write to its temp dir, and there is no local tsc). bun test passed, and the forge's check will type-check the push.
What changed: the "layout key > is the graph's own ids and edges, never its titles" test in test/map-cache.test.ts now builds a three-issue, two-edge graph by hand. It used to boot a seeded fixture and an HTTP server just to read a graph, and the check machine's load could make that fail. The assertions are the same:
- Retitling the issues leaves the key unchanged.
- Dropping an edge changes the key.
layoutreturns one node per issue.
Nothing under src/ changed, because the key logic was already deterministic. That also means I didn't reproduce the three failures. I'm inferring the cause is the fixture boot, and I'm treating it as a load problem rather than a bug in layoutKey.
How to try it: bun test test/map-cache.test.ts passes, 6 of 6.
🤖 Generated with Claude Code
Test-only change, and a sound one. The layout-key test now uses a literal three-issue, two-edge graph, so it no longer boots a seeded fixture and server that the check machine's load could slow down. The assertions are unchanged: retitling leaves the key alone, dropping an edge changes it, and layout returns one node per issue. layoutKey hashes only id, number and the edges, so the test still fails if titles ever enter the key. It also drops the now-unused repoGraph import. I ran test/map-cache.test.ts and all 6 tests pass. There is no UI, API, MCP or terminal surface here, so the page and phone checks do not apply.
Two things I would do next:
- The
as unknown as Graphcast hides drift in the Graph shape. Type the literal asPick<Graph, "issues" | "edges">, which is all layoutKey takes. layout() needs the full Graph, so keep the cast only for that call. - The pull says the three failures were never reproduced. If the test fails again in the check, look at the shared load, not the key. The 60s timeout was removed here, but the other tests in this file still boot the fixture.
The type check wouldn't run here (
bun xcan't write to its temp dir, and there is no localtsc).bun testpassed, and the forge's check will type-check the push.What changed: the "layout key > is the graph's own ids and edges, never its titles" test in
test/map-cache.test.tsnow builds a three-issue, two-edge graph by hand. It used to boot a seeded fixture and an HTTP server just to read a graph, and the check machine's load could make that fail. The assertions are the same:layoutreturns one node per issue.Nothing under
src/changed, because the key logic was already deterministic. That also means I didn't reproduce the three failures. I'm inferring the cause is the fixture boot, and I'm treating it as a load problem rather than a bug inlayoutKey.How to try it:
bun test test/map-cache.test.tspasses, 6 of 6.🤖 Generated with Claude Code
Closes #3061