rig/commands
dan-claude-bot 5c40e906a1 feat: /etc/rig/manifest — which rig converged this machine, and when
A rig-managed machine recorded nothing about its own provenance. The entire
durable output of a bootstrap run was one line in /etc/rig/role, and that line
says what the box IS, never what built it. VERSION was read in exactly one
place (bin/rig:9, for --version) and reports the currently INSTALLED tree, not
the one that ran; there was no timestamp anywhere in the codebase.

bootstrap now stamps a second file beside the marker: schema=1, a birth pair
(bootstrapped_by/_at, pinned forever) and a latest pair (converged_by/_at).
key=value, one per line, 0644 — the one file that must stay readable on the
most broken machine in the fleet, where there is no YAML parser and no jq.
`rig manifest [<key>]` reads it back.

Only DECIDED facts go in, which is what keeps bootstrap.sh:3's convergence
contract intact: bootstrapped_* is first-write-wins, and converged_* updates
only when the version actually differs — it is the time the converging version
last changed, not the time of the last run. The renderer is pure, so a re-run
by the same rig is byte-identical no matter where the clock is, and the
cmp-guard stays silent. OBSERVED facts (cores, RAM, disk, kernel) stay out:
they go stale on their own and belong to `rig platform` (#64).

/etc/rig/role is untouched.

Closes #61

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 12:48:39 +00:00
..
lib feat: /etc/rig/manifest — which rig converged this machine, and when 2026-07-20 12:48:39 +00:00
bootstrap-tenant.sh feat: /etc/rig/manifest — which rig converged this machine, and when 2026-07-20 12:48:39 +00:00
bootstrap.sh feat: /etc/rig/manifest — which rig converged this machine, and when 2026-07-20 12:48:39 +00:00
coolify-backup-install.sh feat(bootstrap)!: machine roles carry a -server suffix; staging-server restored 2026-07-20 00:36:00 +00:00
coolify-install.sh feat(bootstrap)!: machine roles carry a -server suffix; staging-server restored 2026-07-20 00:36:00 +00:00
db.sh feat(db): bring ad-hoc dump/restore on-box as rig db 2026-07-17 15:16:35 +00:00
manifest.sh feat: /etc/rig/manifest — which rig converged this machine, and when 2026-07-20 12:48:39 +00:00
platform.sh docs: the provenance comment matches #61's pinned contract, not the old story 2026-07-20 12:41:30 +00:00
runner-install.sh fix: headless credential prompts refuse loudly, naming their variable (#42) 2026-07-19 12:15:08 +00:00
runner-remove.sh fix: headless credential prompts refuse loudly, naming their variable (#42) 2026-07-19 12:15:08 +00:00
runner-repoint.sh fix: headless credential prompts refuse loudly, naming their variable (#42) 2026-07-19 12:15:08 +00:00
runner-status.sh fix(runner): install refuses a box registered to another repo 2026-07-13 14:57:28 +00:00
users-apply.sh fix: gate 'users apply' on an empty file that would revoke everyone 2026-07-20 12:25:09 +00:00
users-close-root.sh feat(users)!: --class human|server becomes --root-door closed|open 2026-07-20 10:02:50 +00:00
users-status.sh fix(users): review findings — invoker gate, real SSH revocation, StrictModes-shaped close-root gate, trait-aware box role 2026-07-17 20:01:19 +00:00