Skip to content

Roadmap

The current plan is the M1 return: one milestone across two repositories, fourteen epics, ordered so every epic shrinks the next one's risk. Preprod is redeployed once, at the end.

Where this page stands

Everything below is planned. What has settled is on the story ladder; what is designed and proved is the Lean machine described on the home page.

The milestone

M1 — Identity core: witnessed checkpoints on Cardano, with poison, bonds and a unique registry.

Done means, on preprod: an identity registered once through the registry; rotations landed by hunters for a premium; a freeze when the pool is short; poison by the current quorum, cleared by rotation; close by the next keys and reopen by a later rotation; conviction on a duplicity proof, terminal; a consumer contract reading the checkpoint with the fail-closed verdict; ckeri and a hunter daemon doing all of it; the fifteen stories replayed on preprod as the acceptance suite; release 0.5.0.

The design itself is settled — 87 theorems in lean/CardanoKeri/CheckpointGoals.lean over the checkpoint machine, 105 in RegistryGoals.lean over the registry, no sorry — and two simulations the design is reviewed by playing. What follows is engineering, plus the measurements that size the numbers still open.

The epics

The registry is upstream work in the MPFS repositories that M1 implies; the same milestone governs it.

# Epic Repo Depends on Acceptance
U1 MPFS permissionless batchingModify without the owner signature; End and ownership transfer removed; objective rejection only; the tip paid to whoever applies; the cage's Lean proofs re-proved for the ownerless variant cardano-mpfs two independent appliers race on a devnet; a request one of them ignores lands through the other; retract still refunds; every cage proof green
U2 MPFS gating plugin — a per-store validator the cage calls per request; the keri store's plugin parses the inception, checks the absence proof and mints the checkpoint in the same transaction; the leaf map is the interface cardano-keri consumes cardano-mpfs U1 the registry simulator's scenarios replayed on a devnet against the plugin; a second registration of one AID refused; a reopen at or below the tombstone refused
U3 Registry model and simulator — the Lean model of the leaf map and batching, its theorems, the registry simulation cardano-mpfs statements audited for completeness, proved, mutants; the page follows the Lean by replay
#318 The record — the design note written from the plan; both Lean slices merged; the clarity record folded into the Lean's doc comments cardano-keri the note, the Lean and the simulator name the same rulings
#319 Slim main — delete the enforcement economy and the M1.2 skeleton in one presented pull request; convict_predicate and its decoder lifted before the file goes; the docs survey executed; a size table of the surviving scripts cardano-keri #318 just ci, mkdocs --strict and lychee green; the size table published
#320 INV-BIND on the slimmed tree — rebase and merge the proven repair; add the advance-versus-keripy parity oracle for which witness set a rotation with cuts and adds tallies cardano-keri #319 16/16 adversarial cases green; the parity oracle red under a mutant that flips the set
#321 Receipts budget spike — measure advance verification cost against witness count (3, 7, 11) and signer count on the slimmed scripts cardano-keri #319 a measured table; a ruling on whether the premint proofs extend to Ed25519 signatures and receipts inside M1
#322 Datum V2 and the owner's edges — three value components; poisoned, born_at, refund_to, alive_at, valid_until; rotate with bond options and the signed intent; poison at the current threshold; close as a rotation with a burn; the consumer predicate in Aiken cardano-keri #320, #321 each edge of the Lean has an Aiken vector generated from the Lean corpus, applied and refused cells alike; the Lean's mutant table reproduced as Aiken mutants, each red
#323 The hunter's edges — advance paid P from the pool, unpaid advance, freeze when the pool is short, top-up, convict on a duplicity proof cardano-keri #322, #321 the story steps for the hunter, the rival and the convictor replayed on a devnet; two hunters racing produce one winner and one refusal
#324 Registry integration — registration as a request carrying the inception and the bonds, minted at application; reopen; the close and convict leaf updates; absence and presence proofs cardano-keri U2, #322 one AID, one incarnation on a devnet; the stranger's stale registration plays out as the Lean says
#325 Off-chainckeri register-request, advance --bond keep\|deposit [--refund-to], poison, close, reopen, top-up, freeze, convict, status; the hunter daemon; the follower, indexer and query endpoint on V2 cardano-keri #322, #323, #324 every story step has a ckeri command that produces it
#326 The stories as the acceptance suite — the simulator's scenario files become end-to-end transaction sequences on a devnet, expected verdicts and refusals included cardano-keri #325 all trunks and forks green; every refusal name reached by a refused transaction
#327 Docs — the user guide rewritten from the stories; the design note as the design page; the simulations linked from every user page cardano-keri #318, alongside #322–#325 mkdocs --strict and lychee green; a reader can play every page's story on the simulator
#328 Preprod cutover and release — deploy the family and the registry store, reissue both manifests, migrate or re-register the operator's identities, parameters set, ckeri 0.5.0 released cardano-keri #326, #327 the fifteen stories replayed on preprod; the release notes are the stories

