src/lightspeed@platform@turnkey_presets.erl

-module(lightspeed@platform@turnkey_presets).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lightspeed/platform/turnkey_presets.gleam").
-export([profile_version_label/0, override_hook/4, secure_saas_preset/0, secure_marketplace_preset/0, secure_operations_preset/0, reference_presets/0, required_critical_flows/0, reference_scenarios/0, name/1, scaffold_command/1, override_hooks/1, requires_framework_internal_edits/1, scenario_name/1, scenario_flows/1, scenario_preset/1, flow_label/1, seam_label/1, with_override_hook/2, has_explicit_override_seams/1, starter_scaffold_ready/1, valid/1, secure_defaults/1, override_without_internal_edits/1, scaffoldable_secure_baseline/1, supports_flow/2, scenario_certified/1, override_surface_signature/1, critical_flow_signature/1, signature/1, scenario_signature/1, fixture_snapshots/0, snapshot_signature/0]).
-export_type([preset_seam/0, override_hook/0, auth_defaults/0, admin_defaults/0, billing_defaults/0, policy_defaults/0, email_defaults/0, queue_defaults/0, starter_preset/0, critical_flow/0, reference_scenario/0]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(" Turnkey app-platform defaults and presets contracts for M58.\n").

-type preset_seam() :: auth_seam |
    admin_seam |
    billing_seam |
    policy_seam |
    email_seam |
    queue_seam.

-type override_hook() :: {override_hook,
        preset_seam(),
        binary(),
        binary(),
        binary()}.

-type auth_defaults() :: {auth_defaults,
        binary(),
        integer(),
        boolean(),
        boolean(),
        integer()}.

-type admin_defaults() :: {admin_defaults,
        binary(),
        binary(),
        boolean(),
        binary()}.

-type billing_defaults() :: {billing_defaults,
        binary(),
        boolean(),
        boolean(),
        boolean()}.

-type policy_defaults() :: {policy_defaults,
        binary(),
        boolean(),
        boolean(),
        boolean()}.

-type email_defaults() :: {email_defaults,
        binary(),
        boolean(),
        boolean(),
        boolean()}.

-type queue_defaults() :: {queue_defaults,
        binary(),
        integer(),
        boolean(),
        boolean(),
        boolean()}.

-type starter_preset() :: {starter_preset,
        binary(),
        binary(),
        auth_defaults(),
        admin_defaults(),
        billing_defaults(),
        policy_defaults(),
        email_defaults(),
        queue_defaults(),
        list(override_hook()),
        boolean()}.

-type critical_flow() :: signup_with_mfa_flow |
    admin_break_glass_approval_flow |
    billing_webhook_reconciliation_flow |
    policy_denied_audit_trail_flow |
    email_verification_delivery_flow |
    queue_replay_recovery_flow.

-type reference_scenario() :: {reference_scenario,
        binary(),
        starter_preset(),
        list(critical_flow()),
        binary()}.

-file("src/lightspeed/platform/turnkey_presets.gleam", 128).
?DOC(" Stable M58 profile version label.\n").
-spec profile_version_label() -> binary().
profile_version_label() ->
    <<"m58.profile.v"/utf8, (erlang:integer_to_binary(1))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 383).
?DOC(" Build one override hook.\n").
-spec override_hook(preset_seam(), binary(), binary(), binary()) -> override_hook().
override_hook(Seam, Module, Hook, Rationale) ->
    {override_hook, Seam, Module, Hook, Rationale}.

-file("src/lightspeed/platform/turnkey_presets.gleam", 580).
-spec default_override_hooks() -> list(override_hook()).
default_override_hooks() ->
    [override_hook(
            auth_seam,
            <<"MyApp.Platform.AuthOverrides"/utf8>>,
            <<"resolve_login_policy"/utf8>>,
            <<"adapt login/session controls for external identity boundaries"/utf8>>
        ),
        override_hook(
            admin_seam,
            <<"MyApp.Platform.AdminOverrides"/utf8>>,
            <<"authorize_break_glass"/utf8>>,
            <<"require org-specific approval constraints for admin escalation"/utf8>>
        ),
        override_hook(
            billing_seam,
            <<"MyApp.Platform.BillingOverrides"/utf8>>,
            <<"transform_invoice_webhook"/utf8>>,
            <<"map provider webhook payloads to tenant billing policy"/utf8>>
        ),
        override_hook(
            policy_seam,
            <<"MyApp.Platform.PolicyOverrides"/utf8>>,
            <<"resolve_policy_context"/utf8>>,
            <<"inject domain scope attributes for policy decisions"/utf8>>
        ),
        override_hook(
            email_seam,
            <<"MyApp.Platform.EmailOverrides"/utf8>>,
            <<"customize_delivery_channel"/utf8>>,
            <<"route signed templates through tenant delivery controls"/utf8>>
        ),
        override_hook(
            queue_seam,
            <<"MyApp.Platform.QueueOverrides"/utf8>>,
            <<"route_retry_backoff"/utf8>>,
            <<"map retry strategy to tenant/class-specific queue policy"/utf8>>
        )].

