-module(lightspeed@ops@data_ergonomics_harness). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/lightspeed/ops/data_ergonomics_harness.gleam"). -export([pass_fail_label/1, run_scenario/1, run_matrix/0, profile_version_label/0, scenario_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 ORM/data ergonomics parity harness for M57.\n"). -type scenario() :: crud_and_dashboard_ergonomics_coverage | nested_changeset_validation_propagation | unit_of_work_and_optimistic_concurrency_contracts | query_diagnostics_regression_signals | regression_gate_determinism. -type scenario_outcome() :: {scenario_outcome, scenario(), boolean(), boolean(), binary()}. -type report() :: {report, list(scenario_outcome()), integer(), integer()}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 418). -spec count_nondeterministic(list(scenario_outcome())) -> integer(). count_nondeterministic(Outcomes) -> _pipe = Outcomes, _pipe@1 = gleam@list:filter( _pipe, fun(Outcome) -> not erlang:element(4, Outcome) end ), erlang:length(_pipe@1). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 412). -spec count_failed(list(scenario_outcome())) -> integer(). count_failed(Outcomes) -> _pipe = Outcomes, _pipe@1 = gleam@list:filter( _pipe, fun(Outcome) -> not erlang:element(3, Outcome) end ), erlang:length(_pipe@1). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 95). ?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/data_ergonomics_harness.gleam", 327). -spec evaluate_query_diagnostics_regression_signals() -> {boolean(), binary()}. evaluate_query_diagnostics_regression_signals() -> Noisy = begin _pipe = lightspeed@data_ergonomics:query_shape( <<"dashboard_posts"/utf8>>, 120, 8, 190, <<"trace-m57-a"/utf8>> ), lightspeed@data_ergonomics:diagnose_query(_pipe) end, Healthy = begin _pipe@1 = lightspeed@data_ergonomics:query_shape( <<"dashboard_posts"/utf8>>, 120, 2, 45, <<"trace-m57-b"/utf8>> ), lightspeed@data_ergonomics:diagnose_query(_pipe@1) end, Noisy_signature = lightspeed@data_ergonomics:diagnostics_signature(Noisy), Healthy_signature = lightspeed@data_ergonomics:diagnostics_signature( Healthy ), Passed = (Noisy_signature =:= <<"n_plus_one:dashboard_posts:statements=8;slow_query:dashboard_posts:latency_ms=190;trace_correlated:trace-m57-a:query=dashboard_posts"/utf8>>) andalso (Healthy_signature =:= <<"trace_correlated:trace-m57-b:query=dashboard_posts"/utf8>>), {Passed, <<<<<<"noisy="/utf8, Noisy_signature/binary>>/binary, "|healthy="/utf8>>/binary, Healthy_signature/binary>>}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 431). -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) -> <<<>/binary, Value/binary>> end ) end. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 395). -spec published_changeset(binary()) -> lightspeed@data_ergonomics:changeset(). published_changeset(Title) -> lightspeed@data_ergonomics:changeset( <<"article"/utf8>>, [lightspeed@data_ergonomics:text_field( <<"title"/utf8>>, Title, [required, {min_length, 3}] ), lightspeed@data_ergonomics:text_field( <<"status"/utf8>>, <<"published"/utf8>>, [required] ), lightspeed@data_ergonomics:int_field( <<"views"/utf8>>, 10, [{min_int, 0}] )], [] ). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 380). -spec draft_changeset(binary()) -> lightspeed@data_ergonomics:changeset(). draft_changeset(Title) -> lightspeed@data_ergonomics:changeset( <<"article"/utf8>>, [lightspeed@data_ergonomics:text_field( <<"title"/utf8>>, Title, [required, {min_length, 3}] ), lightspeed@data_ergonomics:text_field( <<"status"/utf8>>, <<"draft"/utf8>>, [required] ), lightspeed@data_ergonomics:int_field( <<"views"/utf8>>, 0, [{min_int, 0}] )], [] ). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 267). -spec evaluate_unit_of_work_and_optimistic_concurrency_contracts() -> {boolean(), binary()}. evaluate_unit_of_work_and_optimistic_concurrency_contracts() -> Runtime = lightspeed@data_ergonomics:new_runtime(), {Runtime@2, Created@1} = case lightspeed@data_ergonomics:create( Runtime, draft_changeset(<<"Article A"/utf8>>) ) of {ok, {Runtime@1, Created}} -> {Runtime@1, Created}; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"lightspeed/ops/data_ergonomics_harness"/utf8>>, function => <<"evaluate_unit_of_work_and_optimistic_concurrency_contracts"/utf8>>, line => 272, value => _assert_fail, start => 7419, 'end' => 7521, pattern_start => 7430, pattern_end => 7453}) end, Failing_uow = lightspeed@data_ergonomics:unit_of_work( <<"fail-fast"/utf8>>, [{update_from_changeset, erlang:element(2, Created@1), 0, published_changeset(<<"Article A"/utf8>>)}, {create_from_changeset, published_changeset(<<"Article B"/utf8>>)}] ), Failed_label = case lightspeed@data_ergonomics:run_unit_of_work( Runtime@2, Failing_uow ) of {error, Error} -> lightspeed@data_ergonomics:unit_of_work_error_label(Error); {ok, _} -> <<"unexpected_success"/utf8>> end, Successful_uow = lightspeed@data_ergonomics:unit_of_work( <<"success"/utf8>>, [{update_from_changeset, erlang:element(2, Created@1), erlang:element(3, Created@1), published_changeset(<<"Article A"/utf8>>)}, {create_from_changeset, published_changeset(<<"Article B"/utf8>>)}] ), {Passed, Success_label} = case lightspeed@data_ergonomics:run_unit_of_work( Runtime@2, Successful_uow ) of {error, Error@1} -> {false, lightspeed@data_ergonomics:unit_of_work_error_label(Error@1)}; {ok, {Next_runtime, Signatures}} -> {(Signatures =:= [<<"update:row-1:rev=2"/utf8>>, <<"create:row-2:rev=1"/utf8>>]) andalso (lightspeed@data_ergonomics:dashboard_signature( lightspeed@data_ergonomics:dashboard_summary(Next_runtime) ) =:= <<"total=2:draft=0:published=2:stale=0"/utf8>>), <<"signatures="/utf8, (join_with(<<","/utf8>>, Signatures))/binary>>} end, {Passed andalso (Failed_label =:= <<"operation_failed:1:concurrency_conflict:row-1:expected=0:actual=1"/utf8>>), <<<<<<"failed="/utf8, Failed_label/binary>>/binary, "|success="/utf8>>/binary, Success_label/binary>>}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 233). -spec evaluate_nested_changeset_validation_propagation() -> {boolean(), binary()}. evaluate_nested_changeset_validation_propagation() -> Validated = begin _pipe = lightspeed@data_ergonomics:changeset( <<"invoice"/utf8>>, [lightspeed@data_ergonomics:text_field( <<"customer_name"/utf8>>, <<"ab"/utf8>>, [required, {min_length, 3}] )], [lightspeed@data_ergonomics:changeset( <<"line_item"/utf8>>, [lightspeed@data_ergonomics:empty_field( <<"sku"/utf8>>, [required] ), lightspeed@data_ergonomics:int_field( <<"quantity"/utf8>>, -1, [{min_int, 1}] )], [] )] ), lightspeed@data_ergonomics:validate_changeset(_pipe) end, Signature = lightspeed@data_ergonomics:changeset_error_signature(Validated), Passed = ((not lightspeed@data_ergonomics:changeset_valid(Validated) andalso gleam_stdlib:contains_string( Signature, <<"min_length:customer_name:3"/utf8>> )) andalso gleam_stdlib:contains_string( Signature, <<"nested:line_item:required:sku"/utf8>> )) andalso gleam_stdlib:contains_string( Signature, <<"nested:line_item:min_int:quantity:1"/utf8>> ), {Passed, Signature}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 204). -spec evaluate_crud_and_dashboard_ergonomics_coverage() -> {boolean(), binary()}. evaluate_crud_and_dashboard_ergonomics_coverage() -> Runtime = lightspeed@data_ergonomics:new_runtime(), {Runtime@2, Created_a@1} = case lightspeed@data_ergonomics:create( Runtime, draft_changeset(<<"Draft A"/utf8>>) ) of {ok, {Runtime@1, Created_a}} -> {Runtime@1, Created_a}; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"lightspeed/ops/data_ergonomics_harness"/utf8>>, function => <<"evaluate_crud_and_dashboard_ergonomics_coverage"/utf8>>, line => 206, value => _assert_fail, start => 5399, 'end' => 5501, pattern_start => 5410, pattern_end => 5435}) end, Runtime@4 = case lightspeed@data_ergonomics:create( Runtime@2, published_changeset(<<"Published B"/utf8>>) ) of {ok, {Runtime@3, _}} -> Runtime@3; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"lightspeed/ops/data_ergonomics_harness"/utf8>>, function => <<"evaluate_crud_and_dashboard_ergonomics_coverage"/utf8>>, line => 208, value => _assert_fail@1, start => 5504, 'end' => 5615, pattern_start => 5515, pattern_end => 5541}) end, {Runtime@6, Updated_a@1} = case lightspeed@data_ergonomics:update( Runtime@4, erlang:element(2, Created_a@1), erlang:element(3, Created_a@1), published_changeset(<<"Published A"/utf8>>) ) of {ok, {Runtime@5, Updated_a}} -> {Runtime@5, Updated_a}; _assert_fail@2 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"lightspeed/ops/data_ergonomics_harness"/utf8>>, function => <<"evaluate_crud_and_dashboard_ergonomics_coverage"/utf8>>, line => 210, value => _assert_fail@2, start => 5618, 'end' => 5793, pattern_start => 5629, pattern_end => 5654}) end, Dashboard = lightspeed@data_ergonomics:dashboard_summary(Runtime@6), Passed = ((erlang:element(3, Updated_a@1) =:= 2) andalso (lightspeed@data_ergonomics:dashboard_signature( Dashboard ) =:= <<"total=2:draft=0:published=2:stale=0"/utf8>>)) andalso gleam_stdlib:contains_string( lightspeed@data_ergonomics:runtime_signature(Runtime@6), <<"rows=2"/utf8>> ), {Passed, <<<<<<"runtime="/utf8, (lightspeed@data_ergonomics:runtime_signature(Runtime@6))/binary>>/binary, "|dashboard="/utf8>>/binary, (lightspeed@data_ergonomics:dashboard_signature(Dashboard))/binary>>}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 344). -spec evaluate_regression_gate_determinism() -> {boolean(), binary()}. evaluate_regression_gate_determinism() -> Crud = run_scenario(crud_and_dashboard_ergonomics_coverage), Nested = run_scenario(nested_changeset_validation_propagation), Uow = run_scenario(unit_of_work_and_optimistic_concurrency_contracts), Diagnostics = run_scenario(query_diagnostics_regression_signals), Passed = ((((((erlang:element(3, Crud) andalso erlang:element(3, Nested)) andalso erlang:element(3, Uow)) andalso erlang:element(3, Diagnostics)) andalso erlang:element(4, Crud)) andalso erlang:element(4, Nested)) andalso erlang:element(4, Uow)) andalso erlang:element(4, Diagnostics), {Passed, <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"crud="/utf8, (pass_fail_label( Crud ))/binary>>/binary, ":"/utf8>>/binary, (erlang:element( 5, Crud ))/binary>>/binary, "|nested="/utf8>>/binary, (pass_fail_label(Nested))/binary>>/binary, ":"/utf8>>/binary, (erlang:element(5, Nested))/binary>>/binary, "|uow="/utf8>>/binary, (pass_fail_label(Uow))/binary>>/binary, ":"/utf8>>/binary, (erlang:element(5, Uow))/binary>>/binary, "|diagnostics="/utf8>>/binary, (pass_fail_label(Diagnostics))/binary>>/binary, ":"/utf8>>/binary, (erlang:element(5, Diagnostics))/binary>>}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 190). -spec evaluate(scenario()) -> {boolean(), binary()}. evaluate(Scenario) -> case Scenario of crud_and_dashboard_ergonomics_coverage -> evaluate_crud_and_dashboard_ergonomics_coverage(); nested_changeset_validation_propagation -> evaluate_nested_changeset_validation_propagation(); unit_of_work_and_optimistic_concurrency_contracts -> evaluate_unit_of_work_and_optimistic_concurrency_contracts(); query_diagnostics_regression_signals -> evaluate_query_diagnostics_regression_signals(); regression_gate_determinism -> evaluate_regression_gate_determinism() end. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 60). ?DOC(" Run one M57 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/data_ergonomics_harness.gleam", 41). ?DOC(" Run all M57 scenarios.\n"). -spec run_matrix() -> report(). run_matrix() -> Outcomes = begin _pipe = [crud_and_dashboard_ergonomics_coverage, nested_changeset_validation_propagation, unit_of_work_and_optimistic_concurrency_contracts, query_diagnostics_regression_signals, regression_gate_determinism], gleam@list:map(_pipe, fun run_scenario/1) end, {report, Outcomes, count_failed(Outcomes), count_nondeterministic(Outcomes)}. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 76). ?DOC(" M57 profile version label.\n"). -spec profile_version_label() -> binary(). profile_version_label() -> <<"m57.profile.v"/utf8, (erlang:integer_to_binary(1))/binary>>. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 81). ?DOC(" Scenario label.\n"). -spec scenario_label(scenario()) -> binary(). scenario_label(Scenario) -> case Scenario of crud_and_dashboard_ergonomics_coverage -> <<"crud_and_dashboard_ergonomics_coverage"/utf8>>; nested_changeset_validation_propagation -> <<"nested_changeset_validation_propagation"/utf8>>; unit_of_work_and_optimistic_concurrency_contracts -> <<"unit_of_work_and_optimistic_concurrency_contracts"/utf8>>; query_diagnostics_regression_signals -> <<"query_diagnostics_regression_signals"/utf8>>; regression_gate_determinism -> <<"regression_gate_determinism"/utf8>> end. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 103). ?DOC(" Scenario signature accessor.\n"). -spec signature(scenario_outcome()) -> binary(). signature(Outcome) -> erlang:element(5, Outcome). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 108). ?DOC(" Scenario accessor.\n"). -spec scenario(scenario_outcome()) -> scenario(). scenario(Outcome) -> erlang:element(2, Outcome). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 113). ?DOC(" Determinism accessor.\n"). -spec deterministic(scenario_outcome()) -> boolean(). deterministic(Outcome) -> erlang:element(4, Outcome). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 118). ?DOC(" Report outcomes accessor.\n"). -spec outcomes(report()) -> list(scenario_outcome()). outcomes(Report) -> erlang:element(2, Report). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 123). ?DOC(" Failed scenario count.\n"). -spec failed_scenarios(report()) -> integer(). failed_scenarios(Report) -> erlang:element(3, Report). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 128). ?DOC(" Nondeterministic scenario count.\n"). -spec nondeterministic_failures(report()) -> integer(). nondeterministic_failures(Report) -> erlang:element(4, Report). -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 424). -spec bool_label(boolean()) -> binary(). bool_label(Value) -> case Value of true -> <<"true"/utf8>>; false -> <<"false"/utf8>> end. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 133). ?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/data_ergonomics_harness.gleam", 149). ?DOC(" Deterministic snapshot signature for M57 fixture drift gates.\n"). -spec snapshot_signature() -> binary(). snapshot_signature() -> <<<<<<"m57.snapshot.v"/utf8, (erlang:integer_to_binary(1))/binary>>/binary, "|"/utf8>>/binary, (report_signature(run_matrix()))/binary>>. -file("src/lightspeed/ops/data_ergonomics_harness.gleam", 157). ?DOC(" Deterministic markdown report for M57 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, <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"# Data Ergonomics Fixture Report\n\n"/utf8, "snapshot_version: "/utf8>>/binary, (erlang:integer_to_binary( 1 ))/binary>>/binary, "\n"/utf8>>/binary, "profile_version: "/utf8>>/binary, (profile_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>>.