This release adds 3 notable features for engineering teams evaluating rollout.
Published 1mo
Data Pipelines & ETL
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
data-cleaning
data-engineering
data-matching
data-quality
deduplication
entity-resolution
+14 more
fellegi-sunter
fuzzy-matching
knowledge-graph
llm
master-data-management
mcp-server
polars
pprl
python
record-linkage
rust
splink
typescript
zero-config
Summary
AI summaryCorrelated survivorship adds lock‑step field groups and anchor strategy.
Full changelog
goldenmatch 2.1.0 -- minor release.
Correlated survivorship, end-to-end group provenance, memory-safe PPRL,
native-dispatch telemetry, plus zero-config multi-source and bucket-backend fixes.
Added
- Correlated survivorship: lock-step field groups + conditional/validated golden rules (#1047). New FieldGroupSpec + DomainPack.groups (domain-pack schema v3, additive/backward-compatible) keep correlated fields (street/city/postcode) in lock-step from one winning source.
- allow_fill + anchor group-winner strategy, correlated survivorship v2 (#1055). GoldenGroupRule gains an anchor column for the new "anchor" strategy plus an orthogonal allow_fill fill-forward flag.
- GroupProvenance surfaced end-to-end (#1053). Per-cluster survivorship provenance carries a real cluster_id and a natural-language audit trail through lineage, explain, MCP, and the review queue.
- Chunked PPRL trusted-third-party linkage (#1054). New PPRLConfig.chunk_size streams Party B in blocks instead of materializing the full N_a x N_b score matrix; ~9-14x lower peak memory, byte-identical output (chunk_size=None is the original dense path).
- Native-dispatch telemetry on the result object (#1048, #957). result.native reports whether the scoring hot path used the Rust kernel or fell back to pure Python; warns on a silent slow path and self-reports per Ray worker.
- Collective entity resolution / neighborhood similarity. run_graph_er(propagation_mode="relational") blends attribute similarity with neighbor-cluster overlap to resolve homonyms (pairwise F1 ~0.66 -> ~0.87 on the co-author fixture).
Fixed
- Zero-config multi-source dedupe no longer over-merges on shared workplace/categorical attributes (#858). A low-cardinality non-person-name field (company, job_title, ...) is demoted to blocking-only; lifts the reporter's CRM fixture from bare F1 0.13 to 0.77. Single-source auto-config byte-identical.
- backend="bucket" honors multi-pass UNION blocking (#1048). A multi-pass config whose keys live in .passes (no static key) no longer returns 0 clusters.
- Domain detection no longer classifies a bare name-only schema as product (#1042).
Performance
- Sail distributed WCC: edge-node seeding + stage-boundary lineage barriers. Per-round shuffle scales with connected-component count, not row count; byte-identical default output.
Full changelog: packages/python/goldenmatch/CHANGELOG.md
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About GoldenMatch
All releases →Related context
Related tools
Earlier breaking changes
- v3.1.0 `GOLDENMATCH_FRAME=polars` now requires the `[polars]` extra; raises error without it.
- vgoldencheck-v3.0.0 `inferred_type` emits neutral dtype vocabulary (str/int/uint/float/date/datetime/bool/other) instead of raw Polars dtypes.
- vgoldencheck-v3.0.0 'inferred_type' now emits a neutral dtype vocabulary instead of raw Polars dtype strings.
- vgoldencheck-v3.0.0 `scan_file`, `scan_dataframe`, and CLI `check` now run without Polars, using Arrow-native pyarrow.Table.
- v3.0.0 Result frames now return pyarrow.Table instead of Polars DataFrame.
Beta — feedback welcome: [email protected]