[Feature] Acquire and preserve immutable sanctions source snapshots #10

Closed
opened 2026-07-28 00:58:10 +02:00 by zemion · 1 comment
Owner

Outcome

Implement source adapters for the sanctions screening story without putting legal matching semantics in Connectors.

First Slice

Start with a synthetic fixture provider and one explicitly approved authoritative publisher. Fetch and retain raw evidence where policy/licensing permits, verify transport and checksums/signatures where available, normalize acquisition metadata, and publish an immutable snapshot reference to Risk Compliance.

Acceptance Criteria

  • Snapshot metadata includes publisher, jurisdiction/list type, source ID/version, publication/effective/acquisition timestamps, checksum/signature evidence, parser version, licence/trust notes, and connector run ID.
  • Refreshes create new immutable snapshots and never rewrite prior evidence.
  • Conditional fetch, retry/backoff, size limits, content-type checks, and safe XML/CSV parsing are covered.
  • Unavailable, stale, malformed, and unexpectedly changed sources produce explicit health states.
  • Synthetic fixtures allow deterministic tests without relying on live external services.
  • No subject data is sent to source providers during list acquisition.
## Outcome Implement source adapters for the [sanctions screening story](https://git.add-ideas.de/GovOPlaN/govoplan/issues/12) without putting legal matching semantics in Connectors. ## First Slice Start with a synthetic fixture provider and one explicitly approved authoritative publisher. Fetch and retain raw evidence where policy/licensing permits, verify transport and checksums/signatures where available, normalize acquisition metadata, and publish an immutable snapshot reference to Risk Compliance. ## Acceptance Criteria - [ ] Snapshot metadata includes publisher, jurisdiction/list type, source ID/version, publication/effective/acquisition timestamps, checksum/signature evidence, parser version, licence/trust notes, and connector run ID. - [ ] Refreshes create new immutable snapshots and never rewrite prior evidence. - [ ] Conditional fetch, retry/backoff, size limits, content-type checks, and safe XML/CSV parsing are covered. - [ ] Unavailable, stale, malformed, and unexpectedly changed sources produce explicit health states. - [ ] Synthetic fixtures allow deterministic tests without relying on live external services. - [ ] No subject data is sent to source providers during list acquisition.
Author
Owner

Implemented and pushed in c5a43b3 (Core contract: GovOPlaN/govoplan-core@790790a). Connectors now acquires immutable, checksum-verified sanctions snapshots from a deterministic synthetic fixture and the official UN Security Council consolidated XML source. Fetches use HTTPS, an explicit redirect host allowlist, bounded size/retries, conditional requests, safe XML parsing, source health evidence, tenant/scope isolation, and never transmit screening subjects. Validation: Ruff, 14 module tests, SQLite migration head, live authoritative-source probe, and the 52-manifest focused workspace check all pass.

Implemented and pushed in c5a43b3 (Core contract: GovOPlaN/govoplan-core@790790a). Connectors now acquires immutable, checksum-verified sanctions snapshots from a deterministic synthetic fixture and the official UN Security Council consolidated XML source. Fetches use HTTPS, an explicit redirect host allowlist, bounded size/retries, conditional requests, safe XML parsing, source health evidence, tenant/scope isolation, and never transmit screening subjects. Validation: Ruff, 14 module tests, SQLite migration head, live authoritative-source probe, and the 52-manifest focused workspace check all pass.
zemion removed the
status
ready
codex/ready
labels 2026-07-29 18:48:47 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-connectors#10