ZeroVaultID

A compliance-bound atomic delivery-versus-payment settled on the public Canton DevNet global synchronizer.

SupersededThis page records DevNet runs from July 2026. It is not the current record of this system, and it should not be read as describing what ZeroVaultID runs today.

The same settlement design was subsequently run on the Canton MainNet global synchronizer on 2026-09-04, under a later package, with a wider set of controls and a fuller statement of what the run does not establish. That run supersedes the three runs on this page as the current record: the MainNet DvP run of 2026-09-04.

This page is kept, unretracted, because the runs it describes did happen and the evidence for them is real. It is history, not a current claim. Two specific things to carry into it: these runs were on DevNet, which is not MainNet and not production, and one claim in section 7 about reproducing the bundleHash was wrong and has been corrected in place. That correction is marked where it appears.

Addendum of 5 October 2026. Three qualifications apply to this page. First, the "consumed exactly once" statements below were computed by our software's read-back after each transaction, which found each shard by first match among active shards, a pattern later found wrong for other runs and not re-derived here; they record what our software read back, not an established property of the transactions. Second, the legs are data labels and denote no asset, amount or instrument; no value moved. Third, the check behind each clearance covers two identity document numbers only and does not screen names or dates of birth. The signed roots in section 8 expired on 21 September 2026.

A two-leg settlement committed in a single transaction on the public Canton DevNet. Each leg opened its own rail and bound a cleared attestation to that leg's realized anchor, both nullifiers were recorded as consumed once by our read-back (see the addendum above), and every forged variant was refused at command interpretation. Every value below is copied from the run evidence, and that evidence is published rather than described: one archive, sha256 60651427…, carrying the records of all three runs, against which every gate, anchor, nullifier and verbatim refusal quoted on this page can be checked using sha256sum and jq alone. The verification key both 0.7.0 runs proved under, sha256 069d3c10…, is still in this repository and unchanged since they ran. What lies outside a reader's reach is named where it arises: re-fetching the transaction takes DevNet participant access (section 5), the curator-signed list roots stay in the curator's custody (section 8), and one artifact claim did not survive a later repoint (section 7). Canton DevNet

Packages exercised: zerovault-canton-gate-accum, package id 395e49e4… (0.6.0) and da26b65d… (0.7.0). Three recorded DvP runs: 2026-07-23 under 0.6.0, re-verified read-only against the live DevNet participant on 2026-07-24; 2026-07-30 and 2026-07-31 under 0.7.0.

1. What ran, 2026-07-23 under 0.6.0

Date2026-07-23 (settlement effective at 2026-07-23T05:54:09.944671Z)
NetworkCanton Network public DevNet global synchronizer (DevNet, not MainNet, not production)
Synchronizer idglobal-domain::1220be58c29e65de40bf273be1dc2b266d43a9a002ea5b18955aeef7aac881bb471a
Party namespaceZeroVaultID::122062d7ab2a3a33bb08d45ae557e61e379e3d9dfbb7291b691eda59063c9e9be800
Package id395e49e4b8bdd3c9873a955a56502674648627101f5b8cfc2d1fee39c883d973
Package versionzerovault-canton-gate-accum 0.6.0
Positive update id12209bd1301efe7cc6dc7bca39f6ae0efb9b9a2e0c6688741930eecee907febbc54c

The positive update id is the committed settlement transaction. It was re-verified read-only against the live DevNet participant on 2026-07-24; the participant's verbatim response is update-verification.json in the evidence pack, carrying this update id and the command id dvp-20260723T054053Z-settle-pos.

2. The settlement

Both legs settled atomically in one transaction through the SettleAtomicBound choice, creating two OpenAnchor contracts. Each leg is bound to its own realized anchor: the recipient's cleared attestation is accepted only when it belongs to that recipient, is cleared, and its boundOpenA equals that leg's OpenAnchor.openA. Both nullifiers were recorded as consumed once by our read-back (see the addendum above).

