Why migrate
The thin Postgres log is sufficient for Mnemom’s V1 scale (≤ 10K canonical recomposes per day). Sigstore Rekor brings:- Decoupling — the log lives outside Mnemom’s infrastructure; a Mnemom compromise can’t silently rewrite it.
- Industry standard — Rekor is the Linux Foundation Sigstore project’s canonical transparency log. Consumers already trust it for software supply-chain attestations.
- Community tooling —
rekor-cli,cosign, and the Sigstore client libraries become first-class verification paths alongsidemnemom verify-card.
Column mapping
Entry kind
Rekor entries use akind discriminator. The closest fit for an AAP attestation is DSSE (Dead Simple Signing Envelope, SLSA spec). The DSSE wrapper around the JWS looks like:
dsse entry kind accepts this shape directly.
Migration steps (post-V1-GA)
- Stand up the Rekor instance. Choose between the public Sigstore instance or self-hosted. The public instance has no SLA; self-hosted gives Mnemom + customers operational control.
- Replay historic rows. Walk
card_attestationsinlog_index ASCorder; wrap eachsigned_attestationin a DSSE envelope; POST to/api/v1/log/entries. Rekor assigns its ownLogIndex— store the mapping in a newrekor_indexcolumn oncard_attestations. - Dual-write window. For some number of weeks, every new compose-hook append writes both to Postgres + Rekor. Smoke-test that the two roots stay aligned.
- Cutover read paths.
GET /v1/transparency/log/{id}/...starts returning the Rekor inclusion proof alongside (or instead of) the Postgres-derived proof.mnemom verify-cardlearns the--rekorflag for explicit Rekor-only verification. - Retire the Postgres tree-build. Once Rekor reads are stable, drop the in-process Merkle reconstruction. The
card_attestationsPostgres table stays as a hot cache + a defense-in-depth ledger; Rekor becomes the authoritative source.
Consumer impact
The wire format of the attestation token itself does not change. Consumers verifying just the JWS continue to work; consumers wanting full transparency-log proofs gain an optional second source.
Timeline
Deferred to post-V1-GA. Until that migration ships, the Postgres log + S3-with-object-lock backup is the authoritative public log. The v1 schema documented atmnemom-contracts/transparency-log/v1.yaml is stable.