guildhouse-proto/attestation/v2/sat.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

26 lines
1.1 KiB
Protocol Buffer

syntax = "proto3";
package substrate.attestation.v2;
import "attestation/v2/platform.proto";
import "attestation/v2/software.proto";
import "attestation/v2/governance.proto";
import "attestation/v2/session.proto";
// ─── Top-level SAT Bundle ───────────────────────────────────────────
//
// Composite attestation bundle containing all four layers.
// Layers are optional — a minimal bundle may contain only L1 + L4.
// The explicit `optional` keyword generates has_*() accessors in
// codegen (Rust/prost, Python/protobuf) to distinguish absent layers
// from present-but-empty layers.
message SatBundle {
uint32 sat_version = 1; // MUST be 2
optional PlatformClaim platform_claim = 2;
optional SoftwareClaim software_claim = 3;
optional GovernanceClaim governance_claim = 4;
optional SessionClaim session_claim = 5;
bytes sat_hash = 6; // H(L1 || L2 || L3 || L4)
string qm_receipt_id = 7; // Top-level QM receipt
}