### A sink's run reads, at each plan, the claims and records the sink held by then

- **A verifier derives what the sink decided** ([extensions/timeliness.md](extensions/timeliness.md) §7.5.1): a run's
  inputs may state the instant from which the sink first held each claim and each record (`claims_at_ms`,
  `records_at_ms`), and each plan reads only what was held by its own instant. A schedule that reaches a sink mid-run
  no longer rewrites the plans made before it. With no instant a statement was held from before the first plan, so
  every run that states none means what it meant, byte for byte.
- **The refusals**: `claims_invalid` and `records_invalid`, for a list without one entry for each, an instant past the
  last instant, one statement given twice, or a statement held before its signer made it, whole seconds compared.
  A claim that fails its signature is compared with nothing.
- **A chain, at each plan**: a claim whose parent the sink does not hold yet is refused in that plan (`parent_not_held`,
  or `chain_break` where it holds an earlier claim of the signer), and accepted by a later plan that holds the parent.
- **A later claim against a plan already relied on**: a statement decides nothing when it arrives, only when a plan
  reads it. A plan that reads a contradiction loses the schedules or the intent it sets aside, and abandons what it
  does not continue. What is settled stays settled, and what the sink holds stays held.
- A run that states instants reports what each plan read (`read`), and `not-held` for the rest. Timeliness §6 and a
  plan alone read no instants.
- **Breaking:** `api:rust:wai::timeliness::scheduler::RunInputs::claims_at`, `api:rust:wai::timeliness::scheduler::RunInputs::records_at`
  and `api:rust:wai::timeliness::scheduler::Run::read`: a caller that builds `RunInputs` field by field sets both to
  `None`, and reads the same run.
