- orphaned() reads the clock before the lock's mtime and requires the mtime
unchanged at the end, so a lock made meanwhile is never removed; an mtime
a minute or more ahead (clock skew) counts as old.
- Claims older than 2 minutes are abandoned and pruned by touch.
- A waiter skips the claim and mkdir while the lock is visibly held; the
wait is bounded at 300 tries or 30 s; a non-numeric tries value falls back
to 300; ten quick retries (not three) before a lock nobody holds is
reported as untakeable; pid 1 is a valid holder again.
- Tests: deterministic young-lock clock, skew and non-numeric owner shapes,
abandoned claims, the deadline, explicit 30 s timeouts.
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>