CharterAgreementProtocol.Error (Charter Agreement Protocol v0.1.0)

Copy Markdown View Source

CAP never authorizes.

Value-free typed failure returned by the protocol codecs.

subject is built from protocol-owned names, never from rejected input. The implemented code vocabulary is closed and architecture-gated in both directions: an undeclared emission and a declared-but-unemitted code both fail the build.

Summary

Functions

The complete implemented error-code vocabulary.

Whether a value is a declared error code.

Construct a declared value-free error. Unknown codes fail loudly.

Types

code()

@type code() ::
  :base64url_invalid
  | :base64url_padded
  | :invalid_syntax
  | :invalid_encoding
  | :invalid_number
  | :number_not_double_expressible
  | :duplicate_member
  | :trailing_bytes
  | :invalid_type
  | :non_canonical_bytes
  | :integer_magnitude
  | :digest_algorithm_unsupported
  | :digest_encoding_invalid
  | :digest_mismatch
  | :invalid_limits
  | :limit_exceeded
  | :unknown_member
  | :missing_required
  | :constraint_violation
  | :cardinality_violation
  | :nested_invalid
  | :cross_field_invalid
  | :corpus_index_invalid
  | :corpus_case_invalid
  | :corpus_hash_mismatch
  | :corpus_file_set_mismatch
  | :corpus_case_id_duplicate
  | :corpus_count_mismatch
  | :corpus_applicability_incomplete
  | :corpus_empty
  | :timestamp_invalid
  | :compact_invalid
  | :protected_header_invalid
  | :signature_invalid
  | :descriptor_invalid
  | :descriptor_key_invalid
  | :descriptor_chain_invalid
  | :revision_invalid
  | :acceptance_invalid
  | :acceptance_claims_mismatch
  | :acceptance_equivocation_invalid
  | :termination_invalid
  | :termination_claims_mismatch
  | :chain_invalid
  | :governing_invalid
  | :receipt_invalid
  | :receipt_claims_mismatch
  | :extension_namespace_invalid
  | :extension_duplicate
  | :extension_unknown_critical
  | :extension_criticality_conflict
  | :extension_retired
  | :extension_schema_unavailable
  | :extension_schema_digest_mismatch
  | :extension_scope_invalid
  | :signing_input_invalid
  | :signing_refused

detail()

@type detail() :: nil | atom() | binary()

subject()

@type subject() :: [binary() | non_neg_integer()]

t()

@type t() :: %CharterAgreementProtocol.Error{
  code: code(),
  detail: detail(),
  subject: subject()
}

Functions

codes()

@spec codes() :: [code()]

The complete implemented error-code vocabulary.

declared?(code)

@spec declared?(term()) :: boolean()

Whether a value is a declared error code.

new(code, subject \\ [], detail \\ nil)

@spec new(code(), subject(), detail()) :: t()

Construct a declared value-free error. Unknown codes fail loudly.