Current section

Files

Jump to
caffeine_lang src caffeine_lang@standard_library@artifacts.erl
Raw

src/caffeine_lang@standard_library@artifacts.erl

-module(caffeine_lang@standard_library@artifacts).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/standard_library/artifacts.gleam").
-export([slo_params/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.
-file("src/caffeine_lang/standard_library/artifacts.gleam", 16).
?DOC(" Returns the hardcoded standard library SLO params.\n").
-spec slo_params() -> gleam@dict:dict(binary(), caffeine_lang@linker@slo_params:param_info()).
slo_params() ->
maps:from_list(
[{<<"threshold"/utf8>>,
{param_info,
{primitive_type, {numeric_type, percentage}},
<<"Target percentage (e.g., 99.9%)"/utf8>>}},
{<<"window_in_days"/utf8>>,
{param_info,
{modifier_type,
{defaulted,
{refinement_type,
{inclusive_range,
{primitive_type, {numeric_type, integer}},
<<"1"/utf8>>,
<<"90"/utf8>>}},
<<"30"/utf8>>}},
<<"Rolling window for measurement (1-90 days)"/utf8>>}},
{<<"indicators"/utf8>>,
{param_info,
{collection_type,
{dict,
{primitive_type, string},
{primitive_type, string}}},
<<"Named SLI measurement expressions"/utf8>>}},
{<<"evaluation"/utf8>>,
{param_info,
{primitive_type, string},
<<"How to evaluate indicators as an SLI"/utf8>>}},
{<<"tags"/utf8>>,
{param_info,
{modifier_type,
{optional,
{collection_type,
{dict,
{primitive_type, string},
{primitive_type, string}}}}},
<<"An optional set of tags to append to the SLO artifact"/utf8>>}},
{<<"runbook"/utf8>>,
{param_info,
{modifier_type,
{optional, {primitive_type, {semantic_type, u_r_l}}}},
<<"An optional runbook URL surfaced via the SLO description"/utf8>>}},
{<<"below_ms"/utf8>>,
{param_info,
{modifier_type,
{optional, {primitive_type, {numeric_type, float}}}},
<<"Latency threshold in milliseconds (from `below <duration>` clause on Guarantees, time_slice expectations only)"/utf8>>}},
{<<"depends_on"/utf8>>,
{param_info,
{modifier_type,
{optional,
{record_type,
maps:from_list(
[{<<"hard"/utf8>>,
{modifier_type,
{optional,
{collection_type,
{list,
{primitive_type,
string}}}}}},
{<<"soft"/utf8>>,
{modifier_type,
{optional,
{collection_type,
{list,
{primitive_type,
string}}}}}}]
)}}},
<<"Optional soft and hard dependency declarations for dependency mapping"/utf8>>}}]
).