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: &InputEvidenceSpec,
) -> Result<Self, InputEvidenceError>
pub fn validate_after( &self, after: &InputEvidenceSpec, ) -> Result<Self, InputEvidenceError>
Capture and validate a post-work inventory against pre-work authority.
Observes the union of original and selected roots once, so disappearing depfiles cannot drop old checks. Returns only the selected inventory, preserving its digest encoding. Previously observed paths are not rehashed when a declared root overlaps a traversed directory. Keep source custody through observation and use of the returned evidence.
Late bytes cannot become pre-build authority. A newly selected missing path is admitted only when an earlier complete, non-excluded directory scan proved its first child absent.
§Errors
Returns changed identity/policy/inputs, unobserved inputs or I/O failures.