Summary
Add deterministic logical-slot expiry to reservation-core and prove the recovery boundary.
Scope
ExpireHold
- persisted deadline-slot handling
- snapshot/WAL recovery across expiry boundaries
- fail-closed handling for rewound progress and torn-tail cases
Acceptance
- expiry depends only on persisted state plus
request_slot
- no wall-clock dependency enters the engine
- recovery preserves hold states exactly
Canonical docs
- docs/reservation-engine-plan.md
- docs/reservation-semantics.md
Blocked by
- M11 umbrella issue
- M11-T03