Source commit: 20b59dc46b72103c2f8a516c692b5cc3d54fab19 Public tree identity: sha256:aaa5ac7b58b2a0d23c6b11e5f76324bf3839ca1f62653a83deb736932adcfbd9
1.8 KiB
Artifacts
Artifacts are named, content-addressed results retained by the node that produced or received their bytes. The coordinator stores authorization and location metadata, not an implicit copy of every output.
Publish, flush, and sync
- Publishing from a Wasm task transfers bytes to its retaining node and records the digest and size.
flush()publishes metadata so downstream tasks can refer to the artifact. It does not imply coordinator storage or durable replication.sync()is an explicit movement decision to another node or user-provided storage integration.
Large bytes should travel node-to-node or node-to-receiver. Task arguments carry artifact handles rather than embedding output data.
Download and export
disasmer artifact download <artifact> asks the coordinator for an authorized,
scoped stream and retrieves the real bytes from a retaining node. Authorization
is bound to tenant, project, process, artifact, actor, retention state, expiry,
and quota. Missing, expired, revoked, oversized, or unreachable artifacts fail
explicitly before success is reported.
Final export is also explicit. A project can attach a receiver node or invoke a user-provided storage tool from an allowed environment. The MVP intentionally does not advertise a managed artifact-store product.
Node retention is best effort unless project code synchronizes the artifact to a durable destination. Coordinator restart does not manufacture or preserve artifact bytes. Each node enforces configured byte, object-count, and age bounds. Artifacts required by active tasks, live downloads, or a retained restart boundary are pinned; garbage collection evicts eligible older objects and reports unavailable bytes honestly. Coordinator metadata and download session histories are independently count- and time-bounded.