release: forge 0.6.3 #267
15 changed files with 95 additions and 31 deletions
2
.github/workflows/labels-sweep.yml
vendored
2
.github/workflows/labels-sweep.yml
vendored
|
|
@ -66,7 +66,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.6.2"
|
||||
CEREMONY_SELF_REF: "0.6.3"
|
||||
|
||||
jobs:
|
||||
reconcile:
|
||||
|
|
|
|||
2
.github/workflows/labels.yml
vendored
2
.github/workflows/labels.yml
vendored
|
|
@ -56,7 +56,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.6.2"
|
||||
CEREMONY_SELF_REF: "0.6.3"
|
||||
|
||||
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.6.2"
|
||||
CEREMONY_SELF_REF: "0.6.3"
|
||||
VERSION_SOURCE: ${{ inputs.version-source }}
|
||||
|
||||
jobs:
|
||||
|
|
|
|||
17
CHANGELOG.md
17
CHANGELOG.md
|
|
@ -22,6 +22,23 @@ were adopted by port rather than merge. Upstream's separate `0.4.1` section
|
|||
is deliberately not carried — the tag published here is the one this section
|
||||
is the body of. Each sync updates this line (docs/UPSTREAM-SYNC.md, #200).
|
||||
|
||||
## 0.6.3 — 2026-08-26
|
||||
|
||||
### Changed
|
||||
|
||||
- The shipped 0.6.2 changelog section now carries #238's entry, which its release PR's merge base could not see; the published 0.6.2 release body is left as tagged, so tree and publication differ by that one line (#238, #231).
|
||||
- Replace the unavailable intake rule with a proposal form that triage converts into work or refuses with reasons (#247).
|
||||
|
||||
### Fixed
|
||||
|
||||
- The `needs-triage` label now directs untriaged issues toward work normalization or a reasoned refusal instead of an unavailable discussion path (#265).
|
||||
- Release checks now refuse a target-head fragment that the candidate did not consume, preventing late merges from misattributing shipped changes (#253).
|
||||
- Kept drill doctrine's release-path instructions aligned with the executable manifest by removing its duplicate path list (#251).
|
||||
- Preserve Forgejo workflow names in status rollups so the label reconciler excludes only its own checks. (#243).
|
||||
- Fork-headed label runs stay green without attempting forbidden writes, while same-repository heads keep instant scope and reconciliation wakes (#241).
|
||||
- Read Forgejo timelines to exhaustion so busy issues retain their newest label events despite dishonest total-count headers (#240).
|
||||
- Refs-based issue-flow transitions now bind each declaration to its immediately following reference token, so later issue prose cannot release or preserve unrelated claims (#234).
|
||||
|
||||
## 0.6.2 — 2026-08-24
|
||||
|
||||
### Changed
|
||||
|
|
|
|||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
0.6.3-dev
|
||||
0.6.3
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- Refs-based issue-flow transitions now bind each declaration to its immediately following reference token, so later issue prose cannot release or preserve unrelated claims (#234).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- Read Forgejo timelines to exhaustion so busy issues retain their newest label events despite dishonest total-count headers (#240).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- Fork-headed label runs stay green without attempting forbidden writes, while same-repository heads keep instant scope and reconciliation wakes (#241).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- Preserve Forgejo workflow names in status rollups so the label reconciler excludes only its own checks. (#243).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Changed
|
||||
|
||||
- Replace the unavailable intake rule with a proposal form that triage converts into work or refuses with reasons (#247).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- Kept drill doctrine's release-path instructions aligned with the executable manifest by removing its duplicate path list (#251).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- Release checks now refuse a target-head fragment that the candidate did not consume, preventing late merges from misattributing shipped changes (#253).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Changed
|
||||
|
||||
- The shipped 0.6.2 changelog section now carries #238's entry, which its release PR's merge base could not see; the published 0.6.2 release body is left as tagged, so tree and publication differ by that one line (#238, #231).
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
### Fixed
|
||||
|
||||
- The `needs-triage` label now directs untriaged issues toward work normalization or a reasoned refusal instead of an unavailable discussion path (#265).
|
||||
74
drills/0.6.3.md
Normal file
74
drills/0.6.3.md
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# 0.6.3 — drill record
|
||||
|
||||
Measured 2026-08-26 on the `release-0.6.3` candidate branch, canonical
|
||||
candidate SHA `03cb69d`. All three measurements below were taken at that head,
|
||||
not copied from an earlier record.
|
||||
|
||||
## Scope ruling — doors unchanged, no disposable-repo rehearsal
|
||||
|
||||
**The last rehearsed tag is `0.6.1`, not `0.6.2`.** `drills/0.6.2.md` is itself
|
||||
a doors-unchanged assertion, and `drills/README.md` anchors the baseline to the
|
||||
last *rehearsed* tag precisely so one such assertion cannot chain from another
|
||||
while the doors drift a small diff at a time. The baseline used here is
|
||||
therefore `0.6.1`, which widens the measured window rather than narrowing it.
|
||||
|
||||
All three conditions hold at the candidate head:
|
||||
|
||||
1. `git diff 0.6.1..HEAD -- $(sh .github/scripts/release-path.sh)` changes only
|
||||
the `CEREMONY_SELF_REF` pin line in `.github/workflows/release.yml`, from
|
||||
`0.6.1` to `0.6.3`:
|
||||
|
||||
```diff
|
||||
@@ -129,7 +129,7 @@ env:
|
||||
- CEREMONY_SELF_REF: "0.6.1"
|
||||
+ CEREMONY_SELF_REF: "0.6.3"
|
||||
```
|
||||
|
||||
No release-door logic, decision table, fact gathering, version handling,
|
||||
changelog handling, forge adapter or publish step changed across two
|
||||
releases. The measured diff is one line.
|
||||
|
||||
2. The measured release path is exactly the output of
|
||||
`.github/scripts/release-path.sh` at this head:
|
||||
|
||||
```text
|
||||
.github/workflows/release.yml
|
||||
bin/
|
||||
lib/version.sh
|
||||
lib/decide.sh
|
||||
lib/facts.sh
|
||||
lib/changelog.sh
|
||||
lib/forge.sh
|
||||
```
|
||||
|
||||
3. `drills/0.6.1.md` records a **full rehearsal** — run 2026-08-09 by
|
||||
`codex-reviewer-andresmgsl` against release PR !226 — its release is
|
||||
published, and `main` was re-armed to `0.6.2-dev` after it by
|
||||
`5693bee chore: bump main to 0.6.2-dev`.
|
||||
|
||||
## What this release contains
|
||||
|
||||
Nine fragments consumed into `## 0.6.3`: #234, #240, #241, #243, #247, #251,
|
||||
#253, #263, #265. None of them touches the release path; the list is
|
||||
board-flow, labels-reconcile, docs and forge-adapter work.
|
||||
|
||||
## What is NOT asserted
|
||||
|
||||
This record asserts only that a fresh disposable-repo rehearsal would execute
|
||||
the same release-door bytes as `0.6.1`'s did. It does not assert that the
|
||||
doors were re-exercised, and it is not a substitute for the rehearsal owed at
|
||||
the next release-path change. Per `drills/README.md`, the release PR's panel
|
||||
verifies this claim like any other evidence, and **if any reviewer rules a full
|
||||
drill owed, that verdict wins.**
|
||||
|
||||
## Note on 0.6.2's red `self-guards`
|
||||
|
||||
Recorded here because the next reader of `drills/` will see it. The `0.6.2`
|
||||
tag's commit `5a8fce83` is red on `CI / self-guards` — `changelog-armed`
|
||||
correctly refused a tree in which `changelog.d/238.md` was still unconsumed,
|
||||
because that fragment landed on `main` after `changelog-assemble 0.6.2` had
|
||||
already run in the release branch. The content shipped correct (the #238 entry
|
||||
is in the published `0.6.2` notes) and the strand was consumed on `main` by
|
||||
`f221647`. The systemic guard against the race landed in !255, *"refuse release
|
||||
PRs that strand target fragments"*, which is why this candidate was checked
|
||||
against it before opening.
|
||||
Loading…
Reference in a new issue