LegDeliveryPayment
OpenAnchor contract id0025666751c6a552f22ad9536e02975c68b9e8c67faa412373358682ea269db48aca121220b46a447e15530fd8a6155815714fdb43e094cad9870ba7e7c34c908850277b460014c7ba621129b5637f2b46e27147200a8b21e06720517826c6a28b1ec3d4ee52ca12122089f2ea585ae6be013e69e83809174e28b779659bf97671eec71b7f84a331be1b
Realized anchor openA81d26e96d424a1c837aeabbeb557eba36696939adb1a9f96281325f0004d8bc9382c3d543eb09cf21443e121863c6692302aab21f4be6e0efacafc5ab5a9757b
Bound cleared attestation0082c3d8cf5a1cc4c4870be0616582a71969ebd4f594bab71144cce653b38e2164ca121220685f480860c29e8172e24b66a4be470d9b97b7af1e4ac09e6e06d729372a745b009edb4f58c478d1629f98768631a08f619f17d2ca5a43a77c3dbd233a70f5286eca121220293be122dfcea5bafb937ac6e0b2639cfeb4f24b9c6d36bf98a7ff20b13b381d
Nullifier (consumed once)nu:fbf2b8709a0dd091a20d0f19568a418e1f797c738c8414fb19869fa3bd464cadnu:e1add0d98676fed6d01654f07c27f2072b25589d5e531af2c6d0352b27822c4b
Shard id251225

The settlement is all-or-nothing across the two legs. A failed bind on either leg, after both legs have opened in-transaction, aborts both opens and both consumes, so no anchor is created and neither nullifier is spent.

3. The refusals

Each forged variant below was submitted against the same bound choice and refused. The named assert text is quoted verbatim from the ledger error message field recorded for that control.

ControlShard ids d / pNamed assert (verbatim)Classification
BIND-D209 / 197attestation not bound to this envelopeinterpretation-time assertion failure, rolled back, no committed update id, not sequenced
BIND-P186 / 123attestation not bound to this envelopeinterpretation-time assertion failure, rolled back, no committed update id, not sequenced
UNCLEARED114 / 13recipient is not cleared (KYC / sanctions)interpretation-time assertion failure, rolled back, no committed update id, not sequenced
SUBJECT77 / 247attestation must belong to the recipientinterpretation-time assertion failure, rolled back, no committed update id, not sequenced
XLEG208 / 124attestation not bound to this envelopeinterpretation-time assertion failure, rolled back, no committed update id, not sequenced

Each refusal rolled back the whole settlement: no OpenAnchor at the scenario's openA, both leg shards still active with consumed = [], and both sealed envelopes still active, verified from ledger state per scenario. The full verbatim ledger error payload for each control, including grpcCodeValue: 9 and AssertionFailed, is in dvp-run.json in the evidence pack.

4. Upgrade continuity

Package 0.6.0 was accepted under Smart Contract Upgrade validation against the vetted 0.5.0 predecessor at upload. The run reused the standing EpochRegistry that was created under 0.5.0, rather than recreating it, so the upgrade-at-exercise validated at upload. The reused contract id is:

00c2a64c412f46f2d1e1a3b1e0c17c0d2e47dd5c19b9db05de2678152386091ea6ca12122052d648ae4f8bf9e10551f1d0a133d44eb736d0f732b01d7d7f13cc05fe8c30ef

The later runs in section 7 were exercised under package id da26b65d26207e36de2850f2cdbfc0ec2e1b19c84b910e3d31e2c0fe7a22a627 (0.7.0).

5. Verify it yourself

Download evidence-pack.zip

sha256 of evidence-pack.zip:
606514277ea6773961412635cd0d202cf419e5843229c99d923dffd53fa8bcad

The exact re-verification commands, using only unzip, sha256sum, jq, and curl, are:

sha256sum evidence-pack.zip                 # expect the sha256 above
unzip evidence-pack.zip
sha256sum CLAIMS-DVP.md dvp-provision-checkpoint.json dvp-run.json update-verification.json
jq '{allGreen, gates}' dvp-run.json
jq '.positive | {exercisedChoice, boundOpenA, consumedOnce, anchorOpenA: [.anchors[].openA]}' dvp-run.json
jq -r '.negativeControls | to_entries[] | [.key, .value.rejection.expectedAssert, .value.rejection.provenance] | @tsv' dvp-run.json
# re-verify the positive update id against a live DevNet participant:
export ZV_JSON_API=<participant JSON Ledger API base>
export ZV_PACKAGE_ID=395e49e4b8bdd3c9873a955a56502674648627101f5b8cfc2d1fee39c883d973
export ZV_USER_ID=ledger-api-user
UPDATE_ID=$(jq -r '.update.Transaction.value.updateId' update-verification.json)
curl -s -X POST "$ZV_JSON_API/v2/updates/update-by-id" -H 'Content-Type: application/json' \
  -d "{\"updateId\":\"$UPDATE_ID\",\"updateFormat\":{\"includeTransactions\":{\"eventFormat\":{\"filtersByParty\":{\"zvCanton::122062d7ab2a3a33bb08d45ae557e61e379e3d9dfbb7291b691eda59063c9e9be800\":{\"cumulative\":[{\"identifierFilter\":{\"WildcardFilter\":{\"value\":{\"includeCreatedEventBlob\":false}}}}]}},\"verbose\":true},\"transactionShape\":\"TRANSACTION_SHAPE_ACS_DELTA\"}}}" \
  | jq '.update.Transaction.value | {updateId, commandId, effectiveAt}'

