-module(lightspeed@ops@overload_control). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/lightspeed/ops/overload_control.gleam"). -export([signal/4, thresholds/6, default_thresholds/0, operator_hook/6, default_hook/0, restrictive_hook/0, new/2, classify/2, recommended_mitigations/3, active_mitigations/1, status_label/1, decision_label/1, mitigation_label/1, audit_metric/1, evaluate/4, run_rollback_drill/4, default_stress_budgets/0, policy_compliant/1, mitigation_reversible/1, active_mitigations_reversible/1, valid/1, audit_entries/1, run_stress_simulation/0, evaluate_stress_budgets/2, budget_failures/1, runtime_thresholds/1, runtime_hook/1, telemetry_metrics/1, signal_label/1, thresholds_label/1, hook_label/1, audit_label/1, signature/1, stress_scenario_label/1, stress_observation_signature/1, budget_result_signature/1, audit_decision/1, audit_mitigation/1, stress_scenario/1]). -export_type([overload_signal/0, thresholds/0, status/0, mitigation/0, operator_hook/0, decision/0, audit_entry/0, stress_scenario/0, stress_observation/0, stress_budget/0, budget_result/0, runtime/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(" Adaptive overload-control and graceful-degradation contracts for M50.\n"). -type overload_signal() :: {overload_signal, integer(), integer(), binary(), integer()}. -type thresholds() :: {thresholds, integer(), integer(), integer(), integer(), integer(), integer()}. -type status() :: healthy | warning | critical. -type mitigation() :: {shed_events, integer()} | {throttle_cadence, integer()} | {enforce_tenant_budget, binary()} | enter_read_only_mode. -type operator_hook() :: {operator_hook, binary(), boolean(), boolean(), boolean(), boolean(), integer()}. -type decision() :: applied | rolled_back | {blocked_by_hook, binary()} | {noop, binary()}. -type audit_entry() :: {audit_entry, binary(), mitigation(), decision(), binary(), integer(), status(), binary()}. -type stress_scenario() :: queue_depth_spike | cadence_storm | tenant_budget_hotspot | combined_pressure. -type stress_observation() :: {stress_observation, stress_scenario(), integer(), integer(), integer(), integer(), integer(), boolean()}. -type stress_budget() :: {stress_budget, stress_scenario(), integer(), integer(), integer(), integer(), boolean()}. -type budget_result() :: {budget_result, stress_scenario(), boolean(), binary()}. -opaque runtime() :: {runtime, thresholds(), operator_hook(), list(mitigation()), list(audit_entry()), list(lightspeed@ops@telemetry:metric())}. -file("src/lightspeed/ops/overload_control.gleam", 127). ?DOC(" Build one overload signal.\n"). -spec signal(integer(), integer(), binary(), integer()) -> overload_signal(). signal( Queue_depth, Event_cadence_per_sec, Tenant_id, Tenant_budget_used_percent ) -> {overload_signal, Queue_depth, Event_cadence_per_sec, Tenant_id, Tenant_budget_used_percent}. -file("src/lightspeed/ops/overload_control.gleam", 142). ?DOC(" Build one threshold profile.\n"). -spec thresholds( integer(), integer(), integer(), integer(), integer(), integer() ) -> thresholds(). thresholds( Warn_queue_depth, Critical_queue_depth, Warn_event_cadence_per_sec, Critical_event_cadence_per_sec, Warn_tenant_budget_percent, Critical_tenant_budget_percent ) -> {thresholds, Warn_queue_depth, Critical_queue_depth, Warn_event_cadence_per_sec, Critical_event_cadence_per_sec, Warn_tenant_budget_percent, Critical_tenant_budget_percent}. -file("src/lightspeed/ops/overload_control.gleam", 161). ?DOC(" Default M50 threshold profile.\n"). -spec default_thresholds() -> thresholds(). default_thresholds() -> {thresholds, 120, 220, 220, 340, 80, 95}. -file("src/lightspeed/ops/overload_control.gleam", 173). ?DOC(" Build one operator-policy hook profile.\n"). -spec operator_hook( binary(), boolean(), boolean(), boolean(), boolean(), integer() ) -> operator_hook(). operator_hook( Name, Allow_shed_events, Allow_cadence_throttle, Allow_tenant_budget_enforcement, Allow_read_only_mode, Rollback_window_ms ) -> {operator_hook, Name, Allow_shed_events, Allow_cadence_throttle, Allow_tenant_budget_enforcement, Allow_read_only_mode, Rollback_window_ms}. -file("src/lightspeed/ops/overload_control.gleam", 192). ?DOC(" Default permissive operator-policy hook.\n"). -spec default_hook() -> operator_hook(). default_hook() -> {operator_hook, <<"default_autopilot"/utf8>>, true, true, true, true, 300}. -file("src/lightspeed/ops/overload_control.gleam", 204). ?DOC(" Restrictive hook used for policy-boundary validation.\n"). -spec restrictive_hook() -> operator_hook(). restrictive_hook() -> {operator_hook, <<"restrictive_hook"/utf8>>, true, true, true, false, 300}. -file("src/lightspeed/ops/overload_control.gleam", 216). ?DOC(" Build one overload runtime.\n"). -spec new(thresholds(), operator_hook()) -> runtime(). new(Thresholds, Hook) -> {runtime, Thresholds, Hook, [], [], []}. -file("src/lightspeed/ops/overload_control.gleam", 227). ?DOC(" Classify one overload signal.\n"). -spec classify(overload_signal(), thresholds()) -> status(). classify(Signal, Thresholds) -> case ((erlang:element(2, Signal) >= erlang:element(3, Thresholds)) orelse (erlang:element( 3, Signal ) >= erlang:element(5, Thresholds))) orelse (erlang:element(5, Signal) >= erlang:element(7, Thresholds)) of true -> critical; false -> case ((erlang:element(2, Signal) >= erlang:element(2, Thresholds)) orelse (erlang:element(3, Signal) >= erlang:element(4, Thresholds))) orelse (erlang:element(5, Signal) >= erlang:element(6, Thresholds)) of true -> warning; false -> healthy end end. -file("src/lightspeed/ops/overload_control.gleam", 627). -spec tenant_mitigation(binary()) -> list(mitigation()). tenant_mitigation(Tenant_id) -> case Tenant_id =:= <<""/utf8>> of true -> []; false -> [{enforce_tenant_budget, Tenant_id}] end. -file("src/lightspeed/ops/overload_control.gleam", 1116). -spec append(list(mitigation()), list(mitigation())) -> list(mitigation()). append(Left, Right) -> case Left of [] -> Right; [Item | Rest] -> [Item | append(Rest, Right)] end. -file("src/lightspeed/ops/overload_control.gleam", 249). ?DOC(" Recommended mitigation set for one signal/status pair.\n"). -spec recommended_mitigations(overload_signal(), status(), thresholds()) -> list(mitigation()). recommended_mitigations(Signal, Status, Thresholds) -> case Status of healthy -> []; warning -> _pipe = [{shed_events, 15}, {throttle_cadence, erlang:element(4, Thresholds)}], append(_pipe, tenant_mitigation(erlang:element(4, Signal))); critical -> _pipe@1 = [{shed_events, 45}, {throttle_cadence, erlang:element(4, Thresholds)}, enter_read_only_mode], append(_pipe@1, tenant_mitigation(erlang:element(4, Signal))) end. -file("src/lightspeed/ops/overload_control.gleam", 406). ?DOC(" Active mitigations in stable order.\n"). -spec active_mitigations(runtime()) -> list(mitigation()). active_mitigations(Runtime) -> lists:reverse(erlang:element(4, Runtime)). -file("src/lightspeed/ops/overload_control.gleam", 449). ?DOC(" Stable status label.\n"). -spec status_label(status()) -> binary(). status_label(Status) -> case Status of healthy -> <<"healthy"/utf8>>; warning -> <<"warning"/utf8>>; critical -> <<"critical"/utf8>> end. -file("src/lightspeed/ops/overload_control.gleam", 469). ?DOC(" Stable decision label.\n"). -spec decision_label(decision()) -> binary(). decision_label(Decision) -> case Decision of applied -> <<"applied"/utf8>>; rolled_back -> <<"rolled_back"/utf8>>; {blocked_by_hook, Hook_name} -> <<"blocked_by_hook:"/utf8, Hook_name/binary>>; {noop, Reason} -> <<"noop:"/utf8, Reason/binary>> end. -file("src/lightspeed/ops/overload_control.gleam", 458). ?DOC(" Stable mitigation label.\n"). -spec mitigation_label(mitigation()) -> binary(). mitigation_label(Mitigation) -> case Mitigation of {shed_events, Percent} -> <<"shed_events:"/utf8, (erlang:integer_to_binary(Percent))/binary>>; {throttle_cadence, Max_events_per_sec} -> <<"throttle_cadence:"/utf8, (erlang:integer_to_binary(Max_events_per_sec))/binary>>; {enforce_tenant_budget, Tenant_id} -> <<"enforce_tenant_budget:"/utf8, Tenant_id/binary>>; enter_read_only_mode -> <<"enter_read_only_mode"/utf8>> end. -file("src/lightspeed/ops/overload_control.gleam", 588). ?DOC(" Convert one audit entry into a deterministic overload metric.\n"). -spec audit_metric(audit_entry()) -> lightspeed@ops@telemetry:metric(). audit_metric(Entry) -> {counter, <<"lightspeed.overload.mitigation_total"/utf8>>, 1, [{tag, <<"actor_id"/utf8>>, erlang:element(2, Entry)}, {tag, <<"hook"/utf8>>, erlang:element(8, Entry)}, {tag, <<"mitigation"/utf8>>, mitigation_label(erlang:element(3, Entry))}, {tag, <<"decision"/utf8>>, decision_label(erlang:element(4, Entry))}, {tag, <<"status"/utf8>>, status_label(erlang:element(7, Entry))}]}. -file("src/lightspeed/ops/overload_control.gleam", 859). -spec record_audit(runtime(), audit_entry()) -> runtime(). record_audit(Runtime, Entry) -> {runtime, erlang:element(2, Runtime), erlang:element(3, Runtime), erlang:element(4, Runtime), [Entry | erlang:element(5, Runtime)], [audit_metric(Entry) | erlang:element(6, Runtime)]}. -file("src/lightspeed/ops/overload_control.gleam", 883). -spec remove_mitigation(list(mitigation()), mitigation()) -> list(mitigation()). remove_mitigation(Mitigations, Expected) -> case Mitigations of [] -> []; [Mitigation | Rest] -> case Mitigation =:= Expected of true -> remove_mitigation(Rest, Expected); false -> [Mitigation | remove_mitigation(Rest, Expected)] end end. -file("src/lightspeed/ops/overload_control.gleam", 875). -spec has_mitigation(list(mitigation()), mitigation()) -> boolean(). has_mitigation(Mitigations, Expected) -> case Mitigations of [] -> false; [Mitigation | Rest] -> (Mitigation =:= Expected) orelse has_mitigation(Rest, Expected) end. -file("src/lightspeed/ops/overload_control.gleam", 797). -spec rollback(runtime(), mitigation(), binary(), binary(), integer(), status()) -> runtime(). rollback(Runtime, Mitigation, Actor_id, Reason, At_ms, Status) -> case has_mitigation(erlang:element(4, Runtime), Mitigation) of true -> _pipe = {runtime, erlang:element(2, Runtime), erlang:element(3, Runtime), remove_mitigation(erlang:element(4, Runtime), Mitigation), erlang:element(5, Runtime), erlang:element(6, Runtime)}, record_audit( _pipe, {audit_entry, Actor_id, Mitigation, rolled_back, Reason, At_ms, Status, erlang:element(2, erlang:element(3, Runtime))} ); false -> record_audit( Runtime, {audit_entry, Actor_id, Mitigation, {noop, <<"not_active"/utf8>>}, Reason, At_ms, Status, erlang:element(2, erlang:element(3, Runtime))} ) end. -file("src/lightspeed/ops/overload_control.gleam", 701). -spec rollback_not_desired_loop( runtime(), list(mitigation()), list(mitigation()), binary(), integer(), status() ) -> runtime(). rollback_not_desired_loop(Runtime, Active, Desired, Actor_id, Now_ms, Status) -> case Active of [] -> Runtime; [Mitigation | Rest] -> case has_mitigation(Desired, Mitigation) of true -> rollback_not_desired_loop( Runtime, Rest, Desired, Actor_id, Now_ms + 1, Status ); false -> rollback_not_desired_loop( rollback( Runtime, Mitigation, Actor_id, <<"adaptive_reconcile"/utf8>>, Now_ms, Status ), Rest, Desired, Actor_id, Now_ms + 1, Status ) end end. -file("src/lightspeed/ops/overload_control.gleam", 684). -spec rollback_not_desired( runtime(), list(mitigation()), binary(), integer(), status() ) -> runtime(). rollback_not_desired(Runtime, Desired, Actor_id, Now_ms, Status) -> rollback_not_desired_loop( Runtime, active_mitigations(Runtime), Desired, Actor_id, Now_ms, Status ). -file("src/lightspeed/ops/overload_control.gleam", 866). -spec allowed_mitigation(operator_hook(), mitigation()) -> boolean(). allowed_mitigation(Hook, Mitigation) -> case Mitigation of {shed_events, _} -> erlang:element(3, Hook); {throttle_cadence, _} -> erlang:element(4, Hook); {enforce_tenant_budget, _} -> erlang:element(5, Hook); enter_read_only_mode -> erlang:element(6, Hook) end. -file("src/lightspeed/ops/overload_control.gleam", 742). -spec apply(runtime(), mitigation(), binary(), binary(), integer(), status()) -> runtime(). apply(Runtime, Mitigation, Actor_id, Reason, At_ms, Status) -> case has_mitigation(erlang:element(4, Runtime), Mitigation) of true -> record_audit( Runtime, {audit_entry, Actor_id, Mitigation, {noop, <<"already_active"/utf8>>}, Reason, At_ms, Status, erlang:element(2, erlang:element(3, Runtime))} ); false -> case allowed_mitigation(erlang:element(3, Runtime), Mitigation) of false -> record_audit( Runtime, {audit_entry, Actor_id, Mitigation, {blocked_by_hook, erlang:element(2, erlang:element(3, Runtime))}, Reason, At_ms, Status, erlang:element(2, erlang:element(3, Runtime))} ); true -> _pipe = {runtime, erlang:element(2, Runtime), erlang:element(3, Runtime), [Mitigation | erlang:element(4, Runtime)], erlang:element(5, Runtime), erlang:element(6, Runtime)}, record_audit( _pipe, {audit_entry, Actor_id, Mitigation, applied, Reason, At_ms, Status, erlang:element(2, erlang:element(3, Runtime))} ) end end. -file("src/lightspeed/ops/overload_control.gleam", 657). -spec apply_desired( runtime(), list(mitigation()), binary(), integer(), status() ) -> runtime(). apply_desired(Runtime, Desired, Actor_id, Now_ms, Status) -> case Desired of [] -> Runtime; [Mitigation | Rest] -> apply_desired( apply( Runtime, Mitigation, Actor_id, <<"adaptive_reconcile"/utf8>>, Now_ms, Status ), Rest, Actor_id, Now_ms + 1, Status ) end. -file("src/lightspeed/ops/overload_control.gleam", 646). -spec reconcile_mitigations( runtime(), list(mitigation()), binary(), integer(), status() ) -> runtime(). reconcile_mitigations(Runtime, Desired, Actor_id, Now_ms, Status) -> Applied = apply_desired(Runtime, Desired, Actor_id, Now_ms, Status), rollback_not_desired(Applied, Desired, Actor_id, Now_ms + 1, Status). -file("src/lightspeed/ops/overload_control.gleam", 277). ?DOC(" Evaluate one overload signal and reconcile adaptive mitigations.\n"). -spec evaluate(runtime(), overload_signal(), binary(), integer()) -> {runtime(), status()}. evaluate(Runtime, Signal, Actor_id, Now_ms) -> Status = classify(Signal, erlang:element(2, Runtime)), Desired = recommended_mitigations( Signal, Status, erlang:element(2, Runtime) ), {reconcile_mitigations(Runtime, Desired, Actor_id, Now_ms, Status), Status}. -file("src/lightspeed/ops/overload_control.gleam", 839). -spec rollback_all(runtime(), list(mitigation()), binary(), integer(), status()) -> runtime(). rollback_all(Runtime, Mitigations, Actor_id, At_ms, Status) -> case Mitigations of [] -> Runtime; [Mitigation | Rest] -> rollback_all( rollback( Runtime, Mitigation, Actor_id, <<"rollback_drill"/utf8>>, At_ms, Status ), Rest, Actor_id, At_ms + 1, Status ) end. -file("src/lightspeed/ops/overload_control.gleam", 290). ?DOC(" Execute one rollback drill by rolling back all active mitigations.\n"). -spec run_rollback_drill(runtime(), binary(), integer(), status()) -> runtime(). run_rollback_drill(Runtime, Actor_id, Now_ms, Status) -> rollback_all(Runtime, active_mitigations(Runtime), Actor_id, Now_ms, Status). -file("src/lightspeed/ops/overload_control.gleam", 300). ?DOC(" Stress budgets for M50 certification.\n"). -spec default_stress_budgets() -> list(stress_budget()). default_stress_budgets() -> [{stress_budget, queue_depth_spike, 215, 210, 74, 2, true}, {stress_budget, cadence_storm, 180, 360, 70, 3, true}, {stress_budget, tenant_budget_hotspot, 160, 230, 98, 3, true}, {stress_budget, combined_pressure, 260, 380, 99, 4, true}]. -file("src/lightspeed/ops/overload_control.gleam", 919). -spec all_mitigations_allowed(operator_hook(), list(mitigation())) -> boolean(). all_mitigations_allowed(Hook, Mitigations) -> case Mitigations of [] -> true; [Mitigation | Rest] -> allowed_mitigation(Hook, Mitigation) andalso all_mitigations_allowed( Hook, Rest ) end. -file("src/lightspeed/ops/overload_control.gleam", 436). ?DOC(" `True` when active mitigations are compliant with the operator hook.\n"). -spec policy_compliant(runtime()) -> boolean(). policy_compliant(Runtime) -> all_mitigations_allowed( erlang:element(3, Runtime), active_mitigations(Runtime) ). -file("src/lightspeed/ops/overload_control.gleam", 421). ?DOC(" Mitigation reversibility indicator.\n"). -spec mitigation_reversible(mitigation()) -> boolean(). mitigation_reversible(Mitigation) -> case Mitigation of {shed_events, _} -> true; {throttle_cadence, _} -> true; {enforce_tenant_budget, _} -> true; enter_read_only_mode -> true end. -file("src/lightspeed/ops/overload_control.gleam", 911). -spec all_mitigations_reversible(list(mitigation())) -> boolean(). all_mitigations_reversible(Mitigations) -> case Mitigations of [] -> true; [Mitigation | Rest] -> mitigation_reversible(Mitigation) andalso all_mitigations_reversible( Rest ) end. -file("src/lightspeed/ops/overload_control.gleam", 431). ?DOC(" `True` when all active mitigations are reversible.\n"). -spec active_mitigations_reversible(runtime()) -> boolean(). active_mitigations_reversible(Runtime) -> all_mitigations_reversible(active_mitigations(Runtime)). -file("src/lightspeed/ops/overload_control.gleam", 897). -spec unique_mitigations(list(mitigation()), list(mitigation())) -> boolean(). unique_mitigations(Mitigations, Seen) -> case Mitigations of [] -> true; [Mitigation | Rest] -> case has_mitigation(Seen, Mitigation) of true -> false; false -> unique_mitigations(Rest, [Mitigation | Seen]) end end. -file("src/lightspeed/ops/overload_control.gleam", 634). -spec thresholds_valid(thresholds()) -> boolean(). thresholds_valid(Thresholds) -> ((((((erlang:element(2, Thresholds) > 0) andalso (erlang:element( 3, Thresholds ) >= erlang:element(2, Thresholds))) andalso (erlang:element(4, Thresholds) > 0)) andalso (erlang:element(5, Thresholds) >= erlang:element(4, Thresholds))) andalso (erlang:element(6, Thresholds) >= 0)) andalso (erlang:element(7, Thresholds) >= erlang:element(6, Thresholds))) andalso (erlang:element(7, Thresholds) =< 100). -file("src/lightspeed/ops/overload_control.gleam", 441). ?DOC(" Runtime invariants.\n"). -spec valid(runtime()) -> boolean(). valid(Runtime) -> ((thresholds_valid(erlang:element(2, Runtime)) andalso (erlang:element( 7, erlang:element(3, Runtime) ) > 0)) andalso unique_mitigations(active_mitigations(Runtime), [])) andalso active_mitigations_reversible(Runtime). -file("src/lightspeed/ops/overload_control.gleam", 1015). -spec peak_tenant_budget(list(overload_signal()), integer()) -> integer(). peak_tenant_budget(Signals, Peak) -> case Signals of [] -> Peak; [Signal | Rest] -> Next_peak = case erlang:element(5, Signal) > Peak of true -> erlang:element(5, Signal); false -> Peak end, peak_tenant_budget(Rest, Next_peak) end. -file("src/lightspeed/ops/overload_control.gleam", 1002). -spec peak_event_cadence(list(overload_signal()), integer()) -> integer(). peak_event_cadence(Signals, Peak) -> case Signals of [] -> Peak; [Signal | Rest] -> Next_peak = case erlang:element(3, Signal) > Peak of true -> erlang:element(3, Signal); false -> Peak end, peak_event_cadence(Rest, Next_peak) end. -file("src/lightspeed/ops/overload_control.gleam", 989). -spec peak_queue_depth(list(overload_signal()), integer()) -> integer(). peak_queue_depth(Signals, Peak) -> case Signals of [] -> Peak; [Signal | Rest] -> Next_peak = case erlang:element(2, Signal) > Peak of true -> erlang:element(2, Signal); false -> Peak end, peak_queue_depth(Rest, Next_peak) end. -file("src/lightspeed/ops/overload_control.gleam", 978). -spec count_decision(list(audit_entry()), binary()) -> integer(). count_decision(Audits, Expected_label) -> case Audits of [] -> 0; [Entry | Rest] -> case decision_label(erlang:element(4, Entry)) =:= Expected_label of true -> 1 + count_decision(Rest, Expected_label); false -> count_decision(Rest, Expected_label) end end. -file("src/lightspeed/ops/overload_control.gleam", 411). ?DOC(" Audit entries in stable order.\n"). -spec audit_entries(runtime()) -> list(audit_entry()). audit_entries(Runtime) -> lists:reverse(erlang:element(5, Runtime)). -file("src/lightspeed/ops/overload_control.gleam", 963). -spec evaluate_signals(runtime(), list(overload_signal()), binary(), integer()) -> runtime(). evaluate_signals(Runtime, Signals, Actor_id, At_ms) -> case Signals of [] -> Runtime; [Signal | Rest] -> {Next_runtime, _} = evaluate(Runtime, Signal, Actor_id, At_ms), evaluate_signals(Next_runtime, Rest, Actor_id, At_ms + 5) end. -file("src/lightspeed/ops/overload_control.gleam", 931). -spec simulate_stress(stress_scenario(), list(overload_signal()), integer()) -> stress_observation(). simulate_stress(Scenario, Signals, Base_time_ms) -> Runtime = new(default_thresholds(), default_hook()), After_signals = evaluate_signals( Runtime, Signals, <<"autopilot"/utf8>>, Base_time_ms ), Rolled_back = run_rollback_drill( After_signals, <<"autopilot"/utf8>>, Base_time_ms + 50, critical ), Audits = audit_entries(Rolled_back), Mitigations_applied = count_decision(Audits, <<"applied"/utf8>>), Rollbacks_executed = count_decision(Audits, <<"rolled_back"/utf8>>), Peak_queue_depth = peak_queue_depth(Signals, 0), Peak_event_cadence = peak_event_cadence(Signals, 0), Peak_tenant_budget = peak_tenant_budget(Signals, 0), Bounded = (valid(Rolled_back) andalso policy_compliant(Rolled_back)) andalso (Rollbacks_executed >= Mitigations_applied), {stress_observation, Scenario, Peak_queue_depth, Peak_event_cadence, Peak_tenant_budget, Mitigations_applied, Rollbacks_executed, Bounded}. -file("src/lightspeed/ops/overload_control.gleam", 338). ?DOC(" Run deterministic stress simulations for M50.\n"). -spec run_stress_simulation() -> list(stress_observation()). run_stress_simulation() -> [simulate_stress( queue_depth_spike, [signal(130, 170, <<""/utf8>>, 70), signal(210, 205, <<""/utf8>>, 74)], 1 ), simulate_stress( cadence_storm, [signal(125, 260, <<""/utf8>>, 68), signal(170, 350, <<""/utf8>>, 70)], 1000 ), simulate_stress( tenant_budget_hotspot, [signal(140, 220, <<"tenant-alpha"/utf8>>, 84), signal(158, 228, <<"tenant-alpha"/utf8>>, 97)], 2000 ), simulate_stress( combined_pressure, [signal(155, 240, <<"tenant-bravo"/utf8>>, 88), signal(255, 370, <<"tenant-bravo"/utf8>>, 99)], 3000 )]. -file("src/lightspeed/ops/overload_control.gleam", 1123). -spec bool_label(boolean()) -> binary(). bool_label(Value) -> case Value of true -> <<"true"/utf8>>; false -> <<"false"/utf8>> end. -file("src/lightspeed/ops/overload_control.gleam", 1102). -spec budget_for_scenario(stress_scenario(), list(stress_budget())) -> {ok, stress_budget()} | {error, binary()}. budget_for_scenario(Scenario, Budgets) -> case Budgets of [] -> {error, <<"missing_stress_budget"/utf8>>}; [Budget | Rest] -> case erlang:element(2, Budget) =:= Scenario of true -> {ok, Budget}; false -> budget_for_scenario(Scenario, Rest) end end. -file("src/lightspeed/ops/overload_control.gleam", 1042). -spec evaluate_one_budget(stress_observation(), list(stress_budget())) -> budget_result(). evaluate_one_budget(Observation, Budgets) -> case budget_for_scenario(erlang:element(2, Observation), Budgets) of {error, Reason} -> {budget_result, erlang:element(2, Observation), false, Reason}; {ok, Budget} -> Queue_ok = erlang:element(3, Observation) =< erlang:element( 3, Budget ), Cadence_ok = erlang:element(4, Observation) =< erlang:element( 4, Budget ), Tenant_ok = erlang:element(5, Observation) =< erlang:element( 5, Budget ), Mitigation_ok = erlang:element(6, Observation) >= erlang:element( 6, Budget ), Rollback_ok = case erlang:element(7, Budget) of true -> erlang:element(7, Observation) > 0; false -> true end, Bounded_ok = erlang:element(8, Observation), Passed = ((((Queue_ok andalso Cadence_ok) andalso Tenant_ok) andalso Mitigation_ok) andalso Rollback_ok) andalso Bounded_ok, Reason@1 = case Passed of true -> <<"within_budget"/utf8>>; false -> <<<<<<<<<<<<<<<<<<<<<<<<"budget_exceeded:"/utf8, "queue="/utf8>>/binary, (bool_label( Queue_ok ))/binary>>/binary, ":cadence="/utf8>>/binary, (bool_label(Cadence_ok))/binary>>/binary, ":tenant="/utf8>>/binary, (bool_label(Tenant_ok))/binary>>/binary, ":mitigations="/utf8>>/binary, (bool_label(Mitigation_ok))/binary>>/binary, ":rollback="/utf8>>/binary, (bool_label(Rollback_ok))/binary>>/binary, ":bounded="/utf8>>/binary, (bool_label(Bounded_ok))/binary>> end, {budget_result, erlang:element(2, Observation), Passed, Reason@1} end. -file("src/lightspeed/ops/overload_control.gleam", 1028). -spec evaluate_budgets_loop( list(stress_observation()), list(stress_budget()), list(budget_result()) ) -> list(budget_result()). evaluate_budgets_loop(Observations, Budgets, Results_rev) -> case Observations of [] -> lists:reverse(Results_rev); [Observation | Rest] -> Result = evaluate_one_budget(Observation, Budgets), evaluate_budgets_loop(Rest, Budgets, [Result | Results_rev]) end. -file("src/lightspeed/ops/overload_control.gleam", 376). ?DOC(" Evaluate stress observations against one budget profile.\n"). -spec evaluate_stress_budgets(list(stress_observation()), list(stress_budget())) -> list(budget_result()). evaluate_stress_budgets(Observations, Budgets) -> evaluate_budgets_loop(Observations, Budgets, []). -file("src/lightspeed/ops/overload_control.gleam", 384). ?DOC(" Count failing stress budgets.\n"). -spec budget_failures(list(budget_result())) -> integer(). budget_failures(Results) -> case Results of [] -> 0; [Result | Rest] -> case erlang:element(3, Result) of true -> budget_failures(Rest); false -> 1 + budget_failures(Rest) end end. -file("src/lightspeed/ops/overload_control.gleam", 396). ?DOC(" Runtime threshold accessor.\n"). -spec runtime_thresholds(runtime()) -> thresholds(). runtime_thresholds(Runtime) -> erlang:element(2, Runtime). -file("src/lightspeed/ops/overload_control.gleam", 401). ?DOC(" Runtime operator hook accessor.\n"). -spec runtime_hook(runtime()) -> operator_hook(). runtime_hook(Runtime) -> erlang:element(3, Runtime). -file("src/lightspeed/ops/overload_control.gleam", 416). ?DOC(" Telemetry metrics in stable order.\n"). -spec telemetry_metrics(runtime()) -> list(lightspeed@ops@telemetry:metric()). telemetry_metrics(Runtime) -> lists:reverse(erlang:element(6, Runtime)). -file("src/lightspeed/ops/overload_control.gleam", 620). -spec tenant_label(binary()) -> binary(). tenant_label(Tenant_id) -> case Tenant_id =:= <<""/utf8>> of true -> <<"none"/utf8>>; false -> Tenant_id end. -file("src/lightspeed/ops/overload_control.gleam", 479). ?DOC(" Stable signal label.\n"). -spec signal_label(overload_signal()) -> binary(). signal_label(Signal) -> <<<<<<<<<<<<<<"queue="/utf8, (erlang:integer_to_binary( erlang:element(2, Signal) ))/binary>>/binary, "|cadence="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(3, Signal)))/binary>>/binary, "|tenant="/utf8>>/binary, (tenant_label(erlang:element(4, Signal)))/binary>>/binary, "|tenant_budget="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(5, Signal)))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 491). ?DOC(" Stable threshold label.\n"). -spec thresholds_label(thresholds()) -> binary(). thresholds_label(Thresholds) -> <<<<<<<<<<<<<<<<<<<<<<"warn_queue="/utf8, (erlang:integer_to_binary( erlang:element( 2, Thresholds ) ))/binary>>/binary, ",critical_queue="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(3, Thresholds) ))/binary>>/binary, ",warn_cadence="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(4, Thresholds) ))/binary>>/binary, ",critical_cadence="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(5, Thresholds)))/binary>>/binary, ",warn_tenant="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(6, Thresholds)))/binary>>/binary, ",critical_tenant="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(7, Thresholds)))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 507). ?DOC(" Stable operator-hook label.\n"). -spec hook_label(operator_hook()) -> binary(). hook_label(Hook) -> <<<<<<<<<<<<<<<<<<<<(erlang:element(2, Hook))/binary, "|shed="/utf8>>/binary, (bool_label(erlang:element(3, Hook)))/binary>>/binary, "|throttle="/utf8>>/binary, (bool_label(erlang:element(4, Hook)))/binary>>/binary, "|tenant="/utf8>>/binary, (bool_label(erlang:element(5, Hook)))/binary>>/binary, "|read_only="/utf8>>/binary, (bool_label(erlang:element(6, Hook)))/binary>>/binary, "|rollback_window_ms="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(7, Hook)))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 522). ?DOC(" Stable audit-entry label.\n"). -spec audit_label(audit_entry()) -> binary(). audit_label(Entry) -> <<<<<<<<<<<<<<<<<<<<<<<<<<"actor="/utf8, (erlang:element(2, Entry))/binary>>/binary, "|mitigation="/utf8>>/binary, (mitigation_label( erlang:element(3, Entry) ))/binary>>/binary, "|decision="/utf8>>/binary, (decision_label( erlang:element(4, Entry) ))/binary>>/binary, "|status="/utf8>>/binary, (status_label(erlang:element(7, Entry)))/binary>>/binary, "|hook="/utf8>>/binary, (erlang:element(8, Entry))/binary>>/binary, "|at_ms="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(6, Entry)))/binary>>/binary, "|reason="/utf8>>/binary, (erlang:element(5, Entry))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 1130). -spec join_with(binary(), list(binary())) -> binary(). join_with(Separator, Values) -> case Values of [] -> <<""/utf8>>; [Value] -> Value; [Value@1 | Rest] -> <<<>/binary, (join_with(Separator, Rest))/binary>> end. -file("src/lightspeed/ops/overload_control.gleam", 540). ?DOC(" Stable runtime signature.\n"). -spec signature(runtime()) -> binary(). signature(Runtime) -> <<<<<<<<<<<<<<"thresholds="/utf8, (thresholds_label(erlang:element(2, Runtime)))/binary>>/binary, "|hook="/utf8>>/binary, (hook_label(erlang:element(3, Runtime)))/binary>>/binary, "|active="/utf8>>/binary, (join_with( <<","/utf8>>, gleam@list:map( active_mitigations(Runtime), fun mitigation_label/1 ) ))/binary>>/binary, "|audits="/utf8>>/binary, (join_with( <<";"/utf8>>, gleam@list:map(audit_entries(Runtime), fun audit_label/1) ))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 552). ?DOC(" Stable stress-scenario label.\n"). -spec stress_scenario_label(stress_scenario()) -> binary(). stress_scenario_label(Scenario) -> case Scenario of queue_depth_spike -> <<"queue_depth_spike"/utf8>>; cadence_storm -> <<"cadence_storm"/utf8>>; tenant_budget_hotspot -> <<"tenant_budget_hotspot"/utf8>>; combined_pressure -> <<"combined_pressure"/utf8>> end. -file("src/lightspeed/ops/overload_control.gleam", 562). ?DOC(" Stable stress-observation signature.\n"). -spec stress_observation_signature(stress_observation()) -> binary(). stress_observation_signature(Observation) -> <<<<<<<<<<<<<<<<<<<<<<<<(stress_scenario_label( erlang:element( 2, Observation ) ))/binary, ":peak_queue="/utf8>>/binary, (erlang:integer_to_binary( erlang:element( 3, Observation ) ))/binary>>/binary, ":peak_cadence="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(4, Observation) ))/binary>>/binary, ":peak_tenant_budget="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(5, Observation) ))/binary>>/binary, ":mitigations="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(6, Observation) ))/binary>>/binary, ":rollbacks="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(7, Observation)))/binary>>/binary, ":bounded="/utf8>>/binary, (bool_label(erlang:element(8, Observation)))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 579). ?DOC(" Stable stress-budget result signature.\n"). -spec budget_result_signature(budget_result()) -> binary(). budget_result_signature(Result) -> <<<<<<<<(stress_scenario_label(erlang:element(2, Result)))/binary, ":passed="/utf8>>/binary, (bool_label(erlang:element(3, Result)))/binary>>/binary, ":reason="/utf8>>/binary, (erlang:element(4, Result))/binary>>. -file("src/lightspeed/ops/overload_control.gleam", 606). ?DOC(" Audit entry decision accessor.\n"). -spec audit_decision(audit_entry()) -> decision(). audit_decision(Entry) -> erlang:element(4, Entry). -file("src/lightspeed/ops/overload_control.gleam", 611). ?DOC(" Audit entry mitigation accessor.\n"). -spec audit_mitigation(audit_entry()) -> mitigation(). audit_mitigation(Entry) -> erlang:element(3, Entry). -file("src/lightspeed/ops/overload_control.gleam", 616). ?DOC(" Stress observation scenario accessor.\n"). -spec stress_scenario(stress_observation()) -> stress_scenario(). stress_scenario(Observation) -> erlang:element(2, Observation).