-file("src/lightspeed/platform/turnkey_presets.gleam", 133).
?DOC(" Secure SaaS starter preset.\n").
-spec secure_saas_preset() -> starter_preset().
secure_saas_preset() ->
    {starter_preset,
        <<"secure_saas"/utf8>>,
        <<"lightspeed new acme_portal --preset secure_saas"/utf8>>,
        {auth_defaults, <<"MyApp.Auth.Password"/utf8>>, 480, true, true, 14},
        {admin_defaults,
            <<"MyApp.Admin.Console"/utf8>>,
            <<"MyApp.Admin.AuditSink"/utf8>>,
            true,
            <<"platform_admin"/utf8>>},
        {billing_defaults, <<"MyApp.Billing.Stripe"/utf8>>, true, true, true},
        {policy_defaults, <<"MyApp.Policy.Rbac"/utf8>>, true, true, true},
        {email_defaults, <<"MyApp.Email.Transactional"/utf8>>, true, true, true},
        {queue_defaults, <<"MyApp.Queue.Worker"/utf8>>, 6, true, true, true},
        default_override_hooks(),
        false}.

-file("src/lightspeed/platform/turnkey_presets.gleam", 181).
?DOC(" Secure marketplace starter preset.\n").
-spec secure_marketplace_preset() -> starter_preset().
secure_marketplace_preset() ->
    {starter_preset,
        <<"secure_marketplace"/utf8>>,
        <<"lightspeed new market_hub --preset secure_marketplace"/utf8>>,
        {auth_defaults, <<"MyApp.Auth.Oidc"/utf8>>, 360, true, true, 12},
        {admin_defaults,
            <<"MyApp.Admin.Backoffice"/utf8>>,
            <<"MyApp.Admin.AuditSink"/utf8>>,
            true,
            <<"market_admin"/utf8>>},
        {billing_defaults, <<"MyApp.Billing.Hybrid"/utf8>>, true, true, true},
        {policy_defaults, <<"MyApp.Policy.Abac"/utf8>>, true, true, true},
        {email_defaults, <<"MyApp.Email.Transactional"/utf8>>, true, true, true},
        {queue_defaults, <<"MyApp.Queue.Worker"/utf8>>, 5, true, true, true},
        default_override_hooks(),
        false}.

-file("src/lightspeed/platform/turnkey_presets.gleam", 229).
?DOC(" Secure operations-heavy starter preset.\n").
-spec secure_operations_preset() -> starter_preset().
secure_operations_preset() ->
    {starter_preset,
        <<"secure_operations"/utf8>>,
        <<"lightspeed new ops_center --preset secure_operations"/utf8>>,
        {auth_defaults, <<"MyApp.Auth.Password"/utf8>>, 720, true, true, 16},
        {admin_defaults,
            <<"MyApp.Admin.Console"/utf8>>,
            <<"MyApp.Admin.AuditSink"/utf8>>,
            true,
            <<"ops_super_admin"/utf8>>},
        {billing_defaults, <<"MyApp.Billing.Paddle"/utf8>>, true, true, true},
        {policy_defaults, <<"MyApp.Policy.Rbac"/utf8>>, true, true, true},
        {email_defaults, <<"MyApp.Email.Transactional"/utf8>>, true, true, true},
        {queue_defaults, <<"MyApp.Queue.Worker"/utf8>>, 8, true, true, true},
        default_override_hooks(),
        false}.

-file("src/lightspeed/platform/turnkey_presets.gleam", 277).
?DOC(" Deterministic M58 reference presets.\n").
-spec reference_presets() -> list(starter_preset()).
reference_presets() ->
    [secure_saas_preset(),
        secure_marketplace_preset(),
        secure_operations_preset()].

