Skip to content

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:

toml
[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.

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_pkgbases is the suite's reported set. A client labels those packages tested and other packages snapshot. The built-in consistency suite fills this set with packages whose files it checked, so read tests.suite and logs before interpreting the label as runtime or desktop coverage.
  • promoted records when the snapshot reached rc and stable. Rollback without --force requires one of them.
  • expedited marks a security snapshot that ran the short suite; held marks one a maintainer pulled, with hold_reason.
  • db_digests let a client check the databases it downloaded belong to this snapshot.

Client commands

  • pacvamp channel shows 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/mirrorlist to 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 unpin restores 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 update records the snapshot it converged to in the ledger.

Released under the MIT License.