Every command above is reproduced with its real output in the README.md inside the pack. Canton contract contents are private to their stakeholder parties by design, so the live re-verification in the last command requires DevNet access as a party that can see the transaction. The ZeroVaultID validator and party are publicly visible on the Lighthouse DevNet explorer; look up the party namespace ZeroVaultID::122062d7ab2a3a33bb08d45ae557e61e379e3d9dfbb7291b691eda59063c9e9be800.

The pack's CLAIMS-DVP.md item 2 states that Rail Open's five checks gate each leg. Three of the five are enforced by the ledger; the two cryptographic ones, Merkle inclusion and signature with proof of possession, are boolean results the driver supplies, and both legs supplied true. That item overstates check coverage and is corrected here rather than edited in the pack.

6. Scope and limitations

7. The 0.7.0 runs, 2026-07-30 and 2026-07-31

Two further two-leg settlements were recorded on 2026-07-30 and 2026-07-31 under package zerovault-canton-gate-accum 0.7.0. Both are the same scenario run twice, with freshly allocated parties each time; both recorded allGreen: true. Every value below is copied from each run’s own dvp-run.json.

These two runs did not capture a ledger transaction record for the positive settlement. Unlike the 2026-07-23 run above, neither run recorded an updateId, commandId or effectiveAt for the committed settlement, so none is quoted here. What each run does record for the positive settlement is the exercised choice, the two created anchors, the bound attestation digests, the consumed nullifiers and the gate results, all shown below. The command ids that do appear in these runs belong to the refused negative controls, not to the settlement.

Run 20260730T232137Z

Package idda26b65d26207e36de2850f2cdbfc0ec2e1b19c84b910e3d31e2c0fe7a22a627
Package versionzerovault-canton-gate-accum 0.7.0
Synchronizer idglobal-domain::1220be58c29e65de40bf273be1dc2b266d43a9a002ea5b18955aeef7aac881bb471a
Exercised choiceSettleAtomicBound
Settlement referencestl:dvp-0001
LegDeliveryPayment
OpenAnchor contract id00ec57e22fadc173ca09c43f1b0bec06d3573526f35a2b771ae3fc7e4663bb28d3ca121220dbca742517a198f4a1913e456841de7807e4f16a702f55c30c18c29b074801ac0094d0cf308d188cc1e423edc84546f0b727ccc5f8fc83aff07b59c7d9bd98dc70ca121220f4856cc728e2617510b35704c7655ada6c67e744a667ef3a36d31cb27920738f
Realized anchor openAba455d696e6cc2fa250cfc26014246e377bc5a8612fbf8407ea0f5dc52e84abf8e8e53f710495e706cafbd1bc9f742152714f23f0668cde7d987b728c4bbb775
Attestation boundOpenAba455d696e6cc2fa250cfc26014246e377bc5a8612fbf8407ea0f5dc52e84abf8e8e53f710495e706cafbd1bc9f742152714f23f0668cde7d987b728c4bbb775
Rail nullifier (consumed once)nu:527455a5971e5bc3c636fddc1479812b9a943caeaa84a40db9ed5c74c35470b9nu:f09819dbf32719b17996cfc849d6dbbb9d41801ab4a5d01e97b018ed43a28789
Shard id82240
Leg settlement referencestl:dvp-0001:deliverystl:dvp-0001:payment
Sealed envelope0037e771b6af664fb847e79abbe7854a68177c7c2252bb23e6e23622fa00a5cf25ca12122076d6d4745ab54844719fd32820cee1942338e062b362fa7e76ef03c402864c3b00e1dbf3b709a8a9381104fee5504bc27b1f3b5ca58b29142c34bd4a0a3e8cc01eca121220c288b842077753897e179ec22f168d3da1bd6613f52d0579d75e4e3af19dee59