-file("src/lightspeed/platform/turnkey_presets.gleam", 286).
?DOC(" Required critical flows for M58 certification.\n").
-spec required_critical_flows() -> list(critical_flow()).
required_critical_flows() ->
    [signup_with_mfa_flow,
        admin_break_glass_approval_flow,
        billing_webhook_reconciliation_flow,
        policy_denied_audit_trail_flow,
        email_verification_delivery_flow,
        queue_replay_recovery_flow].

-file("src/lightspeed/platform/turnkey_presets.gleam", 298).
?DOC(" Deterministic reference scenarios for fixture certification.\n").
-spec reference_scenarios() -> list(reference_scenario()).
reference_scenarios() ->
    Flows = required_critical_flows(),
    [{reference_scenario,
            <<"saas_secure_baseline"/utf8>>,
            secure_saas_preset(),
            Flows,
            <<"m58-saas-001"/utf8>>},
        {reference_scenario,
            <<"marketplace_secure_baseline"/utf8>>,
            secure_marketplace_preset(),
            Flows,
            <<"m58-market-001"/utf8>>},
        {reference_scenario,
            <<"operations_secure_baseline"/utf8>>,
            secure_operations_preset(),
            Flows,
            <<"m58-ops-001"/utf8>>}].

-file("src/lightspeed/platform/turnkey_presets.gleam", 324).
?DOC(" Preset name accessor.\n").
-spec name(starter_preset()) -> binary().
name(Preset) ->
    erlang:element(2, Preset).

-file("src/lightspeed/platform/turnkey_presets.gleam", 329).
?DOC(" One-command scaffold accessor.\n").
-spec scaffold_command(starter_preset()) -> binary().
scaffold_command(Preset) ->
    erlang:element(3, Preset).

-file("src/lightspeed/platform/turnkey_presets.gleam", 334).
?DOC(" Override hooks accessor.\n").
-spec override_hooks(starter_preset()) -> list(override_hook()).
override_hooks(Preset) ->
    erlang:element(10, Preset).

-file("src/lightspeed/platform/turnkey_presets.gleam", 339).
?DOC(" Framework-internal-edits accessor.\n").
-spec requires_framework_internal_edits(starter_preset()) -> boolean().
requires_framework_internal_edits(Preset) ->
    erlang:element(11, Preset).

-file("src/lightspeed/platform/turnkey_presets.gleam", 344).
?DOC(" Scenario name accessor.\n").
-spec scenario_name(reference_scenario()) -> binary().
scenario_name(Scenario) ->
    erlang:element(2, Scenario).

-file("src/lightspeed/platform/turnkey_presets.gleam", 349).
?DOC(" Scenario flows accessor.\n").
-spec scenario_flows(reference_scenario()) -> list(critical_flow()).
scenario_flows(Scenario) ->
    erlang:element(4, Scenario).

-file("src/lightspeed/platform/turnkey_presets.gleam", 354).
?DOC(" Scenario preset accessor.\n").
-spec scenario_preset(reference_scenario()) -> starter_preset().
scenario_preset(Scenario) ->
    erlang:element(3, Scenario).

-file("src/lightspeed/platform/turnkey_presets.gleam", 359).
?DOC(" Critical flow label.\n").
-spec flow_label(critical_flow()) -> binary().
flow_label(Flow) ->
    case Flow of
        signup_with_mfa_flow ->
            <<"signup_with_mfa"/utf8>>;

        admin_break_glass_approval_flow ->
            <<"admin_break_glass_approval"/utf8>>;

        billing_webhook_reconciliation_flow ->
            <<"billing_webhook_reconciliation"/utf8>>;

        policy_denied_audit_trail_flow ->
            <<"policy_denied_audit_trail"/utf8>>;

        email_verification_delivery_flow ->
            <<"email_verification_delivery"/utf8>>;

        queue_replay_recovery_flow ->
            <<"queue_replay_recovery"/utf8>>
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 371).
?DOC(" Override seam label.\n").
-spec seam_label(preset_seam()) -> binary().
seam_label(Seam) ->
    case Seam of
        auth_seam ->
            <<"auth"/utf8>>;

        admin_seam ->
            <<"admin"/utf8>>;

        billing_seam ->
            <<"billing"/utf8>>;

        policy_seam ->
            <<"policy"/utf8>>;

        email_seam ->
            <<"email"/utf8>>;

        queue_seam ->
            <<"queue"/utf8>>
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 646).
-spec override_hook_equal(override_hook(), override_hook()) -> boolean().
override_hook_equal(Left, Right) ->
    ((erlang:element(2, Left) =:= erlang:element(2, Right)) andalso (erlang:element(
        3,
        Left
    )
    =:= erlang:element(3, Right)))
    andalso (erlang:element(4, Left) =:= erlang:element(4, Right)).

