release: bump 0.1.0 -> 0.1.1 - #117
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
kingchenc
added a commit
that referenced
this pull request
Aug 30, 2026
The job I added in #115 fails on every version bump, and #117 is the first one to prove it. Its default enricher resolves pom.xml against Maven Central, and two of ours -- examples/java and bindings/java/benchmarks -- depend on org.wickra:wickra-backtest at whatever version the tree carries. A bump sets that to a version the release has not published yet, so the lookup fails: failed resolving org.wickra:wickra-backtest-examples[Concrete:0.1.1]: version org.wickra:wickra-backtest[Concrete:0.1.1]: not found Total 0 packages affected by 0 known vulnerabilities exit code 127 The scan found nothing wrong. The job died looking for an artefact the bump exists to create, and it would have done so on every release from here on. A check that goes red for a reason other than what it checks is worse than no check: it teaches whoever sees it that this job's failures do not mean anything. --no-resolve turns that enricher off. The cost is real and belongs in the comment rather than in a commit nobody rereads: Maven and NuGet manifests are now scanned for their direct dependencies only. Everything pinned in a lockfile is unaffected -- Cargo.lock, package-lock.json and go.mod need no resolution and are still scanned transitively -- and cargo-deny in the same job covers the Rust graph, which is most of the dependency surface here. Verified both directions rather than assumed. Against the bumped tree the failure reproduces exactly (exit 127) and the flag clears it (exit 0, no issues). Against a fixture pinning time 0.1.44 and lodash 4.17.20 the flag changes nothing about detection: exit 1, four advisories across two ecosystems, including the npm one that only a lockfile scan can see.
`packages[""]` in bindings/node/package-lock.json still said 0.1.0. A lockfile states the root package's version twice -- once at the top of the file and once inside `packages[""]` -- and only the first is what a bump rewrites, so the second drifts on its own and nothing here was watching it. check_version_sync.py now holds both records exactly, and CITATION.cff's `version` beside them. Neither had a rule, which is how a bump reached a green pull request with two declarations still on the previous release. Reverting the lockfile line fails the check, so the rule is doing what it claims.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Version-strings only, which is the point: a bump that carries nothing else has
a CI run that is unambiguous, and a failure in it can only come from the bump.
Do not merge this yet — merging it is the last reversible step. The tag that
follows publishes to six registries and cannot be taken back.
What moved
Produced by
bump_version.py, not by hand — 20 touchpoints across eightlanguages, each with an expected hit count, so a manifest that quietly stops
matching is a failure rather than a silent skip:
Cargo.tomlbindings/node/package.jsonoptionalDependencies)bindings/node/npm/<rid>/package.jsonbindings/node/index.jsbindings/node/package-lock.jsonbindings/python/pyproject.toml,bindings/java/pom.xml,Wickra.Backtest.csproj,bindings/r/DESCRIPTIONexamples/java/pom.xmlSECURITY.mdCITATION.cffdate-releasedCargo.lockcargo build, never editedCITATION.cffis new to that list. It became a version touchpoint in #115 whenit grew
version:anddate-released:, and the bump tool had not followed — sothis bump would have left the citation naming 0.1.0 while every manifest said
0.1.1, with nothing downstream to catch it, since GitHub's citation box and
Zenodo read that file and no build does. Fixed in the tooling repo, along with
date-released, which no replacement finds because it is not a version: leftalone it names the day of the previous release beside the new version, and a
reader cannot tell which of the two is stale.
Changelog
[0.1.1]collects what #115 landed — the publish gate, the ref guard, the splitwasm-build, CodeQL over the four compiled bindings, actionlint, CodSpeed,semver, the container smoke job, the C golden test, the schema check — and two
entries that #116 should have written and did not:
docs/signpost under Addedfor three consecutive nights without anyone noticing
Verification
cargo fmt,cargo test --workspace --all-features(21 suites),cargo clippy -D warnings,cargo deny,actionlintwith shellcheck, and all six checkscripts: green.
check_version_sync.pyagrees across 18 declarations at 0.1.1.The diff outside
CHANGELOG.mdand the two lockfiles contains no line that isnot a version string — checked, not assumed.
Line endings are unchanged:
git ls-files --eolreports 285 index entries asi/lfand none as CRLF.What is still unproven, and will be until the tag
release.ymlruns onpush: tags: ["v*"]and nothing else, so five thingsland in it for the first time on this release: the
gatejob, its ref guard,the split
wasm-build, thego build/go testinsidego-mirror, andprovenance extended to the nupkg, the jar and the C ABI archives.
Each is built so that failing blocks rather than half-publishes — the gate
sits before the first irreversible step rather than after it, and refuses to
open unless this exact commit has a green
ci.ymland nothing red. That is theargument for merging it, not against; but it is worth naming before the tag
rather than after.
After merge
Note the merge SHA. The tag is set on that SHA explicitly —
git tag -s v0.1.1 <merge-sha>— becausegit tagwithout a ref captures thelocal
HEAD, which is not necessarily the merge commit. Only after explicitgo-ahead.