The registry and retained identity outputs
As an identity owner, I keep my checkpoint alive — bonds, rotations, unfreezing — until it is convicted; there is no owner exit, no parking and no revival. As a relying party, I see a checkpoint that is either alive or convicted, and I must refuse a termination-pending output. As a folder, I can process an admitted request without becoming the identity's controller.
These are model guarantees under their stated premises. The simulators execute model transactions; they do not establish Aiken, builder or deployed conformance. The no owner exit revision and the correspondence register own the lifecycle revision; the earlier parking revision is superseded. The earlier design record remains historical; its replaced lifecycle and economic claims are not current guarantees.
Where the registry is built
The model imports the public Singular commit
d69ab005c3b710aeebf033d3c5cd08c56feb5643, tree
2979dcfc58b092313b0ce7fa0493722539b9ea65, under Lean 4.27.0.
The pinned sources define the imported generic booking, economic fold and
rejection judgments. KERI owns its request lifecycle: until a request's
deadline only a fold spends it; from the deadline anyone returns it through
Registry.returnRequests, which refines the imported rejection with the
deadline, registration-only and balance guards. The KERI registry is deployed
with retractTime = 0, so no retraction window exists. Public upstream requirements include
registration,
termination,
reading and
integration.
The executable model pin and those product requirements are distinct evidence.
Registry.Sys.toWorld projects KERI carriers and pending entries to the
imported Singular.World. Registration booking and termination booking invoke
its actual judgments. Registry.fold invokes Singular.foldAccepted, then
reconstructs the KERI state and checks that its projection equals the returned
world. RegistryAgreement.lean binds this correspondence. KERI retains its
own admission, authorization, custody metadata and addressed local flows.
flowchart TD
Request[Complete registration booking] --> Fold[Accepted economic fold]
Fold --> Live[Live carrier and active key]
Live -->|Duplicity| Pending[Termination-pending carrier]
Pending --> Booked[Whole pending termination entry]
Booked -->|Matching consuming fold| Retired[Retired key and burned token]
The machine (Registry.lean)
Sys contains the generation, imported configuration and trie, carriers,
registration bookings, complete termination entries, treasury, permanent
AID/token bindings and next token counter. A carrier stores its original
holding, AID, token, key counter, local state and minimum ADA. A termination
entry retains the complete generic booking and the original carrier metadata.
| Action | Given | When | Then |
|---|---|---|---|
| Registration booking | A complete generic booking with carrier value at least Mc + D (minimum ADA, then the checkpoint's deposit and freeze bond, then the initial pool the registrant chooses) and the configured tip |
bookRegistration accepts; a carrier one lovelace short is refused |
The request is pending; no carrier has been created yet. |
| Registration fold | Reachable state, the matching generation/plugin, KERI inception and an accepted imported economic transaction | fold consumes the booking |
A carrier and permanent AID/token binding are installed with the committed holding. |
| Convict carrier | A live carrier and duplicity against its key counter | convictCkpt accepts |
Retain a termination-pending carrier and the active registry key. |
| Book termination | That pending carrier and an exactly matching generic booking | bookTermination accepts |
Move custody into the whole pending entry; retain its token/key/original holding association. |
| Complete termination | A reachable pending entry and accepted consuming fold | fold consumes that request |
Remove that pending entry, burn its active token and retire its key. Unconsumed entries remain whole. |
| Registration return | A booked registration that was not folded, a transaction whose whole validity interval starts at or after the request's deadline (booking validity upper bound plus the processing window), and an accepted imported rejection | returnRequests accepts, with no signature; before the deadline it refuses, and a pending termination is never a member |
The refund address receives at least the contents less the declared tip; only the returned registrations leave the pool and all other custody is unchanged. |
The coarse Registry predicates are inception and duplicity. They are declared abstractions, not cryptographic verification
or a proof that they equal Checkpoint's concrete evidence predicates. In
particular, the Registry flow does not summarize the Checkpoint conviction's
bond and pool distribution.
Carrier.original is the stable imported holding descriptor retained as
provenance. It does not prove equality with the complete serialized, evolving
Checkpoint datum or a current ledger output reference. The separate coarse
key counter and concrete Checkpoint key-state encoding are not universally
equated by this adapter.
What registration guarantees
Given a reachable Registry state, the model preserves unique carrier and pending custody, permanent bindings and the imported world's invariant. A second successful first-registration cannot replace an active or retired key. There is no park and no revival, so no local step mints a new incarnation. These guarantees are scoped to one model registry.
RegistryReach.lean proves reachable well-formedness. RegistryCustody.lean
and RegistryBurns.lean prove custody and the fold-only retirement boundary.
RegistryMetadata.lean, RegistryFold.lean and RegistryCompleteness.lean
prove reconstruction and completeness under the complete premises.
RegistryAuthorization.lean proves the local authorization consequences.
The numbered public consequences and inversions remain in RegistryGoals.lean.
An active key is not a consumer authorization. The reader must inspect the application output and enforce the consumer contract. Exact token bytes, canonical registry selection and transaction validity extensions remain in consumer authentication.
Checkpoint and the associated system
Checkpoint.lean owns the funded local lifecycle: concrete duplicity,
rotation and signed intent, conviction/freeze bonds, pool, refund address,
poison, freeze and juvenility. There is no close and no reopen: a
checkpoint leaves the live states only by conviction. The proved
consumableStateB mirror refuses pending and convicted states.
SysStep adds the actual registered origin and pending request association.
CheckpointCertificate.lean replays Registry history under the stored
parameters, environment and initial configuration. Registration requires an
actual accepted registration. Booking binds the request reference, AID, token,
key state and complete entry to the origin. Completion needs an accepted fold
consuming that exact entry. A valid receipt for a different request in the same
context is insufficient. A local pending state has no local exit.
CheckpointCompletionGoals.lean states these receipt consequences.
CheckpointSystemFixtures.lean supplies connected registration, rotation,
conviction, booking and completion journeys, including a mixed fold and
other-request refusals. The page's associated-system panel shows both addressed
Checkpoint flow and Registry flow beside their full states.
Booking and fold economics
Given Mr + tip ≤ Mc, booking splits the carrier minimum ADA exactly:
Mr + tipfunds the termination request.Mc - Mr - tipis the booker's premium.- The booking fee is paid separately by the booker.
A live carrier retains Mc; it cannot pay that value to a reaper. Booking needs
conviction first. Samaritan.booker_nonloss_iff compares the premium with the
booking fee. There is no unconditional promise that a booker makes a profit.
The imported fold accounts for actual inputs, outputs, fees and donation.
Registration delivers the declared carrier ADA, destination and datum to the
token-bearing output and routes registration cost to treasury. Termination
creates no carrier output: request ADA less declared tip goes to treasury,
which is Mr for a matching KERI booking. Declared tips are ordinary value
subject to transaction accounting, not an automatic payment to a named person.
termination_fold_accounting and self_fold_addressed_accounting use those
values. The latter requires all ordinary outputs at the named address, matching
booking data and its other explicit transaction premises. A fold does not
promise an automatic refund of Mr to the booker. Booking conservation and
addressed self-fold accounting are different claims.
Executable evidence and limits
The Registry simulator replays complete
wire-v3 transactions, including refusals and economic boundaries. The
Checkpoint simulator has local lifecycle stories and
a separate associated-system player. The canonical reader stories are
simulator/M1-STORIES.md and simulator/REGISTRY-STORIES.md.
The Lean build, exact contract checks, compiled axiom inventory, finite model mutations, fresh corpus replay and browser/CLI checks cover separate evidence classes. Their source bindings are recorded with the candidate. Finite examples are not the universal proofs; checker mutations are not model mutations.
The model does not establish production transaction construction, submission, rollback handling, live-chain availability or cryptographic codec correctness. Broader application request recovery remains in request lifecycle. Those obligations require their own model correspondence and both implementation test layers before production acceptance.