test(seed): pin reader_lock_acquire in hardlink_clone_into (#12) #12

Merged
claude merged 2 commits from fix/reader-lock-pin into main 2026-08-24 23:05:18 +00:00
2 Commits
Author SHA1 Message Date
claude aee337a1cb docs(readme): catalogue scenario 11 and close its scratch self-check
The suite-coverage table and the concurrency-scenario prose enumerate
every scenario by number and by the property it pins, so adding one
without listing it leaves the catalogue claiming complete coverage it
no longer has. PR #9 updated the same table for the same reason when it
added 8b/8c/8d/10; this follows it.

Also adds the closing no-scratch-left-behind check that 8a and ALIAS
end with. Scenario 11 is last in the file, so nothing downstream would
have caught a leaked staging path or reader marker.
2026-08-24 17:57:27 -05:00
claude 0c12af4e43 test(seed): pin reader_lock_acquire in hardlink_clone_into
Adds scenario 11, which races a real hardlink_clone_into against a real,
concurrent publish-snapshot.sh republish of the exact snapshot being
cloned, and asserts the publisher's own log reports entering its
reader-drain wait. Deleting reader_lock_acquire left every suite green
at the identical 129 assertions (issue #10): the marker it writes is
what the publisher's wait_for_readers checks, and with it gone the
publisher sees zero readers on its first check and proceeds straight to
reclaiming the rotated generation, silently.

Kept as its own scenario rather than folded into 8a: 8a already pins
exactly one property (the identity check) for exactly one mutant, and
the suite's one-scenario-one-mutant diagonal across 8a to 8d and 10 is
deliberate.
2026-08-24 17:14:22 -05:00