Crosswake.ReleaseStatus (crosswake v0.2.1)

View Source

Reads Crosswake's release graph and reports local package-family release readiness.

This is intentionally repository-local by default. Pass live?: true to add best-effort public registry probes for Hex, Maven Central, and the iOS SwiftPM mirror.

Summary

Functions

aggregate_status(checks)

build(opts \\ [])

@spec build(keyword()) :: map()

exit_code(arg1)

probe_with_retry(fun, attempts \\ 3, sleep_ms \\ 200)

@spec probe_with_retry((-> map()), pos_integer(), non_neg_integer()) :: map()

Runs a live probe up to attempts times, returning the first REAL answer.

A real answer is anything other than :unavailable — :ok and :missing are both definite results from the registry, so the first one short-circuits immediately. Only when every attempt fails to get an answer is the result classified :unavailable.

This is what makes the release.live_registry_presence / release.live_registry_unverifiable split honest: an :unavailable that survived three attempts is a real unknown, not a single network hiccup misreported as a missing release.

It lives on the REAL probes (git_ref_live_probe/2, http_live_probe/2), not between build/1 and the http_probe:/git_ref_probe: injection seam — a fixture-driven test must not retry its own fakes three times.

render(status)

@spec render(map()) :: String.t()