Goal
Rebuild the still-useful session-fencing and transport-hardening ideas from closed stale PR #72 on today's arbitrary, atomic multi-target claim contract (#135/#126/#136/#150).
Required behavior
- give each acquired claim generation a unique lease/session ID and receipt, so a stale process using the same worker ID cannot renew or release its successor
- support arbitrary exact
claim_targets, article/path fallbacks, lean/... helper keys, shared-owner batches, and all-or-nothing acquire/renew/release
- preserve the current
author/<hash> refs and dashboard/runtime contract, with an explicit compatible migration plan for v1 leases
- make any v1→v2 transition atomic or conservatively blocking; never expose a window where both generations can be acquired
- pin/verify repository and scratch generations, bound Git input/output/process resources, and use the hardened Git environment
- reject symbolic/malformed claim refs without dereferencing/mutating their targets
- never destructively adopt or rewrite a markerless scratch repository
- handle relative-origin replacement/ABA and terminate surviving process-group descendants
Regression source
Use repaired local descendant 729ae642 from #72 as a test corpus for the six prior blockers, but do not port its old single-target/article-ID namespace or overwrite current #135 batch and #126 transport behavior.
Provenance
Source discussion: #72 (and earlier #34 review). #72 was closed because its snapshot dependencies landed through #95 and its exact branch had 35 conflicts plus an obsolete claim model.
Goal
Rebuild the still-useful session-fencing and transport-hardening ideas from closed stale PR #72 on today's arbitrary, atomic multi-target claim contract (#135/#126/#136/#150).
Required behavior
claim_targets, article/path fallbacks,lean/...helper keys, shared-owner batches, and all-or-nothing acquire/renew/releaseauthor/<hash>refs and dashboard/runtime contract, with an explicit compatible migration plan for v1 leasesRegression source
Use repaired local descendant
729ae642from #72 as a test corpus for the six prior blockers, but do not port its old single-target/article-ID namespace or overwrite current #135 batch and #126 transport behavior.Provenance
Source discussion: #72 (and earlier #34 review). #72 was closed because its snapshot dependencies landed through #95 and its exact branch had 35 conflicts plus an obsolete claim model.