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

Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:dakr3k5d6v is past its budget: trevato/forge: "design check: nothing added outside the system (#2678) > the tree is no worse than its baseline" failed… #3022

Merged opened this

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

Merged

The design check was never flaky, so the fix is in `src/checks/shared_red.ts`: it no longer counts a tree gate as "the lane's red". A gate like the design check reads the source and fails the pull that added what it forbids, so it is never treated as a red many pulls share.

shipped production is serving it deploy 5f71e3e

opened this

The design check was never flaky, so the fix is in src/checks/shared_red.ts: it no longer counts a tree gate as "the lane's red". A gate like the design check reads the source and fails the pull that added what it forbids, so it is never treated as a red many pulls share.

What happened. "design check … the tree is no worse than its baseline" failed only on code the pulls added:

  • #2865: five runs, all at head c061fc9c, which adds .kpi, .kpis, .kpi-bar and .kpi-value.
  • #2834: one run at f82ffc86, which adds .topbar-asks.

Main passed the test at every commit in that window. Because the 3-pull rule counted these as shared, the pulls waited "for main's next green check" instead of being sent back to rework, and the sentinel filed this issue.

Change

  • TREE_GATES: a short list of suite prefixes for tests that check the source itself: design check: nothing added outside the system (#2678) > and no polling in src/web > .
  • The filter: pullsPerTest now drops any test matching that list, the same way it already drops (unnamed). A check that fails a gate never counts as shared, so the pull is sent back to rework as before.
  • Tests: test/shared-red.test.ts adds two:

- Four pulls failing the design check are each their own red, and sharedTests stays empty. - Every TREE_GATES prefix matches a describe in test/, so renaming a suite can't quietly drop it from the list.

Both fail without the change.

Not done. I didn't change the 3-pull threshold, and I didn't add the other way of spotting a real flake (the same commit both passing and failing the test).

Try it: bun test test/shared-red.test.ts test/design-lint.test.ts test/no-polling.test.ts (25 pass). tsc --noEmit could not run in the sandbox (read-only tempdir), so the forge's check will be the first type check.

🤖 Generated with Claude Code

Closes #2868

commented

The design check was never flaky, so the fix is in src/checks/shared_red.ts: it no longer counts a tree gate as "the lane's red". A gate like the design check reads the source and fails the pull that added what it forbids, so it is never treated as a red many pulls share.

What happened. "design check … the tree is no worse than its baseline" failed only on code the pulls added:

  • #2865: five runs, all at head c061fc9c, which adds .kpi, .kpis, .kpi-bar and .kpi-value.
  • #2834: one run at f82ffc86, which adds .topbar-asks.

Main passed the test at every commit in that window. Because the 3-pull rule counted these as shared, the pulls waited "for main's next green check" instead of being sent back to rework, and the sentinel filed this issue.

Change

  • TREE_GATES: a short list of suite prefixes for tests that check the source itself: design check: nothing added outside the system (#2678) > and no polling in src/web > .
  • The filter: pullsPerTest now drops any test matching that list, the same way it already drops (unnamed). A check that fails a gate never counts as shared, so the pull is sent back to rework as before.
  • Tests: test/shared-red.test.ts adds two:

- Four pulls failing the design check are each their own red, and sharedTests stays empty. - Every TREE_GATES prefix matches a describe in test/, so renaming a suite can't quietly drop it from the list.

Both fail without the change.

Not done. I didn't change the 3-pull threshold, and I didn't add the other way of spotting a real flake (the same commit both passing and failing the test).

Try it: bun test test/shared-red.test.ts test/design-lint.test.ts test/no-polling.test.ts (25 pass). tsc --noEmit could not run in the sandbox (read-only tempdir), so the forge's check will be the first type check.

🤖 Generated with Claude Code

Approved

Server-side check logic only, so the pages and screenshots are unaffected. The filter in pullsPerTest drops tree-gate tests before counting, so sharedWithPulls and sharedTests never treat them as the lane's red. Both new tests would fail without the change, and the suite-existence test matches the real describe names in design-lint and no-polling. No new dependency, no input or security surface. Two things I would do next: (1) tidy the TREE_GATES doc comment (stray apostrophe in the link on the isTreeGate comment, one over-long line); (2) add the flake signal you left out (same commit both passing and failing), so a real flake in a gate is still caught.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs