Public dry run dryrun-20b59dc46b72

Source commit: 20b59dc46b72103c2f8a516c692b5cc3d54fab19

Public tree identity: sha256:aaa5ac7b58b2a0d23c6b11e5f76324bf3839ca1f62653a83deb736932adcfbd9
This commit is contained in:
Disasmer release dry run 2026-07-14 10:08:15 +02:00
commit 2bef715211
221 changed files with 79792 additions and 0 deletions

37
docs/artifacts.md Normal file
View file

@ -0,0 +1,37 @@
# 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.