Merge pull request 'fix: align Ceremony actors with Forgejo' (#128) from codex-reviewer-andresmgsl/rig:build/116-forgejo-actors into main
Some checks are pending
ci / check (push) Waiting to run
ci / install (push) Waiting to run
ci / db-integration (push) Waiting to run
release / release (push) Waiting to run

Reviewed-on: #128
Reviewed-by: grok-reviewer-andresmgsl <andres+3@heavyduty.builders>
Reviewed-by: kimi-reviewer-andresmgsl <andres+4@heavyduty.builders>
Reviewed-by: cluade-reviewer-andresmgsl <andres+1@heavyduty.builders>
This commit is contained in:
andres 2026-07-30 22:57:19 +00:00
commit 4a6e9761e5
4 changed files with 41 additions and 4 deletions

4
.github/labels.conf vendored
View file

@ -1,5 +1,5 @@
panel=claude-bot-andresmgsl codex-bot-andresmgsl grok-bot-andresmgsl kimi-bot-andresmgsl
triage-actors=dan-claude-bot
panel=cluade-reviewer-andresmgsl codex-reviewer-andresmgsl grok-reviewer-andresmgsl kimi-reviewer-andresmgsl
triage-actors=dan-claude-bot cluade-reviewer-andresmgsl
scope:bootstrap|C5DEF5|bootstrap — hardening a pristine server into a node
scope:users|C5DEF5|users-* — class model, apply/status, close-root
scope:runner|C5DEF5|runner-* / forgejo-runner-* — CI runner lifecycle, either forge

View file

@ -16,8 +16,8 @@ genuinely rig's.
1. **Fork and branch.** Contributors work from forks; upstream branches are
for maintainers. Title the PR conventionally (`feat:`, `fix:`, `docs:`).
2. **The review panel** (`.github/labels.conf`'s `panel=` line):
`claude-bot-andresmgsl`, `codex-bot-andresmgsl`, `grok-bot-andresmgsl`,
`kimi-bot-andresmgsl` —
`cluade-reviewer-andresmgsl`, `codex-reviewer-andresmgsl`,
`grok-reviewer-andresmgsl`, `kimi-reviewer-andresmgsl` —
the required verdicts for a PR are the panel minus its author. The
maintainer (`danmt`) takes the last word and merges.
3. **Checks must be green**: `shellcheck`, `bash test/cli.sh` and

3
changelog.d/116.md Normal file
View file

@ -0,0 +1,3 @@
### Fixed
- Ceremony recognizes the Forgejo review panel and both forges' triage actors (#116)

View file

@ -3664,6 +3664,40 @@ check "release.yml: the caller was not absolutised (docs-sync would go red)" 0 "
check "labels.yml: the caller was not absolutised either" 0 "count=0" \
wf_count labels.yml '^[[:space:]]*uses:[[:space:]]*https://.*ceremony/\.github/workflows/'
# The reconciler reads the machine roster from labels.conf while contributors
# read the prose roster. A Forgejo migration that updates only one side makes
# the required-verdict set differ depending on who is reading it.
configured_panel() {
sed -n 's/^panel=//p' "$ROOT/.github/labels.conf"
}
documented_panel() {
# shellcheck disable=SC2016 # backticks are literal Markdown delimiters
sed -n '/^2\. \*\*The review panel\*\*/,/required verdicts/p' "$ROOT/CONTRIBUTING.md" \
| grep -oE '`[^`]+-reviewer-andresmgsl`' \
| tr -d '`' \
| paste -sd ' ' -
}
panel_is_forgejo_roster() {
[ "$(configured_panel)" = \
"cluade-reviewer-andresmgsl codex-reviewer-andresmgsl grok-reviewer-andresmgsl kimi-reviewer-andresmgsl" ]
}
panel_rosters_match() {
[ "$(documented_panel)" = "$(configured_panel)" ]
}
# Panel verdicts are all-required, so its roster cannot span disjoint account
# namespaces. Triage authorization is any-match, so the union keeps issue flow
# valid on both GitHub and Forgejo while both boards remain live.
triage_actors_cover_both_forges() {
[ "$(sed -n 's/^triage-actors=//p' "$ROOT/.github/labels.conf")" = \
"dan-claude-bot cluade-reviewer-andresmgsl" ]
}
check "labels: panel names exactly the four Forgejo reviewer accounts" 0 "" \
panel_is_forgejo_roster
check "labels: CONTRIBUTING panel matches labels.conf exactly" 0 "" \
panel_rosters_match
check "labels: triage actors cover GitHub and Forgejo exactly" 0 "" \
triage_actors_cover_both_forges
# One tag governs all eight references — the pin may be bumped, never split.
ceremony_tags() {
grep -rhoE 'heavy-duty/ceremony/[^@]+@[^[:space:]]+' "$ROOT/.github/workflows/" \