ARC 2Choose Consistency SemanticsChapters 5โ€“9

Chapter 9 โ€” Choose Collections from Business Invariants

Chapter objective: After this chapter, a developer can begin with a business invariant and give a falsifiable, testable reason for choosing Register, Lease, CRDT, or a different system of record.

Learning objectives

  1. Decide whether state fits DSM before selecting a collection.
  2. Map an invariant to collection semantics and a failure boundary.
  3. Define a minimal validation experiment for each decision.
  4. Recognize state that belongs in a database or messaging system.

Prerequisites

Case progress

The team reviews the route hint, shard owner, and request counter separately. Each decision records adoption conditions, failure behavior, and rejection reasons. DSM is not assumed to fit every state.

Decision order

Choosing a collection from business invariants

The first question asks whether lost state can be repaired from a peer or rebuilt from an authoritative source. When it cannot, or when local success immediately creates an irreversible commitment, the state stays in a transactional or event-based system of record.

State Key invariant Choice Partition window Validation focus
route hint one current visible hint per key Register the two sides may differ briefly deterministic convergence and stale fallback
shard owner time-bounded ownership; old owner cannot write Lease the old holder may still run fencing rejects the old token after transfer
request counter local updates merge safely CRDT a local count is incomplete duplicate, reordered, and regrouped merges agree
order/payment transactional fact and audit history keep outside DSM as primary storage two successes can be irreversible transaction, idempotency, reconciliation, and audit

A choice is a testable hypothesis

"Lease supports ownership" does not complete a decision. A stronger version is:

For orders-17, only the worker holding the newest fencing token can commit scheduling results. After transfer, the executor rejects the old token. A transfer test and an old-token counterexample validate the rule.

This statement identifies the actor, state, failure window, external responsibility, and evidence.

Counterexample and fault injection

Experiment

Open collection-review.json and fill in decision, invariant, failureWindow, and evidenceCommand for every scenario. Then run:

node --test tests/chapter-assets.test.mjs

The reference answer expects a business reason for each adoption and rejection, not only a collection name.

Experiment acceptance card

Field Content
Command node --test tests/chapter-assets.test.mjs
Input or fault Seven business states with invariants and failure windows
Observable result All three DSM collection types and the rejected cases are covered; required fields are present
Evidence level E1: design-review asset check backed by E2/E3 experiments from preceding chapters
This experiment does not prove Automatic fit for a new domain, production capacity, or organizational acceptance

Review

Next

Chapter 10 begins Arc 3 by identifying who belongs to the cluster and who is only suspected of being offline before discussing delta and repair.