Exact input/output file declarations using opaque host artifact-store references.
Inputs use string keys source, path, size, sha256, and mode. The only
supported mode is runtime_default; the pinned HTTP API cannot set permissions.
Outputs use destination, path, and max_bytes. References are identifiers,
never URLs or host paths. Each direction allows at most 32 unique paths and
references. Collection takes a byte snapshot of each file; a multi-file atomic
snapshot is not promised. Neither archives nor recursive globs are interpreted.
Summary
Types
@type input() :: %{required(String.t()) => String.t() | non_neg_integer()}
@type output() :: %{required(String.t()) => String.t() | pos_integer()}
Functions
@spec validate(term(), term(), SmolBox.Profile.t()) :: :ok | {:error, SmolBox.Error.t()}