Rindle.Capability (Rindle v0.1.5)

Copy Markdown View Source

Aggregates Rindle runtime capability surfaces for ops/doctor consumers.

Phase 33 ships the aggregator function only. Phase 36 (MUX-16) refactors mix rindle.doctor to consume report/0.

Security invariant 14

report/0 returns booleans and module names — NEVER actual configuration values. signed_playback_configured? is a presence check on the Rindle.Streaming.Provider.Mux config keys; it does NOT echo the keys back. The function uses Application.get_env/2, which returns [] when nothing is configured, so it does not crash when the optional :mux dep is absent.

Summary

Types

Locked report shape per Phase 33 D-30.

Functions

Returns the subset of profiles that select Rindle.Storage.GCS as their storage adapter.

Returns the subset of profiles that opt into the :streaming delivery key.

Types

report()

@type report() :: %{
  storage: %{required(module()) => [atom()]},
  processor: %{required(module()) => [atom()]},
  streaming: %{
    providers: %{required(module()) => [atom()]},
    signed_playback_configured?: boolean(),
    configured_profiles: [module()]
  }
}

Locked report shape per Phase 33 D-30.

Functions

configured_gcs_profiles(profiles)

@spec configured_gcs_profiles([module()]) :: [module()]

Returns the subset of profiles that select Rindle.Storage.GCS as their storage adapter.

Public seam used by mix rindle.doctor's GCS checks (Phase 37 / D-13) as the single source of truth for "is this profile GCS-enabled?". Mirrors configured_streaming_profiles/1 (Phase 36 / MUX-16) — both delegate from runtime_checks.ex so the doctor module never inlines profile-filter logic.

configured_streaming_profiles(profiles)

@spec configured_streaming_profiles([module()]) :: [module()]

Returns the subset of profiles that opt into the :streaming delivery key.

Public seam used by mix rindle.doctor's streaming checks (Phase 36 / MUX-16) as the single source of truth for "is this profile streaming-enabled?". The predicate is identity with the inner report/0 filter — both call streaming_config_for/1 via delivery_policy/0.

report()

@spec report() :: report()