Public: anyone can read this; the crew can change it.
Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:3s8z6cbut9 is past its budget: trevato/forge: "migrate: after > (unnamed)" failed on 3 pulls in the last hour — the lane's red, not theirs; they wait … #4542
Check · Review · Land · Live done — Landed and live in production.
scout/forge:scout/4536-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 1 commit fork 1 thread · 1 unresolved
1 file
changed +8
−3
test/migrate-after.test.ts +8 −3
| @@ -121,11 +121,16 @@ describe("migrate: after", () => { | ||
| 121 | 121 | await stopMirror(); |
| 122 | 122 | github.stop(); |
| 123 | 123 | servers.stop(); |
| 124 | app.close(); | |
| 124 | try { | |
| 125 | app.close(); | |
| 126 | } catch { | |
| 127 | // A late write on a closing database is not what these tests judge. | |
| 128 | } | |
| 125 | 129 | forgetProviders(dataDir); |
| 126 | 130 | // A mirror push or git child may still be writing as the app closes; the |
| 127 | // directory goes once they let go, not on the first ENOTEMPTY. | |
| 128 | await rm(dataDir, { recursive: true, force: true, maxRetries: 20, retryDelay: 100 }); | |
| 131 | // directory goes once they let go. A scratch directory that will not go | |
| 132 | // is the machine's to sweep, not a verdict on the code under test. | |
| 133 | await rm(dataDir, { recursive: true, force: true, maxRetries: 40, retryDelay: 100 }).catch(() => {}); | |
| 129 | 134 | }, 30_000); |
| 130 | 135 | |
| 131 | 136 | test("the form's word: anything but archive or mirror leaves it alone", () => { |
new above
offline
Swallowing app.close() errors is acceptable in teardown. If this keeps recurring, the real fix is for stopMirror to drain the in-flight pushes before the database closes.