The client-side implementation that runs the governance measurement loop, operates the Policy Validator network, assembles Governance Envelopes, and submits canonical leaves to the Transparency Log.
This document specifies the AGTS-conforming clearinghouse: the client-side implementation that runs the governance measurement loop, operates the Policy Validator network, assembles Governance Envelopes, and submits canonical leaves to the Transparency Log. Every protocol behavior defined here derives directly from AGTS-TERMS.
The AGTS Clearinghouse is the governance client layer. It sits between the Machine Execution Layer and the Transparency Log. Its responsibilities:
Accumulate a signed, Merkle-chained measurement chain of governance evidence
Operate the Policy Validator network — BFT vote collection, quorum certificate issuance
Assemble AGTS Governance Envelopes: Proof Bundle + validator signatures + Sovereign Authority signature
Submit completed Governance Envelopes to the Transparency Log for Canonical Leaf admission
Integrate with the settlement rail via AGTS settlement receipts
The clearinghouse is not a transparency log. It produces artifacts admitted to a log; it does not host the log itself. The clearinghouse is not a Sovereign Authority. It delivers the quorum certificate to the Sovereign Authority for hardware signing; it does not hold or emulate authority keys.
Every participant in the AGTS network is identified by a node_id derived from their public key:
Output: 64 lowercase hex characters. No truncation at any length.
The SHA-256 input MUST be the raw DER bytes returned by exportKey('spki', ...). It MUST NOT be a hex-encoded or base64-encoded string of those bytes.
| Context | Field name | Value |
|---|---|---|
| Settlement client | node_id | SHA256(client SPKI) |
| Policy Validator | validator_id | SHA256(validator SPKI) |
| Sovereign Authority | authority_node_id | SHA256(authority SPKI) |
| Log Operator | log_id | SHA256(log operator SPKI) |
| Witness | witness_id | SHA256(witness SPKI) |
| Monitor | monitor_id | SHA256(monitor SPKI) |
The correct signed message is the raw 32-byte SHA-256 digest of the canonical JSON. Not the hex encoding of that digest. Signing the hex string is a protocol violation.
canonical_json(x) follows RFC 8785: keys sorted lexicographically by Unicode code point; no insignificant whitespace; UTF-8 encoding, no BOM; IEEE 754 double-precision numbers. Non-finite numbers (Infinity, NaN) are protocol errors — MUST NOT appear in any artifact body.
| Algorithm | Format | Size | Wire field |
|---|---|---|---|
| Ed25519 | Raw bytes, base64url (RFC 4648 §5), no padding | 64 bytes | signature_b64url |
| ECDSA P-256 | IEEE P1363 (r ‖ s), base64url, no padding | 64 bytes | signature_b64url |
| Parameter | Value | Constraint |
|---|---|---|
n_validators | 4 | n = 3f + 1 — tolerates f = 1 Byzantine node |
quorum_threshold | 3 | ≥ ⌊2n/3⌋ + 1 |
proposer_selection | H(action_id) mod n_validators | Deterministic |
The Proof Bundle (AGTS_PROOF_BUNDLE_V1) is the governance evidence artifact submitted to validators. It is the primary input to the clearinghouse pipeline.
type, versionnode_id, subject_idgenerated_atparent_bundle_hashgate_results — G1 through G5evidence — four G4 hashesstate_before_hashstate_after_hashreplay_seedartifact_hash, payload_urisignature_b64urlThe parent_bundle_hash field chains this bundle to the immediately preceding bundle in the measurement chain. This creates a Merkle-chained history that is non-repudiable and non-reconstructible after the fact.
The Governance Envelope (AGTS_GOVERNANCE_ENVELOPE_V1) wraps the Proof Bundle with the quorum certificate and Sovereign Authority signature. It is the artifact admitted to the transparency log as a canonical leaf.
The complete signed Proof Bundle
Array of ≥ 3 AGTS_VOTE_V1 records with ACCEPT decisions and valid signatures
Sovereign Authority ECDSA P-256 signature over the envelope body — hardware-backed on GrapheneOS Pixel Titan M2
{ log_id, submitted_at } — cryptographically binds this envelope to a specific transparency log
An envelope MUST NOT be submitted to the log without a valid authority_signature. A log worker MUST verify the authority_signature before admitting the leaf. Admission without verification is a protocol violation.
The prefix "AGTS_LEAF_V1" is domain separation — it ensures that leaf hashes from different protocol versions cannot collide even if the envelope bodies are identical. The leaf hash is the permanent, globally unique identifier for this governance decision.
log_signature covers {type, log_id, tree_size, root_hash, timestamp} only. The witness_signatures array is excluded from the signed body. Witnesses sign independently against the same five fields.
This page covers the most referenced sections. The complete 759-line specification is in the GitHub repository at agts-clearinghouse/AGTS_CLEARINGHOUSE_SPEC.md.