Skip to content

Gray rollout ​

Gray is a device allowlist plus coverage knobs (gray_start_percent / gray_step_percent / gray_interval_seconds) and gray_completed_at. It is not HMAC and not rollout_percent.

When to use ​

Use gray to show a version to some roster devices before anonymous clients and store feeds. Skip incremental gray for an empty roster or a critical version.

Configuration entry ​

Version → Gray. Steps: Gray. Project Settings → Update Policy controls admission weight. No YAML percent key.

Rules and error codes ​

StateNot allowlisted (including anonymous)Allowlisted
IncompleteStill sees the previous versionSees this version
gray_completed_at setVisible to anonymous store feedsVisible

Incomplete gray forces check/feed Cache-Control: private. Starting gray on an empty roster completes immediately. device_id_policy=none cannot admit by device. Knob PATCH does not reset gray_started_at. Critical: GRAY_NOT_ALLOWED_ON_CRITICALGray on critical version.

Client duties ​

Send a stable device_id on check when policy allows. Anonymous clients miss until complete. Store feeds use the same GrayIsComplete() gate.

Related: Update check, Telemetry, CDN.