Verify a pack
Offline: the chain and the signature. Online and optional: the anchor. This page and the downloads are part of your logged session; the verifier itself runs without us.
- Download the verifier, and check it
Download gos-verify.py version 1.2.1, Apache 2.0
Learn more about the verifier
It is one readable Python 3 file with nothing to install, so it also runs on a locked-down laptop. Read it before you run it. Source repository: [verifier repository].
SHA-256:Listed in SHA256SUMS.txt. Signature: in the build, SHA256SUMS.txt is signed with the release key rel-01, Ed25519; this prototype ships it unsigned. Compare with the value in the source repository, not only this page.9e47a9fad63e… show full hash
9e47a9fad63ead2f7588c0809291ed0d6ed06e18341f851a78308c2c9532b543Your platform
Platform Run the verifier Check a file’s SHA-256 Windows python gos-verify.py …Get-FileHash -Algorithm SHA256 <file>(PowerShell)macOS python3 gos-verify.py …shasum -a 256 <file>Linux python3 gos-verify.py …sha256sum <file> - Download the pack issued to your key
Download nebula-mutual-2026Q3.pack.json
SHA-256 as served here:Check it with the command for your platform. The authoritative value is the one the institution sent you separately. The pack is signed with pack key nm-pack-01 (prototype test key), Ed25519; its key hash as served here is cb943626 ee1843d2 df977867 26539a04 86ffbf8f ca54cf64 d3f1bc22 41536e90, and the authoritative value is the one the institution sent you.204ecfcfa43a… show full hash
204ecfcfa43a42f65019d5ca71058878d9ee83332086c3e5015cfef7a08afada - Run it with the pack key hash the institution sent you
python gos-verify.py nebula-mutual-2026Q3.pack.json --key <pack key hash sent to you>Sent a chain head too? Add --expect and the head. Paste either value whole or in its groups of eight.
Learn more about --expect
With --expect the verifier compares the heads itself, so nothing is compared by eye. The chain head as served by GovernanceOS is 2bb3a4f2 71d74a90 6c1a507a 918313f6 7a3ca88b d2c2edc8 4b4b5a4a 853bcf9f; the authoritative value is the one the institution sent you, and the public anchor.
- Read the result
What the verifier prints for the sample pack, offline:
GovernanceOS pack verifier 1.2.1 (Apache-2.0) Pack: nebula-mutual-2026Q3 · 31 records, chain positions 289 to 319 Created: 2026-10-16T10:12:00-05:00 · Period: 2026-07-01 to 2026-09-30 Issued by: The CISO, Nebula Mutual (a fictional institution) Notice: Prototype sample. Nebula Mutual is a fictional institution constructed for illustration; any resemblance to a real organization is unintended. People are shown as roles. Signed with a prototype test key that signs nothing real. Chain: OK (31 of 31 records recomputed and linked) Signature: OK (Ed25519, key nm-pack-01 (prototype test key); it covers the header, every record and the summaries) Key: SHA256 cb943626 ee1843d2 df977867 26539a04 86ffbf8f ca54cf64 d3f1bc22 41536e90 MATCH with the pack key hash you were sent Head: 2bb3a4f2 71d74a90 6c1a507a 918313f6 7a3ca88b d2c2edc8 4b4b5a4a 853bcf9f Not compared. Add --expect with a head the institution sent you to compare it too. Anchor: not checked (offline). No anchor operator is named yet; once one is, compare the head with its published anchor. Result: VERIFIED. The pack was not changed after the pack key you were sent signed it: the header, every record and the summaries. The same key signs every pack, so check the pack name and positions above are the ones you expect. It does not prove the records were true when written; that is for the examination.Learn more about the anchor
Online and optional: compare the head with the published anchor yourself, at [anchor URL], anchored with [anchor operator] on 2026-10-16. The verifier never needs the network. Who operates the anchor, how often, and how to read it alone
What a verified chain proves
Nothing in the pack was changed, removed or reordered after signing. Pinned to the pack key you were sent, it proves the pack came from this institution.
What it does not prove
A consistent chain of false records verifies perfectly. The chain proves integrity; the institution proves truth.
When it does not verify
A failure is itself evidence. Keep the output, the pack and the values you were sent. The institution comes first; GovernanceOS is only for a fault in the verifier itself, reported at [verifier repository].
| What the verifier prints | Exit code | What it means | What to do |
|---|---|---|---|
Result: INTACT, NOT PINNED. | 1 | The pack agrees with itself, and nothing ties it to the institution yet: you gave no pack key hash. A head alone is not enough, because a shortened pack can be signed again. | Run it again with --key and the pack key hash the institution sent you. Rely on the pack only after that. |
Chain: BROKEN at position 299: the stored hash differs from the hash recomputed from the record. | 2 | A record was changed after it was chained. The position names the first record that no longer matches. | The verifier says it: keep this output as evidence and ask the institution (the issuer above) to explain the change. |
Signature: INVALID (key …). The head was not signed by this key, or the pack changed after signing. | 3 | The head was not signed with the pack key named in the pack, or the pack changed after signing. | Keep the output. Ask the institution first: the CISO, Nebula Mutual, who issued the pack. |
MISMATCH: you were sent a different head. | 4 | The pack’s chain head is not the one the institution sent you. | Do not rely on this pack. Ask the institution first: the CISO, Nebula Mutual, who issued the pack. |
Format: NOT READABLE | 5 | The file is not a pack this verifier reads, or it is cut short, or a value you typed is not a hash. | Download it again and check its SHA-256. If it persists, ask the institution first: the CISO, Nebula Mutual, who issued the pack. |
Key: … MISMATCH: the pack was signed by a key other than the one you were sent. | 6 | The pack was signed by a key other than the one the institution named to you. | Do not rely on this pack. Ask the institution first, by a route you trust: the CISO, Nebula Mutual, who issued the pack. |
| Your own tool shows a SHA-256 that differs from the value you were sent | none | Checked before the verifier runs: the file is not the one the institution sent. | Download it again from Start. If it still differs, ask the institution first: the CISO, Nebula Mutual, who issued the pack. |
| Your online lookup does not find the head at the anchor | none | Optional and online: the head was not anchored, or a different head was. When the anchor does not match | Ask the institution first: the CISO, Nebula Mutual, who issued the pack. |
See a failure for yourself: download the tampered example pack (SHA-256 7ba973673c29…) and run the verifier on it. It stops at position 299 with exit code 2, as in the first row.

