Artifact 37a65f7257a9d49115d6526c340d5295019668740cdab844b3674e3d6c427cd3:
- File
src/dst.zig
-
2026-07-20 05:33:57
— part of check-in
[c52cc8cc76]
on branch h10-ties
— H10: fuzz equal-mtime ties in the repository-state DST
sim/gen.zig emitted strictly-increasing unique mtimes, so the same-second selection tie -- once a real defect, the B1 regression cluster -- was only example-tested, blind to a class that already bit once.
gen.zig gains a tie-permitting mode: a seeded roll reuses the previous mtime, bounded to short runs, and each reused-mtime check-in is shaped as a linear child of the previous one, so an equal-mtime run is a real descendant chain. oracle.zig now computes the documented tie-break in resolveName, tipSlot and openLeafOf -- descendant-before-ancestor over full ancestry, then least artifact hash (repostate.zig ancestryMaximal) -- so a resolution reverting to hash order is caught, not mirrored.
dst.zig runs the tie sweep as additional coverage; the unique sweep is unchanged. Order-independence keeps its total-rule dimensions (leaf set, name resolution) under ties and skips the open-leaf set, whose equal-mtime supersede is implementation-defined (Section 5.3); the Section 6.3 branch representative is first-seen under a tie, checked in the unique sweep only.
Reverting the tie-break to hash order trips the tie sweep at seed 1. (user: dmestas, size: 35424) [annotate] [blame] [check-ins using]
-
2026-07-20 05:42:10
— part of check-in
[b354fb5947]
on branch trunk
— Merge h10-ties: the simulator now generates the equal-mtime ties that hid B1
The generator only ever emitted strictly increasing, unique modification times, so the equal-second corner -- where two check-ins tie and the name must resolve by DAG ancestry, not hash order -- was covered only by hand-written regression tests. That corner was a real bug once. A new tie mode reuses the previous mtime on a seeded, bounded roll and shapes a reused-mtime check-in as a descendant chain, the exact shape the bug took; the oracle resolves a tie the way production does, by ancestry and then least hash, so a resolver that fell back to hash order is caught. Order comparison is done up to that tie-break, with the two genuinely implementation-defined dimensions skipped under ties and documented. Reverting the real tie-break in a scratch build makes the tie sweep fail where the unique sweep stays green -- proof the simulator now sees the class it was blind to. Default seeds draw no extra entropy, so the existing universe is unchanged. (user: dmestas, size: 35424) [annotate] [blame] [check-ins using]
-
2026-07-20 05:33:57
— part of check-in
[c52cc8cc76]
on branch h10-ties
— H10: fuzz equal-mtime ties in the repository-state DST