Attempt lifecycle
Design one atomic unit of practice that completes cleanly, replays exactly, and never depends on an enclosing session.
The atomic unit
An Attempt begins when the package initializes one Practice Mode execution and ends when the package returns a terminal transition or the member explicitly aborts it. A completed Attempt is terminal by itself.
Examples:
- one Around the Clock game from target 1 through 20;
- one 60-second Puzzle Rush;
- one complete speedrun or one segment drill;
- one set of 20 reaction stimuli;
- one attempt to perform a memorized sequence.
Runtime sequence
Describe
The engine explains accepted inputs, Measurements, result contract, and capabilities for one configuration. Description is pure and does not begin an Attempt.
Initialize
The host supplies a pinned package identity, trusted run identity, actor and configuration context. The engine returns initial package state and semantic effects.
Apply
Each typed command or exact observation passes through the same deterministic reducer. The transition returns replacement package state, optional Measurements/effects, and terminal status.
Commit
The host validates the transition and commits authoritative activity evidence with idempotency and expected-revision protection.
Project
Progression, history, Story Events, overlays, narration, and creator evidence consume the committed result. Their projections are rebuildable.
Repeated intent
Portable UI may reconnect, resume from background, or repeat an action while a network response is delayed. The host and package protocol use stable command identity and expected revisions so repeated intent cannot create a duplicate Attempt or apply a throw twice.
Abort is explicit
Walking away after a completed Attempt requires no Stop button. Walking away halfway through a live Attempt may require Abort so the system can distinguish intentional abandonment from an interrupted connection and keep history honest.