Verify a pack / The anchor
The anchor, read alone
Two outside parties date the chain head. You check both yourself; nothing passes through GovernanceOS or the institution.
Design, not yet ruled: the operators and the cadence stay in brackets. Proposed: Sigstore's public transparency log and one RFC 3161 timestamp authority, every hour and at every pack build.
Who operates it
| Anchor | Operator | What it receives | What you fetch from it |
|---|---|---|---|
| Public transparency log | [log operator] | One root per round, signed with the GovernanceOS anchor key | Its public key, and its search if you check online |
| Timestamp authority, RFC 3161 | [timestamp authority] | The same root | Its certificate chain |
Neither is GovernanceOS or the institution. One hash per round leaves GovernanceOS: no record and no tenant name.
How often
Every [cadence], and once more when a pack is built. A pack is signed only after its head is anchored, so every pack you receive can be checked.
Learn more about why there are two
A timestamp token can be checked offline but rests on one authority's key. A public log can be read by anyone, but its instances rotate. If one stops, the other still dates the head. What is published is one root over many tenants' heads, padded to a fixed size, so it says nothing about who the tenants are or how many there are.
What the pack carries
- The chain head, and the anchor record that names its round
- The path from the head to the round's root
- The timestamp token over the root
- The log entry, its inclusion proof and the log's signed checkpoint
- The public key of the GovernanceOS anchor key
Check it yourself
Offline: the path and the time. Online and optional: the public log.
- The path, offline
The verifier recomputes the chain to the head, then the path from the head to the round's root.
In the build the verifier checks the path too. The verifier prints "Anchor: not checked (offline)".
- The time, offline
Check the token against the root with the authority's certificate chain, downloaded by you from the authority, not from us.
openssl ts -verify -digest <root> \ -in <token file> -token_in \ -CAfile <authority chain> - The public log, online and optional
Look the root up with [log operator]'s own search, then check the pack's inclusion proof against the log's signed checkpoint.
What the anchor proves
The head existed no later than the token's time. A change to any earlier record changes the head, which then matches no anchored root.
What it does not prove
That the records were true, or that nothing was withheld. A record never written is never chained.
When it does not match
Keep the output, the pack and the values you were sent. The institution comes first.
| What you see | What it means | What to do |
|---|---|---|
| The path does not reach the anchored root | The head is not the one that was anchored. | Ask the institution first: the CISO, Nebula Mutual, who issued the pack. |
| The token does not verify | The token is not the authority's, or it is not over this root. | Download the authority's chain again from the authority. If it still fails, ask the institution first. |
| Your lookup does not find the root in the log | The root was not published, or a different one was. | Ask the institution first. A fault in the log itself is for the log's operator. |
| The head is newer than the last round | The pack was built before its round. | Ask the institution for a pack built after a round. |

