2025-09-10T17:42:26Z - 2026-09-10T17:42:26Z
Overview
4 releases published by 2 users
Published
0.3.1
Published
0.3.0
0.3.0
Published
0.2.0
0.2.0
Published
0.1.0
0.1.0
68 pull requests merged by 5 users
Merged
#140 fix: refuse a PATH without /usr/sbin, before the token prompt
Merged
#146 fix: slim ubuntu-latest default; install shellcheck in ci.yml (#144)
Merged
#137 test: cli.sh reads fixtures, not the host it happens to run on
Merged
#132 docs: README install quick start names the Forgejo channel (RIG_HOST)
Merged
#130 feat(drill): a forgejo-runner lifecycle leg beside the GitHub one
Merged
#134 fix(forgejo-runner): 'active' is not proof the runner is fetching
Merged
#138 fix(forgejo-runner): the cache server can start
Merged
#128 fix: align Ceremony actors with Forgejo
Merged
#114 feat: install channel is forge-agnostic (RIG_HOST / BOX_HOST)
Merged
#113 fix: rig's ceremony CI guards resolve on Forgejo
Merged
#110 feat: Forgejo-native CI — a ci-box tenant and a forgejo-runner command family
Merged
#101 release: 0.3.0
Merged
#104 refactor: one drill record per version, in drills/
Merged
#102 feat: CI refuses a release PR with no drill record
Merged
#100 docs(changelog): one line per entry, and a pass over the whole file
Merged
#93 fix: don't read a missing /run/sshd as a broken sshd config
Merged
#99 fix: catch a deleted or duplicated release heading in CHANGELOG.md
Merged
#97 fix(labels): sweep on labeled so the handoff is immediate
Merged
#94 docs(contributing): document the blocker axis and merge-next ownership
Merged
#91 docs: align README quick start with main
Merged
#90 refactor(labels): split PR labels into state and blocker axes
Merged
#88 fix(labels): state:needs-human means a human could merge it right now
Merged
#84 feat: /etc/rig/manifest — which rig converged this machine, and when
Merged
#74 feat: rig platform — what is this machine, computed not stored
Merged
#81 test: pin the at-risk gate's floor at one operator
Merged
#73 fix: gate 'users apply' on an empty file that would revoke everyone
Merged
#82 test: widen the read-guard sweep to bin/ and to plain-statement reads
Merged
#72 fix: uninstall_confirm swallows Ctrl-D — the abort was silent
Merged
#71 fix: lint .github/scripts with dotglob, and assert the sweep is total
Merged
#83 feat(users)!: --class human|server becomes --root-door closed|open
Merged
#80 feat(bootstrap)!: box tenant roles carry a -box suffix
Merged
#79 feat(bootstrap)!: machine roles carry a -server suffix; staging-server restored
Merged
#69 release: 0.2.0
Merged
#67 fix(release): re-arm the changelog heading, and guard it against VERSION (#66)
Merged
#59 fix(bootstrap): refuse a users file that names no users
Merged
#54 feat!: bootstrap takes the users file
Merged
#53 feat: users apply grants the box tier, not just the socket
Merged
#55 fix: dropping the box role revokes through box, not behind its back
Merged
#60 fix(users): the host= marker gates the box role, not the incus group
Merged
#46 release: 0.1.0
Merged
#48 feat: merging a release-labeled PR is the release
Merged
#45 fix: the release suite accepts the ceremony's own tree
Merged
#43 fix: headless credential prompts refuse loudly, naming their variable
Merged
#41 install: derive $HOME from getent when the environment has none (#39)
Merged
#40 feat: release flow — CHANGELOG, release.yml, and a tag-resolving installer (#32)
Merged
#37 feat(bootstrap): box tenant roles — claude, codex, grok, staging (#31)
Merged
#38 fix: base the human auto-request on this handoff, not review history
Merged
#36 feat(install): versioned installs and a real uninstall — box#79's layout, ported (#35)
Merged
#34 feat: label automation — state reconciler, path-scoped labeler, and CONTRIBUTING
Merged
#33 docs: LABELS.md — the label taxonomy (states, stale/blocked, scopes)
Merged
#30 users: finish #17 — close-root proves the door (sudo -n, per-user sshd -T), @root key seeding, runner row owned
Merged
#29 feat: the #12/#25 remnants — README class table + box rename, unpinned-install note, box effective check, coolify marker warnings
Merged
#28 feat(bootstrap): host-class machines install box + run setup-host (#12, #25)
Merged
#23 feat(bootstrap): staging role — host archetype for box-minted staging VMs
Merged
#27 Machine traits + fleet users: class/host/join presets and rig users apply/status/close-root (#26 + #24)
Merged
#18 feat(db): bring ad-hoc dump/restore on-box as rig db (Closes #15)
Merged
#20 bootstrap: infer the tailnet tag from the pre-auth key — verify the tag granted, not the one requested
Merged
#14 fix(runner): install refuses a box registered to another repo
Merged
#11 feat(runner): status, remove, and repoint — the runner lifecycle verbs
Merged
#10 fix(coolify): validate the dump bindings, and stop printing $EDITOR
Merged
#9 feat(coolify): install the control-plane dump as a systemd timer
Merged
#7 fix(bootstrap): converge the tailnet hostname on an already-joined box
Merged
#6 fix(bootstrap): sshd hardening never applied on cloud images
Merged
#5 fix: source /etc/os-release in a subshell — it clobbers $VERSION
Merged
#4 feat: runner follow-ups — bootstrap role + latest-version resolution
Merged
#3 feat: runner install — GitHub Actions runner as an unprivileged systemd service
Merged
#2 fix: bootstrap installs openssh-server (pristine images lack sshd_config.d)
Merged
#1 feat: rig CLI — bootstrap, coolify install, curl installer
59 issues closed from 4 users
Closed
#115 Forgejo Actions runner — make rig workflows execute
Closed
#133 rig forgejo-runner status reports (active) as health — a poller that has gone quiet looks identical to a working runner
Closed
#145 ceremony automation cannot run on Forgejo — the reconcilers are built on gh, which speaks an API Forgejo does not serve
Closed
#139 rig admin commands assume /usr/sbin is on PATH — a stock su root shell dies with 'useradd: command not found', after prompting for a token
Closed
#144 rig default label maps ubuntu-latest to a slim image that cannot run rig own CI — ci/check fails on shellcheck
Closed
#136 test/cli.sh is not hermetic — 13 checks fail on any box that has a Forgejo runner installed
Closed
#131 README's install quick start has no Forgejo channel — RIG_HOST shipped in #111 and is documented nowhere
Closed
#135 rig-installed Forgejo runners have their cache server disabled — ProtectHome=read-only vs $HOME/.cache
Closed
#116 Ceremony on Forgejo — align actors and bootstrap the issue-flow taxonomy
Closed
#120 Eight core taxonomy labels are absent — the work queue cannot be expressed and needs-ruling cannot be set
Closed
#118 The core label taxonomy is incomplete in this repo — the work-queue labels do not exist
Closed
#122 .github/labels.conf's panel= names four accounts that do not exist on this instance
Closed
#119 .github/labels.conf names panel and triage identities that do not exist on this instance
Closed
#121 No Actions runner has ever served this repo — every check on every commit is permanently pending
Closed
#117 No Forgejo Actions runner is attached to this repo — CI, the label reconciler, and the release flow have never run
Closed
#125 bootstrap's BOX_MANUAL is not a pasteable command when a host has two candidates
Closed
#111 rig's own install channel still hardcodes GitHub (install.sh, bootstrap's box fetch)
Closed
#126 Forgejo has no discussions — triage's intake door has no surface on this instance
Closed
#112 rig's ceremony actions won't resolve on Forgejo — make the 8 first-party uses: absolute
Closed
#109 Forgejo-native CI: a ci-box tenant and a forgejo-runner command family
Closed
#92 URGENT: sshd -t failing for a missing /run/sshd is reported as 'sshd rejects the merged config' — bootstrap blocked, stderr discarded
Closed
#98 changelog: nothing notices a DELETED release heading — arming is green on a tree that erased a shipped section
Closed
#96 labels: sweep on labeled so the handoff is immediate, and let the author set state:needs-human
Closed
#89 URGENT: README on main documents unreleased role names — the documented install (0.2.0) rejects every one of them
Closed
#87 labels: state:needs-human is sticky and blind to mergeability, and nothing says which PR to merge next
Closed
#61 A rig-managed machine records nothing about which rig converged it, or when
Closed
#64 rig platform: what is this machine, calculated at run time, stored nowhere
Closed
#78 A surviving mutant un-gates the single-operator box: AT_RISK -gt 0 is not pinned
Closed
#65 users apply cannot tell 'remove everyone' from 'I truncated the file'
Closed
#75 The #43 read-guard sweep does not cover bin/rig, which is how #68 slipped through
Closed
#68 uninstall_confirm swallows Ctrl-D: the abort is silent, while db.sh one file away gets it right
Closed
#70 CI's shellcheck sweep never lints .github/scripts/*.sh — including release-lib.sh, which decides what gets published
Closed
#77 users: --class human|server is named for who lives there, but what it decides is the root SSH door
Closed
#76 roles: name the family in the role — -server for fleet machines, -box for box tenants
Closed
#66 A PR that predates a release merges its Unreleased entry into the released section — silently
Closed
#57 An empty users file converges a root-only box as silently as forgetting one
Closed
#51 rig bootstrap should take the users file — one command, box ready
Closed
#49 users apply grants the incus socket but never the tier — it should call box grant
Closed
#50 users apply revokes the incus group behind box revoke's back
Closed
#58 A host=no box with an incus group still hands out the bare socket
Closed
#52 Rig manifest
Closed
#56 Rollback
Closed
#47 Merging a release-labeled PR should BE the release — auto-tag + publish on merge (box#96 twin)
Closed
#44 test/release.sh demands an Unreleased section — the release PR of the ceremony can never pass CI
Closed
#42 Interactive prompts die silently when stdin is not a tty — exit 1, zero output
Closed
#39 install.sh dies on unset HOME under set -u — cloud-init runcmd has no HOME
Closed
#32 release flow: VERSION, CHANGELOG, tagged releases, and a tag-resolving installer that pins box
Closed
#31 rig bootstrap roles for box tenants — claude, codex, grok, staging
Closed
#35 versioned installs and a real uninstall — rig's turn (box#79's layout, ported)
Closed
#17 bootstrap: create an admin user, and make the root door role-aware — a uniform 'lock root' would cut Coolify off from the fleet
Closed
#12 bootstrap: add a dev role — the Incus claudebox host is the one box rig doesn't make
Closed
#25 Machine classes: server-class vs host-class as bootstrap's organizing axis
Closed
#22 staging bootstrap role: host archetype for box-hosted staging VMs
Closed
#24 rig users: declarative operators and roles across the fleet
Closed
#26 Machine traits: roles as presets over class/host/join (supersedes #25)
Closed
#15 rig db: bring dump/restore on-box (D-278) + close DB/backup interaction gaps
Closed
#16 bootstrap: infer the tailnet tag from the pre-auth key — verify the tag control granted, don't assert the one rig requested
Closed
#13 runner install: --repo is ignored when a runner is already registered — silently restarts on the OLD repo and reports success
Closed
#8 Control-plane backup plumbing belongs in rig, not the runbook (nightly Coolify dump)
10 issues created by 3 users
Opened
#123 templates_archive_urls' Forgejo comment is wrong — the archive/refs/{tags,heads} paths are served
Opened
#124 INSTALLED_FROM records no forge, now that RIG_HOST decides which one a tree came from
Opened
#127 drill/drill.sh installs rig from GitHub only — the release gate cannot exercise the RIG_HOST channel
Opened
#129 drill/drill.sh's runner leg exercises only rig runner — the forgejo-runner family ships with no end-to-end gate
Opened
#141 forgejo-runner install reports 'installed and running' for a crash-looping unit — Type=simple is active the instant it forks
Opened
#142 forgejo-runner install does not check the Docker Engine, and its group warning understates a fatal condition
Opened
#143 rig forgejo-runner status says nothing about 'activating' — the one systemd state that always means a crash loop
Opened
#148 runuser joins the admin-binary preflight — and runner remove gets the preflight it lacks
Opened
#149 ceremony pin 0.3.0 → 0.6.1 — adopt the Forgejo-capable callers so the reconcilers finally run here
Opened
#150 forgejo-runner install writes no config, so every rig-installed runner is pinned to one job at a time and no operator can change it durably