FA-283 / Runtime and resources / Member archive
A stale handle returns a newly checked-out object to the pool · case 03
The same slot becomes available while a later borrower still owns it.
Case contract
A pool starts with size free numbered slots. Get chooses the smallest free slot and increments its generation, or emits None if exhausted. Put [slot,generation] releases only that active handle. Return [issued handles,sorted free slots,sorted active handles]. Generations never wrap in this model.
Why this case matters
Models reusable object handles in a local allocator where delayed callbacks can outlive a checkout; this does not model distributed leases, wall-clock expiration, or thread interleaving.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| old handle cannot release new checkout | [[[0, 1], [0, 2], [0, 3], [0, 4], [0, 5]], [], [[0, 5]]] | [[[0, 1], [0, 2], [0, 3], [0, 4], null], [], [[0, 4]]] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