Decide what the nightly status sweep recomputes and records
What It Does
Memberships owns the sweep schedule and persistence; the term engine selects boundaries, decides catch-up and computes status and detections. Each holding commits independently, and the completed run is recorded afterward. First lapse publishes termination without changing the expired term's committed state.
The Flow
When Something Fails
A partial run retains completed holding transactions and records no completed sweep. A later successful catch-up revisits all holdings, although repeated failures can extend staleness beyond one day. Current-input status resolution remains separate from cached reporting; framework retries and remote appointment effects are not certified here.
Open Design Questions
Subscribers need a clear meaning for termination caused by natural lapse compared with staff termination. Receiver switches and absent handler configuration must be accounted for before relying on downstream appointment changes.