| 1 |
# How Bento releases pom. Lives here rather than in the daemon's config so it is |
| 2 |
# versioned with the code it describes. |
| 3 |
# |
| 4 |
# A service, not an app or a library: pom is run rather than distributed. There |
| 5 |
# is no bundle for a user to download and no crate to publish. |
| 6 |
# |
| 7 |
# The kind says what pom IS. Who delivers it is a separate question, and the |
| 8 |
# answer changed: Bento used to install the binary and restart the unit itself |
| 9 |
# (`[[deploy]]` tables, now gone). Under the Sando/Bento boundary Bento builds |
| 10 |
# and packages, and Sando decides whether a thing advances a stage. So the |
| 11 |
# release ends at `collect`, and the daemon's `[handoff.pom]` table carries the |
| 12 |
# artifact to sandod, which verifies it against its record, gates it, and |
| 13 |
# promotes it tier by tier. |
| 14 |
# |
| 15 |
# That is what pom gets out of the move: a content-addressed release history and |
| 16 |
# a real rollback horizon, instead of the single `<install-path>.prev` file |
| 17 |
# Bento's installer kept. pom had the worst deploy story of anything shipped |
| 18 |
# purely because of its architecture; this is the fix. |
| 19 |
# |
| 20 |
# Bento refuses to start if this file and the daemon config disagree — a service |
| 21 |
# must either deploy itself or hand off, never neither and never both. |
| 22 |
kind = "service" |
| 23 |
|
| 24 |
# Two arches, two machines, built natively on each. Sando cannot do this job: |
| 25 |
# sando-daemon.toml sets build_host = "fw13" and build::run refuses to compile |
| 26 |
# anywhere else, which is the never-build-on-prod invariant and also makes Sando |
| 27 |
# single-architecture. pom needs an aarch64 binary for astra, so Sando could |
| 28 |
# never build half of this release without breaking its own rule. |
| 29 |
targets = ["linux/x86_64", "linux/aarch64"] |
| 30 |
|
| 31 |
# Workspace root carries the version. |
| 32 |
version_path = "Cargo.toml" |
| 33 |
|
| 34 |
# MNW is one .git over the server, sando, multithreaded, pom and more, each |
| 35 |
# versioned separately, so the default `v{version}` names no product in |
| 36 |
# particular here. pom and multithreaded are both at 0.4.1 as it stands, which |
| 37 |
# makes a bare `v0.4.1` ambiguous the day it is created rather than eventually. |
| 38 |
tag_format = "pom-v{version}" |
| 39 |
|
| 40 |
# Still not the both-or-neither gate it looks like: `require_all_targets` is |
| 41 |
# consulted by `publish`, and pom does not publish. The 0.4.1 release showed what |
| 42 |
# that costs -- x86_64 installed on the Hetzner box and restarted it while the |
| 43 |
# aarch64 build was still failing its test gate, leaving the mesh split across |
| 44 |
# two versions until the retry landed. |
| 45 |
# |
| 46 |
# What changes under the handoff is where the guarantee comes from. It is no |
| 47 |
# longer Bento's to give: each arch is handed over as its own artifact with its |
| 48 |
# own evidence, and Sando resolves BOTH bundles before it touches a node, so a |
| 49 |
# version missing its x86_64 half fails the promote whole rather than halfway. |
| 50 |
# The split-mesh failure moves from "possible, untracked" to "refused by the |
| 51 |
# promote". |
| 52 |
# |
| 53 |
# Left on because it is the right intent and costs nothing. |
| 54 |
require_all_targets = true |
| 55 |
|
| 56 |
# No `[[deploy]]` tables. They are what a service that installs ITSELF declares, |
| 57 |
# and pom no longer does -- the daemon's `[handoff.pom]` sends the collected |
| 58 |
# artifact to sandod instead, and sandod owns install, restart, health and |
| 59 |
# rollback from there. |
| 60 |
# |
| 61 |
# Kept here as the record of what the old path was, because the addresses moved |
| 62 |
# to sando's topology rather than disappearing: |
| 63 |
# |
| 64 |
# linux/x86_64 root@100.120.174.96 (Tailscale SSH on 22, NOT 2200 -- 2200 is |
| 65 |
# what the retired deploy.sh used and it refuses this machine's |
| 66 |
# key for both root and max, which is why 0.4.0 was done by hand) |
| 67 |
# linux/aarch64 astra |
| 68 |
# both install_path /usr/local/bin/pom, unit pom.service, |
| 69 |
# health http://<host>:9100/api/health |
| 70 |
|