-file("src/lightspeed/platform/turnkey_presets.gleam", 632).
-spec append_override_if_missing(list(override_hook()), override_hook()) -> list(override_hook()).
append_override_if_missing(Overrides, New_hook) ->
    case Overrides of
        [] ->
            [New_hook];

        [Existing | Rest] ->
            case override_hook_equal(Existing, New_hook) of
                true ->
                    Overrides;

                false ->
                    [Existing | append_override_if_missing(Rest, New_hook)]
            end
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 393).
?DOC(" Add one override hook when missing.\n").
-spec with_override_hook(starter_preset(), override_hook()) -> starter_preset().
with_override_hook(Preset, New_hook) ->
    {starter_preset,
        erlang:element(2, Preset),
        erlang:element(3, Preset),
        erlang:element(4, Preset),
        erlang:element(5, Preset),
        erlang:element(6, Preset),
        erlang:element(7, Preset),
        erlang:element(8, Preset),
        erlang:element(9, Preset),
        append_override_if_missing(erlang:element(10, Preset), New_hook),
        erlang:element(11, Preset)}.

-file("src/lightspeed/platform/turnkey_presets.gleam", 715).
-spec seam_present(list(override_hook()), preset_seam()) -> boolean().
seam_present(Overrides, Seam) ->
    case Overrides of
        [] ->
            false;

        [Override | Rest] ->
            case erlang:element(2, Override) =:= Seam of
                true ->
                    true;

                false ->
                    seam_present(Rest, Seam)
            end
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 457).
?DOC(" True when every seam has at least one explicit override hook.\n").
-spec has_explicit_override_seams(starter_preset()) -> boolean().
has_explicit_override_seams(Preset) ->
    ((((seam_present(erlang:element(10, Preset), auth_seam) andalso seam_present(
        erlang:element(10, Preset),
        admin_seam
    ))
    andalso seam_present(erlang:element(10, Preset), billing_seam))
    andalso seam_present(erlang:element(10, Preset), policy_seam))
    andalso seam_present(erlang:element(10, Preset), email_seam))
    andalso seam_present(erlang:element(10, Preset), queue_seam).

-file("src/lightspeed/platform/turnkey_presets.gleam", 697).
-spec override_hook_valid(override_hook()) -> boolean().
override_hook_valid(Override) ->
    ((erlang:element(3, Override) /= <<""/utf8>>) andalso (erlang:element(
        4,
        Override
    )
    /= <<""/utf8>>))
    andalso (erlang:element(5, Override) /= <<""/utf8>>).

-file("src/lightspeed/platform/turnkey_presets.gleam", 689).
-spec override_hooks_valid(list(override_hook())) -> boolean().
override_hooks_valid(Overrides) ->
    case Overrides of
        [] ->
            true;

        [Override | Rest] ->
            override_hook_valid(Override) andalso override_hooks_valid(Rest)
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 682).
-spec queue_valid(queue_defaults()) -> boolean().
queue_valid(Defaults) ->
    (((erlang:element(2, Defaults) /= <<""/utf8>>) andalso (erlang:element(
        3,
        Defaults
    )
    >= 3))
    andalso erlang:element(4, Defaults))
    andalso erlang:element(5, Defaults).

-file("src/lightspeed/platform/turnkey_presets.gleam", 676).
-spec email_valid(email_defaults()) -> boolean().
email_valid(Defaults) ->
    ((erlang:element(2, Defaults) /= <<""/utf8>>) andalso erlang:element(
        3,
        Defaults
    ))
    andalso erlang:element(5, Defaults).

-file("src/lightspeed/platform/turnkey_presets.gleam", 670).
-spec policy_valid(policy_defaults()) -> boolean().
policy_valid(Defaults) ->
    ((erlang:element(2, Defaults) /= <<""/utf8>>) andalso erlang:element(
        3,
        Defaults
    ))
    andalso erlang:element(4, Defaults).

