Public declaration syntax from forge-rs/harness-runtime/src/planes/perception.rs Original source SHA-256: 7a1f0bd636b04d35cef270cca379f7ab04d2ddf3830832993f3d842c9c694f22 Function bodies and constant values are omitted. This is not the complete implementation. Source line 19 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct MediaArtifact { /// Declared modality; must be within `[perception].modalities`. pub modality: Modality, /// Raw source bytes (bounded by `[perception].max_media_bytes`). pub bytes: Vec, /// MIME media type hint. pub media_type: String } Source line 32 #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub struct PerceptionRecord { /// Provider perception id; downstream consumers reference this, never /// the raw bytes. pub perception_id: String, /// True when the IR is signed per the provider's signing model /// (`require_signed_ir = true` makes unsigned records inadmissible). pub signed: bool, /// Content-addressed reference to the typed SemanticIR. pub ir_ref: String, /// Modalities actually perceived. pub modalities: Vec } Source line 47 #[async_trait] pub trait PerceptionPlane: Plane { /// Ingest one media artifact, yielding a signed, typed record. /// §4.7.3: fail-closed — unsigned, unresolvable, or unverifiable /// artifacts are rejected, never delivered best-effort. async fn ingest(&self, artifact: MediaArtifact) -> Result; }