Snodo.Protocol.Profile (snodo v0.1.0)

Copy Markdown View Source

Immutable, exact-revision protocol facts used by admission and support reports.

A profile catalogs one pinned revision and distinguishes implemented rules from known-but-unsupported rules. Admission executes only the implemented subset; catalog completeness is not a claim of full conformance.

Summary

Types

batching()

@type batching() :: :allowed | :forbidden

metadata_policy()

@type metadata_policy() :: %{
  request: :required | :optional,
  notification: :required | :optional
}

scope()

@type scope() :: :complete | :implemented_slice

status()

@type status() :: :released | :experimental | :deprecated

t()

@type t() :: %Snodo.Protocol.Profile{
  batching: batching(),
  capabilities: [String.t()],
  era: :session | :stateless,
  limitations: %{optional(atom()) => atom() | String.t()},
  methods: [Snodo.Protocol.Profile.Method.t()],
  request_metadata: metadata_policy(),
  scope: scope(),
  specification: String.t(),
  status: status(),
  transports: %{optional(atom()) => transport_status()},
  version: String.t()
}

transport_status()

@type transport_status() :: :tested | :implemented | :unsupported | :unmeasured