Repository navigation
fix(agentd): report the release number as the daemon's version - #593
Merged
Merged
Conversation
docs/STABILITY.md gives the daemon the same release number as the published packages, and the v1.0.0 `agentd` asset reported 0.1.0 in health, the microvms-agentd-version header, /v1/schema's daemon_version and its startup log. `VERSION` is agentd's CARGO_PKG_VERSION, and crates/agentd/Cargo.toml stayed at 0.1.0 because tag_version_skew in tools/check-publishable.py compared only the published crates. agentd now carries 1.0.0, with docs/schema.json, both lockfiles and model-conformance's path requirement regenerated to match. tag_version_skew compares RELEASED, the published crates plus agentd, so release:tag and release.yml's guard refuse a release whose daemon version differs from the tag; agentd-model stays out. The new tools/test_check_publishable.py suite runs in publish:check, and the publishable-tag-skips-daemon fault proves it fails when the daemon is left out. CONTRIBUTING.md's release steps name crates/agentd/Cargo.toml. PROTOCOL_VERSION stays 2: only daemon_version changes, and crates/protocol/src/lib.rs tells clients to proceed in that case. Fixes #592
3 tasks done
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.
What and why
The v1.0.0
agentdrelease asset reports0.1.0inGET /v1/health, themicrovms-agentd-versionheader,/v1/schema'sdaemon_versionand theagentd listeninglog line, whiledocs/STABILITY.mdgives the daemon the release number.crates/agentd/src/routes.rssetsVERSIONfromCARGO_PKG_VERSION,crates/agentd/Cargo.tomlstayed at0.1.0through every release, andtag_version_skewintools/check-publishable.pycompared only the published crates, so nothing caught it.crates/agentd/Cargo.tomlis1.0.0.docs/schema.json(daemon_version),Cargo.lockandcrates/agentd/fuzz/Cargo.lockare regenerated, andcrates/model-conformance/Cargo.toml's path requirement onagentdmoves to1.0.0, since^0.1.0doesn't match a1.0.0crate.tag_version_skewcomparesRELEASED, the published crates plusagentd, with the tag.release:tagand release.yml'sguardjob run it with--tag, so a release whose daemon version differs from the tag is refused before the tag exists.agentd-modelstays out.tools/test_check_publishable.py, run first inpublish:check: the daemon at another version fails,agentd-modelat another version passes, each published crate and both binding manifests are compared, and this tree agrees with a tag of its own release number. That last test fails on main.crates/agentd/Cargo.tomlamong the manifests the release PR bumps, anddocs/schema.jsonand the fuzz lock among the files it regenerates. Theversion_skewlive lane's docstring says the daemon's version follows the release from agentd reports version 0.1.0 in the 1.0.0 release #592 on; its code already reads the version from the manifest at each tree.PROTOCOL_VERSIONstays2. Onlydaemon_versionchanges, andcrates/protocol/src/lib.rstells a client to proceed when only that differs.schema:compatagainst v1.0.0 passes.Verified offline only: no live run. The next live run on main exercises it through the
version_skewsection, where this tree's daemon should report1.0.0and v1.0.0's0.1.0.Fixes #592
Evidence
mise run check: exit 0 in 309 s at 25baf74 (2026-10-12).fail-to-pass:checkreported "this fix changes no product source",changelog:check"1 fragments in changelog.d/, and they build",guards:list1323 faults registered.mise run schema:compat: exit 0, "docs/schema.json against v1.0.0:docs/schema.json (protocol_version 2 -> 2) compatible".mise run publish:check: exit 0, 7 tests passed, then "publishable: 6 crates, metadata complete"../tools/check-publishable.py --tag=v1.0.0: exit 0, "every published manifest and the daemon's agree with tag v1.0.0"../tools/check-lint-coverage.py && mise exec -- ruff check . && mise exec -- ruff format --check .: passed in the pre-commit hook.Parity
microvms.pyi,index.d.ts).Guards
publishable-tag-skips-daemon(new,verify/guards/faults/script-gates.toml): setsRELEASED = PUBLISHEDintools/check-publishable.py, which is the comparison v1.0.0 shipped with, andtest_the_daemon_at_another_version_failsfails../tools/check-guards-fire.py fire --only publishable-tag-skips-daemonprintedfired: publishable-tag-skips-daemonand "restored, every command passes again".crates/agentd/Cargo.tomlset back to0.1.0(and model-conformance's requirement with it),./tools/check-publishable.py --tag=v1.0.0exited 1 with "agentd is version 0.1.0 and the tag says 1.0.0", andtest_this_tree_agrees_with_a_tag_of_its_own_release_numberand the command test failed. With the files restored, the gate exited 0 again..rsproduct source, sofail-to-pass:checkhas no Rust test to prove; the Python suite above is the regression test.Follow-ups
None.
Platform claims
Scope
(see
docs/STRATEGY.md).