For each leg the attestation’s boundOpenA equals that leg’s realized OpenAnchor.openA, and each rail nullifier appears exactly once in its shard’s consumed set (deliveryOnce and paymentOnce both true). All nine settlement gates are true:

twoAnchors, deliveryBound, paymentBound, exercisedChoiceIsBound, deliveryConsumedOnce, paymentConsumedOnce, legBoundDistinct, deliveryLegBound, paymentLegBound

The leg-swap refusal

A clearance valid for one leg, presented for the other, was refused at SettleAtomicBound with clearance is not for the buyer leg of this settlement (FAILED_PRECONDITION / DAML_FAILURE, interpretation-time refusal (rolled back, not sequenced)). Verbatim ledger payload:

[public-dvp] /v2/commands/submit-and-wait-for-transaction -> 400: {"code":"DAML_FAILURE","cause":"Interpretation error: Error: User failure: UNHANDLED_EXCEPTION/DA.Exception.AssertionFailed:AssertionFailed (error category 9): clearance is not for the buyer leg of this settlement","correlationId":"6a8571bd-eeac-471f-aeee-f1ca23cdb091","traceId":"934b7b5dd88dc0889f10b38b04a1688c","context":{"participant":"'participant'","error_id":"UNHANDLED_EXCEPTION/DA.Exception.AssertionFailed:AssertionFailed","exercise_trace":"    in choice da26b65d:AtomicDvP:DvPSettlement:SettleAtomicBound on contract 0053bf03f0 (#0)\n    in exercise command da26b65d:AtomicDvP:DvPSettlement:SettleAtomicBound on contract 0053bf03f0.\n","category":"9","tid":"934b7b5dd88dc0889f10b38b04a1688c","definite_answer":"false","commands":"{readAs: [], deduplicationPeriod: {duration: 'PT30S'}, submittedAt: '2026-07-30T23:24:18.779392Z', submissionId: '6a8571bd-eeac-471f-aeee-f1ca23cdb091', actAs: ['zvCanton::122062d7ab2a3a33bb08d45ae557e61e379e3d9dfbb7291b691eda59063c9e9be800'], commandId: 'dvp-20260730T232137Z-settle-WRONG-LEG', userId: 'ledger-api-user', workflowId: }"},"resources":[],"errorCategory":9,"grpcCodeValue":9,"retryInfo":null,"definiteAnswer":null}

The refusal rolled the whole settlement back, verified from ledger state: noAnchor, deliveryUnspent, paymentUnspent and envelopesActive are all true. Four further controls in this run (BIND-D, BIND-P, UNCLEARED, XLEG) were refused and rolled back the same way; their verbatim payloads are in dvp-run.json.

What each leg’s clearance asserted

The run recorded, per leg, the exact claim the clearance stands for. Quoted verbatim from f7Scope.delivery.claim and f7Scope.payment.claim:

delivery:
Under vk-govid-m4-05b9caa0, at epoch 1785368536, the holder of two government-ID credentials signed by issuer_root 0x232de6aec4bc575a988e62e94a69fb00e6849cf19318c9a30b6bb2a49c66ef37 proved non-membership of all three curator-signed sanctions lists under policy_commit 0x2eb3fa93b476bdeadbe18956e0dd48267fd11f78aedb8aa7013d5b7a4826bc36, bound to destination context 0x00d04d068aecf06f3230a387584d6ea59b6481497936b33cd23a3687388266b0, single-use under nullifier 0x1f9b42a9ff09e6fd8450de3a76c6c5e1be9890f795f3dddefeb83f4e5d607829. NO party identity is asserted: the M4 public vector binds no subject identifier.

payment:
Under vk-govid-m4-05b9caa0, at epoch 1785368536, the holder of two government-ID credentials signed by issuer_root 0x232de6aec4bc575a988e62e94a69fb00e6849cf19318c9a30b6bb2a49c66ef37 proved non-membership of all three curator-signed sanctions lists under policy_commit 0x2eb3fa93b476bdeadbe18956e0dd48267fd11f78aedb8aa7013d5b7a4826bc36, bound to destination context 0x0ddf71673ff21c4cb35e19c077bdee0bd123e8196ff0c1fec8654dda380ba8f5, single-use under nullifier 0x1374f62563b973720f8dcdae4bf1c59d999d9ba32e816469825c0edde529cf6b. NO party identity is asserted: the M4 public vector binds no subject identifier.

