ceremony pin 0.3.0 → 0.6.1 — adopt the Forgejo-capable callers so the reconcilers finally run here #149

Open
opened 2026-08-17 23:20:17 +00:00 by claude-bot-andresmgsl · 0 comments

Context

#145 established that ceremony's reconcilers were gh-only and could not run on this instance; @andres ruled for porting ceremony to Forgejo (option 1, #145 comment, 2026-08-01). That port is delivered: ceremony#188 closed, and ceremony 0.6.1 — released on this instance 2026-08-09 — ships lib/forge.sh + lib/forge-forgejo.sh, whose header names rig's own red run 979 as the motivating failure.

rig still pins 0.3.0 — the last gh-only release — in all three surfaces:

Consequence, measured today (2026-08-17): labels.yml fails on every 15-minute cron tick — runs 2461–2468 are all failure — and the board stays hand-reconciled. This is the noise #145 flagged, still running twelve days after the fix shipped upstream.

Spec

Adopt ceremony 0.6.1 per its own conversion runbook, docs/CONSUMERS.md § Convert an existing repo. Decisions made:

  • Pin 0.6.1, the newest tag on this instance. If a newer ceremony tag exists at build time, still ship 0.6.1 — a further bump is its own PR.
  • labels.yml is replaced from the 0.6.1 caller stub (§ Labels automation). Ceremony #209 split the reconcile sweep out of the event run: the caller keeps scope + trigger, and a new labels-sweep.yml caller lands beside it. Take both stubs verbatim, including the stub's default sweep cadence — the 15-minute advisory cron goes; its failure noise is what this issue exists to stop.
  • release.yml is replaced from the § Release workflow stub (triggers and permissions stay in the caller, as today), pinned 0.6.1.
  • refs-guard.yml is added from the bootstrap list, same pin — 0.6.1's body-aware guard is its own caller.
  • The six ci.yml guard refs move to @0.6.1, keeping the absolute-URL grammar #112 established (a bare uses: resolves through code.forgejo.org here).
  • .ceremony/ is re-vendored byte-identical from ceremony 0.6.1 in the same PR — docs-sync reads the pin from release.yml, so a pin bump without the mirror is a red PR by construction. This also brings the current doctrine (e.g. the post-merge issue state this board already uses) into rig's vendored role files.
  • .github/labeler.yml and .github/labels.conf stay as they are (CONSUMERS.md: the consumer keeps its path map and taxonomy).
  • One PR, with its changelog.d/<this issue>.md fragment.

Tasks

  • Replace .github/workflows/labels.yml with the 0.6.1 caller stub; add .github/workflows/labels-sweep.yml beside it
  • Add .github/workflows/refs-guard.yml at the same pin
  • Replace .github/workflows/release.yml with the 0.6.1 caller stub
  • Bump the six guard refs in .github/workflows/ci.yml to @0.6.1
  • Re-vendor .ceremony/ from ceremony 0.6.1, byte-identical
  • Reconcile CONTRIBUTING.md's workflow references with the new caller set (it names labels.yml and the guard list)
  • changelog.d/<this issue>.md

Acceptance criteria

  • Every uses: in .github/workflows/ and every ceremony action ref in ci.yml names @0.6.1; grep -rn '@0.3.0' .github/workflows/ is empty
  • docs-sync is green on the PR — the .ceremony/ mirror matches the pin the PR itself sets
  • All CI guard steps reach terminal green on the PR head
  • shellcheck step, bash test/cli.sh, bash test/release.sh pass
  • Post-merge, with its own mechanism: a scheduled or dispatched labels.yml run on main reaches success on this instance — not merely stops failing — and the dispatched sweep reconciles without error. This can only be checked after the merge, so the PR references this issue with Refs #149, never Closes, and triage owns the close after observing that run.

Test plan

  • The PR's own CI is the harness: docs-sync must go red if the .ceremony/ mirror is not re-vendored (delete one mirror file locally and the guard's check must fail — that failure is the guard proving it reads the new pin).
  • bash test/cli.sh and bash test/release.sh locally, plus the shellcheck step — same as every rig PR.
  • Must fail: any workflow ref left at 0.3.0 fails the grep criterion above; reviewers hold the line on it.
  • Post-merge: watch the first cron/dispatched labels.yml + sweep runs on the Actions tab; paste run URLs and outcomes on this issue. Success closes it; a red run reopens the investigation here, not in a new issue.

Dependencies

None blocking — ceremony 0.6.1 is released on this instance. Origin: #145 (ruling), ceremony#188 (the port), #112 (absolute uses: grammar), ceremony#209 (sweep split). Refs #145.

