Release train
Version 1, draft. The client contract for signed snapshots and channel pointers. For commands and prerequisites, start with snapshots and rollback. Operators should also read the snapshot-store spec.
Snapshots and channels
The Arch mirror is a store of immutable snapshots, <snapshot_base>/<id>/ {core,extra,multilib}/os/<arch>, where <id> is YYYY-MM-DDTHH. Unchanged package files are hard-linked between snapshots. The channels edge, rc, and stable are pointers: edge is the newest snapshot, rc the newest that passed the test suite, stable the newest rc that soaked without a hold.
A machine's channel is the one its Omarchy repository server names (https://pkgs.omarchy.org/stable/$arch is stable). The snapshot store base comes from the manifest:
[channel]
snapshot_base = "https://mirror.omarchy.org/snapshots"An adopting distro can ship this setting. The URL above illustrates the intended layout; it is not a claim that an Omarchy snapshot service is deployed.
release.json
Each channel publishes a signed manifest next to its other feeds (<Server>/release.json with release.json.minisig), and each snapshot carries its own copy at <snapshot_base>/<id>/release.json.
{
"version": 1,
"id": "2026-09-03T06",
"channel": "stable",
"arch_snapshot": "2026-09-03T06",
"repository_index_sequences": { "omarchy": 1042 },
"created_at": "2026-09-03T06:00:00Z",
"tests": { "suite": "omarchy-train", "commit": "...", "result": "pass", "log_url": "..." },
"tested_pkgbases": ["hyprland", "omarchy", "..."],
"promoted": { "rc": "2026-09-03T08:00:00Z", "stable": "2026-09-06T08:00:00Z" },
"expedited": false,
"held": false,
"db_digests": { "core/os/x86_64/core.db": "...", "extra/os/x86_64/extra.db": "..." }
}tested_pkgbasesis the suite's reported set. A client labels those packagestestedand other packagessnapshot. The built-in consistency suite fills this set with packages whose files it checked, so readtests.suiteand logs before interpreting the label as runtime or desktop coverage.promotedrecords when the snapshot reachedrcandstable. Rollback without--forcerequires one of them.expeditedmarks a security snapshot that ran the short suite;heldmarks one a maintainer pulled, withhold_reason.db_digestslet a client check the databases it downloaded belong to this snapshot.
Client commands
pacvamp channelshows the channel, the snapshot it points at with its test result and promotion, the tested-package count, whether the mirrorlist is pinned, and the last snapshot the machine converged to.pacvamp channel pin <id>writes/etc/pacman.d/mirrorlistto point at the snapshot (backing up the previous list once), after fetching and verifying the snapshot's manifest and checking it was promoted.pacvamp channel unpinrestores the backup.pacvamp rollback --snapshot <id>pins, refreshes, and runs a sync that allows downgrades for installed repository packages available in that snapshot. It does not restore application data or prior AUR outputs; pair it with a separately managed filesystem recovery procedure.pacvamp updaterecords the snapshot it converged to in the ledger.