open-standards/openpay/crates/op-core/src/lib.rs
Transaction Science a437feb8ab Parallel ingest: 9 issues' worth of work across openpay / smart-byte / eoc
openpay/
  compliance/                     PCI-DSS readiness package (scope-map,
                                  pci-zero-architecture, hsm-kms-guidance,
                                  qsa-checklist), citing PCI-DSS v4.0.1
                                  requirements. (#1)
  examples/pci-zero/              Runnable example demonstrating a deployment
                                  where merchant code never touches a PAN. (#1)
  crates/op-core/                 Tokenized<Card> typestate + NetworkToken
                                  + CardNetwork + Cryptogram. (#2)
  crates/op-rails-card/network_token/
                                  NetworkTokenProvider trait + VTS adapter
                                  + MDES adapter, with deterministic stubs
                                  behind a 'live' feature flag. (#2)
  crates/op-driver-sdk/conformance/network_token.rs
                                  Conformance harness for third-party
                                  NetworkTokenProvider implementations. (#2)
  crates/op-cli/src/ledger/       'openpay ledger as-of' subcommand for
                                  bi-temporal queries. (#3)
  crates/op-orchestrator/src/telemetry.rs
                                  OpenTelemetry span emission per
                                  Payment<S> transition with semantic-
                                  conventions tags. (#3)
  docs/observability/             Grafana dashboard JSON + wiring guide
                                  for the bi-temporal ledger lens. (#3)

smart-byte/
  smart-byte-rs/                  Rust reference implementation: envelope
                                  encode/decode (canonical CBOR + BLAKE3
                                  content addressing), Ed25519 sign +
                                  verify, lockstep BFT commit MVP, Iroh
                                  transport scaffold, CLI. (#4)
  spec/identity_and_key_rotation.md
                                  Adopts KERI SAIDs + key-event log
                                  format; explicitly does not adopt ACDC
                                  chaining wholesale. (#5)
  conformance/v1/                 21 test vectors covering canonicalisation,
                                  SAID computation, signature verification,
                                  lockstep commit, gossip propagation.
                                  CI gate enforces spec/vector coupling. (#6)

eoc/
  eoc-rs/                         Rust + WASM reference implementation:
                                  4-stage cascade (cache -> kv -> graph ->
                                  neural), joule counters via RAPL / NVML /
                                  powermetrics, CLI, wasm-bindgen surface.
                                  18 tests pass. (#7)
  eoc-bench/                      Benchmark harness, MT-Bench and Router
                                  case sets, 'joules per MT-Bench point'
                                  metric, 'eoc-bench run | compare' CLI. (#8)
  standards/sci-for-ai-submission.md
                                  Submission proposal mapping EOC's
                                  receipt schema to GSF SCI-for-AI. (#9)
  cookbook/                       HuggingFace-style cookbook (markdown +
                                  runnable Python) demonstrating EOC's
                                  cascade with HF AI Energy Score. (#9)
  docs/bench-v0.md                Reproducibility doc for eoc-bench.

Workspace state:
- openpay clippy -- -D warnings: clean across all touched crates
- smart-byte-rs cargo test --workspace + clippy: clean
- eoc-rs cargo test --workspace + clippy: clean (18 tests)
- eoc-bench cargo check --workspace + clippy + 15 tests: clean

Rust 1.95.0 edition 2024 pinned at the open-standards root via
rust-toolchain.toml; every workspace inherits.

Closes #1 #2 #3 #4 #5 #6 #7 #8 #9.
2026-05-23 13:24:05 -04:00

53 lines
2 KiB
Rust

//! # `op-core`
//!
//! Safety-critical core for `OpenPay`. Pure domain logic: no I/O, no network,
//! no platform-specific code.
//!
//! ## Invariants enforced by the type system
//!
//! 1. Money values cannot be constructed from `f64`. All amounts are exact
//! minor-unit integers paired with an ISO 4217 currency.
//! 2. A `Payment<S>` can only transition through legal states. Illegal
//! transitions (e.g. capturing an unauthorized payment) do not compile.
//! 3. Raw PAN (Primary Account Number) is unreachable without the
//! `pci-scope` feature flag. The default surface exposes only opaque
//! `Token` and `EmvBlob` payment-method variants.
//! 4. No `unsafe` in this crate.
//!
//! ## Module layout
//!
//! - [`money`] — `Money`, `Currency`, ISO 4217 minor-unit arithmetic.
//! - [`method`] — `PaymentMethod` enum (token/EMV/A2A/wallet).
//! - [`payment`] — `Payment<S>` typestate machine.
//! - [`error`] — sealed error enum, one per crate convention.
//! - [`rails`] — rail-agnostic `Acquirer` trait that adapter crates implement.
//! - [`network_token`] — `Tokenized<Card>` / `Vaulted<Card>` typestates
//! and network-token primitives (VTS / MDES surrogate credentials).
#![forbid(unsafe_code)]
#![warn(missing_docs)]
#![warn(clippy::pedantic)]
#![warn(clippy::nursery)]
#![allow(clippy::module_name_repetitions)]
pub mod error;
pub mod method;
pub mod money;
pub mod network_token;
pub mod payment;
pub mod rails;
pub use error::Error;
pub use method::{A2aKey, CryptoAddress, PaymentMethod, Token, VaultRef};
pub use money::{Currency, Money};
pub use network_token::{
Card, CardNetwork, NetworkToken, NetworkTokenLifecycleEvent, PaymentMethodKind, Tokenized,
Vaulted,
};
pub use payment::{Authorized, Captured, Created, Failed, Payment, Refunded, Voided};
pub use rails::{Acquirer, AcquirerResponse, RailKind};
/// Raw PAN. Re-exported here only when the `pci-scope` feature is on.
/// Available exclusively to PCI-certified code paths (the vault).
#[cfg(feature = "pci-scope")]
pub use method::pci::RawPan;