-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] ->
<<<<Value@1/binary, Separator/binary>>/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>>.