ADR 0012: Time semantics are part of the process contract

Decision

Three clocks, never conflated:

  1. Claimed:event/at, asserted by the actor, inside the hashed region.
  2. Observed — witness countersignature over a head: “this history existed no later than T”.
  3. Evaluated — the explicit now argument to derivation; never an implicit system clock.

Claimed is the default clock for guards. A guard opts into observed time with {:clock :witnessed} where backdating matters. Evaluation time is always explicit — the kernel has no ambient “now” (CLAUDE.md: no kernel I/O includes no clock reads).

The permanent answers:

Context

Someone will eventually write a time-dependent guard without saying which clock it reads, and every implicit answer is wrong for someone: claimed time is gameable, witnessed time may not exist yet, system time is unreproducible. Making the clock part of the guard’s meaning keeps audit questions answerable — and makes verify L2 possible at all, since re-derivation years later must not depend on the wall clock of the machine running it.

Consequences

see history · edit this page