Merge pull request #214 from dan-claude-bot/build/212-release-0-4-1
release: cut 0.4.1
This commit is contained in:
commit
2050b278f1
8 changed files with 71 additions and 25 deletions
2
.github/workflows/labels-sweep.yml
vendored
2
.github/workflows/labels-sweep.yml
vendored
|
|
@ -49,7 +49,7 @@ on:
|
|||
env:
|
||||
# A called workflow arrives without its repository. Keep this literal pin
|
||||
# aligned with the ceremony release consumed by callers (issue #9 D3).
|
||||
CEREMONY_SELF_REF: "0.4.0"
|
||||
CEREMONY_SELF_REF: "0.4.1"
|
||||
|
||||
jobs:
|
||||
reconcile:
|
||||
|
|
|
|||
2
.github/workflows/labels.yml
vendored
2
.github/workflows/labels.yml
vendored
|
|
@ -48,7 +48,7 @@ on:
|
|||
env:
|
||||
# A called workflow arrives without its repository. Keep this literal pin
|
||||
# aligned with the ceremony release consumed by callers (issue #9 D3).
|
||||
CEREMONY_SELF_REF: "0.4.0"
|
||||
CEREMONY_SELF_REF: "0.4.1"
|
||||
|
||||
jobs:
|
||||
scope:
|
||||
|
|
|
|||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -129,7 +129,7 @@ env:
|
|||
# `ref:` accepts ${{ env }}; `uses:` strings do not — which is why the
|
||||
# shared logic arrives as script files via checkout, not as inner `uses:`
|
||||
# references.
|
||||
CEREMONY_SELF_REF: "0.4.0"
|
||||
CEREMONY_SELF_REF: "0.4.1"
|
||||
VERSION_SOURCE: ${{ inputs.version-source }}
|
||||
|
||||
jobs:
|
||||
|
|
|
|||
25
CHANGELOG.md
25
CHANGELOG.md
|
|
@ -9,6 +9,31 @@ Entries arrive as fragments — one `changelog.d/<issue>.md` per PR, never
|
|||
an edit to this file — and the release PR assembles them into the next
|
||||
section here (`bin/changelog-assemble`, #112).
|
||||
|
||||
## 0.4.1 — 2026-08-01
|
||||
|
||||
### Changed
|
||||
|
||||
- The reconcile sweep is detached from PR-triggered runs: a new reusable
|
||||
`labels-sweep.yml` carries it, woken by `labels.yml`'s new `trigger` job, so
|
||||
a queue-displaced sweep cancels on the Actions tab instead of landing a
|
||||
cancelled `reconcile` check on a PR (#209).
|
||||
- Labels consumers add a sweep caller (`labels-sweep.yml`, stub in
|
||||
docs/CONSUMERS.md), relocate the hourly cron and manual bootstrap dispatch
|
||||
to it, and grant the labels caller `actions: write`; a pin bump without the
|
||||
sweep caller goes loudly red at the trigger job (#209).
|
||||
|
||||
### Fixed
|
||||
|
||||
- `checks_state` drops rollup entries belonging to the workflow it runs
|
||||
inside — `SELF_WORKFLOW`, defaulting to the ambient `GITHUB_WORKFLOW` —
|
||||
before the newest-per-context collapse: the label machine never grades
|
||||
its own runs, and an empty name filters nothing (#208).
|
||||
- A sweep displaced from the shared concurrency queue attaches CANCELLED to
|
||||
its PR while its successor attaches elsewhere, so the sweep set
|
||||
`blocker:ci-red` off its own displaced run and re-affirmed it every
|
||||
cadence (crew#227). A rollup of only self entries now honestly scores
|
||||
NONE (#208).
|
||||
|
||||
## 0.4.0 — 2026-07-29
|
||||
|
||||
### Added
|
||||
|
|
|
|||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
0.4.1-dev
|
||||
0.4.1
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- `checks_state` drops rollup entries belonging to the workflow it runs
|
||||
inside — `SELF_WORKFLOW`, defaulting to the ambient `GITHUB_WORKFLOW` —
|
||||
before the newest-per-context collapse: the label machine never grades
|
||||
its own runs, and an empty name filters nothing (#208).
|
||||
- A sweep displaced from the shared concurrency queue attaches CANCELLED to
|
||||
its PR while its successor attaches elsewhere, so the sweep set
|
||||
`blocker:ci-red` off its own displaced run and re-affirmed it every
|
||||
cadence (crew#227). A rollup of only self entries now honestly scores
|
||||
NONE (#208).
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
### Changed
|
||||
|
||||
- The reconcile sweep is detached from PR-triggered runs: a new reusable
|
||||
`labels-sweep.yml` carries it, woken by `labels.yml`'s new `trigger` job, so
|
||||
a queue-displaced sweep cancels on the Actions tab instead of landing a
|
||||
cancelled `reconcile` check on a PR (#209).
|
||||
- Labels consumers add a sweep caller (`labels-sweep.yml`, stub in
|
||||
docs/CONSUMERS.md), relocate the hourly cron and manual bootstrap dispatch
|
||||
to it, and grant the labels caller `actions: write`; a pin bump without the
|
||||
sweep caller goes loudly red at the trigger job (#209).
|
||||
42
drills/0.4.1.md
Normal file
42
drills/0.4.1.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# 0.4.1 — drill record
|
||||
|
||||
Run 2026-08-01 by `dan-claude-bot` against release PR (Refs #212), candidate
|
||||
branch `build/212-release-0-4-1` on `heavy-duty/ceremony` main at `c2987fd`.
|
||||
|
||||
## Scope ruling — doors unchanged, no disposable-repo rehearsal
|
||||
|
||||
The 0.4.0 drill (drills/0.4.0.md) probed both release doors end-to-end in a
|
||||
disposable repo, and the live 0.4.0 release then exercised the merge door for
|
||||
real: one tag, one release, main re-armed to `0.4.1-dev`. Since that tag,
|
||||
`release.yml`'s only delta is the `CEREMONY_SELF_REF` pin line — no door
|
||||
logic, no decide table, no publish step changed. Re-running a full
|
||||
disposable-repo drill would rehearse machinery this repo already proved both
|
||||
in rehearsal and in production within the last three days. This record
|
||||
therefore rests on the standing evidence below, and says so honestly rather
|
||||
than staging a ceremony for a tree the doors cannot distinguish from the last
|
||||
one. The panel reviews this claim like any other; if any reviewer rules a
|
||||
full drill owed, that verdict wins.
|
||||
|
||||
## Standing evidence at the candidate head
|
||||
|
||||
| # | probe | where | result |
|
||||
|---|---|---|---|
|
||||
| 1 | decide + merge-door step-replay (dogfood) | `release-exercise / step-replay (dogfood)` on this PR | CI-gating; green required to merge |
|
||||
| 2 | decide + merge-door step-replay (consumer) | `release-exercise / step-replay (consumer)` on this PR | CI-gating; green required to merge |
|
||||
| 3 | fragment chain: armed → assemble → monotonic | `release-exercise / fixture-chain` on this PR | CI-gating; green required to merge |
|
||||
| 4 | the real tree's own guards (armed, monotonic, drill-recorded, self-ref) | `self-guards` on this PR | CI-gating; green required to merge |
|
||||
| 5 | the 0.4.1 payload live: split labels machinery dogfooding on this very PR | this PR's checks | `labels / scope` + `labels / trigger` green, and NO `labels / reconcile` check attached — the #209 acceptance shape, observed on the first post-split PR in this repo |
|
||||
|
||||
Probe 5 is the one piece 0.4.0's drill could not have covered: the sweep
|
||||
split is 0.4.1's payload, and this repo adopted it on merge (#211 split
|
||||
`self-labels.yml` / `self-labels-sweep.yml`). Every PR opened after that
|
||||
merge — this one included — is a live consumer-shaped proof that PR checks
|
||||
carry scope and trigger only, with sweeps dispatched to the detached
|
||||
`self-labels-sweep` runs.
|
||||
|
||||
## Deviations
|
||||
|
||||
No candidate-ref deviation arises: this record stages no scratch caller, so
|
||||
nothing needs to resolve `CEREMONY_SELF_REF: "0.4.1"` before the tag exists.
|
||||
The sibling crew migration is the post-tag consumer proof, per #212's
|
||||
acceptance criteria.
|
||||
Loading…
Reference in a new issue