fix(retrieval): 104 החלטות ועדות-ערר היו בלתי-נראות בחיפוש — סינון ולא דירוג (#232) #431

Merged
chaim merged 1 commits from worktree-232-internal-search into main 2026-08-05 10:33:23 +00:00
Owner

search_precedent_library לא חשף source_kind, וכל שכבה מתחתיו נפלה ל-external_upload. 104 החלטות ועדות-ערר (29% מהקורפוס) נחתכו ב-WHERE לפני הדירוג.

ההיפותזה שנרשמה ב-#232 (הטיית verified/cite_count) נבדקה ונפסלה — כיסוי ה-verified כמעט זהה (55% מול 49%) ותקרת 0.22 לא הסבירה את הפער. הסיבה: סינון קשיח.

אימות מול DB חי: 4/4 החלטות ועדה חוזרות במקום 1 (83-16, 1029-18, 1085-23, 1094-09-19 פדילה). 83/16: 0.711 מול 0.663 של 3213/97 שחסמה אותה. רשימת-הקורפוס 259→386.

invariants: G1 · G2 · §6

514 טסטים עוברים; leak_guard + check_undefined_names + agent_tool_grants_guard ירוקים.

`search_precedent_library` לא חשף `source_kind`, וכל שכבה מתחתיו נפלה ל-`external_upload`. 104 החלטות ועדות-ערר (29% מהקורפוס) נחתכו ב-WHERE לפני הדירוג. ההיפותזה שנרשמה ב-#232 (הטיית verified/cite_count) נבדקה ונפסלה — כיסוי ה-verified כמעט זהה (55% מול 49%) ותקרת 0.22 לא הסבירה את הפער. הסיבה: סינון קשיח. **אימות מול DB חי:** 4/4 החלטות ועדה חוזרות במקום 1 (83-16, 1029-18, 1085-23, 1094-09-19 פדילה). 83/16: 0.711 מול 0.663 של 3213/97 שחסמה אותה. רשימת-הקורפוס 259→386. **invariants:** G1 · G2 · §6 514 טסטים עוברים; leak_guard + check_undefined_names + agent_tool_grants_guard ירוקים.
chaim added 1 commit 2026-08-05 10:32:56 +00:00
fix(retrieval): 104 החלטות ועדות-ערר היו בלתי-נראות בחיפוש — סינון ולא דירוג (#232)
All checks were successful
Lint — undefined names / undefined-names (pull_request) Successful in 11s
INV-AG3 Agent Tool Grants / agent-tool-grants (pull_request) Successful in 40s
G12 Leak-Guard / leak-guard (pull_request) Successful in 5s
2f50a8cc79
`search_precedent_library` — הכלי שסוכני הכתיבה קוראים לו בפועל — לא חשף
`source_kind` כלל, וכל שכבה מתחתיו נפלה לברירת-מחדל `external_upload`.
התוצאה: `WHERE cl.source_kind = 'external_upload'` חתך 104 החלטות ועדות-ערר
(29% מהקורפוס) עוד לפני הדירוג. ערר (חיפה) 83/16 — האסמכתה הישירה ביותר
בקורפוס לטענת-סף ס-2 ב-1069-04-26 — לא הוחזרה גם בשאילתה כמעט-מילולית.

ההיפותזה שנרשמה ב-#232 (הטיית verified/cite_count מדירה החלטות חדשות)
**נבדקה ונפסלה**: כיסוי ה-verified כמעט זהה בשני הקורפוסים (55% מול 49%),
ותקרת-ההטיה 0.22 לא הסבירה פער מול התאמה כמעט-מילולית. הסיבה הייתה סינום
קשיח, לא דירוג.

מה שונה
- `_source_kind_clause()` — הגדרה אחת לאוצר-המילים של הסלקטור (G2), במקום
  שכפולו בכל אתר חיפוש/רשימה. `""`/`"all"` = כל הקורפוס; סלקטור לא-מוכר
  מרים ValueError במקום להגיע ל-SQL (הערך מוזרק ב-f-string, אז ה-whitelist
  הוא גם מה ששומר על זה בטוח).
- ברירת-המחדל בכל שרשרת-החיפוש והרשימה: `""` = הקורפוס כולו.
- `search_precedent_library` + `precedent_library_list` חושפים `source_kind`
  לסינון מפורש; `/api/precedent-library/search` מקבל אותו גם הוא כדי ש-UI
  ו-MCP לא יתפצלו.
- נרמול מפריד במספר-תיק: `83/16` ו-`83-16` מחזירים את אותה שורה.

אימות מול ה-DB החי — 4/4 החלטות ועדה חוזרות במקום **1** בשאילתה בלשון
הלכה מאושרת (83-16, 1029-18, 1085-23, 1094-09-19 פדילה). 83/16 עלתה
ל-0.711 מול 0.663 של 3213/97 שחסמה אותה קודם. רשימת-הקורפוס: 259 → 386.

invariants: G1 (נרמול במקור, לא תיקון-תסמין בקריאה) · G2 (הגדרה אחת
לסלקטור; UI ו-MCP על אותו מסלול) · §6 (סלקטור שגוי מתפוצץ, לא נבלע)

טסטים: 5 חדשים (tests/test_source_kind_selector.py), אחד מהם נועל את
ברירות-המחדל של 8 נקודות-הכניסה — זה בדיוק הבאג. 514 עוברים.
chaim merged commit 70c28c87ef into main 2026-08-05 10:33:23 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#431