Release dev → main: staged releases before any release reaches 100% - #79
Merged
Merged
Conversation
…78) A prefix with no release at 100% made the default lookup throw a 500 before eligibility was checked, so no device got the staged build. That is every device for a new prefix until its first release is fully rolled out, and every JetKVM device the day no app or system row sits at 100%. The default lookup now returns null when nothing is at 100%. A device inside the rollout bucket gets the staged release as before; a device outside it gets a 404 saying no release is rolled out yet for its SKU, instead of a 500. Found by Bugbot on the release PR (#77).
adamshiervani
marked this pull request as ready for review
September 18, 2026 20:52
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. |
Contributor
Author
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 9f3bcf3. Configure here.
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.
Release #78 to production. Use a merge commit.
Bugbot finding on #77, High: with no release at 100% for a prefix,
/releasesanswered 500 to every device, including devices inside the rollout bucket. This is live on production now. JetKVM is unaffected while some app and system row sits at 100%; the Mini's first release would hit it.Only the last line changes. One commit, +44 / −11, 83 tests pass, Bugbot clean on #78.
Note
Medium Risk
Changes stable OTA response codes and rollout fallback behavior on a production-facing endpoint, though behavior is narrowed to the no-100%-release edge case with clearer 404 semantics.
Overview
Fixes
/releasesbackground OTA checks when a prefix has no release at 100% rollout yet (e.g. a product’s first staged release).getDefaultReleaseno longer throws 500 when there is no fully rolled-out default; it returnsnull. InRetrieve, devices in the rollout bucket still get the latest staged release; devices outside the bucket with no 100% fallback now get 404 withNo <prefix> release is rolled out yet for SKU "…"instead of an internal error.Tests cover JetKVM app/system at partial rollout and the mini SKU’s first 10% staged release (in-bucket vs out-of-bucket).
Reviewed by Cursor Bugbot for commit 9f3bcf3. Bugbot is set up for automated code reviews on this repo. Configure here.