The two claims are identical except for the destination context and the nullifier, which is what makes the legs distinct and non-interchangeable (legBoundDistinct = true).

Run 20260731T001019Z

Package idda26b65d26207e36de2850f2cdbfc0ec2e1b19c84b910e3d31e2c0fe7a22a627
Package versionzerovault-canton-gate-accum 0.7.0
Synchronizer idglobal-domain::1220be58c29e65de40bf273be1dc2b266d43a9a002ea5b18955aeef7aac881bb471a
Exercised choiceSettleAtomicBound
Settlement referencestl:dvp-0001
LegDeliveryPayment
OpenAnchor contract id00f2959e8a907fbce2d2fc8a730916985328dc0fde21d021ab8e6b9ac14abe53b7ca12122013326f24e067606c7fd3183f9ba0ed57703bfe4be7ecb5a46c4b5ca941cceadc0058b7fd6d866f2cbc0eb75fdef685ecefbbafcaead9d636cdbf6f0c5c28181435ca121220bca96fa03fb760e29230162710b3fdf1c1d59abbe1b1d2143171c78203f42638
Realized anchor openA75560f2910c4064bd2aacb18319305bbe106c01fe2bebeda5248922ca0ef0534b26c493491d6dc32f3541f4b95d70c311af677b527d06aeac4bee75d29611837
Attestation boundOpenA75560f2910c4064bd2aacb18319305bbe106c01fe2bebeda5248922ca0ef0534b26c493491d6dc32f3541f4b95d70c311af677b527d06aeac4bee75d29611837
Rail nullifier (consumed once)nu:ad24a32f6eea488464052f608368be618999ac364e97c7afe7f4a3f22dd4909enu:1cc3d4b3203450305de973a208bf45fe9663917fcdd8287b1e2af77385839c1e
Shard id17328
Leg settlement referencestl:dvp-0001:deliverystl:dvp-0001:payment
Sealed envelope00129b6b50c809b5719885281d79582a9d16098fddee1d9cc212d1b2ae962de0feca121220a6a72e74e1eeef30d299a122c3954f1b9c55d4c3f54d395c575ebb2f376ef4dd00b652deeb9d0f1c1932d30bc712551ab222ad2597119abfe090658b04598b08e4ca1212206f8329476b9f1844fc77468cbbda817bbbf477e2be8d40d2c63f033edcee1a89

For each leg the attestation’s boundOpenA equals that leg’s realized OpenAnchor.openA, and each rail nullifier appears exactly once in its shard’s consumed set (deliveryOnce and paymentOnce both true). All nine settlement gates are true:

twoAnchors, deliveryBound, paymentBound, exercisedChoiceIsBound, deliveryConsumedOnce, paymentConsumedOnce, legBoundDistinct, deliveryLegBound, paymentLegBound

The leg-swap refusal

A clearance valid for one leg, presented for the other, was refused at SettleAtomicBound with clearance is not for the buyer leg of this settlement (FAILED_PRECONDITION / DAML_FAILURE, interpretation-time refusal (rolled back, not sequenced)). Verbatim ledger payload:

[public-dvp] /v2/commands/submit-and-wait-for-transaction -> 400: {"code":"DAML_FAILURE","cause":"Interpretation error: Error: User failure: UNHANDLED_EXCEPTION/DA.Exception.AssertionFailed:AssertionFailed (error category 9): clearance is not for the buyer leg of this settlement","correlationId":"20ad233e-e3b7-49e2-aa43-eed73824ea04","traceId":"e320c1ee853dd325cfd3030928449dfb","context":{"participant":"'participant'","error_id":"UNHANDLED_EXCEPTION/DA.Exception.AssertionFailed:AssertionFailed","exercise_trace":"    in choice da26b65d:AtomicDvP:DvPSettlement:SettleAtomicBound on contract 009772ef46 (#0)\n    in exercise command da26b65d:AtomicDvP:DvPSettlement:SettleAtomicBound on contract 009772ef46.\n","category":"9","tid":"e320c1ee853dd325cfd3030928449dfb","definite_answer":"false","commands":"{readAs: [], deduplicationPeriod: {duration: 'PT30S'}, submittedAt: '2026-07-31T00:14:37.056754Z', submissionId: '20ad233e-e3b7-49e2-aa43-eed73824ea04', actAs: ['zvCanton::122062d7ab2a3a33bb08d45ae557e61e379e3d9dfbb7291b691eda59063c9e9be800'], commandId: 'dvp-20260731T001019Z-settle-WRONG-LEG', userId: 'ledger-api-user', workflowId: }"},"resources":[],"errorCategory":9,"grpcCodeValue":9,"retryInfo":null,"definiteAnswer":null}

