All four platforms available

Verify

Check the record without asking us.

What you can check at L1, what the free offline verifier checks at L2, and what verification does not prove.

You can verify an elan1 proof record without asking elan1. At L1, recompute the record's SHA-256 digest from its 16 fields and confirm it matches the next record's link in the chain. From L2, also check the Ed25519 signature and outside timestamp with the free offline verifier.

L1 · GuardedAvailableL2 · AttestedAvailable

01At L1 Guarded · Available

Walk the chain yourself.

Each record holds the digest of the one before (F03). Recompute SHA-256 over the length-prefixed fields and walk the chain; a changed or missing record breaks it.

Tamper-evident to you; not signed. At L1 you can see that the chain has been broken. Proving offline who sealed it is L2 Attested.

Illustrative specimenThree consecutive records · seven of sixteen fields shown · L1 Guarded
Record 1042As sealed
F01tenant_id
tnt_specimen_01
F02seq
1042
F03prev_digest
sha256:2b6e0f93…3f16
F04write_id
wr_specimen_7c2
F05write_type
journal_entry.post
F09actor_id
usr_specimen_approver
F16recorded_at
2027-07-14T10:42:07+05:30
Digest of this recordsha256:7e84f58f…f2df
Record 1043As sealed
F01tenant_id
tnt_specimen_01
F02seq
1043
F03prev_digest
sha256:7e84f58f…f2df
F04write_id
wr_specimen_7c3
F05write_type
purchase_invoice.post
F09actor_id
agt_specimen_ap01
F16recorded_at
2027-07-14T10:44:51+05:30
Digest of this recordsha256:acb3d21b…f5b0
Link to record 1042Matches
Record 1044As sealed
F01tenant_id
tnt_specimen_01
F02seq
1044
F03prev_digest
sha256:acb3d21b…f5b0
F04write_id
wr_specimen_7c4
F05write_type
payment_entry.post
F09actor_id
usr_specimen_approver
F16recorded_at
2027-07-14T10:51:30+05:30
Digest of this recordsha256:acc1e577…1647
Link to record 1043Matches
Illustrative specimen. Not customer data. Record 1042’s F03 points to record 1041, which sits outside this excerpt.
Try to tamper with the chain

Chain intact. Digests computed when this page was built; recompute them yourself below.

Your browser does the arithmetic: SHA-256 over each field’s 4-byte length followed by its UTF-8 bytes, in field order. Nothing is sent anywhere.

02One record, all sixteen fields

Recompute a single record's digest.

The same arithmetic, on one full proof record. Change a field and the digest no longer matches what the next record expects.

Press “Recompute records 1041–1042” to hash both records with SHA-256 in this browser.

Illustrative specimen. Not customer data.seq 1041 · L1 · Guarded

Rendering · shown beside the record, never a seventeenth field

Outcome
Refused Refused at rung 3 · PRE-GATES
Approver
None. The write stopped before approval.
Refusal code
GATE.PRECONDITION_FAILED (illustrative)
Meter
0.4 governed action
4 of 16 fields: F01–F03, F14
tnt_specimen_01
1041
wr_specimen_7c1
purchase_invoice.post
decl_ap_purchase
4
2027.06.1
agt_specimen_ap01
agent
A1
00000000-0000-0000-0000-000000000000
0
sha256:5f105d2d818bc7fe36a7c1b7e367196610df5ee6e8d4c5296c9d8cc4b28428d8
sha256:1d967c9d1c583efd0a3135e57aa1035ebdd5ab4766f0572f10304feae7516d53
2027-07-14T10:39:12+05:30
Digest of seq 1041Not yet recomputed in this browser

Checked and recorded by elan1 Govern · tamper-evident (L1)

Record 1042 points back to record 1041 by digest (F03 prev_digest).

Illustrative specimen. Not customer data.seq 1042 · L1 · Guarded

Rendering · shown beside the record, never a seventeenth field

Outcome
Committed Committed at rung 7 · ACT
Approver
usr_specimen_approver, a named person who is not the asker
Refusal code
None
Meter
1 governed action
4 of 16 fields: F01–F03, F14
tnt_specimen_01
1042
wr_specimen_7c2
journal_entry.post
decl_month_end_close
7
2027.06.1
usr_specimen_approver
human
A2
je_specimen_5531
2
sha256:e1eb0d8f0a7399695abf290e8fd2b6abc738ffd2fbdb8297f9ae44eb1a32ab6a
sha256:fd8e4d0b12b24bf22a591e735f211d8d7bb2bdf480058fdf89bb9d44666b2633
2027-07-14T10:42:07+05:30
Digest of seq 1042Not yet recomputed in this browser

Checked and recorded by elan1 Govern · tamper-evident (L1)

Next record · seq 1043 · F03 prev_digestsha256:f2423aa3d4559b7fd54b390a724f2a989744c10db034caa4a0e047cb5aca2c18

Verify offline (simulated)

L2 · Available Simulated here. The real check runs in the free offline verifier.

  1. 01

    Signature

    Check the Ed25519 signature on record 1042 against the residency domain's public key, obtained out of band.

  2. 02

    Anchoring

    Check the Merkle root that contains record 1042 against timestamps from two RFC 3161 authorities, anchored within 15 minutes.

  3. 03

    Evidence bundle

    Open the eight-member evidence bundle and run the free offline verifier, elan1-verify, on your own machine with no network.

At L1 records are hash-chained, not signed, and the check needs elan1. The three steps above describe the L2 design. Nothing on this page was signed or anchored.

