-module(lightspeed@ops@render_churn_harness). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/lightspeed/ops/render_churn_harness.gleam"). -export([budget_failures/1, default_budget/0, evaluate_budget/2, metrics_signature/1, run_scenario/1, run_matrix/0, budget_version_label/0, scenario_label/1, pass_fail_label/1, signature/1, deterministic/1, scenario/1, baseline_metrics/1, optimized_metrics/1, outcomes/1, budget_results/1, failed_scenarios/1, nondeterministic_failures/1, failed_budgets/1, report_signature/1, snapshot_signature/0, snapshot_report_markdown/0]). -export_type([scenario/0, metrics/0, scenario_outcome/0, budget/0, budget_result/0, report/0, metric_reduction/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 render-churn reduction harness for M36.\n"). -type scenario() :: counter_burst_traffic | stream_burst_traffic | form_burst_traffic. -type metrics() :: {metrics, integer(), integer(), integer(), integer(), integer(), integer(), integer()}. -type scenario_outcome() :: {scenario_outcome, scenario(), boolean(), boolean(), binary(), metrics(), metrics()}. -type budget() :: {budget, scenario(), integer(), integer(), integer()}. -type budget_result() :: {budget_result, scenario(), boolean(), binary()}. -type report() :: {report, list(scenario_outcome()), list(budget_result()), integer(), integer(), integer()}. -type metric_reduction() :: {metric_reduction, integer(), integer(), integer()}. -file("src/lightspeed/ops/render_churn_harness.gleam", 149). ?DOC(" Count failing 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/render_churn_harness.gleam", 933). -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/render_churn_harness.gleam", 922). -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/render_churn_harness.gleam", 117). ?DOC(" Default deterministic M36 budget profile.\n"). -spec default_budget() -> list(budget()). default_budget() -> [{budget, counter_burst_traffic, 500, 20, 0}, {budget, stream_burst_traffic, 2000, 0, 200}, {budget, form_burst_traffic, 500, 20, 0}]. -file("src/lightspeed/ops/render_churn_harness.gleam", 975). -spec bool_label(boolean()) -> binary(). bool_label(Value) -> case Value of true -> <<"true"/utf8>>; false -> <<"false"/utf8>> end. -file("src/lightspeed/ops/render_churn_harness.gleam", 360). -spec metric_reductions(metrics(), metrics()) -> metric_reduction(). metric_reductions(Baseline, Optimized) -> {metric_reduction, erlang:element(4, Baseline) - erlang:element(4, Optimized), erlang:element(6, Baseline) - erlang:element(6, Optimized), erlang:element(3, Baseline) - erlang:element(3, Optimized)}. -file("src/lightspeed/ops/render_churn_harness.gleam", 908). -spec find_outcome(list(scenario_outcome()), scenario()) -> {ok, scenario_outcome()} | {error, nil}. find_outcome(Outcomes, Scenario) -> case Outcomes of [] -> {error, nil}; [Outcome | Rest] -> case erlang:element(2, Outcome) =:= Scenario of true -> {ok, Outcome}; false -> find_outcome(Rest, Scenario) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 868). -spec evaluate_one_budget(list(scenario_outcome()), budget()) -> budget_result(). evaluate_one_budget(Outcomes, Budget) -> case find_outcome(Outcomes, erlang:element(2, Budget)) of {error, nil} -> {budget_result, erlang:element(2, Budget), false, <<"missing_scenario"/utf8>>}; {ok, Outcome} -> Reductions = metric_reductions( erlang:element(6, Outcome), erlang:element(7, Outcome) ), Passed_bytes = erlang:element(2, Reductions) >= erlang:element( 3, Budget ), Passed_root = erlang:element(3, Reductions) >= erlang:element( 4, Budget ), Passed_patch_count = erlang:element(4, Reductions) >= erlang:element( 5, Budget ), Passed = (Passed_bytes andalso Passed_root) andalso Passed_patch_count, {budget_result, erlang:element(2, Budget), Passed, case Passed of true -> <<"within_budget"/utf8>>; false -> <<<<<<<<<<"bytes="/utf8, (bool_label(Passed_bytes))/binary>>/binary, ",root_churn="/utf8>>/binary, (bool_label(Passed_root))/binary>>/binary, ",patch_count="/utf8>>/binary, (bool_label(Passed_patch_count))/binary>> end} end. -file("src/lightspeed/ops/render_churn_harness.gleam", 853). -spec evaluate_budget_loop( list(scenario_outcome()), list(budget()), list(budget_result()) ) -> list(budget_result()). evaluate_budget_loop(Outcomes, Budgets, Results_rev) -> case Budgets of [] -> lists:reverse(Results_rev); [Budget | Rest] -> evaluate_budget_loop( Outcomes, Rest, [evaluate_one_budget(Outcomes, Budget) | Results_rev] ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 141). ?DOC(" Evaluate outcomes against budgets.\n"). -spec evaluate_budget(list(scenario_outcome()), list(budget())) -> list(budget_result()). evaluate_budget(Outcomes, Budgets) -> evaluate_budget_loop(Outcomes, Budgets, []). -file("src/lightspeed/ops/render_churn_harness.gleam", 228). ?DOC(" Stable metrics signature.\n"). -spec metrics_signature(metrics()) -> binary(). metrics_signature(Metrics) -> <<<<<<<<<<<<<<<<<<<<<<<<<<"events="/utf8, (erlang:integer_to_binary( erlang:element( 2, Metrics ) ))/binary>>/binary, ":patches="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(3, Metrics) ))/binary>>/binary, ":bytes="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(4, Metrics) ))/binary>>/binary, ":avg="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(5, Metrics) ))/binary>>/binary, ":root_churn="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(6, Metrics)))/binary>>/binary, ":keyed="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(7, Metrics)))/binary>>/binary, ":reorder="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(8, Metrics)))/binary>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 370). -spec scenario_improved(scenario(), metrics(), metrics(), metric_reduction()) -> boolean(). scenario_improved(Scenario, Baseline, Optimized, Reductions) -> case Scenario of counter_burst_traffic -> ((erlang:element(2, Reductions) > 0) andalso (erlang:element( 3, Reductions ) > 0)) andalso (erlang:element(5, Optimized) < erlang:element(5, Baseline)); stream_burst_traffic -> (((erlang:element(2, Reductions) > 0) andalso (erlang:element( 4, Reductions ) > 0)) andalso (erlang:element(8, Optimized) > 0)) andalso (erlang:element(6, Optimized) =:= 0); form_burst_traffic -> ((erlang:element(2, Reductions) > 0) andalso (erlang:element( 3, Reductions ) > 0)) andalso (erlang:element(5, Optimized) < erlang:element(5, Baseline)) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 842). -spec count_reorder_ops(list(lightspeed@diff:patch()), integer()) -> integer(). count_reorder_ops(Patches, Count) -> case Patches of [] -> Count; [Patch | Rest] -> case Patch of {reorder_keyed, _, _} -> count_reorder_ops(Rest, Count + 1); _ -> count_reorder_ops(Rest, Count) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 829). -spec count_keyed_ops(list(lightspeed@diff:patch()), integer()) -> integer(). count_keyed_ops(Patches, Count) -> case Patches of [] -> Count; [Patch | Rest] -> case Patch of {upsert_keyed, _, _, _} -> count_keyed_ops(Rest, Count + 1); {remove_keyed, _, _} -> count_keyed_ops(Rest, Count + 1); {reorder_keyed, _, _} -> count_keyed_ops(Rest, Count + 1); _ -> count_keyed_ops(Rest, Count) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 814). -spec count_root_churn(list(lightspeed@diff:patch()), integer()) -> integer(). count_root_churn(Patches, Count) -> case Patches of [] -> Count; [Patch | Rest] -> case Patch of {replace, _, _} -> count_root_churn(Rest, Count + 1); {append, _, _} -> count_root_churn(Rest, Count + 1); {prepend, _, _} -> count_root_churn(Rest, Count + 1); {remove, _} -> count_root_churn(Rest, Count + 1); {replace_segments, _, _, _, _} -> count_root_churn(Rest, Count + 1); _ -> count_root_churn(Rest, Count) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 961). -spec max_int(integer(), integer()) -> integer(). max_int(Left, Right) -> case Left >= Right of true -> Left; false -> Right end. -file("src/lightspeed/ops/render_churn_harness.gleam", 954). -spec divide_safe(integer(), integer()) -> integer(). divide_safe(Numerator, Denominator) -> case Denominator =< 0 of true -> 0; false -> case Denominator of 0 -> 0; Gleam@denominator -> Numerator div Gleam@denominator end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 806). -spec sum_patch_bytes(list(lightspeed@diff:patch()), integer()) -> integer(). sum_patch_bytes(Patches, Total) -> case Patches of [] -> Total; [Patch | Rest] -> sum_patch_bytes( Rest, Total + string:length(lightspeed@diff:encode(Patch)) ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 786). -spec metrics_from_patches(integer(), list(lightspeed@diff:patch())) -> metrics(). metrics_from_patches(Total_events, Patches) -> Total_patches = erlang:length(Patches), Total_patch_bytes = sum_patch_bytes(Patches, 0), Avg_patch_bytes = divide_safe(Total_patch_bytes, max_int(Total_patches, 1)), {metrics, Total_events, Total_patches, Total_patch_bytes, Avg_patch_bytes, count_root_churn(Patches, 0), count_keyed_ops(Patches, 0), count_reorder_ops(Patches, 0)}. -file("src/lightspeed/ops/render_churn_harness.gleam", 720). -spec set_form_value( list({binary(), binary()}), binary(), binary(), list({binary(), binary()}) ) -> list({binary(), binary()}). set_form_value(Values, Field, Value, Updated_rev) -> case Values of [] -> lists:reverse(Updated_rev); [{Name, Existing} | Rest] -> case Name =:= Field of true -> set_form_value( Rest, Field, Value, [{Name, Value} | Updated_rev] ); false -> set_form_value( Rest, Field, Value, [{Name, Existing} | Updated_rev] ) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 716). -spec form_value(binary(), integer()) -> binary(). form_value(Field, Index) -> <<<>/binary, (erlang:integer_to_binary(Index))/binary>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 707). -spec form_field(integer()) -> binary(). form_field(Index) -> case Index rem 4 of 0 -> <<"title"/utf8>>; 1 -> <<"status"/utf8>>; 2 -> <<"priority"/utf8>>; _ -> <<"search"/utf8>> end. -file("src/lightspeed/ops/render_churn_harness.gleam", 764). -spec form_slots( list({binary(), binary()}), list(lightspeed@diff:dynamic_slot()) ) -> list(lightspeed@diff:dynamic_slot()). form_slots(Values, Slots_rev) -> case Values of [] -> lists:reverse(Slots_rev); [{Name, Value} | Rest] -> form_slots(Rest, [lightspeed@diff:slot(Name, Value) | Slots_rev]) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 755). -spec form_static_html() -> binary(). form_static_html() -> <<<<<<<<<<"
"/utf8, ""/utf8>>/binary, ""/utf8>>/binary, ""/utf8>>/binary, ""/utf8>>/binary, "
"/utf8>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 657). -spec optimized_form_patches( integer(), integer(), list({binary(), binary()}), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). optimized_form_patches(Max_event, Index, Values, Patches_rev) -> case Index > Max_event of true -> lists:reverse(Patches_rev); false -> case Index =:= 1 of true -> Field = form_field(Index), Next_values = set_form_value( Values, Field, form_value(Field, Index), [] ), Slot = lightspeed@diff:slot(Field, form_value(Field, Index)), optimized_form_patches( Max_event, Index + 1, Next_values, [{update_segments, <<"#form"/utf8>>, <<"form.burst.v1"/utf8>>, [Slot]}, {replace_segments, <<"#form"/utf8>>, <<"form.burst.v1"/utf8>>, form_static_html(), form_slots(Values, [])} | Patches_rev] ); false -> Field@1 = form_field(Index), Value = form_value(Field@1, Index), Next_values@1 = set_form_value(Values, Field@1, Value, []), optimized_form_patches( Max_event, Index + 1, Next_values@1, [{update_segments, <<"#form"/utf8>>, <<"form.burst.v1"/utf8>>, [lightspeed@diff:slot(Field@1, Value)]} | Patches_rev] ) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 632). -spec default_form_values() -> list({binary(), binary()}). default_form_values() -> [{<<"title"/utf8>>, <<""/utf8>>}, {<<"status"/utf8>>, <<""/utf8>>}, {<<"priority"/utf8>>, <<""/utf8>>}, {<<"search"/utf8>>, <<""/utf8>>}]. -file("src/lightspeed/ops/render_churn_harness.gleam", 624). -spec optimized_form_metrics() -> metrics(). optimized_form_metrics() -> Events = 48, Initial = default_form_values(), Patches = optimized_form_patches(Events, 1, Initial, []), metrics_from_patches(Events, Patches). -file("src/lightspeed/ops/render_churn_harness.gleam", 944). -spec prepend_patches( list(lightspeed@diff:patch()), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). prepend_patches(Values, Acc) -> case Values of [] -> Acc; [Value | Rest] -> prepend_patches(Rest, [Value | Acc]) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 601). -spec stream_id(binary(), integer()) -> binary(). stream_id(Prefix, Index) -> <<<>/binary, (erlang:integer_to_binary(Index))/binary>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 605). -spec stream_html(binary(), integer()) -> binary(). stream_html(Prefix, Index) -> <<<<<<<<"
  • >/binary, "\">"/utf8>>/binary, (stream_id(Prefix, Index))/binary>>/binary, "
  • "/utf8>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 540). -spec run_stream_optimized( integer(), integer(), lightspeed@stream:stream(), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). run_stream_optimized(Max_event, Index, Runtime, Patches_rev) -> case Index > Max_event of true -> lists:reverse(Patches_rev); false -> Entry = lightspeed@stream:item( stream_id(<<"burst"/utf8>>, Index), stream_html(<<"burst"/utf8>>, Index) ), {Next_runtime, Patches} = lightspeed@stream:stream_insert( Runtime, Entry, 0, none ), run_stream_optimized( Max_event, Index + 1, Next_runtime, prepend_patches(Patches, Patches_rev) ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 501). -spec initial_stream_entries( integer(), integer(), list(lightspeed@stream:stream_item()) ) -> list(lightspeed@stream:stream_item()). initial_stream_entries(Max_index, Index, Entries_rev) -> case Index > Max_index of true -> lists:reverse(Entries_rev); false -> initial_stream_entries( Max_index, Index + 1, [lightspeed@stream:item( stream_id(<<"seed"/utf8>>, Index), stream_html(<<"seed"/utf8>>, Index) ) | Entries_rev] ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 487). -spec optimized_stream_metrics() -> metrics(). optimized_stream_metrics() -> Events = 20, Seed = lightspeed@stream:new(<<"#feed"/utf8>>), {Seed@1, _} = lightspeed@stream:stream( Seed, initial_stream_entries(40, 1, []), begin _pipe = lightspeed@stream:options(), lightspeed@stream:with_reset(_pipe, true) end ), Patches = run_stream_optimized(Events, 1, Seed@1, []), metrics_from_patches(Events, Patches). -file("src/lightspeed/ops/render_churn_harness.gleam", 470). -spec counter_static_html() -> binary(). counter_static_html() -> <<"
    "/utf8>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 438). -spec optimized_counter_patches( integer(), integer(), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). optimized_counter_patches(Max_step, Step, Patches_rev) -> case Step > Max_step of true -> lists:reverse(Patches_rev); false -> case Step =:= 0 of true -> optimized_counter_patches( Max_step, 1, [{replace_segments, <<"#counter"/utf8>>, <<"counter.burst.v1"/utf8>>, counter_static_html(), [lightspeed@diff:slot( <<"counter"/utf8>>, <<"0"/utf8>> )]} | Patches_rev] ); false -> optimized_counter_patches( Max_step, Step + 1, [{update_segments, <<"#counter"/utf8>>, <<"counter.burst.v1"/utf8>>, [lightspeed@diff:slot( <<"counter"/utf8>>, erlang:integer_to_binary(Step) )]} | Patches_rev] ) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 417). -spec optimized_counter_metrics() -> metrics(). optimized_counter_metrics() -> Events = 64, Patches = optimized_counter_patches(Events, 0, []), metrics_from_patches(Events, Patches). -file("src/lightspeed/ops/render_churn_harness.gleam", 403). -spec optimized_metrics_for_scenario(scenario()) -> metrics(). optimized_metrics_for_scenario(Scenario) -> case Scenario of counter_burst_traffic -> optimized_counter_metrics(); stream_burst_traffic -> optimized_stream_metrics(); form_burst_traffic -> optimized_form_metrics() end. -file("src/lightspeed/ops/render_churn_harness.gleam", 775). -spec field_value(list({binary(), binary()}), binary()) -> binary(). field_value(Values, Field) -> case Values of [] -> <<""/utf8>>; [{Name, Value} | Rest] -> case Name =:= Field of true -> Value; false -> field_value(Rest, Field) end end. -file("src/lightspeed/ops/render_churn_harness.gleam", 738). -spec form_html(list({binary(), binary()})) -> binary(). form_html(Values) -> <<<<<<<<<<<<<<<<<<<<<<<<<<"
    "/utf8, ""/utf8>>/binary, ""/utf8>>/binary, ""/utf8>>/binary, ""/utf8>>/binary, "
    "/utf8>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 636). -spec baseline_form_patches( integer(), integer(), list({binary(), binary()}), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). baseline_form_patches(Max_event, Index, Values, Patches_rev) -> case Index > Max_event of true -> lists:reverse(Patches_rev); false -> Field = form_field(Index), Next_values = set_form_value( Values, Field, form_value(Field, Index), [] ), baseline_form_patches( Max_event, Index + 1, Next_values, [{replace, <<"#form"/utf8>>, form_html(Next_values)} | Patches_rev] ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 613). -spec baseline_form_metrics() -> metrics(). baseline_form_metrics() -> Events = 48, Initial = default_form_values(), Patches = baseline_form_patches( Events, 1, Initial, [{replace, <<"#form"/utf8>>, form_html(Initial)}] ), metrics_from_patches(Events, Patches). -file("src/lightspeed/ops/render_churn_harness.gleam", 588). -spec legacy_upsert_all(binary(), list(lightspeed@stream:stream_item())) -> list(lightspeed@diff:patch()). legacy_upsert_all(Target, Current) -> case Current of [] -> []; [{stream_item, Id, Html} | Rest] -> [{upsert_keyed, Target, Id, Html} | legacy_upsert_all(Target, Rest)] end. -file("src/lightspeed/ops/render_churn_harness.gleam", 575). -spec legacy_remove_all(binary(), list(lightspeed@stream:stream_item())) -> list(lightspeed@diff:patch()). legacy_remove_all(Target, Previous) -> case Previous of [] -> []; [{stream_item, Id, _} | Rest] -> [{remove_keyed, Target, Id} | legacy_remove_all(Target, Rest)] end. -file("src/lightspeed/ops/render_churn_harness.gleam", 968). -spec concat(list(lightspeed@diff:patch()), list(lightspeed@diff:patch())) -> list(lightspeed@diff:patch()). concat(Left, Right) -> case Left of [] -> Right; [Head | Rest] -> [Head | concat(Rest, Right)] end. -file("src/lightspeed/ops/render_churn_harness.gleam", 564). -spec legacy_full_reset_patches( binary(), list(lightspeed@stream:stream_item()), list(lightspeed@stream:stream_item()) ) -> list(lightspeed@diff:patch()). legacy_full_reset_patches(Target, Previous, Current) -> concat( legacy_remove_all(Target, Previous), legacy_upsert_all(Target, Current) ). -file("src/lightspeed/ops/render_churn_harness.gleam", 516). -spec run_stream_baseline( integer(), integer(), list(lightspeed@stream:stream_item()), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). run_stream_baseline(Max_event, Index, Previous, Patches_rev) -> case Index > Max_event of true -> lists:reverse(Patches_rev); false -> Next_entry = lightspeed@stream:item( stream_id(<<"burst"/utf8>>, Index), stream_html(<<"burst"/utf8>>, Index) ), Current = [Next_entry | Previous], Patches = legacy_full_reset_patches( <<"#feed"/utf8>>, Previous, Current ), run_stream_baseline( Max_event, Index + 1, Current, prepend_patches(Patches, Patches_rev) ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 480). -spec baseline_stream_metrics() -> metrics(). baseline_stream_metrics() -> Events = 20, Baseline = run_stream_baseline( Events, 1, initial_stream_entries(40, 1, []), [] ), metrics_from_patches(Events, Baseline). -file("src/lightspeed/ops/render_churn_harness.gleam", 474). -spec counter_html(integer()) -> binary(). counter_html(Value) -> <<<<"
    "/utf8>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 423). -spec baseline_counter_patches( integer(), integer(), list(lightspeed@diff:patch()) ) -> list(lightspeed@diff:patch()). baseline_counter_patches(Max_step, Step, Patches_rev) -> case Step > Max_step of true -> lists:reverse(Patches_rev); false -> baseline_counter_patches( Max_step, Step + 1, [{replace, <<"#counter"/utf8>>, counter_html(Step)} | Patches_rev] ) end. -file("src/lightspeed/ops/render_churn_harness.gleam", 411). -spec baseline_counter_metrics() -> metrics(). baseline_counter_metrics() -> Events = 64, Patches = baseline_counter_patches(Events, 0, []), metrics_from_patches(Events, Patches). -file("src/lightspeed/ops/render_churn_harness.gleam", 395). -spec baseline_metrics_for_scenario(scenario()) -> metrics(). baseline_metrics_for_scenario(Scenario) -> case Scenario of counter_burst_traffic -> baseline_counter_metrics(); stream_burst_traffic -> baseline_stream_metrics(); form_burst_traffic -> baseline_form_metrics() end. -file("src/lightspeed/ops/render_churn_harness.gleam", 340). -spec evaluate(scenario()) -> {boolean(), metrics(), metrics(), binary()}. evaluate(Scenario) -> Baseline = baseline_metrics_for_scenario(Scenario), Optimized = optimized_metrics_for_scenario(Scenario), Reductions = metric_reductions(Baseline, Optimized), Passed = scenario_improved(Scenario, Baseline, Optimized, Reductions), Signature = <<<<<<<<<<<<<<<<<<"baseline="/utf8, (metrics_signature(Baseline))/binary>>/binary, "|optimized="/utf8>>/binary, (metrics_signature(Optimized))/binary>>/binary, "|delta_bytes="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(2, Reductions)))/binary>>/binary, "|delta_root_churn="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(3, Reductions)))/binary>>/binary, "|delta_patches="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(4, Reductions)))/binary>>, {Passed, Baseline, Optimized, Signature}. -file("src/lightspeed/ops/render_churn_harness.gleam", 89). ?DOC(" Run one scenario twice and require deterministic parity.\n"). -spec run_scenario(scenario()) -> scenario_outcome(). run_scenario(Scenario) -> {First_passed, First_baseline, First_optimized, First_signature} = evaluate( Scenario ), {Second_passed, Second_baseline, Second_optimized, Second_signature} = evaluate( Scenario ), Deterministic = (((First_passed =:= Second_passed) andalso (First_signature =:= Second_signature)) andalso (First_baseline =:= Second_baseline)) andalso (First_optimized =:= Second_optimized), Passed = (First_passed andalso Second_passed) andalso Deterministic, {scenario_outcome, Scenario, Passed, Deterministic, First_signature, First_baseline, First_optimized}. -file("src/lightspeed/ops/render_churn_harness.gleam", 73). ?DOC(" Run all M36 scenarios and evaluate budgets.\n"). -spec run_matrix() -> report(). run_matrix() -> Outcomes = begin _pipe = [counter_burst_traffic, stream_burst_traffic, form_burst_traffic], gleam@list:map(_pipe, fun run_scenario/1) end, Budget_results = evaluate_budget(Outcomes, default_budget()), {report, Outcomes, Budget_results, count_failed(Outcomes), count_nondeterministic(Outcomes), budget_failures(Budget_results)}. -file("src/lightspeed/ops/render_churn_harness.gleam", 112). ?DOC(" M36 budget profile version label.\n"). -spec budget_version_label() -> binary(). budget_version_label() -> <<"m36.budget.v"/utf8, (erlang:integer_to_binary(1))/binary>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 161). ?DOC(" Scenario label.\n"). -spec scenario_label(scenario()) -> binary(). scenario_label(Scenario) -> case Scenario of counter_burst_traffic -> <<"counter_burst_traffic"/utf8>>; stream_burst_traffic -> <<"stream_burst_traffic"/utf8>>; form_burst_traffic -> <<"form_burst_traffic"/utf8>> end. -file("src/lightspeed/ops/render_churn_harness.gleam", 170). ?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/render_churn_harness.gleam", 178). ?DOC(" Outcome signature accessor.\n"). -spec signature(scenario_outcome()) -> binary(). signature(Outcome) -> erlang:element(5, Outcome). -file("src/lightspeed/ops/render_churn_harness.gleam", 183). ?DOC(" Determinism accessor.\n"). -spec deterministic(scenario_outcome()) -> boolean(). deterministic(Outcome) -> erlang:element(4, Outcome). -file("src/lightspeed/ops/render_churn_harness.gleam", 188). ?DOC(" Scenario accessor.\n"). -spec scenario(scenario_outcome()) -> scenario(). scenario(Outcome) -> erlang:element(2, Outcome). -file("src/lightspeed/ops/render_churn_harness.gleam", 193). ?DOC(" Baseline metrics accessor.\n"). -spec baseline_metrics(scenario_outcome()) -> metrics(). baseline_metrics(Outcome) -> erlang:element(6, Outcome). -file("src/lightspeed/ops/render_churn_harness.gleam", 198). ?DOC(" Optimized metrics accessor.\n"). -spec optimized_metrics(scenario_outcome()) -> metrics(). optimized_metrics(Outcome) -> erlang:element(7, Outcome). -file("src/lightspeed/ops/render_churn_harness.gleam", 203). ?DOC(" Report outcomes accessor.\n"). -spec outcomes(report()) -> list(scenario_outcome()). outcomes(Report) -> erlang:element(2, Report). -file("src/lightspeed/ops/render_churn_harness.gleam", 208). ?DOC(" Report budget-results accessor.\n"). -spec budget_results(report()) -> list(budget_result()). budget_results(Report) -> erlang:element(3, Report). -file("src/lightspeed/ops/render_churn_harness.gleam", 213). ?DOC(" Failed scenario count.\n"). -spec failed_scenarios(report()) -> integer(). failed_scenarios(Report) -> erlang:element(4, Report). -file("src/lightspeed/ops/render_churn_harness.gleam", 218). ?DOC(" Nondeterministic failures count.\n"). -spec nondeterministic_failures(report()) -> integer(). nondeterministic_failures(Report) -> erlang:element(5, Report). -file("src/lightspeed/ops/render_churn_harness.gleam", 223). ?DOC(" Failed budget count.\n"). -spec failed_budgets(report()) -> integer(). failed_budgets(Report) -> erlang:element(6, Report). -file("src/lightspeed/ops/render_churn_harness.gleam", 982). -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/render_churn_harness.gleam", 246). ?DOC(" Stable report signature.\n"). -spec report_signature(report()) -> binary(). report_signature(Report) -> Outcome_entries = gleam@list:map( erlang:element(2, Report), fun(Outcome) -> Reductions = metric_reductions( erlang:element(6, Outcome), erlang:element(7, 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, ":baseline="/utf8>>/binary, (metrics_signature( erlang:element( 6, Outcome ) ))/binary>>/binary, ":optimized="/utf8>>/binary, (metrics_signature( erlang:element(7, Outcome) ))/binary>>/binary, ":delta_bytes="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(2, Reductions) ))/binary>>/binary, ":delta_root_churn="/utf8>>/binary, (erlang:integer_to_binary( erlang:element(3, Reductions) ))/binary>>/binary, ":delta_patches="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(4, Reductions)))/binary>>/binary, ":"/utf8>>/binary, (erlang:element(5, Outcome))/binary>> end ), Budget_entries = gleam@list:map( erlang:element(3, Report), fun(Result) -> <<<<<<<<(scenario_label(erlang:element(2, Result)))/binary, "="/utf8>>/binary, (bool_label(erlang:element(3, Result)))/binary>>/binary, ":"/utf8>>/binary, (erlang:element(4, Result))/binary>> end ), <<<<<<"outcomes="/utf8, (join_with(<<";"/utf8>>, Outcome_entries))/binary>>/binary, "|budgets="/utf8>>/binary, (join_with(<<";"/utf8>>, Budget_entries))/binary>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 285). ?DOC(" Deterministic snapshot signature for M36 drift gates.\n"). -spec snapshot_signature() -> binary(). snapshot_signature() -> <<<<<<"m36.snapshot.v"/utf8, (erlang:integer_to_binary(1))/binary>>/binary, "|"/utf8>>/binary, (report_signature(run_matrix()))/binary>>. -file("src/lightspeed/ops/render_churn_harness.gleam", 293). ?DOC(" Deterministic markdown report for M36 fixture scripts.\n"). -spec snapshot_report_markdown() -> binary(). snapshot_report_markdown() -> Report = run_matrix(), Failed = failed_scenarios(Report), Nondeterministic = nondeterministic_failures(Report), Failed_budget_checks = failed_budgets(Report), Status = case ((Failed =:= 0) andalso (Nondeterministic =:= 0)) andalso (Failed_budget_checks =:= 0) of true -> <<"OK"/utf8>>; false -> <<"FAIL"/utf8>> end, <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"# Render Churn 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"/utf8>>/binary, "failed_budgets: "/utf8>>/binary, (erlang:integer_to_binary( Failed_budget_checks ))/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>>.