This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+14 more
Summary
AI summaryUpdates What shipped, Spec + plan, and disagreement_penalties across a mixed release.
Full changelog
Highlights
v1.12.0 ships Path Y — extending negative-evidence scoring to exact matchkeys. DQbench composite jumps from 66.99 → 91.04 (+24.05pp), the largest single-release gain in the suite's history. T3 F1 lands at 85.5% (from 53.8%), within the diagnostic's 85-90% projection. T2 F1 jumps to 97.5% (from 69.0%) as a bonus from the same mechanism.
What shipped
_apply_negative_evidence_to_exact_pairsincore/scorer.py: post-filter helper called fromcore/pipeline.pyafterfind_exact_matches. Score formula:final = max(0, 1.0 - sum(disagreement_penalties)); emit iffinal >= matchkey.threshold(default 0.5 when NE set + threshold None).promote_negative_evidenceextended to walk all matchkey types (was weighted-only in v1.11). Selectively skips_is_exact_matchkey_fieldgate on the exact-matchkey iteration branch — its v1.11 rationale doesn't apply when iterating an exact matchkey for itself. Sets defaultthreshold=0.5on threshold-None exact matchkeys after adding NE.- Spec amendment documented: v1.11 spec §Non-goals explicitly excluded NE on exact matchkeys ("Path Y rejected as semantic confusion"); v1.12 reverses this on Phase 7 diagnostic evidence showing Path X (clustered-guard demote) couldn't reach T3.
Benchmarks (zero-config, no LLM)
| Dataset | v1.11.0 | v1.12.0 | Δ |
|---|---|---|---|
| DBLP-ACM | 0.9641 | 0.9641 | flat |
| Febrl3 | 0.9443 | 0.9443 | flat |
| NCVR | 0.9719 | 0.9719 | flat |
| DQbench composite | 66.99 | 91.04 | +24.05pp |
| T1 F1 | 88.9% | 89.3% | +0.4pp |
| T2 F1 | 69.0% | 97.5% | +28.5pp |
| T3 F1 | 53.8% | 85.5% | +31.7pp |
How Path Y works
T3's adversarial pattern: same email shared across distinct entities with divergent phone+address. v0 produces an exact_email matchkey that emits 1.0 for these collision pairs. Pre-v1.12, NE only applied to weighted matchkeys, so exact_email's output was uncorrectable. Path Y wires _apply_negative_evidence_to_exact_pairs as a post-filter: when phone OR address strongly disagree on a same-email pair, the cumulative penalty drops the final score below 0.5 → pair filtered. True duplicates (agreeing phone+address) preserved.
Backward compat
None. Exact matchkey without negative_evidence preserves today's binary 1.0/0.0 emit. v1.10 + v1.11 cache entries deserialize cleanly with negative_evidence=None.
Spec + plan
- v1.12 spec: `docs/superpowers/specs/2026-05-09-autoconfig-path-y-design.md`
- v1.12 plan: `docs/superpowers/plans/2026-05-09-autoconfig-path-y.md`
- T3 diagnostic that motivated Path Y: `.profile_tmp/v111_t3_diagnostic.txt` (gitignored)
Full diff: https://github.com/benzsevern/goldenmatch/compare/v1.11.0...v1.12.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]