src/lightspeed@ops@overload_harness.erl

-module(lightspeed@ops@overload_harness).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lightspeed/ops/overload_harness.gleam").
-export([run_scenario/1, run_matrix/0, budget_version_label/0, scenario_label/1, pass_fail_label/1, signature/1, scenario/1, deterministic/1, outcomes/1, failed_scenarios/1, nondeterministic_failures/1, report_signature/1, snapshot_signature/0, snapshot_report_markdown/0]).
-export_type([scenario/0, scenario_outcome/0, report/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(" Deterministic adaptive overload-control and graceful-degradation harness for M50.\n").

-type scenario() :: adaptive_resource_control_boundaries |
    graceful_degradation_policy_hooks |
    overload_telemetry_audit_determinism |
    stress_scenario_and_rollback_drill_certification |
    regression_gate_determinism.

-type scenario_outcome() :: {scenario_outcome,
        scenario(),
        boolean(),
        boolean(),
        binary()}.

-type report() :: {report, list(scenario_outcome()), integer(), integer()}.

-file("src/lightspeed/ops/overload_harness.gleam", 423).
-spec count_nondeterministic(list(scenario_outcome())) -> integer().
count_nondeterministic(Outcomes) ->
    case Outcomes of
        [] ->
            0;

        [Outcome | Rest] ->
            case erlang:element(4, Outcome) of
                true ->
                    count_nondeterministic(Rest);

                false ->
                    1 + count_nondeterministic(Rest)
            end
    end.

-file("src/lightspeed/ops/overload_harness.gleam", 412).
-spec count_failed(list(scenario_outcome())) -> integer().
count_failed(Outcomes) ->
    case Outcomes of
        [] ->
            0;

        [Outcome | Rest] ->
            case erlang:element(3, Outcome) of
                true ->
                    count_failed(Rest);

                false ->
                    1 + count_failed(Rest)
            end
    end.

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

        [Value] ->
            Value;

        [Value@1 | Rest] ->
            <<<<Value@1/binary, Separator/binary>>/binary,
                (join_with(Separator, Rest))/binary>>
    end.

-file("src/lightspeed/ops/overload_harness.gleam", 352).
-spec determinism_signature() -> binary().
determinism_signature() ->
    Observations = join_with(
        <<";"/utf8>>,
        gleam@list:map(
            lightspeed@ops@overload_control:run_stress_simulation(),
            fun lightspeed@ops@overload_control:stress_observation_signature/1
        )
    ),
    Runtime = lightspeed@ops@overload_control:new(
        lightspeed@ops@overload_control:default_thresholds(),
        lightspeed@ops@overload_control:default_hook()
    ),
    Signal = lightspeed@ops@overload_control:signal(
        244,
        360,
        <<"tenant_delta"/utf8>>,
        98
    ),
    {After, Status} = lightspeed@ops@overload_control:evaluate(
        Runtime,
        Signal,
        <<"autopilot"/utf8>>,
        42
    ),
    <<<<<<<<<<"status="/utf8,
                        (lightspeed@ops@overload_control:status_label(Status))/binary>>/binary,
                    "|runtime="/utf8>>/binary,
                (lightspeed@ops@overload_control:signature(After))/binary>>/binary,
            "|observations="/utf8>>/binary,
        Observations/binary>>.

-file("src/lightspeed/ops/overload_harness.gleam", 344).
-spec evaluate_regression_gate_determinism() -> {boolean(), binary()}.
evaluate_regression_gate_determinism() ->
    First = determinism_signature(),
    Second = determinism_signature(),
    Passed = (First =:= Second) andalso (First /= <<""/utf8>>),
    {Passed, First}.

-file("src/lightspeed/ops/overload_harness.gleam", 388).
-spec all_observations_rolled_back(
    list(lightspeed@ops@overload_control:stress_observation())
) -> boolean().
all_observations_rolled_back(Observations) ->
    case Observations of
        [] ->
            true;

        [Observation | Rest] ->
            (erlang:element(7, Observation) >= erlang:element(6, Observation))
            andalso all_observations_rolled_back(Rest)
    end.

-file("src/lightspeed/ops/overload_harness.gleam", 378).
-spec all_observations_bounded(
    list(lightspeed@ops@overload_control:stress_observation())
) -> boolean().
all_observations_bounded(Observations) ->
    case Observations of
        [] ->
            true;

        [Observation | Rest] ->
            erlang:element(8, Observation) andalso all_observations_bounded(
                Rest
            )
    end.

-file("src/lightspeed/ops/overload_harness.gleam", 316).
-spec evaluate_stress_scenario_and_rollback_drill_certification() -> {boolean(),
    binary()}.
evaluate_stress_scenario_and_rollback_drill_certification() ->
    Observations = lightspeed@ops@overload_control:run_stress_simulation(),
    Budgets = lightspeed@ops@overload_control:default_stress_budgets(),
    Results = lightspeed@ops@overload_control:evaluate_stress_budgets(
        Observations,
        Budgets
    ),
    Failures = lightspeed@ops@overload_control:budget_failures(Results),
    Passed = (((erlang:length(Observations) =:= 4) andalso (Failures =:= 0))
    andalso all_observations_bounded(Observations))
    andalso all_observations_rolled_back(Observations),
    Signature = <<<<<<"observations="/utf8,
                (join_with(
                    <<";"/utf8>>,
                    gleam@list:map(
                        Observations,
                        fun lightspeed@ops@overload_control:stress_observation_signature/1
                    )
                ))/binary>>/binary,
            "|budget_results="/utf8>>/binary,
        (join_with(
            <<";"/utf8>>,
            gleam@list:map(
                Results,
                fun lightspeed@ops@overload_control:budget_result_signature/1
            )
        ))/binary>>,
    {Passed, Signature}.

-file("src/lightspeed/ops/overload_harness.gleam", 399).
-spec has_metric(list(lightspeed@ops@telemetry:metric()), binary()) -> boolean().
has_metric(Metrics, Expected_name) ->
    case Metrics of
        [] ->
            false;

        [Metric | Rest] ->
            case Metric of
                {counter, Name, _, _} ->
                    (Name =:= Expected_name) orelse has_metric(
                        Rest,
                        Expected_name
                    );

                {gauge, Name@1, _, _} ->
                    (Name@1 =:= Expected_name) orelse has_metric(
                        Rest,
                        Expected_name
                    )
            end
    end.

-file("src/lightspeed/ops/overload_harness.gleam", 277).
-spec evaluate_overload_telemetry_audit_determinism() -> {boolean(), binary()}.
evaluate_overload_telemetry_audit_determinism() ->
    Runtime = lightspeed@ops@overload_control:new(
        lightspeed@ops@overload_control:default_thresholds(),
        lightspeed@ops@overload_control:default_hook()
    ),
    Warning_signal = lightspeed@ops@overload_control:signal(
        128,
        182,
        <<""/utf8>>,
        74
    ),
    Critical_signal = lightspeed@ops@overload_control:signal(
        238,
        346,
        <<"tenant_gamma"/utf8>>,
        97
    ),
    {After_warning, _} = lightspeed@ops@overload_control:evaluate(
        Runtime,
        Warning_signal,
        <<"autopilot"/utf8>>,
        800
    ),
    {After_critical, _} = lightspeed@ops@overload_control:evaluate(
        After_warning,
        Critical_signal,
        <<"autopilot"/utf8>>,
        820
    ),
    Rolled_back = lightspeed@ops@overload_control:run_rollback_drill(
        After_critical,
        <<"autopilot"/utf8>>,
        900,
        critical
    ),
    Audits = lightspeed@ops@overload_control:audit_entries(Rolled_back),
    Metrics = lightspeed@ops@overload_control:telemetry_metrics(Rolled_back),
    Metric_lines = gleam@list:map(
        Metrics,
        fun lightspeed@ops@telemetry:metric_line/1
    ),
    Passed = ((((Audits /= []) andalso (erlang:length(Audits) =:= erlang:length(
        Metrics
    )))
    andalso has_metric(Metrics, <<"lightspeed.overload.mitigation_total"/utf8>>))
    andalso (lightspeed@ops@overload_control:active_mitigations(Rolled_back) =:= []))
    andalso lightspeed@ops@overload_control:active_mitigations_reversible(
        Rolled_back
    ),
    Signature = <<<<<<<<<<"audit_count="/utf8,
                        (erlang:integer_to_binary(erlang:length(Audits)))/binary>>/binary,
                    "|metric_count="/utf8>>/binary,
                (erlang:integer_to_binary(erlang:length(Metrics)))/binary>>/binary,
            "|metrics="/utf8>>/binary,
        (join_with(<<";"/utf8>>, Metric_lines))/binary>>,
    {Passed, Signature}.

-file("src/lightspeed/ops/overload_harness.gleam", 434).
-spec bool_label(boolean()) -> binary().
bool_label(Value) ->
    case Value of
        true ->
            <<"true"/utf8>>;

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

-file("src/lightspeed/ops/overload_harness.gleam", 237).
-spec evaluate_graceful_degradation_policy_hooks() -> {boolean(), binary()}.
evaluate_graceful_degradation_policy_hooks() ->
    Runtime = lightspeed@ops@overload_control:new(
        lightspeed@ops@overload_control:default_thresholds(),
        lightspeed@ops@overload_control:restrictive_hook()
    ),
    Critical_signal = lightspeed@ops@overload_control:signal(
        242,
        350,
        <<"tenant_beta"/utf8>>,
        98
    ),
    {After_critical, Status} = lightspeed@ops@overload_control:evaluate(
        Runtime,
        Critical_signal,
        <<"autopilot"/utf8>>,
        500
    ),
    Audits = lightspeed@ops@overload_control:audit_entries(After_critical),
    Active = lightspeed@ops@overload_control:active_mitigations(After_critical),
    Blocked_by_hook = gleam@list:any(
        Audits,
        fun(Entry) ->
            _pipe = lightspeed@ops@overload_control:audit_decision(Entry),
            _pipe@1 = lightspeed@ops@overload_control:decision_label(_pipe),
            gleam_stdlib:string_starts_with(
                _pipe@1,
                <<"blocked_by_hook:"/utf8>>
            )
        end
    ),
    Read_only_active = gleam@list:any(
        Active,
        fun(Mitigation) ->
            lightspeed@ops@overload_control:mitigation_label(Mitigation) =:= <<"enter_read_only_mode"/utf8>>
        end
    ),
    Passed = ((((Status =:= critical) andalso Blocked_by_hook) andalso not Read_only_active)
    andalso lightspeed@ops@overload_control:policy_compliant(After_critical))
    andalso lightspeed@ops@overload_control:valid(After_critical),
    Signature = <<<<<<<<<<<<<<"status="/utf8,
                                (lightspeed@ops@overload_control:status_label(
                                    Status
                                ))/binary>>/binary,
                            "|blocked_by_hook="/utf8>>/binary,
                        (bool_label(Blocked_by_hook))/binary>>/binary,
                    "|read_only_active="/utf8>>/binary,
                (bool_label(Read_only_active))/binary>>/binary,
            "|audits="/utf8>>/binary,
        (join_with(
            <<";"/utf8>>,
            gleam@list:map(
                Audits,
                fun lightspeed@ops@overload_control:audit_label/1
            )
        ))/binary>>,
    {Passed, Signature}.

-file("src/lightspeed/ops/overload_harness.gleam", 203).
-spec evaluate_adaptive_resource_control_boundaries() -> {boolean(), binary()}.
evaluate_adaptive_resource_control_boundaries() ->
    Runtime = lightspeed@ops@overload_control:new(
        lightspeed@ops@overload_control:default_thresholds(),
        lightspeed@ops@overload_control:default_hook()
    ),
    Warning_signal = lightspeed@ops@overload_control:signal(
        132,
        188,
        <<""/utf8>>,
        72
    ),
    Critical_signal = lightspeed@ops@overload_control:signal(
        246,
        364,
        <<"tenant_alpha"/utf8>>,
        99
    ),
    {After_warning, Warning_status} = lightspeed@ops@overload_control:evaluate(
        Runtime,
        Warning_signal,
        <<"autopilot"/utf8>>,
        100
    ),
    {After_critical, Critical_status} = lightspeed@ops@overload_control:evaluate(
        After_warning,
        Critical_signal,
        <<"autopilot"/utf8>>,
        120
    ),
    Active_labels = begin
        _pipe = lightspeed@ops@overload_control:active_mitigations(
            After_critical
        ),
        gleam@list:map(
            _pipe,
            fun lightspeed@ops@overload_control:mitigation_label/1
        )
    end,
    Passed = ((((Warning_status =:= warning) andalso (Critical_status =:= critical))
    andalso (erlang:length(Active_labels) =:= 4))
    andalso lightspeed@ops@overload_control:policy_compliant(After_critical))
    andalso lightspeed@ops@overload_control:valid(After_critical),
    Signature = <<<<<<<<<<<<<<"statuses="/utf8,
                                (lightspeed@ops@overload_control:status_label(
                                    Warning_status
                                ))/binary>>/binary,
                            "->"/utf8>>/binary,
                        (lightspeed@ops@overload_control:status_label(
                            Critical_status
                        ))/binary>>/binary,
                    "|active="/utf8>>/binary,
                (join_with(<<","/utf8>>, Active_labels))/binary>>/binary,
            "|runtime="/utf8>>/binary,
        (lightspeed@ops@overload_control:signature(After_critical))/binary>>,
    {Passed, Signature}.

-file("src/lightspeed/ops/overload_harness.gleam", 189).
-spec evaluate(scenario()) -> {boolean(), binary()}.
evaluate(Scenario) ->
    case Scenario of
        adaptive_resource_control_boundaries ->
            evaluate_adaptive_resource_control_boundaries();

        graceful_degradation_policy_hooks ->
            evaluate_graceful_degradation_policy_hooks();

        overload_telemetry_audit_determinism ->
            evaluate_overload_telemetry_audit_determinism();

        stress_scenario_and_rollback_drill_certification ->
            evaluate_stress_scenario_and_rollback_drill_certification();

        regression_gate_determinism ->
            evaluate_regression_gate_determinism()
    end.

-file("src/lightspeed/ops/overload_harness.gleam", 61).
?DOC(" Run one M50 scenario twice and require deterministic parity.\n").
-spec run_scenario(scenario()) -> scenario_outcome().
run_scenario(Scenario) ->
    {First_passed, First_signature} = evaluate(Scenario),
    {Second_passed, Second_signature} = evaluate(Scenario),
    Deterministic = (First_passed =:= Second_passed) andalso (First_signature
    =:= Second_signature),
    Passed = (First_passed andalso Second_passed) andalso Deterministic,
    {scenario_outcome, Scenario, Passed, Deterministic, First_signature}.

-file("src/lightspeed/ops/overload_harness.gleam", 42).
?DOC(" Run all M50 scenarios.\n").
-spec run_matrix() -> report().
run_matrix() ->
    Outcomes = begin
        _pipe = [adaptive_resource_control_boundaries,
            graceful_degradation_policy_hooks,
            overload_telemetry_audit_determinism,
            stress_scenario_and_rollback_drill_certification,
            regression_gate_determinism],
        gleam@list:map(_pipe, fun run_scenario/1)
    end,
    {report, Outcomes, count_failed(Outcomes), count_nondeterministic(Outcomes)}.

-file("src/lightspeed/ops/overload_harness.gleam", 77).
?DOC(" M50 budget profile version label.\n").
-spec budget_version_label() -> binary().
budget_version_label() ->
    <<"m50.budget.v"/utf8, (erlang:integer_to_binary(1))/binary>>.

-file("src/lightspeed/ops/overload_harness.gleam", 82).
?DOC(" Scenario label.\n").
-spec scenario_label(scenario()) -> binary().
scenario_label(Scenario) ->
    case Scenario of
        adaptive_resource_control_boundaries ->
            <<"adaptive_resource_control_boundaries"/utf8>>;

        graceful_degradation_policy_hooks ->
            <<"graceful_degradation_policy_hooks"/utf8>>;

        overload_telemetry_audit_determinism ->
            <<"overload_telemetry_audit_determinism"/utf8>>;

        stress_scenario_and_rollback_drill_certification ->
            <<"stress_scenario_and_rollback_drill_certification"/utf8>>;

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

-file("src/lightspeed/ops/overload_harness.gleam", 94).
?DOC(" Stable pass/fail label.\n").
-spec pass_fail_label(scenario_outcome()) -> binary().
pass_fail_label(Outcome) ->
    case erlang:element(3, Outcome) of
        true ->
            <<"pass"/utf8>>;

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

-file("src/lightspeed/ops/overload_harness.gleam", 102).
?DOC(" Scenario signature accessor.\n").
-spec signature(scenario_outcome()) -> binary().
signature(Outcome) ->
    erlang:element(5, Outcome).

-file("src/lightspeed/ops/overload_harness.gleam", 107).
?DOC(" Scenario accessor.\n").
-spec scenario(scenario_outcome()) -> scenario().
scenario(Outcome) ->
    erlang:element(2, Outcome).

-file("src/lightspeed/ops/overload_harness.gleam", 112).
?DOC(" Determinism accessor.\n").
-spec deterministic(scenario_outcome()) -> boolean().
deterministic(Outcome) ->
    erlang:element(4, Outcome).

-file("src/lightspeed/ops/overload_harness.gleam", 117).
?DOC(" Report outcomes accessor.\n").
-spec outcomes(report()) -> list(scenario_outcome()).
outcomes(Report) ->
    erlang:element(2, Report).

-file("src/lightspeed/ops/overload_harness.gleam", 122).
?DOC(" Failed scenario count.\n").
-spec failed_scenarios(report()) -> integer().
failed_scenarios(Report) ->
    erlang:element(3, Report).

-file("src/lightspeed/ops/overload_harness.gleam", 127).
?DOC(" Nondeterministic scenario count.\n").
-spec nondeterministic_failures(report()) -> integer().
nondeterministic_failures(Report) ->
    erlang:element(4, Report).

-file("src/lightspeed/ops/overload_harness.gleam", 132).
?DOC(" Stable report signature.\n").
-spec report_signature(report()) -> binary().
report_signature(Report) ->
    Entries = gleam@list:map(
        erlang:element(2, Report),
        fun(Outcome) ->
            <<<<<<<<<<<<(scenario_label(erlang:element(2, Outcome)))/binary,
                                    "="/utf8>>/binary,
                                (pass_fail_label(Outcome))/binary>>/binary,
                            ":deterministic="/utf8>>/binary,
                        (bool_label(erlang:element(4, Outcome)))/binary>>/binary,
                    ":"/utf8>>/binary,
                (erlang:element(5, Outcome))/binary>>
        end
    ),
    join_with(<<";"/utf8>>, Entries).

-file("src/lightspeed/ops/overload_harness.gleam", 148).
?DOC(" Deterministic snapshot signature for M50 fixture drift gates.\n").
-spec snapshot_signature() -> binary().
snapshot_signature() ->
    <<<<<<"m50.snapshot.v"/utf8, (erlang:integer_to_binary(1))/binary>>/binary,
            "|"/utf8>>/binary,
        (report_signature(run_matrix()))/binary>>.

-file("src/lightspeed/ops/overload_harness.gleam", 156).
?DOC(" Deterministic markdown report for M50 fixture scripts.\n").
-spec snapshot_report_markdown() -> binary().
snapshot_report_markdown() ->
    Report = run_matrix(),
    Failed = failed_scenarios(Report),
    Nondeterministic = nondeterministic_failures(Report),
    Status = case (Failed =:= 0) andalso (Nondeterministic =:= 0) of
        true ->
            <<"OK"/utf8>>;

        false ->
            <<"FAIL"/utf8>>
    end,
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"# Overload Fixture Report\n\n"/utf8,
                                                                                        "snapshot_version: "/utf8>>/binary,
                                                                                    (erlang:integer_to_binary(
                                                                                        1
                                                                                    ))/binary>>/binary,
                                                                                "\n"/utf8>>/binary,
                                                                            "budget_version: "/utf8>>/binary,
                                                                        (budget_version_label(
                                                                            
                                                                        ))/binary>>/binary,
                                                                    "\n"/utf8>>/binary,
                                                                "status: "/utf8>>/binary,
                                                            Status/binary>>/binary,
                                                        "\n"/utf8>>/binary,
                                                    "failed_scenarios: "/utf8>>/binary,
                                                (erlang:integer_to_binary(
                                                    Failed
                                                ))/binary>>/binary,
                                            "\n"/utf8>>/binary,
                                        "nondeterministic_failures: "/utf8>>/binary,
                                    (erlang:integer_to_binary(Nondeterministic))/binary>>/binary,
                                "\n\n"/utf8>>/binary,
                            "snapshot_signature: "/utf8>>/binary,
                        (snapshot_signature())/binary>>/binary,
                    "\n\n"/utf8>>/binary,
                "report_signature: "/utf8>>/binary,
            (report_signature(Report))/binary>>/binary,
        "\n"/utf8>>.