Skip to main content

Identity, ordering, and revisions

Exact means stable identity and revision, not permanent availability.

Implemented in sourceReviewed 2026-10-07 · prelaunchRead this guide as Markdown
Guide context

A retained reference resolves the revision it names—not whichever value is current today.

Every record has a stable identity and numbered revisions. A correction adds a new revision instead of overwriting the old one. An exact lookup returns the named retained revision or an explicit non-found result, never whatever is newest.

On this page · 4 sections

One identity, retained revisions, three clocks

  1. Effective time

    When the source event happened.

  2. Accepted time

    When a revision became known.

  3. Read boundary

    The exact revision and pinned generation requested.

A correction is a new revision, not a new event#

Identity is tenant + subject + type + ID. An exact retry returns the original receipt. A changed payload at the same revision conflicts. A correction uses the next revision and cannot change ID, scope, or occurrence time.

Idempotency is bounded by retained evidence. Do not recycle IDs after expiry. Deduplicating an outcome record does not prevent an external operation from executing twice.

Three clocks, three meanings#

  1. Occurrence time

    Places the event in a UTC day. Daily membership sorts by occurrence time, then ASCII ID.

  2. Acceptance sequence

    Orders applied revisions inside one tenant/subject/type scope.

  3. Publication time

    Marks when a fixed view became available. It is not the event’s business time.

Pin the collection while browsing#

A daily generation names a fixed manifest of bounded reference pages. Reuse its generation with the next cursor so a late arrival does not change the collection mid-read. Daily generations and trajectory generations are different references, not interchangeable identifiers.

Read exact revisions without inference#

A daily read returns at most 32 references. byIds() restores requested order and reports missing, expired, or unresolved keys explicitly. A failed or unprocessed lookup is not replaced with the latest revision.

Source pointers and hashes do not certify an outside business claim. Availability alone proves neither consumption nor correct reasoning; retain the generation actually supplied to an agent to record that application input.

Agent-readable documentation manifest