Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Key retraction misfires on deletion-heavy diffs: weigh matched-row agreement

Offen
#46 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
50/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
rust
Bereich
data

Rechercherichtung

Reproduziere den Fall SDVB IMDB mixed_mixed_removal_rows2 und verfolge die Logik der Schlüsselrücknahme im ersten Durchlauf rund um change_mass und die Übereinstimmung der gematchten Zeilen. Erledigt ist die Aufgabe, wenn von Löschungen dominierte Diffs mit sauberen gematchten Zeilen den korrekten Schlüssel beibehalten, während Schlüssel, deren gematchte Zeilen stark voneinander abweichen, weiterhin zurückgenommen werden können; prüfe die Fälle in WINE_small als Regressionsabdeckung.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Problem

When a guessed key is correct but the diff is dominated by row deletions, change_mass counts dropped rows in full, pushing changed mass past MAX_PLAUSIBLE_CHANGE_PERCENT (50%). The correct key is then retracted as excessive_change, and the second guess can land on a structurally-unique but semantically wrong column.

Reproducer from the SDVB benchmark (IMDB mixed_mixed_removal_rows2, 800 → 47 rows, a genuine 94% row deletion):

# declared key: honest answer
table_key([Series_Title], basis: declared)
row_drop(rows: 753)

# guessed key: retraction misfires
key_retracted([Series_Title], reason: excessive_change)
----
table_key([Overview], basis: guessed, overlap: 1.00)
table_regenerate()

The retracted key was producing the better diff; the re-guess on Overview (free text, unique on both sides) yields table_regenerate() — strictly less informative.

Proposed signal

The two cases the retraction trigger must distinguish leave different evidence in pass one:

  • Wrong key: matched rows disagree heavily in their cells.
  • Right key + massive deletion: matched rows are essentially clean; the change mass comes entirely from dropped rows.

In the example above, the 47 matched rows under Series_Title had ~zero changed cells, fully corroborating the key. A refinement: retract only when the matched rows themselves disagree heavily, or exempt deletion-dominated mass when matched rows are clean.

Found while running data-diff against the SDVB benchmark; also affects the WINE_small key_retracted cases (3 pairs).

Vorherrschende Sprache
Rust
Sterne
34
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus hadley/data-diff

Alle Issues in hadley/data-diff

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.