-module(lightspeed@release@maturity_baseline). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/lightspeed/release/maturity_baseline.gleam"). -export([contributor_workflows/0, ga_1_x_baseline/0, beta_2_x_next_baseline/0, release_lines/0, line/1, contributor_operations/1, report_artifact/1, stage_label/1, versioning_signature/1, release_hygiene_signature/1, api_compatibility_signature/1, supply_chain_signature/1, contributor_operations_signature/1, signature/1, release_line_artifact_signatures/0, valid/1, maturity_policies_explicit/0, api_breakage_gates_enforced/0, supply_chain_hygiene_enforced/0, contributor_operations_standardized/0, snapshot_signature/0]). -export_type([maturity_stage/0, versioning_policy/0, release_hygiene_gate/0, api_compatibility_gate/0, supply_chain_gate/0, contributor_workflow/0, release_line_baseline/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(" Framework maturity and community operations baseline contracts for M47.\n"). -type maturity_stage() :: beta | g_a. -type versioning_policy() :: {versioning_policy, boolean(), boolean(), integer(), boolean(), boolean()}. -type release_hygiene_gate() :: {release_hygiene_gate, binary(), boolean(), binary()}. -type api_compatibility_gate() :: {api_compatibility_gate, binary(), binary(), boolean()}. -type supply_chain_gate() :: {supply_chain_gate, binary(), boolean(), binary()}. -type contributor_workflow() :: {contributor_workflow, binary(), list(binary()), binary()}. -type release_line_baseline() :: {release_line_baseline, binary(), maturity_stage(), versioning_policy(), list(release_hygiene_gate()), list(api_compatibility_gate()), list(supply_chain_gate()), list(contributor_workflow()), binary()}. -file("src/lightspeed/release/maturity_baseline.gleam", 220). ?DOC(" Contributor operations baseline.\n"). -spec contributor_workflows() -> list(contributor_workflow()). contributor_workflows() -> [{contributor_workflow, <<"issue_triage"/utf8>>, [<<"intake"/utf8>>, <<"severity_labeling"/utf8>>, <<"owner_assignment"/utf8>>, <<"milestone_routing"/utf8>>], <<"ops/community/issue_triage_audit.md"/utf8>>}, {contributor_workflow, <<"review_workflow"/utf8>>, [<<"rfc_adr_link_check"/utf8>>, <<"code_review"/utf8>>, <<"fixture_gate_review"/utf8>>, <<"approval"/utf8>>], <<"ops/community/review_audit.md"/utf8>>}, {contributor_workflow, <<"release_workflow"/utf8>>, [<<"release_plan"/utf8>>, <<"compatibility_check"/utf8>>, <<"supply_chain_gate"/utf8>>, <<"release_announcement"/utf8>>], <<"ops/community/release_audit.md"/utf8>>}]. -file("src/lightspeed/release/maturity_baseline.gleam", 66). ?DOC(" GA `1.x` maturity baseline.\n"). -spec ga_1_x_baseline() -> release_line_baseline(). ga_1_x_baseline() -> Release_policy = lightspeed@release@policy:ga_1_0_0(), Deprecation = lightspeed@release@policy:deprecation(Release_policy), {release_line_baseline, <<"1.x"/utf8>>, g_a, {versioning_policy, true, erlang:element(3, Deprecation), erlang:element(2, Deprecation), erlang:element(4, Deprecation), erlang:element(5, Deprecation)}, [{release_hygiene_gate, <<"release_checklist_attested"/utf8>>, true, <<"docs/release_checklist_1.0.0.md"/utf8>>}, {release_hygiene_gate, <<"compatibility_matrix_frozen"/utf8>>, true, <<"docs/compatibility_matrix_1.0.0.md"/utf8>>}, {release_hygiene_gate, <<"fixture_gates_green"/utf8>>, true, <<"make ci"/utf8>>}], [{api_compatibility_gate, <<"public_api_signature_diff"/utf8>>, <<"no_breaking_changes_without_major"/utf8>>, true}, {api_compatibility_gate, <<"protocol_version_guard"/utf8>>, <<"protocol_version_monotonic"/utf8>>, true}, {api_compatibility_gate, <<"patch_stream_guard"/utf8>>, <<"patch_stream_contract_stable"/utf8>>, true}], [{supply_chain_gate, <<"sbom_generated"/utf8>>, true, <<"release_artifacts/sbom.spdx.json"/utf8>>}, {supply_chain_gate, <<"license_audit_pass"/utf8>>, true, <<"reports/license_audit_latest.md"/utf8>>}, {supply_chain_gate, <<"critical_vuln_gate"/utf8>>, true, <<"reports/vuln_scan_latest.md"/utf8>>}, {supply_chain_gate, <<"artifact_provenance_attested"/utf8>>, true, <<"release_artifacts/provenance.intoto.jsonl"/utf8>>}], contributor_workflows(), <<"docs/reports/maturity_fixture_latest.md#release_line_1_x"/utf8>>}. -file("src/lightspeed/release/maturity_baseline.gleam", 142). ?DOC(" Beta `2.x-next` maturity baseline.\n"). -spec beta_2_x_next_baseline() -> release_line_baseline(). beta_2_x_next_baseline() -> {release_line_baseline, <<"2.x-next"/utf8>>, beta, {versioning_policy, true, true, 2, true, true}, [{release_hygiene_gate, <<"release_checklist_attested"/utf8>>, true, <<"docs/release_checklist_1.0.0.md"/utf8>>}, {release_hygiene_gate, <<"compatibility_matrix_updated"/utf8>>, true, <<"docs/compatibility_matrix_1.0.0.md"/utf8>>}, {release_hygiene_gate, <<"fixture_gates_green"/utf8>>, true, <<"make ci"/utf8>>}], [{api_compatibility_gate, <<"public_api_signature_diff"/utf8>>, <<"breaking_changes_require_rfc_and_major"/utf8>>, true}, {api_compatibility_gate, <<"protocol_version_guard"/utf8>>, <<"protocol_version_monotonic"/utf8>>, true}, {api_compatibility_gate, <<"patch_stream_guard"/utf8>>, <<"patch_stream_contract_stable"/utf8>>, true}], [{supply_chain_gate, <<"sbom_generated"/utf8>>, true, <<"release_artifacts/sbom.spdx.json"/utf8>>}, {supply_chain_gate, <<"license_audit_pass"/utf8>>, true, <<"reports/license_audit_latest.md"/utf8>>}, {supply_chain_gate, <<"critical_vuln_gate"/utf8>>, true, <<"reports/vuln_scan_latest.md"/utf8>>}, {supply_chain_gate, <<"artifact_provenance_attested"/utf8>>, true, <<"release_artifacts/provenance.intoto.jsonl"/utf8>>}], contributor_workflows(), <<"docs/reports/maturity_fixture_latest.md#release_line_2_x_next"/utf8>>}. -file("src/lightspeed/release/maturity_baseline.gleam", 215). ?DOC(" M47 release-line maturity baselines.\n"). -spec release_lines() -> list(release_line_baseline()). release_lines() -> [ga_1_x_baseline(), beta_2_x_next_baseline()]. -file("src/lightspeed/release/maturity_baseline.gleam", 256). ?DOC(" Release-line accessor.\n"). -spec line(release_line_baseline()) -> binary(). line(Baseline) -> erlang:element(2, Baseline). -file("src/lightspeed/release/maturity_baseline.gleam", 261). ?DOC(" Contributor operations accessor.\n"). -spec contributor_operations(release_line_baseline()) -> list(contributor_workflow()). contributor_operations(Baseline) -> erlang:element(8, Baseline). -file("src/lightspeed/release/maturity_baseline.gleam", 268). ?DOC(" Report artifact accessor.\n"). -spec report_artifact(release_line_baseline()) -> binary(). report_artifact(Baseline) -> erlang:element(9, Baseline). -file("src/lightspeed/release/maturity_baseline.gleam", 273). ?DOC(" Stable maturity-stage label.\n"). -spec stage_label(maturity_stage()) -> binary(). stage_label(Stage) -> case Stage of beta -> <<"beta"/utf8>>; g_a -> <<"ga"/utf8>> end. -file("src/lightspeed/release/maturity_baseline.gleam", 583). -spec bool_label(boolean()) -> binary(). bool_label(Value) -> case Value of true -> <<"true"/utf8>>; false -> <<"false"/utf8>> end. -file("src/lightspeed/release/maturity_baseline.gleam", 281). ?DOC(" Stable versioning signature.\n"). -spec versioning_signature(versioning_policy()) -> binary(). versioning_signature(Policy) -> <<<<<<<<<<<<<<<<<<"semver_required="/utf8, (bool_label(erlang:element(2, Policy)))/binary>>/binary, "|breaking_change_requires_major="/utf8>>/binary, (bool_label(erlang:element(3, Policy)))/binary>>/binary, "|warning_releases_before_removal="/utf8>>/binary, (erlang:integer_to_binary(erlang:element(4, Policy)))/binary>>/binary, "|migration_notes_required="/utf8>>/binary, (bool_label(erlang:element(5, Policy)))/binary>>/binary, "|rfc_adr_required="/utf8>>/binary, (bool_label(erlang:element(6, Policy)))/binary>>. -file("src/lightspeed/release/maturity_baseline.gleam", 551). -spec release_hygiene_gate_signature(release_hygiene_gate()) -> binary(). release_hygiene_gate_signature(Gate) -> <<<<<<<<(erlang:element(2, Gate))/binary, ":required="/utf8>>/binary, (bool_label(erlang:element(3, Gate)))/binary>>/binary, ":evidence="/utf8>>/binary, (erlang:element(4, Gate))/binary>>. -file("src/lightspeed/release/maturity_baseline.gleam", 590). -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/release/maturity_baseline.gleam", 295). ?DOC(" Stable release hygiene signature.\n"). -spec release_hygiene_signature(list(release_hygiene_gate())) -> binary(). release_hygiene_signature(Gates) -> join_with( <<";"/utf8>>, gleam@list:map(Gates, fun release_hygiene_gate_signature/1) ). -file("src/lightspeed/release/maturity_baseline.gleam", 559). -spec api_gate_signature(api_compatibility_gate()) -> binary(). api_gate_signature(Gate) -> <<<<<<<<(erlang:element(2, Gate))/binary, ":expected="/utf8>>/binary, (erlang:element(3, Gate))/binary>>/binary, ":strict="/utf8>>/binary, (bool_label(erlang:element(4, Gate)))/binary>>. -file("src/lightspeed/release/maturity_baseline.gleam", 300). ?DOC(" Stable API compatibility gate signature.\n"). -spec api_compatibility_signature(list(api_compatibility_gate())) -> binary(). api_compatibility_signature(Gates) -> join_with(<<";"/utf8>>, gleam@list:map(Gates, fun api_gate_signature/1)). -file("src/lightspeed/release/maturity_baseline.gleam", 567). -spec supply_chain_gate_signature(supply_chain_gate()) -> binary(). supply_chain_gate_signature(Gate) -> <<<<<<<<(erlang:element(2, Gate))/binary, ":required="/utf8>>/binary, (bool_label(erlang:element(3, Gate)))/binary>>/binary, ":evidence="/utf8>>/binary, (erlang:element(4, Gate))/binary>>. -file("src/lightspeed/release/maturity_baseline.gleam", 307). ?DOC(" Stable supply-chain gate signature.\n"). -spec supply_chain_signature(list(supply_chain_gate())) -> binary(). supply_chain_signature(Gates) -> join_with( <<";"/utf8>>, gleam@list:map(Gates, fun supply_chain_gate_signature/1) ). -file("src/lightspeed/release/maturity_baseline.gleam", 575). -spec contributor_workflow_signature(contributor_workflow()) -> binary(). contributor_workflow_signature(Workflow) -> <<<<<<<<(erlang:element(2, Workflow))/binary, ":stages="/utf8>>/binary, (join_with(<<","/utf8>>, erlang:element(3, Workflow)))/binary>>/binary, ":audit="/utf8>>/binary, (erlang:element(4, Workflow))/binary>>. -file("src/lightspeed/release/maturity_baseline.gleam", 312). ?DOC(" Stable contributor operations signature.\n"). -spec contributor_operations_signature(list(contributor_workflow())) -> binary(). contributor_operations_signature(Workflows) -> join_with( <<";"/utf8>>, gleam@list:map(Workflows, fun contributor_workflow_signature/1) ). -file("src/lightspeed/release/maturity_baseline.gleam", 319). ?DOC(" Stable release-line baseline signature.\n"). -spec signature(release_line_baseline()) -> binary(). signature(Baseline) -> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"line="/utf8, (erlang:element( 2, Baseline ))/binary>>/binary, "|stage="/utf8>>/binary, (stage_label( erlang:element( 3, Baseline ) ))/binary>>/binary, "|versioning="/utf8>>/binary, (versioning_signature( erlang:element(4, Baseline) ))/binary>>/binary, "|release_hygiene="/utf8>>/binary, (release_hygiene_signature( erlang:element(5, Baseline) ))/binary>>/binary, "|api_compatibility="/utf8>>/binary, (api_compatibility_signature( erlang:element(6, Baseline) ))/binary>>/binary, "|supply_chain="/utf8>>/binary, (supply_chain_signature(erlang:element(7, Baseline)))/binary>>/binary, "|contributor_operations="/utf8>>/binary, (contributor_operations_signature(erlang:element(8, Baseline)))/binary>>/binary, "|artifact="/utf8>>/binary, (erlang:element(9, Baseline))/binary>>. -file("src/lightspeed/release/maturity_baseline.gleam", 339). ?DOC(" Release-line artifact signatures for M47 reports.\n"). -spec release_line_artifact_signatures() -> list(binary()). release_line_artifact_signatures() -> gleam@list:map( release_lines(), fun(Item) -> <<<<(erlang:element(2, Item))/binary, ":"/utf8>>/binary, (erlang:element(9, Item))/binary>> end ). -file("src/lightspeed/release/maturity_baseline.gleam", 476). -spec contributor_workflow_valid(contributor_workflow()) -> boolean(). contributor_workflow_valid(Workflow) -> ((erlang:element(2, Workflow) /= <<""/utf8>>) andalso (erlang:element( 4, Workflow ) /= <<""/utf8>>)) andalso (erlang:element(3, Workflow) /= []). -file("src/lightspeed/release/maturity_baseline.gleam", 465). -spec contributor_operations_valid_continue(list(contributor_workflow())) -> boolean(). contributor_operations_valid_continue(Workflows) -> case Workflows of [] -> true; [Workflow | Rest] -> contributor_workflow_valid(Workflow) andalso contributor_operations_valid_continue( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 456). -spec contributor_operations_valid(list(contributor_workflow())) -> boolean(). contributor_operations_valid(Workflows) -> case Workflows of [] -> false; [Workflow | Rest] -> contributor_workflow_valid(Workflow) andalso contributor_operations_valid_continue( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 452). -spec supply_chain_gate_valid(supply_chain_gate()) -> boolean(). supply_chain_gate_valid(Gate) -> ((erlang:element(2, Gate) /= <<""/utf8>>) andalso erlang:element(3, Gate)) andalso (erlang:element(4, Gate) /= <<""/utf8>>). -file("src/lightspeed/release/maturity_baseline.gleam", 444). -spec supply_chain_valid_continue(list(supply_chain_gate())) -> boolean(). supply_chain_valid_continue(Gates) -> case Gates of [] -> true; [Gate | Rest] -> supply_chain_gate_valid(Gate) andalso supply_chain_valid_continue( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 436). -spec supply_chain_valid(list(supply_chain_gate())) -> boolean(). supply_chain_valid(Gates) -> case Gates of [] -> false; [Gate | Rest] -> supply_chain_gate_valid(Gate) andalso supply_chain_valid_continue( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 432). -spec api_gate_valid(api_compatibility_gate()) -> boolean(). api_gate_valid(Gate) -> ((erlang:element(2, Gate) /= <<""/utf8>>) andalso (erlang:element(3, Gate) /= <<""/utf8>>)) andalso erlang:element(4, Gate). -file("src/lightspeed/release/maturity_baseline.gleam", 425). -spec api_gates_valid_continue(list(api_compatibility_gate())) -> boolean(). api_gates_valid_continue(Gates) -> case Gates of [] -> true; [Gate | Rest] -> api_gate_valid(Gate) andalso api_gates_valid_continue(Rest) end. -file("src/lightspeed/release/maturity_baseline.gleam", 418). -spec api_gates_valid(list(api_compatibility_gate())) -> boolean(). api_gates_valid(Gates) -> case Gates of [] -> false; [Gate | Rest] -> api_gate_valid(Gate) andalso api_gates_valid_continue(Rest) end. -file("src/lightspeed/release/maturity_baseline.gleam", 414). -spec release_gate_valid(release_hygiene_gate()) -> boolean(). release_gate_valid(Gate) -> ((erlang:element(2, Gate) /= <<""/utf8>>) andalso erlang:element(3, Gate)) andalso (erlang:element(4, Gate) /= <<""/utf8>>). -file("src/lightspeed/release/maturity_baseline.gleam", 406). -spec release_hygiene_valid_continue(list(release_hygiene_gate())) -> boolean(). release_hygiene_valid_continue(Gates) -> case Gates of [] -> true; [Gate | Rest] -> release_gate_valid(Gate) andalso release_hygiene_valid_continue( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 398). -spec release_hygiene_valid(list(release_hygiene_gate())) -> boolean(). release_hygiene_valid(Gates) -> case Gates of [] -> false; [Gate | Rest] -> release_gate_valid(Gate) andalso release_hygiene_valid_continue( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 390). -spec versioning_policy_valid(versioning_policy()) -> boolean(). versioning_policy_valid(Policy) -> (((erlang:element(2, Policy) andalso erlang:element(3, Policy)) andalso (erlang:element( 4, Policy ) >= 2)) andalso erlang:element(5, Policy)) andalso erlang:element(6, Policy). -file("src/lightspeed/release/maturity_baseline.gleam", 346). ?DOC(" Validate one release-line maturity baseline.\n"). -spec valid(release_line_baseline()) -> boolean(). valid(Baseline) -> ((((((erlang:element(2, Baseline) /= <<""/utf8>>) andalso (erlang:element( 9, Baseline ) /= <<""/utf8>>)) andalso versioning_policy_valid(erlang:element(4, Baseline))) andalso release_hygiene_valid(erlang:element(5, Baseline))) andalso api_gates_valid(erlang:element(6, Baseline))) andalso supply_chain_valid(erlang:element(7, Baseline))) andalso contributor_operations_valid(erlang:element(8, Baseline)). -file("src/lightspeed/release/maturity_baseline.gleam", 480). -spec baselines_valid(list(release_line_baseline())) -> boolean(). baselines_valid(Values) -> case Values of [] -> true; [Value | Rest] -> valid(Value) andalso baselines_valid(Rest) end. -file("src/lightspeed/release/maturity_baseline.gleam", 357). ?DOC(" Check all release lines have explicit maturity policies.\n"). -spec maturity_policies_explicit() -> boolean(). maturity_policies_explicit() -> baselines_valid(release_lines()) andalso (erlang:length(release_lines()) =:= 2). -file("src/lightspeed/release/maturity_baseline.gleam", 496). -spec api_gates_all_strict(list(api_compatibility_gate())) -> boolean(). api_gates_all_strict(Values) -> case Values of [] -> true; [Value | Rest] -> erlang:element(4, Value) andalso api_gates_all_strict(Rest) end. -file("src/lightspeed/release/maturity_baseline.gleam", 487). -spec all_api_gates_strict(list(release_line_baseline())) -> boolean(). all_api_gates_strict(Values) -> case Values of [] -> true; [Value | Rest] -> api_gates_all_strict(erlang:element(6, Value)) andalso all_api_gates_strict( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 362). ?DOC(" Check API breakage gates are strict and explicit.\n"). -spec api_breakage_gates_enforced() -> boolean(). api_breakage_gates_enforced() -> all_api_gates_strict(release_lines()). -file("src/lightspeed/release/maturity_baseline.gleam", 512). -spec supply_chain_all_required(list(supply_chain_gate())) -> boolean(). supply_chain_all_required(Values) -> case Values of [] -> true; [Value | Rest] -> erlang:element(3, Value) andalso supply_chain_all_required(Rest) end. -file("src/lightspeed/release/maturity_baseline.gleam", 503). -spec all_supply_chain_required(list(release_line_baseline())) -> boolean(). all_supply_chain_required(Values) -> case Values of [] -> true; [Value | Rest] -> supply_chain_all_required(erlang:element(7, Value)) andalso all_supply_chain_required( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 367). ?DOC(" Check supply-chain hygiene gates are required across release lines.\n"). -spec supply_chain_hygiene_enforced() -> boolean(). supply_chain_hygiene_enforced() -> all_supply_chain_required(release_lines()). -file("src/lightspeed/release/maturity_baseline.gleam", 542). -spec all_workflow_audits_present(list(contributor_workflow())) -> boolean(). all_workflow_audits_present(Workflows) -> case Workflows of [] -> true; [Workflow | Rest] -> gleam_stdlib:string_starts_with( erlang:element(4, Workflow), <<"ops/community/"/utf8>> ) andalso all_workflow_audits_present(Rest) end. -file("src/lightspeed/release/maturity_baseline.gleam", 533). -spec workflows_have_audit_artifacts(list(release_line_baseline())) -> boolean(). workflows_have_audit_artifacts(Values) -> case Values of [] -> true; [Value | Rest] -> all_workflow_audits_present(erlang:element(8, Value)) andalso workflows_have_audit_artifacts( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 528). -spec workflow_names_match(list(contributor_workflow())) -> boolean(). workflow_names_match(Workflows) -> Names = gleam@list:map( Workflows, fun(Workflow) -> erlang:element(2, Workflow) end ), Names =:= [<<"issue_triage"/utf8>>, <<"review_workflow"/utf8>>, <<"release_workflow"/utf8>>]. -file("src/lightspeed/release/maturity_baseline.gleam", 519). -spec all_workflows_standardized(list(release_line_baseline())) -> boolean(). all_workflows_standardized(Values) -> case Values of [] -> true; [Value | Rest] -> workflow_names_match(erlang:element(8, Value)) andalso all_workflows_standardized( Rest ) end. -file("src/lightspeed/release/maturity_baseline.gleam", 372). ?DOC(" Check contributor operations are standardized.\n"). -spec contributor_operations_standardized() -> boolean(). contributor_operations_standardized() -> all_workflows_standardized(release_lines()) andalso workflows_have_audit_artifacts( release_lines() ). -file("src/lightspeed/release/maturity_baseline.gleam", 378). ?DOC(" Deterministic M47 snapshot signature.\n"). -spec snapshot_signature() -> binary(). snapshot_signature() -> Line_signatures = gleam@list:map(release_lines(), fun signature/1), Artifacts = release_line_artifact_signatures(), <<<<<<<<<<"m47.maturity.v"/utf8, (erlang:integer_to_binary(1))/binary>>/binary, "|lines="/utf8>>/binary, (join_with(<<";"/utf8>>, Line_signatures))/binary>>/binary, "|artifacts="/utf8>>/binary, (join_with(<<";"/utf8>>, Artifacts))/binary>>.