Release Discipline and Feature Flags
Chromium ships through a four-stage channel pipeline — Canary (daily, ~1% of users), Dev (weekly, ~1%), Beta (four weeks before stable, ~5%), Stable (four-week cadence, general population). Canary catches regressions quickly; Dev enables developer preview of upcoming features; Beta gives enterprise IT and downstream vendors a window to test; Stable is the trust boundary for the general user population. Every new feature is gated behind a feature flag from the moment its code lands, not activated by default until it has cleared the Intent to Ship gate. The Finch experiment infrastructure layers on top: a server-side configuration system that can enable, disable, or parametrize a feature for a population percentage without shipping a new browser binary. Two stable-channel users may have different feature states. Operationally, that fact matters every time an enterprise IT administrator tries to reproduce a bug report.
The patterns and concepts in this section name the mechanisms that turn the four-channel pipeline into a predictable release discipline. Feature Flag Guarding prescribes the base::Feature declaration pattern and the base::FeatureList::IsEnabled() call-site discipline that prevents unfinished code from leaking into Canary. Origin Trial Token Deployment names the operational pattern site operators follow to participate in upstream trials — token registration, the Origin-Trial HTTP header or <meta> element, the third-party token mechanism for embedded libraries. Stable as Trust Boundary is the concept that explains the asymmetry between landing on Canary (low bar) and reaching Stable (high bar). The Zombie Origin Trial antipattern catches the failure mode where a trial that was supposed to end becomes a feature without ever clearing the Intent to Ship gate.
Enterprise IT administrators evaluating a Chromium-based deployment, web developers participating in upstream origin trials, and engineering executives deciding whether to build their product on a trial-stage feature use this section to choose channels, deploy tokens correctly, and understand what “Stable” does and does not guarantee.