This release adds 2 notable features for engineering teams evaluating rollout.
Published 25d
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
Affected surfaces
auth
rbac
Summary
AI summaryAdded PostgreSQL backend for MemoryStore and improved auto‑config name weighting with null‑sparse blocking.
Full changelog
Added
- MemoryStore: Postgres backend for Learning Memory (#1338).
MemoryStore(backend='postgres', connection=<dsn>, table_prefix='goldenmatch_')andMemoryConfig(backend='postgres', connection, dataset=<tenant>, table_prefix)persist dedupe corrections + learned adjustments in Postgres, isolated per tenant: corrections filtered bydataset,adjustmentskeyed(dataset, matchkey_name), andMemoryLearner(dataset=…)solearn()never pools corrections across tenants. AddsLearnedAdjustment.datasetandMemoryConfig.table_prefix(regex-guarded). Reuses the existingpostgresextra (psycopg[binary]) — no new hard deps. SQLite remains the default; every existing call path, signature default, and behavior is unchanged (the dialect refactor is behavior-preserving; full SQLite memory suite green).
Changed
- Auto-config:
name_freq_weighted_jwnow downweights agreements on high-frequency name values using a per-dataset frequency table (data-driven, applied across the whole score range), so identical common surnames (e.g. two "Smith") score below identical rare surnames - a higher matchkey threshold then separates same-name strangers from true matches (#1207, PR2a). Default-on; kill-switchGOLDENMATCH_TF_NAME_WEIGHTING=0restores the static-census behavior. Validated by the CI accuracy gates (#528/DQbench/Febrl/NCVR); this is an accuracy change, not a measured-local win. - Auto-config: per-identifier blocking union on null-sparse multi-source data (#1207, PR1).
When no single exact key clears the null-rate gate,build_blockingnow emits a
per-identifier blocking union (one pass per strong identifier + name/geo) instead of a
single high-null compound that capped recall. Default-on; no behavior change when a
low-null single exact key exists. Strong-id passes use a non-null scale gate (the runtime
blocker filters null block keys) with a #876 perfect-surrogate exclusion. Measured blocking
recall 1.0 vs name-only 0.004 on a planted-dup fixture, no regression on the auto-config suite.
Scope:auto_configure_dfswitches to learned blocking attotal_rows >= 50_000, so the
union applies below that threshold (or when learned blocking is off) today; the >=50k
learned-blocking interaction is a tracked follow-up.
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]