guildhouse-proto/attestation/v2/common.proto
Tyler King 98aa2b0ec7 feat(attestation): add SAT-SPEC-0002 protobuf definitions
Add protobuf message definitions for the four-layer attestation
architecture defined in SAT-SPEC-0002. Package: substrate.attestation.v2

Files:
- common.proto: QmReceipt (hash-chained Ed25519-signed receipts)
- platform.proto: PlatformClaim, TpmQuoteBinding (L1 hardware identity)
- software.proto: SoftwareClaim, BuildProvenance (L2 image provenance)
- governance.proto: GovernanceClaim, AccordReference, DelegationReference (L3)
- session.proto: SessionClaim, ActorContext, PostureEvidence, PostureLevel (L4)
- sat.proto: SatBundle (composite, optional claim fields for has_*() codegen)

Also adds buf.yaml for lint/breaking-change checks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:12:59 -05:00

20 lines
1.1 KiB
Protocol Buffer

syntax = "proto3";
package substrate.attestation.v2;
// ─── QM Receipt ─────────────────────────────────────────────────────
//
// The Quartermaster receipt is the fundamental trust primitive for
// non-hardware claims. Every QM receipt is hash-chained, self-contained,
// and verifiable with the QM's Ed25519 public key.
message QmReceipt {
string receipt_id = 1; // Unique identifier (UUIDv7)
bytes claim_hash = 2; // SHA-256 hash of the notarized claim
repeated bytes referenced_hashes = 3; // Previous layer claim hashes (binding chain)
string issuer = 4; // QM instance identity (SPIFFE ID)
string timestamp = 5; // ISO 8601, QM clock (authoritative)
uint64 chain_position = 6; // Position in the QM's hash chain (monotonic)
optional string previous_receipt = 7; // Receipt ID of previous chain entry
bytes signature = 8; // Ed25519 signature
}