Skip to content

docs(release): name the expected DCO failure on a release cut - #640

Open
mocha06 wants to merge 3 commits into
devfrom
rc-dev/docs/release-pr-dco-expectation
Open

docs(release): name the expected DCO failure on a release cut#640
mocha06 wants to merge 3 commits into
devfrom
rc-dev/docs/release-pr-dco-expectation

Conversation

@mocha06

@mocha06 mocha06 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Motivation

RELEASE.md described the squash-rewritten author only as something that happens to back-merge pull requests. A dev → main release cut carries the same commits and fails DCO the same way, and nothing said so.

The failure is easy to misread as a fault in the release commit, and the obvious "fix" makes things worse: re-cutting from somewhere with less history turns the check green by carrying almost nothing, which is also a cut that stamps none of dev's notes.

The bullet was also inaccurate on where such a commit lands. It said main and "the default branch", but most feature pull requests squash onto dev, which is where the mismatched commits actually accumulate.

Outcome

The dev → main release PR section states the expectation where a reader first meets it, points at the mechanism instead of repeating it, and records the trap about a suspiciously green check.

The back-merge bullet now covers any later pull request that carries the history — a back-merge and a release cut alike — and says the commit is unrepairable once it is on main or dev rather than on the default branch alone.

Notes

No CHANGELOG.md entry. ## [Unreleased] on dev is where the v0.5.0-beta.1 notes still sit unstamped, and the pending back-merge (#639) inserts the ## [0.5.0-beta.1] heading directly above them. An entry added here would land inside the released section and conflict with that merge. It is a documentation clarification with no behavior change.

The back-merge section already described a squash-rewritten author, but
only as something that happens to back-merges. A `dev -> main` release
pull request carries the same commits and fails the same way, and
nothing said so.

The release-PR section now names it where a reader first meets it, and
the back-merge bullet covers any later pull request that carries the
history rather than back-merges alone. The bullet also stops saying the
commit lands on `main`: most such commits are squashed onto `dev`.

Also records the trap: a cut whose DCO is green because it carries
almost nothing was made from the wrong branch, and the notes it stamps
will be missing what `dev` holds.

Signed-off-by: mocha06 <52426811+mocha06@users.noreply.github.com>

@adriannoes adriannoes left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 53b29caa: static review of RELEASE.md plus DCO check-run records for the last release cut and back-merge. No worktree, no live MCP.

Verdict: needs changes into dev.

Required before merge

  • The back-merge DCO bullet now pairs a back-merge with a dev into main release cut as equivalent expected-red events. Those git ranges are complementary. The last cycle was red on the cut and green on the back-merge. See the thread on RELEASE.md:165.

Decisions I would make

  • The Notes still call #639 pending as the reason to skip CHANGELOG.md. #639 closed unmerged after #641 stamped current dev. I would rebase onto origin/dev and either add a short Unreleased docs bullet or restate the skip as a docs-clarification choice. This does not block merge.

What worked well

  • The new paragraph before the bump steps puts the release-cut DCO expectation where a releaser looks first. The green-tiny trap is the right reading of recutting off a short branch.
  • Saying the mismatch can land on main or dev, not only the default branch, matches how feature pull requests squash onto dev.
Review path

Tier lite, trust trusted, reviewed at 723313ff1f20b3d23d960071a8d5af4c45d87a9d...53b29caa830030d96728f0acc7fd6d3b2c75e0c4.

Gate Result
CI on head green (lint, test, DCO, Shell scripts, install.sh then uninstall.sh)
DCO trailer on this commit pass
Worktree / unit tests n/a (lite)
Live smoke n/a (docs-only)
DCO-bullet refute survives (3 verification Attempts reproduced)
Judge GPT Extra High; blocking finding kept IMPORTANT

Not covered: executing release-pr or opening a live cut. The DCO claim was checked against check-runs on #638, #639, and #626 plus the frozen backmerge.py / release.py body generators.

Comment thread RELEASE.md Outdated
…-dco-expectation

Signed-off-by: mocha06 <52426811+mocha06@users.noreply.github.com>
Answers the review on RELEASE.md:165. A back-merge and a `dev -> main`
release cut scan complementary ranges, so they cannot carry the same
squash-rewritten commit: #638 was red on 47 of them, #639 green because
those commits were already on `dev`.

The bullet is back-merge only again, and now says a back-merge that
follows a release carries the release commits alone and is green, so a
green one does not read as a surprise. The offender-list sentence stays a
back-merge fact: `dco_mismatches()` lives in backmerge.py, and release.py
has no DCO handling at all.

The paragraph above the bump steps is unchanged — it already states the
release-cut expectation in the complementary direction.

Adds the CHANGELOG entry the earlier body said it was skipping. That
reason was a conflict with the pending back-merge; #639 closed unmerged
and `## [Unreleased]` on dev is live again.

Signed-off-by: mocha06 <52426811+mocha06@users.noreply.github.com>
@mocha06

mocha06 commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator Author

The blocking finding is answered in the RELEASE.md:165 thread. Done in 2c11fc7.

On the CHANGELOG.md note: you are right that the reason was stale. #639 closed unmerged and ## [Unreleased] on dev is live again, so the conflict I was avoiding cannot happen. 2c11fc7 adds the ### Changed bullet rather than restating the skip, because the skip was a conflict workaround, not a choice about what belongs in the changelog.

The branch is level with origin/dev — I merged it in rather than rebasing. A rebase means a force-push, which discards the incremental diff you are reading. git rev-list --count HEAD..origin/dev is 0, and the net change against dev is still two files: RELEASE.md and CHANGELOG.md.

@adriannoes adriannoes left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 2c11fc7, after 53b29caa.

The blocking DCO bullet is back-merge only. Its heading now says red when that range carries the mismatched commit. A back-merge that follows a release is described as green, because those commits are already on dev. The offender-list sentence stays in the back-merge bullet. The release-cut paragraph above the bump steps is unchanged. CHANGELOG.md gained an Unreleased bullet for this docs change.

Re-checked at this tip: the three Done when items on RELEASE.md:165 hold. CI is green (lint, test, DCO, Shell scripts, install.sh then uninstall.sh, skill frontmatter). The two new commits carry matching Signed-off-by trailers.

Verdict: merge-ready into dev.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants