The M1 preprod deployment
What ships, and the accepted design
Unless a paragraph below is marked as preprod or main today, it
describes the accepted design (D-036 to D-040): active, parked holding
the hash, or convicted; no withdraw; the reap by the next keys; deposit
is the unfreeze; poison epoch-local and cleared by rotation. Play the
checkpoint simulation.
What ships today is the V1 checkpoint with role addresses.
The M1 V1 checkpoint programs are published as reference scripts on Cardano
preprod. The committed release manifest binds the exact applied programs to
source commit 50a582064ddfde15ebfa3649c6b6fea8d39fc697, the immutable
blueprint, the deployment parameters, and five settled txid#index
references.
This is a testnet release for integration and acceptance. It is not a mainnet deployment or a production service-level commitment.
Release identity
| Fact | Value |
|---|---|
| Network | preprod |
| Network magic | 1 |
| Published at | 2026-07-28T14:37:05Z |
| Source commit | 50a582064ddfde15ebfa3649c6b6fea8d39fc697 |
| Blueprint SHA-256 | 14ee3f3d5d9617a5cdd13f885477d5ec132d0567e56ea118d1927c7528e587df |
| Checkpoint policy ID | 0c16c12ce8ca60872cadd545d1282f07dc93b5d22a134e4425355734 |
| Checkpoint address | addr_test1wqxpdsfvar9xppev4h25t5fg9uraeya46g4pxnjyy564wdqhr6822 |
The release applies checkpoint version 0, network discriminator 0, a
registration bond of 1,000,000,000 lovelace, a freeze bond of 5,000,000
lovelace, and a freeze window of 10,000 slots.
Live reference scripts
Each reference was observed unspent through the public Koios preprod index before the manifest was written.
| Program | Role | Applied script hash | Settled reference |
|---|---|---|---|
hash-proof |
minting policy | d767a22b85d0a1c1e2a987b970e990c22c423b2211e788252d28deca |
5c98bb45cc3e0879a63aa5807dff7f3809ae934ccbcac54f547c189bb4e8701c#0 |
observer-lifecycle |
withdrawal observer | 3d18237dc14be14284d775a5766016c7c4c432dedce287011701c6c7 |
c1ebe8b9a69160a04a9e490d4ab1149882f945774fba0cffac2dec7e6886b26f#0 |
observer-advance |
withdrawal observer | 50dbbef1c38646d29a1e333337fc5244fe2da3149bf9d5545e5b92c6 |
aaeb5ebe4e9783dc614b8a48634ef7fd9bb517cc0fdc3a4d701a26bd94679734#0 |
observer-enforcement |
withdrawal observer | a35727cf3d64fe3573c9f15fe4ecf408049a8f136ac900d42cf3cc1e |
2c9c6b3407332d08df895ab0e9e2cf15f7691d9ce24685e4fe8e6e1abb59506d#0 |
checkpoint-register |
validator and minting policy | 0c16c12ce8ca60872cadd545d1282f07dc93b5d22a134e4425355734 |
8a1a404f13b50ec0a266e1427f602916d830b62d757f3ac69976ccba0213c5d1#0 |
The machine-readable facts are in deploy/preprod/m1-manifest.json. The
original publication capture is preserved in
deploy/preprod/m1-acceptance.txt. The current transaction-path acceptance
capture, deploy/preprod/m1-board-deploy-verify-acceptance.txt, performs a
verify-only pass: it compares all five manifest script hashes and references
with live Koios results and confirms the endpoint-board reference and current
catalog without publishing replacement scripts.
Acceptance evidence boundary
The August 2026 transaction-path journey was captured through the packaged
Nix runner before its closure was repaired. Although every transaction was
built, witnessed, and submitted by the in-process Cardano API path, that
runner's runtimeInputs still shipped cardano-cli. The settled transaction
IDs therefore prove the in-process journey and its on-chain effects; they do
not, by themselves, prove that the installed closure was free of the retired
tool.
The subsequent audit repair removed cardano-cli from the packaged runner and
added scripts/check-ckeri-closure-no-cli.sh, which inspects the complete
built closure. Acceptance includes both the clean-artifact result and a
controlled build with the dependency reintroduced that makes the same check
fail. The live journey and this closure-level, demonstrated-able-to-fail
control are the combined proof for the installed transaction path. No primary
journey transaction was resubmitted for that packaging repair.
Verify from a checkout
From the repository root at the manifest's source commit, build the flake-owned binary and verify the release:
$ nix run ./offchain#ckeri -- \
manifest verify \
--manifest deploy/preprod/m1-manifest.json \
--source-repo .
ckeri hashes the immutable blueprint, rebuilds the five applied scripts,
checks that the checkout's tracked onchain/ tree matches the manifest source
commit, and queries the independent public chain index. Success ends with:
manifest verify: OK — rebuilt from source; all hashes and on-chain references are live
A changed source tree, blueprint, parameter, hash, byte length, transaction ID, output index, spent reference, or unavailable verification boundary makes the command fail non-zero.
The checkout must be at source commit
50a582064ddfde15ebfa3649c6b6fea8d39fc697. Later on-chain development
deliberately changes the current blueprint, so the standing CI tripwire uses
scripts/check-m1-manifest-live.sh to create a detached checkout at that
immutable commit before rebuilding and querying preprod.
Configuration
ckeri uses opt-env-conf exclusively. Every operational setting has a
command-line option, a CKERI_* environment variable, and a YAML key. The
YAML file itself is selected with --config-file or
CKERI_CONFIG_FILE. For example:
deploy:
network: preprod
network-magic: 1
node-socket: /code/cardano-preprod/ipc/node.socket
funding-address: addr_test1...
signing-key-file: /home/operator/.secrets/cardano-keri-preprod/payment.skey
source-repo: .
out: deploy/preprod/m1-manifest.json
timeout-seconds: 1200
manifest:
verify:
manifest: deploy/preprod/m1-manifest.json
source-repo: .
koios-url: https://preprod.koios.rest/api/v1
Set KOIOS_TOKEN to send an Authorization: Bearer header for either
deploy settlement polling or manifest verify. The token also has
--koios-token and koios-token YAML surfaces, but the environment variable
is preferred so the value does not enter shell history or a committed file.
When the setting is absent, ckeri deliberately uses anonymous Koios
requests so third parties can verify the release without project secrets.
The repository CI reads KOIOS_TOKEN from its encrypted Actions secret.
Run ckeri deploy --help or ckeri manifest verify --help for the complete
option, environment, and YAML documentation. The payment key is an
operator-side secret; it is read only by deploy and never belongs in a
configuration file committed to this repository.
Every mutating command derives the payment address from the signing-key envelope and requires its payment credential to match the configured funding address. It enumerates candidate out-refs through Koios, resolves those exact inputs against the node socket, builds and signs with the Cardano API, submits through local transaction submission, then waits for the exact effect through Koios. No external transaction CLI is required. Fragmented funding is valid: the selector may aggregate several spend inputs while reserving a separate collateral input.
Trust and availability boundary
- The source commit and blueprint digest make the release reproducible; they do not make later source changes part of this release.
- The deployment submits through a synced preprod node. Verification uses Koios as an independent read boundary and fails closed if that boundary is unavailable or inconsistent. A Koios token changes API authorization and rate limits, not the hashes or chain facts being checked.
- Reference scripts are immutable while their UTxOs remain unspent. Spending one makes this manifest fail verification and requires an explicit new release.
- The deployment payment key controls only its remaining test ada. It does not upgrade or administer the published programs.
- Preprod settlement proves integration behavior, not mainnet economics, durability, governance, or decentralization.