Order and workstreams

flowchart LR
    U1[U1 permissionless batching] --> U2[U2 gating plugin]
    U3[U3 registry model + sim] --> U2
    U2 --> E324[registry integration]
    E318[the record] --> E319[slim main]
    E319 --> E320[INV-BIND + parity]
    E319 --> E321[receipts spike]
    E320 --> E322[datum V2 + owner edges]
    E321 --> E322
    E322 --> E323[hunter edges]
    E321 --> E323
    E322 --> E324
    E323 --> E325[off-chain]
    E324 --> E325
    E325 --> E326[stories as acceptance]
    E318 --> E327[docs]
    E326 --> E328[preprod + release]
    E327 --> E328

Three workstreams run at once: the upstream workstream (U1, U3, then U2), the on-chain workstream (#319, #320, #321, then #322, #323), and the record workstream (#318, #327). The critical path is U1 → U2 → #324 → #325 → #326 → #328 on one side and

319 → #322 → #323 → #325 on the other.

The registry is the long pole, which is why it starts now.

Measurements that size the open numbers

Four deployment parameters are deliberately not guessed. Each waits on a measurement:

Measure Taken in Decides
script sizes after the deletion #319 whether the poison lives in the datum, and the budget for the signed intent
advance verification cost by witness and signer count #321 whether M1 serves GLEIF-scale receipt counts or is scoped to what the limit admits
requests per batch under the plugin U2 the onboarding burst the registry can absorb
relayer latency from receipt to landed rotation on a devnet #325 W, the juvenility window
transaction cost of an advance and of a freeze #323 floors for P, the premium, and B, the freeze bond
replay time of the fifteen stories on preprod #328 the release gate's duration

D_reg, the conviction bond, is an economic call rather than a measurement: it must exceed what duplicity buys, and it is refundable.

Decisions still open

Question Blocks Can wait until
The four numbers P, B, W, D_reg #322's parameters P and B after #323's cost measurement; W after #325's latency; D_reg before #328
Validity and refresh: reserve the two fields, or ship the refresh edge #322's scope before #322 starts; reserving is two fields and no logic
Poison encoding: datum-resident, or a sibling UTxO #322 after #319's size table
Receipts at GLEIF scale #323, #328's target population after #321's measurement

Later milestones

Credential verification and revocation

The next common layer verifies KERI credentials rather than just identity: bounded ACDC chain verification; explicit issuer trust roots; TEL issuance and revocation proofs for every credential in the chain; proof-building and canonical CESR decoding; and an optional admission cache for applications that cannot afford full verification on every action.

ACDC means Authentic Chained Data Container. TEL means Transaction Event Log. This layer answers "what role has an issuer granted to this AID?" The checkpoint already answers the separate question "which keys currently control this AID?"

Application authorization

Applications then consume the checkpoint and credential evidence: a detached, domain-separated authorization envelope; replay protection and validity bounds; current checkpoint resolution through a CIP-31 reference input; and application-specific policy.

The first vertical demo should perform one credential-gated Cardano action, reject it after revocation, and show that a poisoned, frozen or juvenile identity also fails closed.

KERI wallet bridge

The wallet bridge lets Veridian or Signify-controlled KERI keys authorize Cardano actions without requiring the identity owner to manage an unrelated CIP-30 wallet key. Its vertical demo must include intent display before signing, threshold signing through the KERI wallet, third-party transaction submission, replay and expiry rejection, and rejection after a rotation.

This bridge is on the critical path of every application design and is currently nobody's deliverable. See business cases.

Pilots

Two pilots remain the lowest-cost application candidates: identified stake-pool delegation, and institutional treasury contracts. Both need real counterparties and vLEI credentials, so credential issuance lead time may dominate implementation time.

Hardening and extensions

Demand-driven work includes delegated KERI AIDs and recovery events; a native Plutus BLAKE3 builtin to remove the workaround cost; privacy for attributed order flow and credential proofs; the maintenance escrow and premium beyond the pool; package publication; and production deployment, monitoring and incident procedures.

Explicit non-claims

The roadmap does not claim that:

  • development-network or preprod settlement is mainnet deployment;
  • a two-key fixture proves the three-of-seven cost profile;
  • registration alone proves a legal identity or credential;
  • a private relayer guarantees prompt KERI-to-Cardano synchronization;
  • conviction rolls back already-settled Cardano actions; or
  • Lean theorems and simulations substitute for a settled vertical transaction.

The last one is the point of the ordering above: the design is proved, and the epics are what make it true on chain.