Relationships
≡ duplicate of #3082#3084 main is red: repository_dirty_coverage_test fails for UnifiedData.collectGarbage(orphaned deferred write)
Opened by hammz · 10/6/2026· Shipped 10/6/2026
Description
On a clean checkout of main at f9fbbac1, integration/repository_dirty_coverage_test.ts fails deterministically: 0 passed (183 steps), 3 failed (6 steps). This fails the run-tests step of verify-build for every branch based on current main (seen while verifying swamp-club#3078, which does not touch this code).
Failing tests
All three fail on the same case, UnifiedData.collectGarbage(orphaned deferred write):
- markDirty: every cache file a hooked repository changes is covered by a mark inside the cache (swamp-club#2855)
- unit of work: every repository sends the same marks inside a legacy unit of work scope as without one (swamp-club#2971)
- unit of work: each change a moved repository stages matches the disk after the act (swamp-club#2979)
The assertion at integration/repository_dirty_coverage_test.ts:764 fails: result.versionsRemoved is 0, expected 1, after save, saveDeferred, orphanPendingRows and collectGarbage.
Reproduction
git checkout f9fbbac1 deno run test integration/repository_dirty_coverage_test.ts
Fails on every run (tried twice on main, three times on a branch rebased onto it).
Suspected cause
A semantic conflict between two recently merged changes. The case was added or last touched by d9670e54 (swamp-club#3056, PR 2858), and 5ba0b8fc (swamp-club#2975, PR 2864) then changed deferred writes to stay pending until promoted and also edited this test file. Each was verified against a main that did not yet contain the other. Not confirmed by bisect.
Expected
The test passes on main, either by collectGarbage removing the orphaned pending version again or by updating the expectation if the new behaviour is intended.
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.