Skip to content

ADR 002 Stateful Issuer

HardlyDifficult edited this page Jul 17, 2026 · 8 revisions

ADR 002: Stateful issuer aggregate

Status: Accepted

Decision

Represent the issuer's current OCF state with one CapTable aggregate holding object-ID to contract-ID maps. Apply creates, edits, and deletes through one atomic UpdateCapTable choice while keeping the individual OCF objects as contracts.

Consequences

  • callers get atomic multi-object updates and one discoverable current state;
  • issuer and system-operator roles remain explicit signatories;
  • the aggregate contract ID changes after every update;
  • generated maps and reference checks must remain aligned with OCF modules; and
  • callers order interdependent deletes and edits, while creates are dependency-tiered.

The current processing order is deletes, regular edits in caller order, then sorted creates, followed by aggregate post-checks. Contract Architecture links the generator and implementing contracts.

Clone this wiki locally