-file("src/lightspeed/platform/turnkey_presets.gleam", 664).
-spec billing_valid(billing_defaults()) -> boolean().
billing_valid(Defaults) ->
    ((erlang:element(2, Defaults) /= <<""/utf8>>) andalso erlang:element(
        3,
        Defaults
    ))
    andalso erlang:element(5, Defaults).

-file("src/lightspeed/platform/turnkey_presets.gleam", 658).
-spec admin_valid(admin_defaults()) -> boolean().
admin_valid(Defaults) ->
    ((erlang:element(2, Defaults) /= <<""/utf8>>) andalso (erlang:element(
        3,
        Defaults
    )
    /= <<""/utf8>>))
    andalso (erlang:element(5, Defaults) /= <<""/utf8>>).

-file("src/lightspeed/platform/turnkey_presets.gleam", 652).
-spec auth_valid(auth_defaults()) -> boolean().
auth_valid(Defaults) ->
    ((erlang:element(2, Defaults) /= <<""/utf8>>) andalso (erlang:element(
        3,
        Defaults
    )
    >= 60))
    andalso (erlang:element(6, Defaults) >= 12).

-file("src/lightspeed/platform/turnkey_presets.gleam", 438).
?DOC(" True when scaffold command represents one safe starter invocation.\n").
-spec starter_scaffold_ready(starter_preset()) -> boolean().
starter_scaffold_ready(Preset) ->
    Command = erlang:element(3, Preset),
    ((((((Command /= <<""/utf8>>) andalso gleam_stdlib:string_starts_with(
        Command,
        <<"lightspeed new "/utf8>>
    ))
    andalso (string:length(Command) > 20))
    andalso not gleam_stdlib:contains_string(Command, <<"&&"/utf8>>))
    andalso not gleam_stdlib:contains_string(Command, <<"||"/utf8>>))
    andalso not gleam_stdlib:contains_string(Command, <<";"/utf8>>))
    andalso not gleam_stdlib:contains_string(Command, <<"|"/utf8>>).

-file("src/lightspeed/platform/turnkey_presets.gleam", 404).
?DOC(" Validate one starter preset contract.\n").
-spec valid(starter_preset()) -> boolean().
valid(Preset) ->
    (((((((((erlang:element(2, Preset) /= <<""/utf8>>) andalso starter_scaffold_ready(
        Preset
    ))
    andalso auth_valid(erlang:element(4, Preset)))
    andalso admin_valid(erlang:element(5, Preset)))
    andalso billing_valid(erlang:element(6, Preset)))
    andalso policy_valid(erlang:element(7, Preset)))
    andalso email_valid(erlang:element(8, Preset)))
    andalso queue_valid(erlang:element(9, Preset)))
    andalso override_hooks_valid(erlang:element(10, Preset)))
    andalso has_explicit_override_seams(Preset).

-file("src/lightspeed/platform/turnkey_presets.gleam", 418).
?DOC(" True when secure defaults are prewired.\n").
-spec secure_defaults(starter_preset()) -> boolean().
secure_defaults(Preset) ->
    ((((((((((((((erlang:element(4, erlang:element(4, Preset)) andalso erlang:element(
        5,
        erlang:element(4, Preset)
    ))
    andalso (erlang:element(6, erlang:element(4, Preset)) >= 12))
    andalso erlang:element(4, erlang:element(5, Preset)))
    andalso (erlang:element(5, erlang:element(5, Preset)) /= <<""/utf8>>))
    andalso erlang:element(3, erlang:element(6, Preset)))
    andalso erlang:element(5, erlang:element(6, Preset)))
    andalso erlang:element(3, erlang:element(7, Preset)))
    andalso erlang:element(4, erlang:element(7, Preset)))
    andalso erlang:element(5, erlang:element(7, Preset)))
    andalso erlang:element(3, erlang:element(8, Preset)))
    andalso erlang:element(5, erlang:element(8, Preset)))
    andalso erlang:element(4, erlang:element(8, Preset)))
    andalso erlang:element(4, erlang:element(9, Preset)))
    andalso erlang:element(5, erlang:element(9, Preset)))
    andalso erlang:element(6, erlang:element(9, Preset)).