The refusal rolled the whole settlement back, verified from ledger state: noAnchor, deliveryUnspent, paymentUnspent and envelopesActive are all true. Four further controls in this run (BIND-D, BIND-P, UNCLEARED, XLEG) were refused and rolled back the same way; their verbatim payloads are in dvp-run.json.

What each leg’s clearance asserted

The run recorded, per leg, the exact claim the clearance stands for. Quoted verbatim from f7Scope.delivery.claim and f7Scope.payment.claim:

delivery:
Under vk-govid-m4-05b9caa0, at epoch 1785368536, the holder of two government-ID credentials signed by issuer_root 0x232de6aec4bc575a988e62e94a69fb00e6849cf19318c9a30b6bb2a49c66ef37 proved non-membership of all three curator-signed sanctions lists under policy_commit 0x2eb3fa93b476bdeadbe18956e0dd48267fd11f78aedb8aa7013d5b7a4826bc36, bound to destination context 0x00d04d068aecf06f3230a387584d6ea59b6481497936b33cd23a3687388266b0, single-use under nullifier 0x1f9b42a9ff09e6fd8450de3a76c6c5e1be9890f795f3dddefeb83f4e5d607829. NO party identity is asserted: the M4 public vector binds no subject identifier.

payment:
Under vk-govid-m4-05b9caa0, at epoch 1785368536, the holder of two government-ID credentials signed by issuer_root 0x232de6aec4bc575a988e62e94a69fb00e6849cf19318c9a30b6bb2a49c66ef37 proved non-membership of all three curator-signed sanctions lists under policy_commit 0x2eb3fa93b476bdeadbe18956e0dd48267fd11f78aedb8aa7013d5b7a4826bc36, bound to destination context 0x0ddf71673ff21c4cb35e19c077bdee0bd123e8196ff0c1fec8654dda380ba8f5, single-use under nullifier 0x1374f62563b973720f8dcdae4bf1c59d999d9ba32e816469825c0edde529cf6b. NO party identity is asserted: the M4 public vector binds no subject identifier.

The two claims are identical except for the destination context and the nullifier, which is what makes the legs distinct and non-interchangeable (legBoundDistinct = true).

Scope of these two runs

8. The curator-signed sanctions list roots

The check compares two identity document numbers against three curator-signed list roots; names and dates of birth are not screened. These are the roots themselves, read from the curator-signed root artifacts; they are not attributed to any one run’s public inputs on this page. Each root is signed over a canonical byte string committing to the root, the list id and the expiry, under a single curator key.

ListList idSigned artifactbracket_rootExpiry
OFAC1ofac_v4.json0x1d9e3ec34570a6acb7bad8980618af48a6958e1f139eff2eab49283eb7d2dba31789964030
UN2un_v3.json0x04eced49a48c71a3da309264a60c4b41e9f720a2033c929ea4b7ce14e1a561f11789964031
EU3eu_v3.json0x135a6a4f9bbc24e8c28cd1832aa4a554c4e83b1057564b46dd05d7903599d8841789964034
Curator key hash0x0b53473c0c564bd9fdb4dbdb4a08ef07b9d625bcaf321b071d552a061b004bdd

All three artifacts carry the same curator key hash. Their expiries differ, by seconds: each root was signed in its own second of the 2026-08-22 ceremony, and the window that binds is the intersection of the three, which closes at 1789964030. In each one the first 32 bytes of the signed canonical_bytes reproduce the bracket_root exactly, the next 8 encode the list id, and the last 8 encode the expiry, so the root, its list identity and its expiry are covered by one signature.

These artifacts live outside the repository, in the curator’s custody location. This page states what the signed roots are; it does not assert that any particular run on this page read these bytes.

Related

The passport line this DvP work builds on: a zero-knowledge compliance attestation gating a DevNet test transaction, and its accumulator successor run.