Concord.Validation (Concord v2.0.0)

Copy Markdown View Source

Recursive validation for Raft command safety.

Walks any Elixir term to ensure it contains no anonymous functions, PIDs, ports, or references — values that break Raft determinism and serialization. Also enforces depth and size limits.

Summary

Functions

Walks a term recursively, rejecting non-serializable values.

Validates a transaction spec before Raft submission.

Functions

validate_term(term, max_depth \\ 100)

@spec validate_term(term(), non_neg_integer()) :: :ok | {:error, atom()}

Walks a term recursively, rejecting non-serializable values.

Returns :ok or {:error, reason}.

validate_txn_spec(spec)

@spec validate_txn_spec(map()) :: :ok | {:error, {:invalid_txn, atom()}}

Validates a transaction spec before Raft submission.

Checks structural correctness, limit compliance, and recursive safety.