Transaction Science
2d7de0396c
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 10s
standards workspaces build + test / macOS energy backends (pull_request) Has been skipped
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m4s
standards workspaces build + test / openpay (openpay, openpay, linux-arm64) (pull_request) Successful in 6m13s
openpay: a PEP match is recorded as a PEP match, not an OFAC sanctions hit
...
op-connect's PEP index tagged every entry `SanctionsList::OfacConsolidated`,
because the enum had no place for a PEP list. Its comment said the operator
surface "should not surface this". But a PEP index is a `Screener`, and every
screen appends `source_list.label()` to the screener's signed, hash-chained
audit log. So each PEP match was written into the tamper-evident compliance
record as "OFAC Consolidated": a sanctions designation (block, report) where
there was a due-diligence flag. An adverse-media index had the same problem:
it too could only tag its entries with a sanctions authority.
- `SanctionsList` is now `WatchList`, the term `ScreenerConfig::watchlist_filter`
already used. It gains `Pep` ("PEP list") and `AdverseMedia` ("Adverse
media"), and `is_sanctions()`, which is false for exactly those two. Its
docs say why a match must never be recorded under a list it did not come
from. A deprecated `SanctionsList` alias keeps the old name compiling.
- `build_pep_index_from_names` tags its entries `WatchList::Pep`.
- Serialized forms are unchanged: the enum's variant names stay the same, so
stored indexes still load. No published vector or doc carries the label.
Tests:
- `a_pep_match_is_audited_as_a_pep_match_not_a_sanctions_match` screens a PEP
fixture and checks that the audit chain verifies and that its row names
"PEP list".
- `only_the_authorities_are_sanctions_lists` and `every_list_has_its_own_label`
pin the kinds and labels. An exhaustive match makes a new list fail to
compile until it is classified.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
2026-10-15 20:47:42 -04:00
..
op-3ds2
chore(deps): update dependencies for Rust 1.98, pinning the crypto generations
2026-08-26 12:19:50 -04:00
op-batch
Ingest batch 3: 9 more crates across openpay / smart-byte / eoc
2026-05-24 01:09:35 -04:00
op-bin
ingest wave E: 3 crates · op-bin + smart-byte-tendermint + eoc-safety
2026-05-24 16:52:07 -04:00
op-bnpl
chore(deps): update dependencies for Rust 1.98, pinning the crypto generations
2026-08-26 12:19:50 -04:00
op-cli
Parallel ingest: 9 issues' worth of work across openpay / smart-byte / eoc
2026-05-23 13:24:05 -04:00
op-connect
openpay: a PEP match is recorded as a PEP match, not an OFAC sanctions hit
2026-10-15 20:47:42 -04:00
op-core
Parallel ingest: 9 issues' worth of work across openpay / smart-byte / eoc
2026-05-23 13:24:05 -04:00
op-crypto-extra
ingest wave F: 3 crates · op-crypto-extra + smart-byte-acdc + eoc-memory
2026-05-24 17:28:24 -04:00
op-dispute
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-dispute-evidence
ingest wave A2: 3 crates · op-dispute-evidence + smart-byte-edv + eoc-agent
2026-05-24 11:42:26 -04:00
op-driver-sdk
Parallel ingest: 9 issues' worth of work across openpay / smart-byte / eoc
2026-05-23 13:24:05 -04:00
op-emv
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-ewallets-asia
chore(deps): update dependencies for Rust 1.98, pinning the crypto generations
2026-08-26 12:19:50 -04:00
op-ffi-jni
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-ffi-swift
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-fraud
Repo-wide toolchain refresh + jouleclaw policy/sandbox updates
2026-06-07 17:04:45 -04:00
op-fraud-graph
Repo-wide toolchain refresh + jouleclaw policy/sandbox updates
2026-06-07 17:04:45 -04:00
op-fx
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-graph
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-iso8583
Ingest batch 2: 9 new crates across openpay / smart-byte / eoc
2026-05-23 18:12:24 -04:00
op-iso20022
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-ledger
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-mobile-wallets
chore(deps): update dependencies for Rust 1.98, pinning the crypto generations
2026-08-26 12:19:50 -04:00
op-openbanking
ingest wave A4: 3 crates · smart-byte-atproto + op-openbanking + eoc-distributed
2026-05-24 12:22:09 -04:00
op-orchestrator
Repo-wide toolchain refresh + jouleclaw policy/sandbox updates
2026-06-07 17:04:45 -04:00
op-payouts
ingest wave B: 3 crates · op-payouts + smart-byte-nostr + eoc-streaming
2026-05-24 13:39:09 -04:00
op-rails-a2a
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-rails-card
Parallel ingest: 9 issues' worth of work across openpay / smart-byte / eoc
2026-05-23 13:24:05 -04:00
op-rails-crypto
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-rails-x402
op-rails-x402: x402 agentic-payment rail (HTTP 402 acceptance)
2026-06-25 15:43:20 -04:00
op-reconciliation
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-refund
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-revrec
ingest batch 5 (salvage): 2 crates from 9-agent dispatch (session-limit hit mid-batch)
2026-05-24 09:28:38 -04:00
op-routing
Ingest batch 2: 9 new crates across openpay / smart-byte / eoc
2026-05-23 18:12:24 -04:00
op-screening
openpay: a PEP match is recorded as a PEP match, not an OFAC sanctions hit
2026-10-15 20:47:42 -04:00
op-server
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-settlement
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-statements
ingest wave C: 3 crates · op-statements + smart-byte-activitypub + eoc-observability
2026-05-24 13:51:09 -04:00
op-subscriptions
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-tax
chore(deps): update dependencies for Rust 1.98, pinning the crypto generations
2026-08-26 12:19:50 -04:00
op-vault
op-vault: test that a token is independent of the PAN, not free of "4242"
2026-09-30 23:07:55 -04:00
op-wasm
Initial import — three open standards under one shelf
2026-05-23 07:58:09 -04:00
op-webhook
fix(op-webhook): import KeyInit — hmac 0.13 moved new_from_slice off the Mac trait, breaking compute_signature
2026-08-26 09:28:40 -04:00