-file("src/lightspeed/platform/turnkey_presets.gleam", 709).
-spec override_module_external(binary()) -> boolean().
override_module_external(Module) ->
    (not gleam_stdlib:contains_string(Module, <<"lightspeed/framework"/utf8>>)
    andalso not gleam_stdlib:contains_string(
        Module,
        <<"lightspeed/component"/utf8>>
    ))
    andalso not gleam_stdlib:contains_string(
        Module,
        <<"lightspeed/platform"/utf8>>
    ).

-file("src/lightspeed/platform/turnkey_presets.gleam", 701).
-spec hooks_external(list(override_hook())) -> boolean().
hooks_external(Overrides) ->
    case Overrides of
        [] ->
            true;

        [Override | Rest] ->
            override_module_external(erlang:element(3, Override)) andalso hooks_external(
                Rest
            )
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 451).
?DOC(" True when overrides avoid framework internals edits.\n").
-spec override_without_internal_edits(starter_preset()) -> boolean().
override_without_internal_edits(Preset) ->
    not erlang:element(11, Preset) andalso hooks_external(
        erlang:element(10, Preset)
    ).

-file("src/lightspeed/platform/turnkey_presets.gleam", 467).
?DOC(" True when one preset is ready as secure turnkey baseline.\n").
-spec scaffoldable_secure_baseline(starter_preset()) -> boolean().
scaffoldable_secure_baseline(Preset) ->
    (valid(Preset) andalso secure_defaults(Preset)) andalso override_without_internal_edits(
        Preset
    ).

-file("src/lightspeed/platform/turnkey_presets.gleam", 474).
?DOC(" True when one critical flow is supported by preset defaults.\n").
-spec supports_flow(starter_preset(), critical_flow()) -> boolean().
supports_flow(Preset, Flow) ->
    case Flow of
        signup_with_mfa_flow ->
            (erlang:element(4, erlang:element(4, Preset)) andalso erlang:element(
                5,
                erlang:element(4, Preset)
            ))
            andalso (erlang:element(6, erlang:element(4, Preset)) >= 12);

        admin_break_glass_approval_flow ->
            (erlang:element(4, erlang:element(5, Preset)) andalso (erlang:element(
                5,
                erlang:element(5, Preset)
            )
            /= <<""/utf8>>))
            andalso (erlang:element(3, erlang:element(5, Preset)) /= <<""/utf8>>);

        billing_webhook_reconciliation_flow ->
            (erlang:element(3, erlang:element(6, Preset)) andalso erlang:element(
                5,
                erlang:element(6, Preset)
            ))
            andalso erlang:element(4, erlang:element(6, Preset));

        policy_denied_audit_trail_flow ->
            (erlang:element(3, erlang:element(7, Preset)) andalso erlang:element(
                4,
                erlang:element(7, Preset)
            ))
            andalso erlang:element(5, erlang:element(7, Preset));

        email_verification_delivery_flow ->
            (erlang:element(3, erlang:element(8, Preset)) andalso erlang:element(
                4,
                erlang:element(8, Preset)
            ))
            andalso erlang:element(5, erlang:element(8, Preset));

        queue_replay_recovery_flow ->
            ((erlang:element(4, erlang:element(9, Preset)) andalso erlang:element(
                5,
                erlang:element(9, Preset)
            ))
            andalso erlang:element(6, erlang:element(9, Preset)))
            andalso (erlang:element(3, erlang:element(9, Preset)) >= 3)
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 621).
-spec flow_list_supported(starter_preset(), list(critical_flow())) -> boolean().
flow_list_supported(Preset, Flows) ->
    case Flows of
        [] ->
            true;

        [Flow | Rest] ->
            supports_flow(Preset, Flow) andalso flow_list_supported(
                Preset,
                Rest
            )
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 505).
?DOC(" True when one reference scenario is certified.\n").
-spec scenario_certified(reference_scenario()) -> boolean().
scenario_certified(Scenario) ->
    (((erlang:element(2, Scenario) /= <<""/utf8>>) andalso (erlang:element(
        5,
        Scenario
    )
    /= <<""/utf8>>))
    andalso scaffoldable_secure_baseline(erlang:element(3, Scenario)))
    andalso flow_list_supported(
        erlang:element(3, Scenario),
        erlang:element(4, Scenario)
    ).

