This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
FleetRolloutService moves many instances safely. A rollout has a kind (release upgrade, template upgrade, library upgrade, re-scaffold, configuration change), a target, ordered waves (instance selection, size, bake minutes), guards (product objectives that halt the rollout on breach) and, when any wave touches production, a production-class approval. Each wave requests promotions through EnvironmentPromotionService with the same gates as any promotion, then bakes: the guards are watched for the bake time; a breach or failed promotion halts the rollout, rolls the wave back and opens an incident; an Operator resumes or rolls back fully. A re-scaffold rollout begins earlier: when a template release is published, the ReScaffoldRequester submits a Factory run that regenerates the product with it; only after that release passed evaluation and is ready does the rollout move it.
flowchart LR
S["FleetRolloutService"]
StudioBff["StudioBff"] -->|sync-http| S
S -->|grpc| EnvironmentPromotionService["EnvironmentPromotionService"]
S -->|grpc| RunControlService["RunControlService"]
S -->|grpc| FleetInventoryService["FleetInventoryService"]
S -->|event| SloService["SloService"]
S -. "RolloutPlanned" .-> E_RolloutPlanned(("event"))
S -. "RolloutWaveCompleted" .-> E_RolloutWaveCompleted(("event"))
S -. "RolloutHalted" .-> E_RolloutHalted(("event"))
S -. "RolloutCompleted" .-> E_RolloutCompleted(("event"))
Hold "Alt" / "Option" to enable pan & zoom
ManagedPlus customers opt in before early waves; the first wave never includes their production instances otherwise. The rollout never bypasses promotion gates; it is a scheduler of promotions with guards, not a second deployment path.
Rollout — A plan to move a product's instances to a target (release, template or library version, re-scaffolded release) in ordered waves with sizes, bake times, objective guards and a halt policy; production waves need a production-class approval; a failed wave halts the rollout and rolls back the wave. (catalog entry)
Field
Type
Required
Description
rolloutId
guid
yes
tenantId
string
yes
productId
string
yes
kind
enum:RolloutKind
yes
targetReleaseId
guid
no
targetAssetReleaseId
string
no
Template or library release for upgrades and re-scaffolds.
sourceRunId
guid
no
The Factory run that produced the re-scaffolded release.
A wave is a set of promotions through EnvironmentPromotionService with the same gates; the rollout never bypasses them.
The first wave never includes production instances of customers on ManagedPlus unless they opted in; bake time runs against the product's objectives and halts on breach.
A re-scaffold rollout starts from a Factory run that regenerated the product with the new template and passed evaluation (ADR-0021); the rollout moves the resulting release.
Requests the promotions of the current wave, waits for their completion, runs the bake timer against the guards, and advances, halts or completes.
ReScaffoldRequester
event
—
exponential
productId + targetAssetReleaseId
For template upgrades, submits a Factory run that regenerates the product with the new template release (through Run Control) and waits for its release to be ready before planning the rollout.
RolloutSaga — correlation rolloutId; starts on FleetRolloutService.RolloutPlanned
Step
Trigger
Do
Compensation
1
RolloutPlanned
Validate waves against instance states and edition opt-ins; request the production-class approval when any wave is production.
Cancel.
2
Approved
Request the promotions of wave 1 through EnvironmentPromotionService.
Halt; roll back completed promotions of the wave.
3
WavePromoted
Start the bake timer; watch the guard objectives and alerts.
On breach: halt, roll back the wave, open an incident.
4
BakePassed
Mark the wave Passed; request the next wave or complete.
none
sequenceDiagram
participant AR as AgentRegistryService
participant RO as FleetRolloutService
participant RC as RunControlService
participant RS as ReleaseService
participant E as EnvironmentPromotionService
participant S as SloService
AR-)RO: AssetReleasePublished (template 3.2.0)
RO->>RC: submit re-scaffold run for product P (sandbox → proposal → pipeline)
RS-)RO: ReleaseReady (P 4.0.0)
RO->>RO: plan waves 10 % / 40 % / 50 %, guards: availability, error rate
RO->>RC: approval (production class) for production waves
RC-)RO: ApprovalDecided
loop each wave
RO->>E: RequestPromotion × instances
E-)RO: PromotionCompleted × instances
RO->>RO: bake (60–240 min)
S-)RO: SloBreached? → halt, roll back wave, incident
end
RO-)AR: RolloutCompleted
Canary analysis against per-instance objectives; customer-scheduled maintenance windows per instance; dependency-ordered rollouts across products that integrate with each other.