open-standards/openpay/crates/op-screening/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 2d7de0396c
All checks were successful
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
..
fixtures Ingest batch 3: 9 more crates across openpay / smart-byte / eoc 2026-05-24 01:09:35 -04:00
integration.rs openpay: a PEP match is recorded as a PEP match, not an OFAC sanctions hit 2026-10-15 20:47:42 -04:00