How the browser recomputes: the preimage is the 19-octet domain string elan1.proof.seal.v6, then each of the 16 fields as a 4-octet big-endian length followed by its bytes. SHA-256 runs through WebCrypto on this device; nothing is sent. Where this is weak: the specimen encodes every field as UTF-8 text, while Seal v6 encodes identifiers and digests as fixed binary octets. It shows the method, not a production verifier.

03At L2 Attested · Available

Five steps, on your own machine, with no network.

Steps advance only when you choose one: with the step buttons, or the arrow keys on a keyboard. Nothing plays on its own.

  1. 01

    Receive the eight-member evidence bundle

    You export a bundle for a period or a set of records and keep it. Nothing in the steps that follow calls elan1, so the check does not depend on us being reachable, or on taking our word for it.

    You check: You hold one file. Every later step reads only what is inside it.

    Available · L2 Attested
  2. 02

    Check each Ed25519 signature against the residency domain's key

    At L2, each record is signed with the key of the residency domain it was written in: "in" for India. A record signed with any other key fails.

    You check: Every signature verifies against the published domain key.

    Available · L2 Attested
  3. 03

    Check the Merkle root

    The records in the bundle hash up to one root. Recompute it from the records you hold. If one record was added, removed or changed, the root you compute differs from the root in the bundle.

    You check: Your recomputed root equals the bundle's root.

    Available · L2 Attested
  4. 04

    Check timestamps from two RFC 3161 authorities, anchored within 15 minutes

    Two independent timestamp authorities each stamp the root, and the root is anchored within 15 minutes. With two authorities, the time does not rest on a single party's clock, including ours.

    You check: Both timestamps verify, and both fall inside the 15-minute window.

    Available · L2 Attested
  5. 05

    Run the free offline verifier on your own machine, with no network

    The verifier repeats steps 02 to 04 and prints a result for each record. It runs air-gapped, and it is free: it comes with L2 Attested.

    You check: A per-record result, produced on a machine elan1 never touches.

    Available · L2 Attested

Run the checks on a sample bundle.

Illustrative specimen. Not customer data.Simulated · no network
evidence-bundle-specimen-2203-2208/8 members · domain “in” · seq 2203–2208

The sample bundle

  • manifest.json
  • seals.jsonl
  • chain.json
  • anchors/
  • keys.json
  • declarations/
  • lexicon/
  • VERIFY.txt
Change one file before verifying
Verifier results, one row per check
CheckResultDetail
01 Manifest hashesPassEvery member matches its hash in manifest.json.The hash of seals.jsonl differs from the one in manifest.json.The hashed members match manifest.json.The hash of keys.json differs from the one in manifest.json.
02 Ed25519 signatures against the “in” domain keyPass6 of 6 records verify against the published key for domain “in”.Fails for seq 2207: the record no longer matches what was signed.Signed with a key not published for domain “in”.
03 Merkle rootPassThe recomputed root, 9c1e…44af, equals the bundle's root.The recomputed root, 51d0…a7e3, differs from the bundle's root, 9c1e…44af.
04 Two RFC 3161 timestamps within 15 minutesPassBoth tokens cover root 9c1e…44af, stamped inside the 15-minute window.Both tokens still verify. They stamp the original root, which no longer matches the records.The second authority's token does not cover this root.
05 Hash chainPassSeq 2203 to 2208 link without a gap; every prev_digest matches.Mismatch at seq 2208: its prev_digest no longer matches record 2207.

Bundle verified. 6 records, root 9c1e…44af, both timestamps inside the window.

Simulated in this browser. The real check is elan1-verify on your machine, with no network. Nothing on this page was signed or anchored.
What an L2 record carries
No.What you can check
01Each record signed with the residency domain's Ed25519 key
02Records hashed up to one Merkle root per bundle
03The root stamped by two RFC 3161 timestamp authorities and anchored within 15 minutes
04The free offline verifier, run on your own machine with no network
We call a record “signed” or “independently verifiable” only at L2 Attested; an L1 record is tamper-evident to you, not signed. The free offline verifier is provided with L2 Attested.
Ask for the verifier and a specimen bundle

04Limits

What it proves, and what it doesn't.

Verification tells you the record is what was sealed. It does not tell you the record was a good idea.

What verification proves, and what it does not prove
ProvesDoes not prove
The record has not changed since sealedThe business decision was right
Which rules and version appliedThe rules were good
Who acted, at what autonomy levelNothing happened outside elan1 (Mode B)

Mode B records show what elan1 was asked and what it decided. A write made around elan1 in Mode B leaves no record here; that is why we never say “enforced” for Mode B.

05Versions

What changed on this page.

Version v1.1Effective 10 Oct 2026Last reviewed 10 Oct 2026Next review On the next change

What changed

  1. 10 Oct 2026v1.1

    L1 Guarded and L2 Attested available. The five L2 steps and the free offline verifier now describe the product as it is.

    Owner decision, 10 Oct 2026: all four platforms launched.

  2. 6 Oct 2026v1.0

    Verification page published: the L1 chain check, the five L2 steps, and the limits of verification.

    First public version.

When a claim, a level or a price changes, the change is logged here with the reason. Earlier versions stay readable; history is never edited in place.

06FAQ

Verification questions.

// VERIFY

Bring your auditor.

We walk an assurance team through a specimen chain, field by field, and show where L1 ends and L2 begins.

elan1 · Trust & evidence · Verify · Last reviewed 6 Oct 2026 · v1.1All four platforms available. Prices exclusive of GST.