This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+14 more
Summary
AI summaryAdds MatchkeyConfig.negative_evidence field and related infrastructure for negative‑evidence scoring.
Full changelog
Highlights
v1.11.0 ships the negative-evidence + clustered-identity-guard infrastructure as the foundation for v1.12's T3 recovery. DQbench composite essentially unchanged at 66.99 (v1.10 was 66.91) — the indicator-driven demote rule cannot fire on real DQbench T3 because of two structural findings (collision-signal not discriminative; iteration budget exhausted). v1.12.0 (released alongside) reverses v1.11's spec §Non-goals to deliver Path Y, where T3 finally moves.
What shipped
MatchkeyConfig.negative_evidence: list[NegativeEvidenceField] | Nonefield. Each entry:field,transforms,scorer,threshold,penalty. Default-None for v1.10 cache compat._apply_negative_evidenceincore/scorer.pysubtracts NE penalties from weighted-matchkey positive score.promote_negative_evidenceeager rule populates NE on weighted matchkeys for high-identity-prior columns (gated on identity_score >= 0.75 + cardinality_ratio >= 0.5 + col not in matchkey.fields + col not in blocking + col has exact-matchkey counterpart).compute_identity_collision_signallazy indicator (8s budget) +IndicatorContext.identity_collision_signalmethod.rule_demote_clustered_identityat position 7 inDEFAULT_RULES. Threshold 0.75 (raised from 0.5 after T2 false-fire analysis).
Benchmarks (zero-config, no LLM)
| Dataset | v1.10.0 | v1.11.0 |
|---|---|---|
| DBLP-ACM | 0.9641 | 0.9641 |
| Febrl3 | 0.9443 | 0.9443 |
| NCVR | 0.9719 | 0.9719 |
| DQbench composite | 66.91 | 66.99 |
Honest framing
Shipped at parity with v1.10 — the demote rule never executes on real T3 due to iteration budget exhaustion (rule_blocking_too_coarse oscillates), and the collision_rate metric isn't discriminative (T3 = 0.59, T2 = 0.62). v1.12.0 (released alongside) addresses this via Path Y.
Breaking changes
None. Adds optional fields with default-None for v1.10 cache compat.
Full diff: https://github.com/benzsevern/goldenmatch/compare/v1.10.0...v1.11.0
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]