pub struct InputEvidence { /* private fields */ }Expand description
Per-path bytes, directory membership or explicit absence observed before work.
Capture/validation requires caller custody over sources and parent directories; this value does not lock files, admit a release or retain output artifacts.
Implementations§
Source§impl InputEvidence
impl InputEvidence
Sourcepub fn capture(spec: &InputEvidenceSpec) -> Result<Self, InputEvidenceError>
pub fn capture(spec: &InputEvidenceSpec) -> Result<Self, InputEvidenceError>
Capture input authority without building or publishing an artifact cache.
Directories record membership, including empty directories. Missing roots are explicit evidence; links and special files refuse. Keep a genuine source write-exclusion boundary through capture, work and validation.
§Errors
Returns non-absolute paths, invalid exclusions, unsupported files or I/O.
Sourcepub const fn entries(&self) -> &BTreeMap<PathBuf, InputEvidenceValue>
pub const fn entries(&self) -> &BTreeMap<PathBuf, InputEvidenceValue>
Borrow the immutable per-path observations for consumer-owned projection.
Sourcepub fn digest(&self) -> Result<InputDigest, InputEvidenceError>
pub fn digest(&self) -> Result<InputDigest, InputEvidenceError>
Hash the caller identity and UTF-8 path/value map using big-endian lengths.
Fields are identity, then lexically sorted path/value pairs. Values are
absent, directory, or lowercase raw SHA-256 hexadecimal. Each field
starts with its u64 byte length in big-endian order. This preserves the
existing length-framed consumer evidence encoding without selecting a
cache namespace or adding a domain/version prefix.
§Errors
Returns non-UTF-8 paths that this evidence encoding cannot represent.
Sourcepub fn digest_relative_to(
&self,
root: &Path,
) -> Result<InputDigest, InputEvidenceError>
pub fn digest_relative_to( &self, root: &Path, ) -> Result<InputDigest, InputEvidenceError>
Hash the captured inventory using UTF-8 paths relative to an explicit root.
Path components are separated with /, so an identical inventory and
caller identity produce the same digest after checkout relocation. No
filesystem is read here. Directory membership, missing paths and file
bytes retain the ordinary evidence encoding; the absolute-path Self::digest
remains unchanged. This is descriptive input evidence, not a build or
executable attestation. Callers own the inventory and its source custody.
Standard path-component normalization applies, including redundant ..
§Errors
Rejects a relative root, parent traversal, paths outside the root and non-UTF-8 relative names instead of dropping inputs.
Sourcepub fn validate_after(&self, after: &Self) -> Result<(), InputEvidenceError>
pub fn validate_after(&self, after: &Self) -> Result<(), InputEvidenceError>
Validate an expanded/replaced inventory against pre-work authority.
Rechecks every original root even when a changed/disappearing depfile no longer names it. Late bytes cannot become pre-build authority. A newly named missing path is admissible only when a complete earlier directory scan proved its first child absent and that child was not excluded.
§Errors
Returns changed identity/policy/inputs, unobserved inputs or I/O failures.