feat(digests): יומון-לא-מקושר → "פסיקה חסרה" — סוף לבליעה-שקטה (#136) #270

Merged
chaim merged 1 commits from worktree-digest-missing-precedent into main 2026-06-15 09:07:25 +00:00
Owner

הבעיה (#136)

צינור-היומונים (X12) קישר אוטומטית רק לפסיקה שכבר בקורפוס; ציטוט שלא נמצא נבלע בשקט אלא אם היה פס"ד בית-משפט בר-אחזור. כך 369 עררים + 21 לא-מסווגים שהוזכרו ביומונים מעולם לא הופיעו כפער ב-/missing-precedents.

התיקון (G2 — מסווג יחיד + נתיב-MP יחיד · INV-DIG3/CF2 — אין בליעה-שקטה)

  • digest_library: ה-gap branch (try_autolink ללא-התאמה) קורא כעת _handle_unlinked_citation — ניתוב דרך court_citation.classify:
    • supreme/admin → court_fetch_job (כקודם; האורקסטרטור פותח MP משלו בכשל → אין כפילות כאן)
    • skip (ערר/בל"מ) / unknown → missing_precedent (discovery_source='digest', provenance=מס'-יומון+digest_id), deduped designator-aware דרך citation_norm (#143).
  • court_fetch_orchestrator._open_gap: הוקשח ל-dedup אמיתי (find לפני create) + discovery_source='court_fetch' — התגובה הבטיחה "deduped" אך create לא דידאפ (באג סמוי).
  • scripts/backfill_digest_missing_precedents.py: מריץ try_autolink הקנוני על 461 הקיימים (dry-run: 71 fetchable + 390 gap). אידמפוטנטי. יורץ אחרי הפריסה.

תיאום

  • תלוי-הקשר #143 (citation_norm + נתיב-יצירה — מאוחד).
  • השפעת-UI: דף "פסיקה חסרה" יגדל מ-207 ל-~597 פתוחים (אושר). פילטר-מקור (discovery_source) ב-UI — נדחה לשער Claude Design.

בדיקות

  • test_digest_unlinked_citation (חדש) — ערר→MP, פס"ד→court_fetch, dedup, unknown→MP.
  • כל 360 בדיקות mcp עוברות. undefined-names + leak-guard נקיים.

Invariants

  • G2 — מסווג יחיד (classify) + נתיב-יצירת-MP יחיד (לא מסלול מקביל)
  • INV-DIG3 / INV-CF2 — פער גלוי, לעולם לא נבלע
  • INV-DIG1 — היומון מצביע (provenance ב-notes), לא מצוטט
  • G1 — dedup מנורמל designator-aware · G12 — leak-guard נקי

🤖 Generated with Claude Code

## הבעיה (#136) צינור-היומונים (X12) קישר אוטומטית רק לפסיקה שכבר בקורפוס; ציטוט שלא נמצא **נבלע בשקט** אלא אם היה פס"ד בית-משפט בר-אחזור. כך **369 עררים + 21 לא-מסווגים** שהוזכרו ביומונים מעולם לא הופיעו כפער ב-/missing-precedents. ## התיקון (G2 — מסווג יחיד + נתיב-MP יחיד · INV-DIG3/CF2 — אין בליעה-שקטה) - **`digest_library`**: ה-gap branch (`try_autolink` ללא-התאמה) קורא כעת `_handle_unlinked_citation` — ניתוב דרך `court_citation.classify`: - supreme/admin → `court_fetch_job` (כקודם; האורקסטרטור פותח MP משלו בכשל → אין כפילות כאן) - skip (ערר/בל"מ) / unknown → `missing_precedent` (`discovery_source='digest'`, provenance=מס'-יומון+`digest_id`), **deduped designator-aware** דרך `citation_norm` (#143). - **`court_fetch_orchestrator._open_gap`**: הוקשח ל-dedup אמיתי (find לפני create) + `discovery_source='court_fetch'` — התגובה הבטיחה "deduped" אך `create` לא דידאפ (באג סמוי). - **`scripts/backfill_digest_missing_precedents.py`**: מריץ `try_autolink` הקנוני על 461 הקיימים (dry-run: **71 fetchable + 390 gap**). אידמפוטנטי. **יורץ אחרי הפריסה.** ## תיאום - תלוי-הקשר #143 (`citation_norm` + נתיב-יצירה — מאוחד). - **השפעת-UI**: דף "פסיקה חסרה" יגדל מ-207 ל-**~597** פתוחים (אושר). פילטר-מקור (`discovery_source`) ב-UI — נדחה לשער Claude Design. ## בדיקות - `test_digest_unlinked_citation` (חדש) — ערר→MP, פס"ד→court_fetch, dedup, unknown→MP. - כל **360** בדיקות mcp עוברות. `undefined-names` + `leak-guard` נקיים. ## Invariants - ✅ **G2** — מסווג יחיד (`classify`) + נתיב-יצירת-MP יחיד (לא מסלול מקביל) - ✅ **INV-DIG3 / INV-CF2** — פער גלוי, לעולם לא נבלע - ✅ **INV-DIG1** — היומון מצביע (provenance ב-notes), לא מצוטט - ✅ **G1** — dedup מנורמל designator-aware · **G12** — leak-guard נקי 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-15 09:06:42 +00:00
feat(digests): יומון-לא-מקושר → "פסיקה חסרה" — סוף לבליעה-שקטה (#136)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 11s
9fd506ff2b
צינור-היומונים (X12) קישר אוטומטית רק לפסיקה שכבר בקורפוס; ציטוט שלא נמצא נבלע
בשקט אלא אם היה פס"ד בית-משפט בר-אחזור. כך 369 עררים + 21 לא-מסווגים שהוזכרו
ביומונים מעולם לא הופיעו כפער.

תיקון (G2 — מסווג יחיד + נתיב-MP יחיד; INV-DIG3/CF2 — אין בליעה-שקטה):
- digest_library: ה-gap branch (try_autolink ללא-התאמה) קורא כעת
  _handle_unlinked_citation — ניתוב דרך court_citation.classify: supreme/admin →
  court_fetch_job (כקודם; האורקסטרטור פותח MP משלו בכשל), skip(ערר/בל"מ)/unknown →
  missing_precedent (discovery_source='digest', provenance=מס'-יומון+digest_id),
  deduped designator-aware דרך citation_norm (#143).
- court_fetch_orchestrator._open_gap: הוקשח ל-dedup אמיתי (find לפני create) +
  discovery_source='court_fetch' — התגובה הבטיחה "deduped" אך create לא דידאפ.
- scripts/backfill_digest_missing_precedents.py: מריץ try_autolink על 461 הקיימים
  (dry-run: 71 fetchable + 390 gap). אידמפוטנטי. יורץ אחרי הפריסה.

תלוי-הקשר #143 (citation_norm + נתיב-יצירה). השפעת-UI: דף "פסיקה חסרה" יגדל
מ-207 ל-~597 פתוחים (אושר ע"י חיים).

בדיקות: test_digest_unlinked_citation (ערר→MP, פס"ד→fetch, dedup, unknown→MP).
כל 360 עוברות. guards נקיים.

Invariants: G2 (מסווג+נתיב-MP יחיד), INV-DIG3/INV-CF2 (פער גלוי, לא נבלע),
INV-DIG1 (יומון מצביע, לא מצוטט), G1 (dedup מנורמל), G12.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 9a7c1c4148 into main 2026-06-15 09:07:25 +00:00
chaim deleted branch worktree-digest-missing-precedent 2026-06-15 09:07:25 +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#270