Computation Certificate 1.0
A certificate is a claim you can re-run.
The certificate does not ask you to trust the audit. It records enough to make you able to perform the audit again and compare, digest by digest.
Envelope
Two parts: the content that was signed, and the integrity block that says how.
{
"payload": { "...": "signed content" },
"integrity": {
"certificate_id": "mmr1-...",
"canonicalization": "MMR-CJ-1",
"payload_sha256": "...",
"signature_algorithm": "Ed25519",
"public_key_base64": "...",
"signature_base64": "..."
}
}Signed payload
The payload carries the whole audit, not a summary of it.
- Schema and creation timestamp.
- XLSX file name, byte size, SHA-256, date system, and counts of sheets, formulas, defined names, tables, and styles.
- MMR and external-engine manifests.
- The exact structured-reference normalization log.
- Audit summary and sorted formula evidence.
- Cache invalidation, review, and formula-write decisions.
- Separate SHA-256 digests for normalization, evidence, and decisions.
- Replay requirements.
The three separate digests are what make a partial failure readable. A replay can reproduce the evidence and still differ on normalization, and the certificate will say so.
Canonicalization — MMR-CJ-1
JSON is not stable enough to hash directly, so hashing runs over a canonical tree while the payload you read stays ordinary JSON.
- Key order
- Dictionaries are sorted by UTF-8 string key.
- Encoding
- UTF-8, with no insignificant whitespace.
- Floats
- Finite floats become tagged 17-digit strings in the canonical hash tree.
- Forbidden
- NaN and infinity are rejected outright.
- Readability
- The human-readable payload stays normal JSON; only the hash sees the canonical tree.
Signature
The canonical payload bytes are hashed with SHA-256 and signed with Ed25519. The certificate carries only the public key. Example release certificates deliberately ship without the private key.
Write authorization
A certificate may record a cache invalidation when two independent calculation paths agree that a stored cache is stale. That is the entire write surface.
Engine disagreement never authorizes a formula write.
Replay protocol
Replay runs in strict order. Each check is reported independently, so a replay tells you which stage failed rather than returning one verdict.
- Recompute the canonical payload SHA-256.
- Verify the Ed25519 signature.
- Hash the supplied XLSX and compare it with the signed subject hash.
- Re-extract the OOXML snapshot.
- Re-run MMR and external-engine evaluation.
- Reconstruct the structured-reference normalization log.
- Recompute normalization, evidence, and decision digests.
- Report every check independently.
A replay is valid only when all required checks are true.
Failure stages
signature- The certificate payload or signature was modified.
source- The supplied XLSX is not the signed source.
replay- The source matches, but the current engine environment does not reproduce the signed evidence.
Separating these three matters more than it first appears. Without the split, upgrading a dependency and tampering with a document produce the same red result — and a reader has no way to tell an environment drift from an attack.
That the payload was signed by the included public key; that the payload hash is intact; that the replayed XLSX has the recorded SHA-256; and that normalization, evidence, and decision digests reproduce under the recorded software environment.
That any engine implements all Excel semantics, that a business formula is conceptually correct, or that an engine disagreement authorizes a formula rewrite.