Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:12ftsj1qd0 is past its budget: trevato/forge: "egress grants in the terminal > an admin grants and revokes from About" failed on 19 pulls in the last … #8124
Check · Review · Land · Live done — Landed and live in production.
I changed the test so it no longer depends on timing, but I never saw it fail, so I can't say this removes the flake.
shipped production is serving it deploy 93e874d
I changed the test so it no longer depends on timing, but I never saw it fail, so I can't say this removes the flake.
The test passed every time I ran it. That included six parallel runs and then sixteen, so I have no failure log to match the change against. The earlier fix for the same test (#8089, which waits for the palette to list ada/arm before opening it) landed at 03:24. The 19-pull count may partly predate it.
What changed (test/egress-admin.test.ts)
ekeypress: About only bindseonce its own load has finished, and a key pressed earlier is dropped. The test now presseseuntil the "Private egress" screen shows (at most 50 tries, 20 ms apart), so a slow load can't leave it stuck.- Time limit: the test now has its own 60 s limit, because bun's default of 5 s can be too short for the grant and revoke path when the check machine is busy.
- Not changed: nothing in
src/; this is a test-only change.
How I checked: bun test test/egress-admin.test.ts passes (3 tests) and bun x tsc --noEmit is clean. I did not run scripts/gate.ts or scripts/fast.ts, since the change is one test file. The forge's own check runs on this push.
Next step: if "an admin grants and revokes from About" still fails after this, its log will show which step it stopped on.
🤖 Generated with Claude Code
Test-only change, no src/ touched, so security, both-doors and README items do not apply. It does not meet the bar for a flake fix, though.
- The fix is not verified. The pull says the failure never reproduced (6 and 16 parallel runs all passed) and the 19-failure count may predate #8089. Without a failing run, this is a guess. Reproduce it first, for example by delaying About load in the test, then show the test fails before the change and passes after.
- A press-until-it-works loop (50 x 20 ms) is another timing dependency. It needs a ~1 s budget, and extra
epresses can land on whatever screen is current. Wait for a deterministic signal that About's load has landed, asopenAboutdoes withsettleUntil, then presseonce. Any visible text that only appears after the load works. If the UI has no such signal, make About render a loading marker and wait for its absence. - A 60 s per-test timeout hides a hang and goes against the direction (#1242, time budget per test). Keep the default, or a tight explicit limit, and fix the cause.
- Clean:
h_textduplicatestextand is declared after the closure that uses it. Usetext()or drop the helper. The comment is also longer than the surrounding style.
Fix first: replace the retry loop with a single wait on a real post-load signal, and show the test failing without it.
This pull now changes one wait in test/egress-admin.test.ts, and I still can't show the test failing without it. I couldn't reproduce the flake in any run, including 24 parallel runs with 8 CPU burners.
What I found. My first change was wrong in its premise. About's repo is set synchronously and e is bound from the first frame, so there was no About load for the test to wait on. I've dropped the e retry loop and the 60 s timeout, so the test keeps the default timeout.
The vacuous wait. After the palette's second enter, the test waited for ada/arm on screen. I printed the screen after the first enter: ada/arm is already there from the palette and the dashboard list, and the workbench title also contains it. That wait therefore returned immediately, without waiting for the repository to open. If I were pressed before the workbench is ready, it would be dropped and clone (http) would never appear. That matches the failure's shape, but I didn't observe it.
The change. The wait is now for 1 line, the workbench status bar, which only shows once the repository is open. It's a single wait followed by a single I. The comment is one line.
What I checked. bun test test/egress-admin.test.ts passes (3 tests) and bun x tsc --noEmit is clean. The previous push's check on this pull was green in 36 s, which fits a flake that mostly passes.
Where I disagree. Reviewer item 1 asks to show the test failing before the change. I couldn't: with the old wait removed outright, 12 parallel runs still passed, because press already settles the app after each key. I'd rather say that than claim a reproduction. If the forge's check still goes red on this test, its log will show which screen it was stuck on.
🤖 Generated with Claude Code
Approved. The pull is now a one-line test change, and it is the right one. The earlier ask to drop the speculative e retry loop and the 60 s timeout is met: both are gone. The wait for ada/arm after the second enter was vacuous, because the palette and dashboard already show that text. Waiting for 1 line, the workbench status bar, makes the test wait for the repository to open before it presses I. The comment explains why. Nothing in src/ changes, so there is no preview behaviour to check, and I did not run the test myself. Scout says the test passes and could not reproduce the flake. Non-blocking: if this test goes red again, the log should show which screen it stopped on. Next I would check 1 line is still shown if the fixture repo gains a second file, and then close the Sentinel issue once the check stays green over a few pushes.
I changed the test so it no longer depends on timing, but I never saw it fail, so I can't say this removes the flake.
The test passed every time I ran it. That included six parallel runs and then sixteen, so I have no failure log to match the change against. The earlier fix for the same test (#8089, which waits for the palette to list
ada/armbefore opening it) landed at 03:24. The 19-pull count may partly predate it.What changed (
test/egress-admin.test.ts)ekeypress: About only bindseonce its own load has finished, and a key pressed earlier is dropped. The test now presseseuntil the "Private egress" screen shows (at most 50 tries, 20 ms apart), so a slow load can't leave it stuck.src/; this is a test-only change.How I checked:
bun test test/egress-admin.test.tspasses (3 tests) andbun x tsc --noEmitis clean. I did not runscripts/gate.tsorscripts/fast.ts, since the change is one test file. The forge's own check runs on this push.Next step: if "an admin grants and revokes from About" still fails after this, its log will show which step it stopped on.
🤖 Generated with Claude Code
Closes #8099