Feature flag review: flags.yaml, 14 flags
Proposed change set for the 2026-10-22 release, with the dependency check already run
Summary
Flags146 areas
Enabled today8of 14
Enabled after12▲ +4 flags (good)
Dependency warnings0in this change set (good)
Flags by area
| area | flag | today | proposed | rollout today | rollout proposed | requires | owner |
|---|---|---|---|---|---|---|---|
| assistant | ai_assistant | Off | Off | 0 | 0 | search_semantic + platform_audit_log | Jun |
| billing | billing_invoices_v2 | On | On | 100 | 100 | none | Omar |
| billing | billing_tax_eu | On | On | 100 | 100 | billing_invoices_v2 | Omar |
| billing | billing_usage_metering | Off | On | 0 | 5 | billing_invoices_v2 + platform_event_bus | Omar |
| checkout | checkout_v2 | On | On | 100 | 100 | payments_tokenization | Dana |
| checkout | checkout_express_pay | Off | On | 0 | 10 | checkout_v2 + payments_tokenization | Dana |
| checkout | checkout_saved_cards | On | On | 60 | 100 | payments_tokenization | Dana |
| payments | payments_tokenization | On | On | 100 | 100 | none | Ravi |
| payments | payments_3ds2 | On | On | 100 | 100 | payments_tokenization | Ravi |
| platform | platform_event_bus | On | On | 100 | 100 | none | Sofia |
| platform | platform_audit_log | Off | Off | 0 | 0 | none | Sofia |
| search | search_typeahead | On | On | 100 | 100 | none | Mei |
| search | search_embeddings | Off | On | 0 | 100 | platform_event_bus | Mei |
| search | search_semantic | Off | On | 0 | 25 | search_embeddings | Mei |
Changed in this proposal
| flag | change | reason |
|---|---|---|
| checkout_express_pay | Off to On at 10% | Canary for the one-tap pay button and its prerequisites are already on |
| search_embeddings | Off to On at 100% | Index is backfilled and must be on before semantic search |
| search_semantic | Off to On at 25% | A quarter of traffic first and embeddings must go first |
| billing_usage_metering | Off to On at 5% | Pilot with the six metered customers |
| checkout_saved_cards | Rollout 60% to 100% | Error rate matched control for 7 days |
Dependency check
Each row is a flag in the proposed state that has prerequisites, checked against the prerequisite's proposed state.
| flag | prerequisite | prerequisite after change | result |
|---|---|---|---|
| checkout_v2 | payments_tokenization | On | Go |
| checkout_express_pay | checkout_v2 | On | Go |
| checkout_express_pay | payments_tokenization | On | Go |
| checkout_saved_cards | payments_tokenization | On | Go |
| payments_3ds2 | payments_tokenization | On | Go |
| search_embeddings | platform_event_bus | On | Go |
| search_semantic | search_embeddings | On (enabled in this change) | Go |
| billing_tax_eu | billing_invoices_v2 | On | Go |
| billing_usage_metering | billing_invoices_v2 | On | Go |
| billing_usage_metering | platform_event_bus | On | Go |
What-if: enabling ai_assistant
| flag | prerequisite | prerequisite after change | result |
|---|---|---|---|
| ai_assistant | search_semantic | On | Go |
| ai_assistant | platform_audit_log | Off | Blocked |
Blast radius if a prerequisite is turned off
| prerequisite | dependents that break | count |
|---|---|---|
| payments_tokenization | checkout_v2, checkout_express_pay, checkout_saved_cards, payments_3ds2 | 4 |
| platform_event_bus | search_embeddings, billing_usage_metering | 2 |
| billing_invoices_v2 | billing_tax_eu, billing_usage_metering | 2 |
| search_embeddings | search_semantic | 1 |
| checkout_v2 | checkout_express_pay | 1 |
Dependency graph
An arrow points from a flag to the flag it requires. The blocked path is the one the dependency check rejects.
- Payments: payments_tokenization, payments_3ds2
- Checkout: checkout_v2, checkout_express_pay, checkout_saved_cards
- Search: search_embeddings, search_semantic
- Billing: billing_invoices_v2, billing_tax_eu, billing_usage_metering
- Platform: platform_event_bus, platform_audit_log
- checkout_v2 → payments_tokenization
- checkout_express_pay → checkout_v2
- checkout_express_pay → payments_tokenization
- checkout_saved_cards → payments_tokenization
- payments_3ds2 → payments_tokenization
- search_embeddings → platform_event_bus
- search_semantic → search_embeddings
- billing_tax_eu → billing_invoices_v2
- billing_usage_metering → billing_invoices_v2
- billing_usage_metering → platform_event_bus
- ai_assistant → search_semantic
- ai_assistant → platform_audit_log: prereq off
SVCEXTfocusboundaryrequest / flowmust not exist
Order of operations
- Deploy the config change with search_embeddings first, since search_semantic requires it.
- Raise checkout_saved_cards to 100%.
- Enable checkout_express_pay at 10% and watch the payment error rate for 24 hours.
- Enable billing_usage_metering at 5%.
- Move search_semantic to 25% once the embeddings index shows no lag.
Resulting flags.yaml
# flags.yaml after the proposed change
checkout_v2:
enabled: true
rollout: 100
requires: [payments_tokenization]
checkout_express_pay:
enabled: true
rollout: 10
requires: [checkout_v2, payments_tokenization]
checkout_saved_cards:
enabled: true
rollout: 100
requires: [payments_tokenization]
payments_tokenization:
enabled: true
rollout: 100
payments_3ds2:
enabled: true
rollout: 100
requires: [payments_tokenization]
search_typeahead:
enabled: true
rollout: 100
search_embeddings:
enabled: true
rollout: 100
requires: [platform_event_bus]
search_semantic:
enabled: true
rollout: 25
requires: [search_embeddings]
billing_invoices_v2:
enabled: true
rollout: 100
billing_tax_eu:
enabled: true
rollout: 100
requires: [billing_invoices_v2]
billing_usage_metering:
enabled: true
rollout: 5
requires: [billing_invoices_v2, platform_event_bus]
platform_event_bus:
enabled: true
rollout: 100
platform_audit_log:
enabled: false
rollout: 0
ai_assistant:
enabled: false
rollout: 0
requires: [search_semantic, platform_audit_log]
Copy diff: changed keys only
Paste this over the matching keys. Five flags change and nine are untouched.
checkout_express_pay:
enabled: true # was false
rollout: 10 # was 0
checkout_saved_cards:
rollout: 100 # was 60
search_embeddings:
enabled: true # was false
rollout: 100 # was 0
search_semantic:
enabled: true # was false
rollout: 25 # was 0
billing_usage_metering:
enabled: true # was false
rollout: 5 # was 0