main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Correct stale release-path docs to the content-addressed layout
README, the release_root doc comment, and the daemon config example all
still described releases/<version>/. Release dirs have been named for the
bundle digest since the artifact-identity redesign (deploy.rs, bundle.rs),
so all three contradicted the disk. Also drops the legacy MM naming from
the two lines being touched.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
3 files changed,
+12 insertions,
-6 deletions
88
88
89
89
When you push, the bare repo's `post-receive` hook (installed automatically
90
90
by `sandod` on startup) calls `POST /rebuild`. The daemon checks out the
91
-
sha, runs `cargo build --release` against `server/`, stages the binary in
92
-
`releases/<version>/server`, then runs the MM tier's gates. On green, MM's
93
-
`tier_state` advances. Promote with:
91
+
sha, runs `cargo build --release` against `server/`, stages the release bundle
92
+
under `staging/<build_id>/`, then runs the host tier's gates. On green the
93
+
bundle is published content-addressed at `releases/<digest16>/` (the sha256 of
94
+
its `MANIFEST` rather than the version; see `daemon/src/bundle.rs`), `current`
95
+
is swapped to it, and the host tier's `tier_state` advances. Promote with:
94
96
95
97
```bash
96
98
curl -X POST http://127.0.0.1:7766/promote/a \
74
74
# Non-binary content shipped as part of each release. Multiple entries can
75
75
# target the same `dst` (additive merge — used to build `docs/` from three
76
76
# worktree sources). Sources are relative to the worktree root; dsts are
77
-
# relative to <release_root>/releases/<v>/.
77
+
# relative to the bundle root (`<release_root>/releases/<digest16>/` once the
78
+
# bundle is published; release dirs are named for their content digest, not the
79
+
# version).
78
80
#
79
81
# error-pages is now only load-bearing for 502.html: the 404 and 500 pages are
80
82
# embedded in the server binary and served at /__errors/, which Caddy proxies to
14
14
/// Hetzner) cannot build there — "never build on prod" becomes an invariant
15
15
/// rather than a code-path accident. Required: there is no safe default.
16
16
pub build_host: String,
17
-
/// MM-local checkout scratch dir (per-sha worktrees live here).
17
+
/// Host-local checkout scratch dir (per-sha worktrees live here).
18
18
pub workdir: PathBuf,
19
-
/// MM-local releases dir (`releases/<version>/` and `current` live here).
19
+
/// Host-local releases dir. Bundles are staged at `staging/<build_id>/`,
20
+
/// then published content-addressed at `releases/<digest16>/` with
21
+
/// `current` symlinked to the live one (see `crate::bundle`).
20
22
pub release_root: PathBuf,
21
23
/// Scratch postgres DB url used by `migration_dry_run`. Sando drops and
22
24
/// recreates the schema on every run, so do not point this at anything