| 1 |
# pom's pipeline. Design: wiki [[sando-bento-boundary]]. |
| 2 |
# |
| 3 |
# pom is the first product Sando ships without building. It runs on astra |
| 4 |
# (aarch64) and on the Hetzner box (x86_64), and `build::run` compiles only on |
| 5 |
# one configured host, so Sando could never build half of this release without |
| 6 |
# breaking its own never-cross-compile rule. Bento already fans out native |
| 7 |
# builds across both machines. So Bento builds and packages; Sando decides |
| 8 |
# whether a thing advances a stage, and performs the advance. |
| 9 |
# |
| 10 |
# There is deliberately no `build_host` here. Absent is not "build anywhere" — |
| 11 |
# it declares the product intake-only, and `build::run` refuses rather than |
| 12 |
# picking a machine. Naming a build host for a product Sando must not build |
| 13 |
# would be a claim the code would then be free to act on. Ship pom with |
| 14 |
# `POST /apps/pom/intake`. |
| 15 |
|
| 16 |
topology_path = "../pom-topology.toml" |
| 17 |
|
| 18 |
# Never shared with another product: two products publishing into one release |
| 19 |
# root would publish into each other's content-addressed history, and the |
| 20 |
# digest that names a bundle says nothing about which product it belongs to. |
| 21 |
workdir = "/srv/sando/pom/work" |
| 22 |
release_root = "/srv/sando/pom/releases" |
| 23 |
logs_root = "/srv/sando/pom/logs" |
| 24 |
|
| 25 |
# The bin the systemd unit's ExecStart points at, and the file the node-side |
| 26 |
# install wrapper installs. pom ships one binary. |
| 27 |
bin_names = ["pom"] |
| 28 |
|
| 29 |
# No `platform` key. A Sando-built product inherits its platform from its config |
| 30 |
# because there is only one answer; pom has two, and the trustworthy answer for |
| 31 |
# a given bundle is the one in that bundle's own artifact record. Each node |
| 32 |
# declares what it runs (see pom-topology.toml) and a bundle is only ever placed |
| 33 |
# on a node whose platform it matches. |
| 34 |
|
| 35 |
# No [[migration_check]] and no [[test_target]] beyond the defaults, and neither |
| 36 |
# is reachable: pom's tiers configure no `cargo_test` and no `migration_dry_run` |
| 37 |
# (see pom-topology.toml). Both gates are artifact-scoped, which the boundary |
| 38 |
# assigns to the builder, and an accepted artifact has no worktree for them to |
| 39 |
# read — they would refuse rather than run. pom has no postgres schema at all; |
| 40 |
# its SQLite migrations are compiled into the binary. |
| 41 |
|
| 42 |
# No [[companion]]: pom is a single binary with no contract-coupled service |
| 43 |
# shipping alongside it. |
| 44 |
|