Skip to content

Release dev → main: staged releases before any release reaches 100% - #79

Merged
adamshiervani merged 1 commit into
mainfrom
dev
Sep 18, 2026
Merged

adamshiervani merged 1 commit into
mainfrom
dev

Conversation

@adamshiervani

@adamshiervani adamshiervani commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

Release #78 to production. Use a merge commit.

Bugbot finding on #77, High: with no release at 100% for a prefix, /releases answered 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.

 rollout path, per artifact
   latest   = newest row                        404 if none, unchanged
-  fallback = newest 100% row                   500 if none
+  fallback = newest 100% row, or null
   eligible for latest        → latest          unchanged
   not eligible, fallback     → fallback        unchanged
-  not eligible, no fallback  → 500
+  not eligible, no fallback  → 404 "No <prefix> release is rolled out yet for SKU …"

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 /releases background OTA checks when a prefix has no release at 100% rollout yet (e.g. a product’s first staged release).

getDefaultRelease no longer throws 500 when there is no fully rolled-out default; it returns null. In Retrieve, devices in the rollout bucket still get the latest staged release; devices outside the bucket with no 100% fallback now get 404 with No <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.

…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
adamshiervani marked this pull request as ready for review September 18, 2026 20:52
@adamshiervani
adamshiervani merged commit 4a0d63d into main Sep 18, 2026
3 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-18T20:55:07.900930Z 9f3bcf3 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@adamshiervani

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant