The W272 mesofact bundle format — the content-addressed unit a mesofact
app distributes as, plus (behind the store feature) the R2 blob store that
publishes and materializes it.
A bundle is one immutable, content-addressed directory shape:
<bundle>/
manifest.toml # identity + runtime selection
app/ # routes/config + built TS/assets
bins/<triple>/serve # ONLY when runtime = "self"
# manifest.toml
= 1
= "yah-marketing"
= "mesofact/0.8.18" # vanilla: resolve stock runtime from node cache
# runtime = "self" # custom: bins/<triple>/serve ships in the bundle
[]
= "b3f1…" # path → blake3, one row per file
There is exactly one format; "vanilla" is the degenerate case where
runtime = "mesofact/<ver>" and no bins/ are carried. Immutability is the
whole coherence story: any change produces a new [BundleManifest::digest],
"update" is publish-new-digest + drain-old, and rollback is a pointer flip.
This crate is deliberately light: the default feature set is serde + blake3
- toml only, so the
mesofact-buildsubcamp (R599-F2, a separate Cargo workspace) can link it to emit manifests without dragging the object-store / reqwest stack across the boundary. Thestorefeature adds that surface for the cloud publish path (R599) and kamaji node materialize (R599-F4).
Home of R599-F1 (the W272 bundle format + store) — the canonical @yah:
ticket annotation lives in oss/yubaba/crates/cloud/src/release_manifest.rs
to keep one block per ID; see W272 for the design.