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

areaflagtodayproposedrollout todayrollout proposedrequiresowner
assistantai_assistantOffOff00search_semantic + platform_audit_logJun
billingbilling_invoices_v2OnOn100100noneOmar
billingbilling_tax_euOnOn100100billing_invoices_v2Omar
billingbilling_usage_meteringOffOn05billing_invoices_v2 + platform_event_busOmar
checkoutcheckout_v2OnOn100100payments_tokenizationDana
checkoutcheckout_express_payOffOn010checkout_v2 + payments_tokenizationDana
checkoutcheckout_saved_cardsOnOn60100payments_tokenizationDana
paymentspayments_tokenizationOnOn100100noneRavi
paymentspayments_3ds2OnOn100100payments_tokenizationRavi
platformplatform_event_busOnOn100100noneSofia
platformplatform_audit_logOffOff00noneSofia
searchsearch_typeaheadOnOn100100noneMei
searchsearch_embeddingsOffOn0100platform_event_busMei
searchsearch_semanticOffOn025search_embeddingsMei

Changed in this proposal

flagchangereason
checkout_express_payOff to On at 10%Canary for the one-tap pay button and its prerequisites are already on
search_embeddingsOff to On at 100%Index is backfilled and must be on before semantic search
search_semanticOff to On at 25%A quarter of traffic first and embeddings must go first
billing_usage_meteringOff to On at 5%Pilot with the six metered customers
checkout_saved_cardsRollout 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.

flagprerequisiteprerequisite after changeresult
checkout_v2payments_tokenizationOnGo
checkout_express_paycheckout_v2OnGo
checkout_express_paypayments_tokenizationOnGo
checkout_saved_cardspayments_tokenizationOnGo
payments_3ds2payments_tokenizationOnGo
search_embeddingsplatform_event_busOnGo
search_semanticsearch_embeddingsOn (enabled in this change)Go
billing_tax_eubilling_invoices_v2OnGo
billing_usage_meteringbilling_invoices_v2OnGo
billing_usage_meteringplatform_event_busOnGo

What-if: enabling ai_assistant

flagprerequisiteprerequisite after changeresult
ai_assistantsearch_semanticOnGo
ai_assistantplatform_audit_logOffBlocked

Blast radius if a prerequisite is turned off

prerequisitedependents that breakcount
payments_tokenizationcheckout_v2, checkout_express_pay, checkout_saved_cards, payments_3ds24
platform_event_bussearch_embeddings, billing_usage_metering2
billing_invoices_v2billing_tax_eu, billing_usage_metering2
search_embeddingssearch_semantic1
checkout_v2checkout_express_pay1

Dependency graph

An arrow points from a flag to the flag it requires. The blocked path is the one the dependency check rejects.

Flag prerequisites after the proposed change
Flag prerequisites after the proposed change13 nodes. Payments contains payments_tokenization, payments_3ds2. Checkout contains checkout_v2, checkout_express_pay, checkout_saved_cards. Search contains search_embeddings, search_semantic. Billing contains billing_invoices_v2, billing_tax_eu, billing_usage_metering. Platform contains 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)payments_3ds2 → payments_tokenizationcheckout_express_pay → checkout_v2search_semantic → search_embeddingsbilling_tax_eu → billing_invoices_v2billing_usage_metering → billing_invoices_v2checkout_v2 → payments_tokenizationcheckout_express_pay → payments_tokenizationcheckout_saved_cards → payments_tokenizationsearch_embeddings → platform_event_busbilling_usage_metering → platform_event_busai_assistant → search_semanticai_assistant → platform_audit_log: prereq offSVCpayments_tokenizationOnSVCpayments_3ds2OnSVCcheckout_v2OnSVCcheckout_express_payOff to On 10%SVCcheckout_saved_cards60% to 100%SVCsearch_embeddingsOff to On 100%SVCsearch_semanticOff to On 25%SVCbilling_invoices_v2OnSVCbilling_tax_euOnSVCbilling_usage_meteringOff to On 5%SVCplatform_event_busOnEXTplatform_audit_logOffEXTai_assistantStays OffPAYMENTSCHECKOUTSEARCHBILLINGPLATFORMPREREQ OFF
  1. Payments: payments_tokenization, payments_3ds2
  2. Checkout: checkout_v2, checkout_express_pay, checkout_saved_cards
  3. Search: search_embeddings, search_semantic
  4. Billing: billing_invoices_v2, billing_tax_eu, billing_usage_metering
  5. Platform: platform_event_bus, platform_audit_log
  6. checkout_v2 → payments_tokenization
  7. checkout_express_pay → checkout_v2
  8. checkout_express_pay → payments_tokenization
  9. checkout_saved_cards → payments_tokenization
  10. payments_3ds2 → payments_tokenization
  11. search_embeddings → platform_event_bus
  12. search_semantic → search_embeddings
  13. billing_tax_eu → billing_invoices_v2
  14. billing_usage_metering → billing_invoices_v2
  15. billing_usage_metering → platform_event_bus
  16. ai_assistant → search_semantic
  17. ai_assistant → platform_audit_log: prereq off
SVCEXTfocusboundaryrequest / flowmust not exist

Order of operations

  1. Deploy the config change with search_embeddings first, since search_semantic requires it.
  2. Raise checkout_saved_cards to 100%.
  3. Enable checkout_express_pay at 10% and watch the payment error rate for 24 hours.
  4. Enable billing_usage_metering at 5%.
  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

Back to the examples