February 13, 20260.1.20Calmony Sanctions Monitor
v0.1.20 — feat: OFSI list change detection and differential tracking
Release v0.1.20: OFSI List Change Detection and Differential Tracking
13 February 2026
What changed
- Diff engine: New
ofsi-diff.tslibrary compares each OFSI list import against the previous version, identifying added, removed, and modified entities byofsiGroupId. - Portfolio impact estimation: Token-based name matching estimates how many of your monitored people could be affected by each change.
- Import flow integration: Change detection runs automatically during every import batch — before new entities are inserted — and results are persisted to
ofsiListChanges. - Smarter re-screening: Batch re-screening now triggers when actual diffs are detected, not just when the total entity count differs.
- Resilient by design: Change detection is wrapped in error handling so it never blocks the core import flow.
- 21 new unit tests covering diff computation, token matching, alias handling, case insensitivity, and diacritics.
Why it matters
Previously, imports could only detect that the list had changed by comparing total entity counts. Now the system knows exactly what changed — which entities were added, removed, or modified — and can estimate which of your monitored people might be affected. This feeds the existing dashboard and changes pages with real data.
Technical notes
- New records are written to the
ofsiListChangestable with change type, entity details, and portfolio impact count. - Change detection stats are now included in the import API response and audit log entries.
- +856 lines across 3 files.
Release Notes
Successfully merged PR #36 and created release v0.1.20.
PR #36: feat: OFSI list change detection and differential tracking
- Merged: Squash merge → commit
a2f4762 - Release: v0.1.20 — https://github.com/LetMC/CalmonySanctionsMonitor/releases/tag/v0.1.20
What was released:
- New
ofsi-diff.tslibrary for computing diffs between OFSI sanctions list versions (additions, removals, modifications) - Portfolio impact estimation using token-based name matching
- Integration into the import-batch API flow with resilient error handling
- 21 comprehensive unit tests covering all pure functions
- +856 lines added across 3 files