- 1.
shop— Verify all consumers read fromFlowContext(not legacySettings). Checkrepository.rb,policy_context_builder.rb:17,cart_violations_mapper.rb,input_validator.rb,cart_update_from_negotiation.rb. - 2.
api_client— Verify all consumers read fromFlowContext. Checkrepository.rb:53,58,62,317,374,512,negotiation.rb,policy_context_builder.rb:22,cart_update_from_negotiation.rb,proposal_updater.rb,purchase_proposal_from_cart_next.rb. - 3.
session— Confirmupdater.rbreads session fromFlowContextforrecognized_shop_account_uuid. Nullable — verify nil-safety. - 4.
raw_request— Confirm all 6+ callsites inrepository.rband others read fromFlowContext. Nullable — verify nil-safety. - 5.
engine_mode— Validate thatCartContextreturnsEngineMode.immediate(allowed_list:)andCheckoutContextreturnsEngineMode.progressive. Checkpolicy_context_builder.rb:81,cart_checkout_validation_policy.rb:364. - 6.
payment_provided— VerifyCartContextcorrectly derives fromcart_input.payment.present?andCheckoutContextdefaults tofalse. Private ivar — confirm no direct external access. - 7.
should_payment_error_on_pending_artifact?— ConfirmCartContextreturns@payment_provided,CheckoutContextreturnsfalse. Checkcart_update_from_negotiation.rb:1107. - 8.
should_skip_tax_and_duty_policies?— ConfirmCartContextrespects@skip_tax_and_duty_policiesconfig,CheckoutContextreturnsfalse. Checkrepository.rb:54,207,negotiation.rb:89. - 9.
client_details— ConfirmCartContextreturnsnil,CheckoutContextbuildsClientDetailsfromraw_requestwithShopify-Storefront-Buyer-IPheader. Checkpolicy_context_builder.rb:25. - 10.
should_create_breadcrumb?— ConfirmCartContextlogic (true unless Online Store + portable-wallets SDK variant). Effectively unused in CheckoutContext — consider removing or documenting. - 11.
use_any_amount_for_payment?— VerifyCartContextderives from Stripe shared token / UCP payment method,CheckoutContextis alwaystrue. Checkcart_update_from_negotiation.rb:661,674,1106,input_validator.rb:691,purchase_proposal_from_cart_next.rb:317,cart_completion/purchase_proposal_from_cart_next.rb:259. - 12.
should_flag_deferred_payment_required_error?— Confirm both contexts return@payment_provided. Checkcart_violations_mapper.rb:31. - 13.
force_available_payment_method_policy— VerifyCartContextreads from configuration (defaultfalse),CheckoutContextis alwaystrue. Checknegotiation.rb:90. - 14.
warnings_for_discount_codes— VerifyCartContextreads from configuration,CheckoutContextdefaults tofalse. Checkcart_violations_mapper.rb:22-23,167. Nevertruein CheckoutContext. - 15.
warnings_for_selling_plans— VerifyCartContextreads from configuration,CheckoutContextdefaults tofalse. Checkcart_violations_mapper.rb:26-27,198. Nevertruein CheckoutContext. - 16.
errors_for_required_ui_extensions— Verify both contexts read from configuration (defaultfalse). Checkpolicy_context_builder.rb:82. - 17.
request_channel_override— VerifyCartContextsets fromgraphql_context[:channel]when feature enabled,CheckoutContextis alwaysnil. Checkpolicy_context_builder.rb:28. Never set in CheckoutContext. - 18.
api_permission— Absorbed from Repository. Verify both contexts set fromgraphql_context[:api_permission]. Checkrepository.rb:211,250,263,513. - 19.
channel— Absorbed from Repository. VerifyCartContextsets fromgraphql_context[:channel],CheckoutContextonly sets whenshop.feature_set.use_override_channel?. Checkrepository.rb:71. - 20.
country_code— Absorbed from Repository. Verify both contexts set fromgraphql_context[:buyer_context]&.country. Checkrepository.rb:72.
- 21.
fetch_dynamic_rates?— VerifyCartContextreads from configuration (defaultfalse),CheckoutContextis alwaystrue. Checkpurchase_proposal_from_cart_next.rb:405,cart_completion/purchase_proposal_from_cart_next.rb:287,cart_platform_input_builder.rb:197. - 22.
force_inline_dynamic_rates?— Alwaysfalsein both contexts. Potentially vestigial. Investigate if any non-factory caller sets this totrue. Checkpurchase_proposal_from_cart_next.rb:371,cart_platform_input_builder.rb:189. - 23.
flag_violation_on_pending_artifact?— VerifyCartContextlogic (true if delivery groups present AND config not disabled),CheckoutContextreturnsfalse. Checkcart_update_from_negotiation.rb:1117. - 24.
skip_default_delivery_option_fallback?— VerifyCartContextmirrorsfetch_dynamic_rates,CheckoutContextis alwaystrue. Checkpurchase_proposal_from_cart_next.rb:368,cart_platform_input_builder.rb:188. - 25.
use_partial_delivery_address?— VerifyCartContextdefaults tofalse,CheckoutContextis alwaystrue. Checkcart_completion/purchase_proposal_from_cart_next.rb:180.
- 26.
allow_overselling?— Alwaysfalsein both contexts via factory. Potentially vestigial — investigate non-factory callers. Checkupdater.rb:255,policy_context_builder.rb:78. - 27.
skip_channel_validation?— Alwaysfalsein both contexts via factory. Potentially vestigial — investigate non-factory callers. Checkpolicy_context_builder.rb:46. - 28.
filter_input_with_missing_variants?— Alwaysfalsein both contexts via factory. Potentially vestigial — investigate non-factory callers. Checkupdater.rb:196. - 29.
skip_variant_publication_checks?— Both contexts defaultfalse, auto-set totruefor ReCharge sessions. Checkpolicy_context_builder.rb:49. - 30.
skip_selling_plan_validation?— Both contexts defaultfalse, auto-set totruefor ReCharge sessions. Checkpolicy_context_builder.rb:79,input_validator.rb:582. - 31.
block_modifying_out_of_stock_variant?— Alwaysfalsein both contexts via factory. Potentially vestigial. Checkcart_violations_mapper.rb:14. - 32.
block_selling_plan_on_company_location?— Alwaysfalsein both contexts via factory. Potentially vestigial. Checkcart_violations_mapper.rb:18. - 33.
max_quantity_in_cart_error?— Asymmetry:CartContext=false(explicit),CheckoutContext=true(default). Verify this is intentional. Checkupdater.rb:256.
- 34.
instrumentation— Still called viasettings.atpolicy_context_builder.rb:42,129. Needs migration toFlowContextor callers updated. - 35.
buyer_identity_provider— Still called viasettings.atpolicy_context_builder.rb:23,negotiation.rb:99,cart_completion/buyer_identity_terms_builder.rb:115,cart_completion/purchase_proposal_from_cart_next.rb:58. Needs migration. - 36.
theme_provider— Still called viasettings.atpolicy_context_builder.rb:21. Needs migration. - 37.
checkout_shop_config— Still called viasettings.atpolicy_context_builder.rb:45,76,cart_update_from_negotiation.rb:984,purchase_proposal_from_cart_next.rb:340,355,cart_completion/buyer_identity_terms_builder.rb:142,152. Needs migration. - 38.
checkout_features— Still called viasettings.atpolicy_context_builder.rb:77. Needs migration. - 39.
default_contact_method_factory— Still called viasettings.atpurchase_proposal_from_cart_next.rb:299,cart_completion/purchase_proposal_from_cart_next.rb:62. Needs migration. - 40.
empty_buyer_identity_helper— Still called viasettings.atscript_reverter.rb:197. Needs migration.
- 41.
CartClonedirect construction —CartCloneconstructsCartContext.new(shop:, api_client:)directly (not via factory), relying on all defaults. Verify all defaults are safe for this path. - 42.
FilterOutInvalidVariantsSanitizer— ReceivesFlowContextassettingsbut never reads any field from it. Consider removing the unused parameter. - 43. Vestigial settings cleanup — Evaluate removal of always-false settings:
force_inline_dynamic_rates?,allow_overselling?,skip_channel_validation?,filter_input_with_missing_variants?,block_modifying_out_of_stock_variant?,block_selling_plan_on_company_location?.