release: 1.0.0-rc.4 - #270
Merged
Merged
Conversation
Promote the Unreleased changelog to 1.0.0-rc.4 (2026-09-15) and bump the crate version in Cargo.toml and Cargo.lock.
mobileoverlord
requested review from
nicksinas
and
a lite review from Copilot
September 15, 2026 20:00
There was a problem hiding this comment.
🟢 Approval recommended
The release metadata and changelog updates are consistent, with no unresolved review issues.
Pull request overview
Cuts the 1.0.0-rc.4 release by updating release notes and crate version metadata.
Changes:
- Promotes unreleased notes to the dated rc.4 changelog.
- Updates versions in
Cargo.tomlandCargo.lock.
File summaries
| File | Description |
|---|---|
CHANGELOG.md |
Adds rc.4 release notes and link |
Cargo.toml |
Updates crate version |
Cargo.lock |
Synchronizes locked package version |
Review details
- Files reviewed: 2/3 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
nicksinas
approved these changes
Sep 15, 2026
mobileoverlord
added a commit
that referenced
this pull request
Sep 17, 2026
…276) ## Problem The extension build legs never run the code in the pull request they are gating. `ext-test.yml` calls `avocado-linux/actions/.github/workflows/extension-test.yml@v1`, whose `setup-avocado-cli@v1` step downloads a **published GitHub release asset** (`cli-version` defaults to `latest`). The legs therefore check the *shipped* binary against the PR's extension config. A regression on the extension path cannot fail in the PR that introduces it. It goes green under the previous release, ships, becomes `latest`, and then fails every unrelated PR that follows. That is exactly what #265 did: | Event | Time (UTC) | Build legs | | --- | --- | --- | | #270, the 1.0.0-rc.4 release PR | Sep 15 20:00 | green, driven by rc.3 | | 1.0.0-rc.4 published | Sep 15 20:51 | becomes `latest` | | #271, #272, #274 | Sep 15 23:28 onward | red, driven by rc.4 | The red is `Error: Failed to walk` with an empty path, the bug #274 fixes. Had these legs run the PR's own binary, #265 would have failed on itself. ## Solution Build the CLI from the PR source and drive the legs with it. `cli` compiles it once and uploads it; the three `build` legs download it and run the same `sdk install` / `ext install` / `ext build` sequence as before. Building once rather than per leg is safe because this is a host tool: it is identical for every target and feed combination. Other extension repos keep calling the reusable helper, which is right for them. They want the CLI their users run. This repo is the one that must not, because it is the CLI. ## Key changes - `ext-test.yml` stops calling the reusable workflow and runs the sequence itself - A `cli` job builds `--release --locked` and shares the binary as an artifact - The artifact is re-chmodded on download: a zipped artifact does not carry the executable bit - It lands in `RUNNER_TEMP`, not the checkout, which is the project root that `package_files` globs walk and `ext build` stages from - The separate "Resolve version from Cargo.toml" job folds into the leg that uses its value ## Reviewer notes The in-container build runs `cargo build --target <triple>`, writing `target/<triple>/release/`, so it cannot collide with the host build's `target/release/`. They are also in different jobs on separate runners. Check names change. The legs report as `Build <target> @ <release>/<channel>` without the reusable workflow's `build (...) /` prefix. Neither ruleset on `main` requires any status check, so nothing needs updating alongside this. The matrix, its three legs and the comments explaining them are unchanged. ## Scope The legs stay red until #274 lands. This change makes them run the right binary; it does not fix the bug they are currently reporting. Two gaps this does not close, both worth their own issues: - `avocado-ext-cli` is declared inline, so `ext_content_root` is `Some` and the package-sourced compile-script bug fixed in #271 still cannot reproduce here. Catching that class needs a fixture project with a `source: {type: package}` extension. - `ext-release.yml` packages the extension with the same published CLI and is untouched here. ## Test YAML parsed and the job graph, matrix and step list asserted locally. The extension name, the `avocado` bin target and the `[package] version` read used by the version step were each checked against the tree. CI on this PR is the real test: the legs must run the binary this PR builds, which `avocado --version` in the job log now shows.
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
Cut
1.0.0-rc.4: the[Unreleased]changelog section becomes## [1.0.0-rc.4] - 2026-09-15, and the crate version moves from1.0.0-rc.3to1.0.0-rc.4inCargo.tomlandCargo.lock.Release notes
The rc.4 section of
CHANGELOG.mdis the release notes. It covers everything merged since rc.3, grouped Added / Changed / Fixed / Security:repos:/distro.feeds, feat(feeds): named package feeds — repos:, ordering, stage scoping, and client identity #241), private organization feeds (feat(feeds): privateorg:feeds, and materialize once per invocation #243), feed set and package origin in the lock (feat(lockfile): record the feed set per target, and each package's origin #244),avocado login(feat(cli):avocado loginas a shortcut forconnect auth login#242),kernel.cmdline/cmdline_extra(feat(kernel): kernel.cmdline and kernel.cmdline_extra in project config #252), the managedavocado hitlNFS server (hitl: a managed NFS server (start/status/stop/logs/sync) that actually serves #258), theavocado installup-to-date skip (ext install: skip up-to-date extensions (idempotent install) #260), per-runtime and per-extension SBOMs, and thebuild/provisionvar-image split (breaking:buildno longer produces the var image).--forcemeans reinstall only;--output jsonno longer implies--force; session containers (exec reuse,atexitteardown, Ctrl-C reaping, no async-runtime blocking); stamp coverage and output digests (STAMP_VERSION2 → 3 → 4);ext build/ext image/ rootfs / initramfs image skips; no more image copying and re-hashing in runtime builds.depends_onclosure is built (fix(build): build the depends_on closure, not just the authored list #253), package-sourced overlays ship (fix(ext): let a package-sourced extension ship the overlay it declares #254), the overlay staging dir is cleared every build (runtime/build: clear the overlay staging dir on every build #255), the SDK entrypoint reads oneVERSION_CODENAME(Read one line of VERSION_CODENAME from os-release #240), kernel changes invalidate extension stamps and clean the sysroot (stamps: invalidate ext install stamp on kernel version change #267,STAMP_VERSION4 → 5), plus the stamp-system hardening from the dogfood runs.rustls0.23.45 for RUSTSEC-2026-0285.Every bullet that was under
[Unreleased]onmainis present; entries for the PRs that landed without a changelog line were added. An empty[Unreleased]heading remains for the next cycle.After merge
Tag the squash commit
1.0.0-rc.4to run the release workflow. The firstavocado buildafter upgrading reports every stamp as "stamp format changed (v4 → v5)" and rebuilds once.Verification
fmt, clippy (
-D warnings) and the full test suite pass on this branch; the version guard test reads1.0.0-rc.4.