Package-level declarations
Types
How a ReservationStore.confirm ended.
owner's reservation of key in scope. A pending reservation expires at expiresAt (epoch milliseconds) and is held by the attempts in holds; a confirmed one has no expiry and no holds, and version is the version of the owner's fact that last confirmed it (ReservationStore.UNVERSIONED for a pending one). Its owner is an aggregate of the scope's type.
A reserved or released key in namespace, without its owner or expiry: what an append records. Its scope follows from the entry's aggregate (ReservationScope.of): its type and its tenant, or no tenant when the key is a system one, unique across tenants.
Where a reserved key is unique: the aggregate type of its owners (within the type, not the bounded context), the tenantId (axiom A6: every unique key includes the tenant) and the namespace, such as user.name. A key unique across the type's tenants has the tenant SYSTEM_TENANT, which no aggregate's tenant ever is. The scope names the type, not only its owner, because some reads have no owner: ReservationStore.find looks a key up.
Reserved keys: uniqueness across aggregate instances, such as a user name unique within a tenant (documentation/designs/01-programming-model.md §7; 9.x PrepareKey).