Describe the release flow as it works now - #136
Conversation
Drivers reach FTW users with the FTW release (the pinned commit), every main commit is signed to drivers-beta, and drivers-stable is promoted after a stable FTW release with one command. The old text named an undefined "site test" step and called every channel asset read-only, although control drivers keep their control path. Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
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: df11b6e51b
ℹ️ 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".
| the catalog marks `control: true` keeps its control path; every other one is | ||
| read-only. Refreshing the signed catalog never installs or activates code. |
There was a problem hiding this comment.
Describe the actual control predicate
The catalog flag does not determine whether a channel artifact is read-only: tools/ftw_repository.py sets controls from the presence of driver_command and the absence of DRIVER.read_only (lines 640-648). Consequently, current drivers including kstar, pixii, alphaess, solaredge, solax, varta, and deye have control: false manifests but receive write-capable channel artifacts. Saying every driver not marked control: true is read-only gives operators a false safety guarantee and obscures the required read/control distinction.
AGENTS.md reference: AGENTS.md:L17-L23
Useful? React with 👍 / 👎.
| those drivers with FTW. Every commit on `main` is published to the signed | ||
| `drivers-beta` channel, where an owner can pick one driver's newer version |
There was a problem hiding this comment.
Limit the beta publication claim to triggering commits
The release workflow does not publish every commit on main: .github/workflows/ftw-drivers-release.yml lines 3-14 has a paths filter covering driver, manifest, build-tool, and workflow files. README-only, test-only, and many other commits—including this commit itself—therefore leave drivers-beta pointing at an older SHA, so the unconditional statement is incorrect and can mislead provenance checks.
Useful? React with 👍 / 👎.
| promoted with `gh workflow run ftw-drivers-release.yml --ref main -f | ||
| channel=stable`; it accepts only the exact commit `drivers-beta` carries, and |
There was a problem hiding this comment.
Make the stable command target the beta commit
When main advances after the beta commit used by the FTW stable release, this command targets the new head rather than that beta commit. The workflow requires its checkout to equal current origin/main at .github/workflows/ftw-drivers-release.yml lines 46-51 and then requires the same SHA as drivers-beta at lines 73-92, so an intervening non-release commit causes the documented promotion command to fail; an intervening beta publication could instead promote a commit FTW stable did not bundle. The release step needs a way to select the exact tested beta commit, or the documentation must state and enforce the required ordering.
Useful? React with 👍 / 👎.
Docs only. The README's release flow named an undefined "site test" step and called every channel asset read-only. Drivers now reach FTW users with the FTW release (the pinned commit); every
maincommit is signed todrivers-beta;drivers-stableis promoted after a stable FTW release with one command (FTW AGENTS.md release step 5). Control drivers keep their control path in the channel.