Snapshot-Pinned Decision¶
Decision method — instantiates Use-Time Precondition Binding
Computes and records a decision against one frozen, versioned snapshot of the state, binding the action to the exact evidence it was based on.
Snapshot-Pinned Decision fixes the evidence rather than the resource. At check time it captures a consistent, versioned snapshot of the relevant state and makes the entire decision against that frozen view — then carries the snapshot's identity forward, so the action on record is explicitly "decided against version N." Its defining move is internal consistency plus provenance: every input to the decision comes from one coherent point-in-time view (no torn reads across a state that is shifting under it), and the version is retained so anyone can later see exactly what the decision saw. It neither locks others out nor re-queries at use; it accepts that the live world may have moved on and instead makes the decision reproducible and attributable to a known state.
Example¶
An underwriter approves a mortgage against a credit report and income snapshot pulled at 09:14 on the 3rd, reference CR-4471. The decision record does not say "approved because the applicant's credit was good"; it says "approved against snapshot CR-4471." If the applicant opens a new card that afternoon, the approval is neither silently invalid nor silently honored on stale data — it is a decision explicitly bound to a named version, and any re-underwrite is a fresh decision against a fresh snapshot. That pin is what makes the file auditable months later, and what turns "the data changed" from an ambiguity into a visible, decidable event. The same shape appears when a report or dashboard is generated against a single database snapshot, so that every figure on it reconciles to one instant rather than smearing across a moving system.
How it works¶
- Freeze one coherent view. All inputs are read from a single consistent snapshot, so the decision can never be assembled from a mix of old and new state.
- Stamp the version. The snapshot receives an identifier that travels with the decision, not just with the data.
- Decide against the pin, not the live state. The computation references the frozen view; drift after the snapshot does not retroactively change what was decided.
- Keep the pin as the record. The version becomes the audit anchor — what was true, as far as this decision could know.
Tuning parameters¶
- Snapshot scope — how much state is frozen into one view; too little reintroduces torn reads, too much is expensive to capture and to retain.
- Pin lifetime — how long a decision may ride an old snapshot before a refresh is forced; longer pins are cheaper but drift further from reality.
- Staleness tolerance — how far the live state may move past the pin before the decision must be re-made rather than honored.
- Retention — how long snapshots are kept for audit; longer retention buys traceability at a storage and, sometimes, a privacy cost.
- Refresh trigger — a time-based re-pin versus a re-pin fired by a signal that the underlying state has moved materially.
When it helps, and when it misleads¶
Its strength is that it makes decisions consistent and auditable under change: no torn reads, and a durable record of exactly what evidence a decision rested on — decisive in regulated or contested settings where "what did you know when you decided?" is the whole question. It is also the standard database move: snapshot isolation lets a long computation see one stable view while the rest of the system writes around it.[1]
Its failure mode is that a pin is a photograph, and photographs go stale — the further the state has drifted since the snapshot, the more a "consistent" decision is consistently wrong. Snapshot isolation's own classic anomaly, write skew, is the sharp edge: two decisions each valid against their own snapshot can jointly break an invariant that spans them, because neither saw the other. And a tidy pin invites treating an old view as current simply because it is internally coherent. The classic misuse is pinning to dodge accountability — freezing a favorable snapshot and deciding against it after the world has plainly moved. The discipline is to bound how stale a pin may be, re-pin on material change, and never confuse consistent with current.
How it implements the components¶
state_version_or_freshness_token— the snapshot's version identifier; the token that names exactly which state the decision was made against.use_time_state_evidence— the frozen snapshot is the evidence of record the action rests on and can be checked back against.check_use_audit_trace— pinning the version into the decision permanently links check to use ("decided against N"), giving the audit anchor.
It does not run a conflict_abort_and_retry_policy at commit (that's Two-Phase Commit with Freshness Check) or take a reservation_or_hold_record to stop the state moving at all (that's Lock or Hold Until Use); a pin records and reconciles against a version, it does not prevent drift.
Related¶
- Instantiates: Use-Time Precondition Binding — it binds check to use by making the action name the exact version it was decided against.
- Sibling mechanisms: Two-Phase Commit with Freshness Check · Revocation Status Check at Use · Compare-and-Swap Version Token · Timestamp and Freshness Badge · Lock or Hold Until Use · Lease-Bound Capability Token
Notes¶
A snapshot pin makes staleness visible and attributable but does not, on its own, act on it. It is frequently the substrate the detection mechanisms sit on: a freshness check compares the live version against a pinned one. Alone it answers "what did we decide against?" — pair it with a use-time re-check (as in Two-Phase Commit with Freshness Check) to answer "should we still act?"
References¶
[1] Snapshot isolation lets a transaction read from a consistent snapshot taken at its start, so it sees one stable version of the data while others write. Its characteristic anomaly is write skew: two transactions, each valid against its own snapshot, together violate an invariant neither could observe. It is the standard cautionary tale that a decision can be perfectly consistent and still stale. ↩