## Context #145 established that ceremony's reconcilers were `gh`-only and could not run on this instance; @andres ruled for porting ceremony to Forgejo (option 1, [#145 comment](https://forgejo.heavyduty.builders/heavy-duty/rig/issues/145#issuecomment-4350), 2026-08-01). That port is **delivered**: [ceremony#188](https://forgejo.heavyduty.builders/heavy-duty/ceremony/issues/188) closed, and ceremony `0.6.1` — released on this instance 2026-08-09 — ships [`lib/forge.sh` + `lib/forge-forgejo.sh`](https://forgejo.heavyduty.builders/heavy-duty/ceremony/src/tag/0.6.1/lib/forge.sh), whose header names rig's own red run 979 as the motivating failure. rig still pins `0.3.0` — the last `gh`-only release — in all three surfaces: - [`.github/workflows/labels.yml:22`](https://forgejo.heavyduty.builders/heavy-duty/rig/src/commit/cb4de44bf4c5c98f3459c2321846d434283c69d9/.github/workflows/labels.yml#L22) - [`.github/workflows/release.yml:20`](https://forgejo.heavyduty.builders/heavy-duty/rig/src/commit/cb4de44bf4c5c98f3459c2321846d434283c69d9/.github/workflows/release.yml#L20) - [`.github/workflows/ci.yml:81-98`](https://forgejo.heavyduty.builders/heavy-duty/rig/src/commit/cb4de44bf4c5c98f3459c2321846d434283c69d9/.github/workflows/ci.yml#L81-L98) — the six absolute `uses:` guard refs (#112's grammar) Consequence, measured today (2026-08-17): `labels.yml` fails on every 15-minute cron tick — runs 2461–2468 are all `failure` — and the board stays hand-reconciled. This is the noise #145 flagged, still running twelve days after the fix shipped upstream. ## Spec Adopt ceremony `0.6.1` per its own conversion runbook, [`docs/CONSUMERS.md` § Convert an existing repo](https://forgejo.heavyduty.builders/heavy-duty/ceremony/src/tag/0.6.1/docs/CONSUMERS.md). Decisions made: - **Pin `0.6.1`**, the newest tag on this instance. If a newer ceremony tag exists at build time, still ship `0.6.1` — a further bump is its own PR. - **`labels.yml` is replaced from the 0.6.1 caller stub** (§ Labels automation). Ceremony #209 split the reconcile sweep out of the event run: the caller keeps scope + trigger, and a new **`labels-sweep.yml`** caller lands beside it. Take both stubs verbatim, including the stub's default sweep cadence — the 15-minute advisory cron goes; its failure noise is what this issue exists to stop. - **`release.yml` is replaced from the § Release workflow stub** (triggers and permissions stay in the caller, as today), pinned `0.6.1`. - **`refs-guard.yml` is added** from the bootstrap list, same pin — 0.6.1's body-aware guard is its own caller. - **The six `ci.yml` guard refs move to `@0.6.1`**, keeping the absolute-URL grammar #112 established (a bare `uses:` resolves through code.forgejo.org here). - **`.ceremony/` is re-vendored byte-identical from ceremony `0.6.1`** in the same PR — `docs-sync` reads the pin from `release.yml`, so a pin bump without the mirror is a red PR by construction. This also brings the current doctrine (e.g. the `post-merge` issue state this board already uses) into rig's vendored role files. - `.github/labeler.yml` and `.github/labels.conf` stay as they are (CONSUMERS.md: the consumer keeps its path map and taxonomy). - One PR, with its `changelog.d/<this issue>.md` fragment. ## Tasks - [ ] Replace `.github/workflows/labels.yml` with the 0.6.1 caller stub; add `.github/workflows/labels-sweep.yml` beside it - [ ] Add `.github/workflows/refs-guard.yml` at the same pin - [ ] Replace `.github/workflows/release.yml` with the 0.6.1 caller stub - [ ] Bump the six guard refs in `.github/workflows/ci.yml` to `@0.6.1` - [ ] Re-vendor `.ceremony/` from ceremony `0.6.1`, byte-identical - [ ] Reconcile CONTRIBUTING.md's workflow references with the new caller set (it names `labels.yml` and the guard list) - [ ] `changelog.d/<this issue>.md` ## Acceptance criteria - [ ] Every `uses:` in `.github/workflows/` and every ceremony action ref in `ci.yml` names `@0.6.1`; `grep -rn '@0.3.0' .github/workflows/` is empty - [ ] `docs-sync` is green on the PR — the `.ceremony/` mirror matches the pin the PR itself sets - [ ] All CI guard steps reach terminal green on the PR head - [ ] `shellcheck` step, `bash test/cli.sh`, `bash test/release.sh` pass - [ ] **Post-merge, with its own mechanism:** a scheduled or dispatched `labels.yml` run on `main` reaches **success** on this instance — not merely stops failing — and the dispatched sweep reconciles without error. This can only be checked after the merge, so the PR references this issue with `Refs #149`, never `Closes`, and triage owns the close after observing that run. ## Test plan - The PR's own CI is the harness: `docs-sync` must go **red** if the `.ceremony/` mirror is not re-vendored (delete one mirror file locally and the guard's check must fail — that failure is the guard proving it reads the new pin). - `bash test/cli.sh` and `bash test/release.sh` locally, plus the shellcheck step — same as every rig PR. - Must fail: any workflow ref left at `0.3.0` fails the grep criterion above; reviewers hold the line on it. - Post-merge: watch the first cron/dispatched `labels.yml` + sweep runs on the Actions tab; paste run URLs and outcomes on this issue. Success closes it; a red run reopens the investigation here, not in a new issue. ## Dependencies None blocking — ceremony `0.6.1` is released on this instance. Origin: #145 (ruling), ceremony#188 (the port), #112 (absolute `uses:` grammar), ceremony#209 (sweep split). `Refs #145`.
claude-bot-andresmgsl added the
bug
release
scope:labels
ready
labels 2026-08-17 23:20:17 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: heavy-duty/rig#149
No description provided.