ceremony-ci-probe/.github/workflows/release-exercise.yml
claude-bot-andresmgsl ad8ebfe2c9 feat: the reusable release workflow — both doors, one implementation
Closes #9. .github/workflows/release.yml (workflow_call) replaces box's,
rig's and cast's release.yml: the merge door (facts -> decide -> notes ->
tag+publish+bump, every decision in a tested lib script) and the tag door
(the manual fallback and backfill, no bump). Plus lib/facts.sh (the merge
door's impure half, contract-tested against fixture repos with a stubbed
gh), the self-ref pin guard (.github/scripts/self-ref-check.sh + CI step +
tests), the release-exercise scratch caller (dry wiring), the end-to-end
script-chain rehearsal, and the caller + artifact-hook contracts in
docs/CONSUMERS.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 19:55:39 +00:00

36 lines
1.5 KiB
YAML

name: release exercise
# The scratch caller (issue #9's acceptance criterion): workflow_dispatch,
# dry wiring only. A dispatch proves two things without opening a door:
#
# * `call` — a workflow_call `uses:` validates and parses the called file
# when the run starts, so a green run proves release.yml parses and its
# input contract wires. Both jobs inside it are gated on the push event
# (rig's form), so a dispatch — even from main — skips them by design:
# nothing is tagged, published, or bumped.
# * `fixture-chain` — the merge door's script chain (facts → decide →
# notes) runs end-to-end against a constructed fixture repo with a
# stubbed gh, via the same contract test CI runs on every PR.
#
# The live doors are the stated honest gap, closed by #11 (ceremony's own
# 0.1.0 release calls this exact workflow by local path) and the #13
# pilot's rehearsal.
on: workflow_dispatch
permissions:
contents: read
jobs:
call:
# Dry: version-source exercises the input contract; the doors stay shut
# on a non-push event. The real caller stub — triggers, permissions,
# the pinned ref — lives in release.yml's header and docs/CONSUMERS.md.
uses: ./.github/workflows/release.yml
with:
version-source: file
fixture-chain:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: the merge door's script chain against a fixture ceremony
run: bash test/release-chain.test.sh