Crosswake.Commerce.Reconciliation (crosswake v0.1.0)

View Source

Typed backend-owned reconciliation vocabulary for commerce.

This module encodes the canonical flow:

  1. Device/native evidence enters Phoenix.
  2. Phoenix records a reconciliation attempt.
  3. Host-owned workers verify it.
  4. Backend publishes a refreshed authoritative entitlement snapshot.

These states represent reconciliation or freshness outcomes, not automatic access grants or silent denials. Device success is evidence, not entitlement.

Summary

Types

outcome()

@type outcome() ::
  :pending_purchase
  | :pending_restore
  | :awaiting_verification
  | :projection_refreshed
  | :conflict
  | :verification_failed
  | :stale_authority

Functions

authority_mutation_allowed_from_evidence?(reconciliation_evidence)

@spec authority_mutation_allowed_from_evidence?(
  Crosswake.Commerce.Contracts.ReconciliationEvidence.t()
) ::
  false

ingest_evidence(evidence, opts \\ [])

@spec ingest_evidence(
  Crosswake.Commerce.Contracts.ReconciliationEvidence.t(),
  keyword()
) ::
  {:ok, Crosswake.Commerce.Reconciliation.EvidenceResult.t()} | {:error, term()}

outcome_implies_access_granted?(state)

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

outcome_implies_authority_grant?(state)

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

outcome_vocabulary()

@spec outcome_vocabulary() :: [outcome()]

reconciliation_outcome?(state)

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

unresolved_outcome?(state)

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

workflow_reporting_outcome?(state)

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