Promoting deployments¶
The default rollout shape in SimpleOTA is manual ramping. You create a deployment at low percentage, watch the metrics, then raise.
A safe default ramp¶
| Step | Percentage | Wait for |
|---|---|---|
| 1 | 5% | At least 24h and a healthy success rate. |
| 2 | 25% | At least 24h, no spike in failed reports. |
| 3 | 50% | A few hours, watching for support tickets. |
| 4 | 100% | Done. |
Same rollout_seed throughout. The cohort math means buckets that were
already exposed at 5% are still exposed at 25%; you only add
buckets, never reshuffle.
What to watch¶
The deployment detail page surfaces:
- Eligible: devices in the audience whose hardware matches.
- Offered: devices that fell inside the cohort cutoff.
- Succeeded: devices that POSTed
state: successto/api/v1/ota/status/. - Failed: devices that POSTed
state: failed. The error string is surfaced too. - Pending: eligible + offered but no terminal status yet.
A typical canary failure pattern: Failed > 2% of Offered within the first hour. That's your cue to pause the deployment (it's a button), investigate, and either roll forward (next build) or cut a revert deployment.
Stopping at 100%: when is it "done"?¶
A deployment with percentage = 100 and pending = 0 is effectively
finished. SimpleOTA marks it completed once a settling timeout has
passed. Completed deployments stay in the audit trail; they just don't
participate in the offer-decision query path.