-file("src/lightspeed/platform/turnkey_presets.gleam", 801).
-spec join_with(binary(), list(binary())) -> binary().
join_with(Separator, Values) ->
    case Values of
        [] ->
            <<""/utf8>>;

        [First | Rest] ->
            gleam@list:fold(
                Rest,
                First,
                fun(Accumulator, Value) ->
                    <<<<Accumulator/binary, Separator/binary>>/binary,
                        Value/binary>>
                end
            )
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 726).
-spec override_hook_label(override_hook()) -> binary().
override_hook_label(Override) ->
    <<<<<<<<(seam_label(erlang:element(2, Override)))/binary, ":"/utf8>>/binary,
                (erlang:element(3, Override))/binary>>/binary,
            "#"/utf8>>/binary,
        (erlang:element(4, Override))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 513).
?DOC(" Stable override surface signature for one preset.\n").
-spec override_surface_signature(starter_preset()) -> binary().
override_surface_signature(Preset) ->
    Entries = gleam@list:map(
        erlang:element(10, Preset),
        fun override_hook_label/1
    ),
    join_with(<<","/utf8>>, Entries).

-file("src/lightspeed/platform/turnkey_presets.gleam", 794).
-spec bool_label(boolean()) -> binary().
bool_label(Value) ->
    case Value of
        true ->
            <<"true"/utf8>>;

        false ->
            <<"false"/utf8>>
    end.

-file("src/lightspeed/platform/turnkey_presets.gleam", 519).
?DOC(" Stable critical-flow support signature for one preset.\n").
-spec critical_flow_signature(starter_preset()) -> binary().
critical_flow_signature(Preset) ->
    Entries = gleam@list:map(
        required_critical_flows(),
        fun(Flow) ->
            <<<<(flow_label(Flow))/binary, "="/utf8>>/binary,
                (bool_label(supports_flow(Preset, Flow)))/binary>>
        end
    ),
    join_with(<<","/utf8>>, Entries).

