feat(halacha): #82.4 provenance-union על dedup-skip + #82.6 over-merge guard #192

Merged
chaim merged 1 commits from worktree-halacha-dedup-provenance-guard into main 2026-06-11 16:35:05 +00:00
Owner

מה

חילוץ החלטת-ה-dedup-on-insert ל-helper טהור ובדיק halacha_quality.dedup_action() (skip/flag/keep), + שני שיפורים:

#82.4 — merge-with-provenance, לא blind-drop

כשמדלגים על כפילות-סמנטית (cosine ≥ 0.93), מאחדים את ה-cites של השורה הנכנסת אל השכן-הקנוני ששורד, במקום לאבד אותם. זהו שדה-ה-provenance היחיד שקיים בהכנסה; בחירת-קנוני + מיזוג-corroboration מלא שייכים למסלול ה-reconciliation הלא-מקוון (#82.7 / #84.2, שם לשורות כבר יש provenance מצטבר) — מתועד בקוד.

#82.6 — over-merge guard

ההחלטה PAIRWISE מול שכן יחיד הקרוב ביותר, ורק השורה הנכנסת מודלגת אי-פעם (אף שורה קיימת לא ממוזגת/נמחקת). אין connected-components closure בהכנסה → שרשרת ABC לא קורסת לשורה אחת גם כש-A,C מובחנים (הסיכון המרכזי ב-entity-resolution). מתועד ב-dedup_action + נבדק.

Invariants

  • G1 — provenance נשמר במקור (cites לא אובד ב-skip).
  • G2 — לוגיקת-ההחלטה ב-helper יחיד בדיק; refactor משמר-התנהגות (אותם ספים).
  • INV-G10 — אין auto-merge של שורות קיימות; ה-tail מסומן near_duplicate→סקירת-יו"ר.

בדיקות

6 חדשות: tests/test_halacha_dedup_action.py (skip / flag / keep-in-tail / over-merge-distinct / boundaries) + 59 בדיקות-הלכה קיימות (quality/coerce) עוברות. py_compile OK.

🤖 Generated with Claude Code

## מה חילוץ החלטת-ה-dedup-on-insert ל-helper טהור ובדיק **`halacha_quality.dedup_action()`** (skip/flag/keep), + שני שיפורים: ### #82.4 — merge-with-provenance, לא blind-drop כשמדלגים על כפילות-סמנטית (cosine ≥ 0.93), מאחדים את ה-`cites` של השורה הנכנסת אל השכן-הקנוני ששורד, במקום לאבד אותם. זהו שדה-ה-provenance **היחיד שקיים בהכנסה**; בחירת-קנוני + מיזוג-corroboration **מלא** שייכים למסלול ה-reconciliation הלא-מקוון (**#82.7 / #84.2**, שם לשורות כבר יש provenance מצטבר) — מתועד בקוד. ### #82.6 — over-merge guard ההחלטה **PAIRWISE** מול שכן יחיד הקרוב ביותר, ורק השורה הנכנסת מודלגת אי-פעם (אף שורה קיימת לא ממוזגת/נמחקת). **אין connected-components closure בהכנסה** → שרשרת A~B~C לא קורסת לשורה אחת גם כש-A,C מובחנים (הסיכון המרכזי ב-entity-resolution). מתועד ב-`dedup_action` + נבדק. ## Invariants - **G1** — provenance נשמר במקור (cites לא אובד ב-skip). - **G2** — לוגיקת-ההחלטה ב-helper יחיד בדיק; refactor **משמר-התנהגות** (אותם ספים). - **INV-G10** — אין auto-merge של שורות קיימות; ה-tail מסומן `near_duplicate`→סקירת-יו"ר. ## בדיקות 6 חדשות: `tests/test_halacha_dedup_action.py` (skip / flag / keep-in-tail / over-merge-distinct / boundaries) + 59 בדיקות-הלכה קיימות (quality/coerce) עוברות. py_compile OK. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-11 16:35:01 +00:00
feat(halacha): #82.4 provenance-union on dedup-skip + #82.6 over-merge guard
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
97271689ef
חילוץ החלטת-ה-dedup ל-helper טהור ובדיק `halacha_quality.dedup_action()` (skip/flag/keep),
ושני שיפורים על מסלול ה-dedup-on-insert:

#82.4 — merge-with-provenance, לא blind-drop: כשמדלגים על כפילות-סמנטית (cosine≥0.93),
מאחדים את ה-`cites` של השורה הנכנסת אל השכן הקנוני ששורד (במקום לאבד אותם). זהו שדה-ה-
provenance היחיד שקיים בהכנסה; בחירת-קנוני + מיזוג-corroboration מלא שייכים למסלול ה-
reconimation הלא-מקוון (#82.7 / #84.2, שם לשורות כבר יש provenance מצטבר) — מתועד בקוד.

#82.6 — over-merge guard: ההחלטה PAIRWISE מול שכן יחיד הקרוב ביותר, ורק השורה הנכנסת
מודלגת אי-פעם (אף שורה קיימת לא ממוזגת/נמחקת). אין connected-components closure בהכנסה,
לכן שרשרת A~B~C לא קורסת לשורה אחת גם כש-A,C מובחנים. מתועד ב-dedup_action + נבדק.

invariants: G1 (provenance נשמר במקור, לא אובד) · G2 (לוגיקת-החלטה ב-helper יחיד בדיק,
refactor משמר-התנהגות) · INV-G10 (אין auto-merge של שורות קיימות; tail→flag→סקירת-יו"ר).
tests: 6 חדשות (skip/flag/keep/over-merge/boundaries) + 59 בדיקות-הלכה קיימות עוברות.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
chaim merged commit a00e226a08 into main 2026-06-11 16:35:05 +00:00
chaim deleted branch worktree-halacha-dedup-provenance-guard 2026-06-11 16:35:05 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#192