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 }