-file("src/lightspeed/platform/turnkey_presets.gleam", 782).
-spec queue_signature(queue_defaults()) -> binary().
queue_signature(Defaults) ->
    <<<<<<<<<<<<<<<<(erlang:element(2, Defaults))/binary,
                                    ":max_attempts="/utf8>>/binary,
                                (erlang:integer_to_binary(
                                    erlang:element(3, Defaults)
                                ))/binary>>/binary,
                            ":dead_letter="/utf8>>/binary,
                        (bool_label(erlang:element(4, Defaults)))/binary>>/binary,
                    ":idempotency="/utf8>>/binary,
                (bool_label(erlang:element(5, Defaults)))/binary>>/binary,
            ":replay_checkpoint="/utf8>>/binary,
        (bool_label(erlang:element(6, Defaults)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 772).
-spec email_signature(email_defaults()) -> binary().
email_signature(Defaults) ->
    <<<<<<<<<<<<(erlang:element(2, Defaults))/binary, ":domain_auth="/utf8>>/binary,
                        (bool_label(erlang:element(3, Defaults)))/binary>>/binary,
                    ":suppression_list="/utf8>>/binary,
                (bool_label(erlang:element(4, Defaults)))/binary>>/binary,
            ":signed_templates="/utf8>>/binary,
        (bool_label(erlang:element(5, Defaults)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 762).
-spec policy_signature(policy_defaults()) -> binary().
policy_signature(Defaults) ->
    <<<<<<<<<<<<(erlang:element(2, Defaults))/binary, ":deny_by_default="/utf8>>/binary,
                        (bool_label(erlang:element(3, Defaults)))/binary>>/binary,
                    ":tenant_scoped="/utf8>>/binary,
                (bool_label(erlang:element(4, Defaults)))/binary>>/binary,
            ":trace="/utf8>>/binary,
        (bool_label(erlang:element(5, Defaults)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 752).
-spec billing_signature(billing_defaults()) -> binary().
billing_signature(Defaults) ->
    <<<<<<<<<<<<(erlang:element(2, Defaults))/binary, ":webhook="/utf8>>/binary,
                        (bool_label(erlang:element(3, Defaults)))/binary>>/binary,
                    ":dunning="/utf8>>/binary,
                (bool_label(erlang:element(4, Defaults)))/binary>>/binary,
            ":idempotency="/utf8>>/binary,
        (bool_label(erlang:element(5, Defaults)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 742).
-spec admin_signature(admin_defaults()) -> binary().
admin_signature(Defaults) ->
    <<<<<<<<<<<<(erlang:element(2, Defaults))/binary, ":audit="/utf8>>/binary,
                        (erlang:element(3, Defaults))/binary>>/binary,
                    ":approval="/utf8>>/binary,
                (bool_label(erlang:element(4, Defaults)))/binary>>/binary,
            ":break_glass="/utf8>>/binary,
        (erlang:element(5, Defaults))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 730).
-spec auth_signature(auth_defaults()) -> binary().
auth_signature(Defaults) ->
    <<<<<<<<<<<<<<<<(erlang:element(2, Defaults))/binary, ":ttl="/utf8>>/binary,
                                (erlang:integer_to_binary(
                                    erlang:element(3, Defaults)
                                ))/binary>>/binary,
                            ":mfa="/utf8>>/binary,
                        (bool_label(erlang:element(4, Defaults)))/binary>>/binary,
                    ":passkeys="/utf8>>/binary,
                (bool_label(erlang:element(5, Defaults)))/binary>>/binary,
            ":pwd_min="/utf8>>/binary,
        (erlang:integer_to_binary(erlang:element(6, Defaults)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 529).
?DOC(" Stable preset signature.\n").
-spec signature(starter_preset()) -> binary().
signature(Preset) ->
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"preset:"/utf8,
                                                                                (erlang:element(
                                                                                    2,
                                                                                    Preset
                                                                                ))/binary>>/binary,
                                                                            "|scaffold="/utf8>>/binary,
                                                                        (erlang:element(
                                                                            3,
                                                                            Preset
                                                                        ))/binary>>/binary,
                                                                    "|auth="/utf8>>/binary,
                                                                (auth_signature(
                                                                    erlang:element(
                                                                        4,
                                                                        Preset
                                                                    )
                                                                ))/binary>>/binary,
                                                            "|admin="/utf8>>/binary,
                                                        (admin_signature(
                                                            erlang:element(
                                                                5,
                                                                Preset
                                                            )
                                                        ))/binary>>/binary,
                                                    "|billing="/utf8>>/binary,
                                                (billing_signature(
                                                    erlang:element(6, Preset)
                                                ))/binary>>/binary,
                                            "|policy="/utf8>>/binary,
                                        (policy_signature(
                                            erlang:element(7, Preset)
                                        ))/binary>>/binary,
                                    "|email="/utf8>>/binary,
                                (email_signature(erlang:element(8, Preset)))/binary>>/binary,
                            "|queue="/utf8>>/binary,
                        (queue_signature(erlang:element(9, Preset)))/binary>>/binary,
                    "|override_surface="/utf8>>/binary,
                (override_surface_signature(Preset))/binary>>/binary,
            "|internal_edits="/utf8>>/binary,
        (bool_label(erlang:element(11, Preset)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 553).
?DOC(" Stable scenario signature.\n").
-spec scenario_signature(reference_scenario()) -> binary().
scenario_signature(Scenario) ->
    <<<<<<<<<<<<<<"scenario:"/utf8, (erlang:element(2, Scenario))/binary>>/binary,
                            "|seed="/utf8>>/binary,
                        (erlang:element(5, Scenario))/binary>>/binary,
                    "|preset="/utf8>>/binary,
                (signature(erlang:element(3, Scenario)))/binary>>/binary,
            "|flows="/utf8>>/binary,
        (critical_flow_signature(erlang:element(3, Scenario)))/binary>>.

-file("src/lightspeed/platform/turnkey_presets.gleam", 565).
?DOC(" Deterministic fixture snapshots for M58 drift gates.\n").
-spec fixture_snapshots() -> list({binary(), binary()}).
fixture_snapshots() ->
    gleam@list:map(
        reference_presets(),
        fun(Preset) -> {erlang:element(2, Preset), signature(Preset)} end
    ).

-file("src/lightspeed/platform/turnkey_presets.gleam", 570).
?DOC(" Deterministic M58 snapshot signature.\n").
-spec snapshot_signature() -> binary().
snapshot_signature() ->
    Entries = gleam@list:map(
        fixture_snapshots(),
        fun(Entry) ->
            {Label, Value} = Entry,
            <<<<Label/binary, "="/utf8>>/binary, Value/binary>>
        end
    ),
    <<<<(profile_version_label())/binary, "|"/utf8>>/binary,
        (join_with(<<";"/utf8>>, Entries))/binary>>.