docs: describe 1.3.0 as released, and map breaking changes to major again - #247
Conversation
… out The override that mapped a breaking commit to a minor release existed for the window before 1.3.0, so that the API corrections in it could not publish 2.0.0. That window closed with the v1.3.0 tag, and eng/verify-release-config.mjs has required the major mapping since 1.3.0 entered the changelog: every pull request would otherwise fail its "validate release config" job. Checked by putting minor back: the script exits 1 and names this file. With major it passes. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UWRpkQzKkNDYz3WiNgWvWU
The texts written for the time before 1.3.0 said there was nothing to install, that the public surface could still change, and that a breaking change bumped the minor. None of that is true after the release. - The nine package READMEs, the root README, the website start page and the packages overview now say that 1.3.0 is the first stable release, that 1.0.0 to 1.2.3 are unlisted and deprecated and should not be used, and that SemVer holds from here on. The warning that there was nothing to install is gone. - The Uds README's list of types that could still change is gone with the window it belonged to. - docs/release-process.md and CLAUDE.md describe the major mapping instead of the temporary minor one, and the dry-run note now says what a dry run does when no release is pending instead of saying it cannot succeed before 1.3.0. - The arc42 constraint and a comment in GitVersion.yml are put in the past tense. - ADR 0001 keeps its text as decided and gains an Outcome section: what the checklist ended up as, the three further API changes made on the way, and the dry-run failure that was found and fixed before the release. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UWRpkQzKkNDYz3WiNgWvWU
PR SummaryLow Risk Overview Documentation is updated everywhere that still described the pre-stable window—root and package READMEs, MkDocs pages, ADR 0001 keeps its original decision text and adds an Outcome section (release date, checklist results, late API breaks, dry-run credential fix). The CanKit.Pro.Uds README drops pre-release “surface may still change” wording and clarifies what the tests actually cover for NRC mapping vs Reviewed by Cursor Bugbot for commit 1bff191. Bugbot is set up for automated code reviews on this repo. Configure here. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 778e4d988e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…face as final Two follow-ups to the cleanup after 1.3.0. The Uds README no longer lists types that "can still change", because that belonged to the window before 1.3.0. In its place the validation section says what the tests support: the mapping of negative response codes onto UdsNegativeResponseCode is the thinnest part, with only a few codes asserted by name, while SendRawAsync and the timing options are exercised heavily, like the rest only against the simulated ECU. The sentence first proposed, that these three are the least covered, was checked against the tests and was wrong for two of them, so it was not written. The ADR's Outcome records, under checklist item 4, that the maintainer took the surface as it then stood over as final by starting the release. It says that and no more: the baselines were reviewed, not line by line, and the release was cut after that. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UWRpkQzKkNDYz3WiNgWvWU
The note added in the cleanup after 1.3.0 said the build, test and pack steps still run when no releasing commit has landed, and listed feat, fix, perf and breaking commits as the ones that produce a version. Both were written without looking at the workflow and the release rules. release.yml skips the Pack and Upload steps when no version resolves, so such a dry run builds and tests and does not exercise package creation. And .releaserc.json also maps revert and build(deps) to a patch release, which the list left out. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UWRpkQzKkNDYz3WiNgWvWU
What does this change?
The follow-up that ADR 0001 schedules for "immediately after the 1.3.0 release, not before". 1.3.0 is out (tag
v1.3.0, all nine packages on nuget.org, changelog commit onmain), so the texts and the one configuration switch that described the window before it are now wrong.1.
.releaserc.json:breaking -> majoragain (own commit). The override existed so that API corrections before 1.3.0 could not publish 2.0.0.eng/verify-release-config.mjshas requiredmajorsince 1.3.0 entered the changelog, so every pull request would fail its validate release config job until this lands.2. Texts that said the window was open:
README.md, the website start page anddocs/packages/index.mdsaid there was nothing to install and that the surface could still change. They now say 1.3.0 is the first stable release, that 1.0.0 – 1.2.3 are unlisted and deprecated and should not be used, and that SemVer holds from here on.docs/release-process.mdandCLAUDE.mddescribe the major mapping; the dry-run note now says what a dry run does when no release is pending (build and test run, Pack and Upload are skipped because they need a version), instead of saying it cannot succeed before 1.3.0.GitVersion.ymlare put in the past tense.3. Two decisions taken on the way:
SendRawAsync, the timing options and the NRC-mapping types as the parts that could still change. That belonged to the open window and is gone. In its place the validation section says what the tests support: the mapping of negative response codes ontoUdsNegativeResponseCodeis the thinnest part (only a few codes are asserted by name), whileSendRawAsyncand the timing options are exercised heavily, like everything else only against the simulated ECU. The wording "these three are the least covered" was checked against the tests first and is wrong for two of the three, so it is not what the README says.Type of change
feat— new behaviour (minor release)fix/perf— bug or performance fix (patch release)docs/test/refactor/chore/ci— no release!in the title, plus aBREAKING CHANGE:footer explaining the migration)Every commit on the branch is of a type that does not release (
chore(release)ordocs), and none of the messages carries a breaking-change footer.Checklist
dotnet build CanKit.Pro.sln -c Releasesucceeds (run with-p:CI=true, 0 warnings)dotnet test CanKit.Pro.sln -c Releasepasses — not run; no.csfile changedAlso run locally:
dotnet format --verify-no-changes(clean),dotnet packwitheng/verify-packages.py(9 packages; the READMEs are packed into the packages),python3 eng/verify-requirements-traceability.py(no new untraced requirement),node eng/verify-release-config.mjs(passes withmajor), and.releaserc.jsonandGitVersion.ymlparse.The guard was checked by putting
minorback: the script exits 1 and names.releaserc.json; withmajorit passes. The website itself was not built locally (mkdocsis not installed here); the docs check on this PR builds it.Not changed here
eng/verify-release-config.mjsstill contains the branches for the window being open. With 1.3.0 in the changelog they can no longer be reached. They are harmless, and removing them is a change of its own.🤖 Generated with Claude Code
https://claude.ai/code/session_01UWRpkQzKkNDYz3WiNgWvWU