Problem
Omitting checkpointPolicy silently disables automatic checkpointing. Replay depth therefore grows without a bound until a caller explicitly creates a checkpoint, and every materialization pays for the entire retained suffix.
Measured on a real store at 262 unreplayed patches:
- one read spawned 5,267 Git subprocesses;
- the backlog grew by two commits per write; and
- no runtime signal exposed the monotonic degradation.
The current runtime path is:
normalizeCheckpointPolicy(undefined) -> undefined
_tryAutoCheckpoint() -> returns when no policy exists
Required behavior
- An omitted policy uses a validated runtime-backed default cadence of 64 replayed patches.
checkpointPolicy: null remains the explicit opt-out.
- The opt-out survives detached and forked runtime construction.
- Default and caller-supplied policies are represented by one immutable
CheckpointPolicy domain value.
- Checkpoint creation remains semantically neutral: graph state hashes do not change.
Acceptance
Implementation: #842
Problem
Omitting
checkpointPolicysilently disables automatic checkpointing. Replay depth therefore grows without a bound until a caller explicitly creates a checkpoint, and every materialization pays for the entire retained suffix.Measured on a real store at 262 unreplayed patches:
The current runtime path is:
Required behavior
checkpointPolicy: nullremains the explicit opt-out.CheckpointPolicydomain value.Acceptance
nullnever auto-checkpoints.null.Implementation: #842