Grounded (INV-AH) multi-instance synthesis with drift guard + chair gate (pending_review, G10). Single path used by backfill, MCP tool, nightly drain. HELD from production run pending the principles-redesign (rename+cull, #152). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.8 KiB
עיצוב-מחדש: עקרונות משפטיים (לשעבר "הלכות")
מקור-ההחלטה: chaim, 2026-06-19. נולד תוך תכנון סינתזת-
canonical_statement, כשהתגלה שהקורפוס תפח ל-5,243 "הלכות" (18.8 לפסק, 1,820 מהחלטות הוועדה עצמה) — מודל מושגי שגוי. מסמך זה הוא מקור-האמת ליוזמה עד שיוטמע ב-docs/spec/.
1. הבעיה
מערכת-החילוץ הקיימת תייגה כל פרופוזיציה-משפטית כ"הלכה" וחילצה ~18.8 לכל פסק, ללא תקרה, ללא הבחנת-מקור, ובאישור-אוטומטי חד-מודלי (confidence ≥0.80). תוצאה: 5,243 רשומות — מנופחות ומתויגות-שגוי. ועדת ערר מיישמת דין; היא אינה יוצרת הלכה. קריאה ל-1,820 פרופוזיציות מהחלטות-הוועדה "הלכות" שגויה משפטית.
2. מודל-המושגים החדש
מטרייה: עקרונות משפטיים. שני תת-סוגים לפי מקור:
מקור (case_law.source_kind) |
מונח | מחייב? |
|---|---|---|
| פס"ד מחוזי/עליון (external, binding) | הלכה | תקדים מחייב |
החלטת ועדת-ערר (internal_committee) |
כלל פרשני | לא-מחייב; פרשנות/כלל-החלה שהוועדה גיבשה |
3. אלגוריתם-החילוץ החדש (חל על שני המקורות)
1. 3 מודלים שונים (Claude מקומי + DeepSeek + Gemini) מנתחים לעומק את הפסק;
כל מודל מציע מועמדים, כל מועמד עם ציון 0-1.
2. התאמה סמנטית בין שלושת המודלים → סט-מועמדים מאוחד; לכל מועמד:
votes = כמה מודלים זיהו/אימצו אותו (1-3)
score = ממוצע הציונים של המצביעים בלבד
3. דדופ מול הקורפוס (V41 lookup-before-insert, cosine ≥ HALACHA_CANONICAL_THRESHOLD):
• מוכר → קישור ל-canonical קיים (instance/citation). לא נספר במכסה → משחרר סלוט.
• חדש → מועמד לעיקרון חדש.
4. כלל-אישור על מועמדים חדשים:
votes = 3 → APPROVED מיידי (גם אם score < 0.85)
votes ≥ 2 AND score ≥ 0.85 → APPROVED
votes = 2 AND score < 0.85 → pending_review (שער-יו"ר, G10) [ברירת-מחדל]
votes = 1 → DROP (לא עיקרון אמיתי) [ברירת-מחדל]
5. תקרה: עד 5 עקרונות חדשים לפסק. אם >5 עוברים — בוחרים 5 לפי score יורד. [ברירת-מחדל]
מקושרים-מוכרים (שלב 3) אינם נספרים בתקרה.
ברירות-מחדל הנדסיות (ניתנות-לכיול ב-config): מקרה-גבול (2 הצבעות, score<0.85) → יו"ר ולא פח; בחירת 5 כש->5 עוברים → לפי score; הצבעה-יחידה → drop.
4. סינון רטרואקטיבי
אותו פאנל-3 + תקרת-5 + כלל-0.85 ירוץ על 5,243 הקיימים, מקובצים לפי פסק-המקור:
לכל פסק — להפעיל את האלגוריתם, לשמור את הניצולים (≤5), לסמן את השאר rejected (הפיך,
גיבוי SQL/CSV ל-data/audit/). מודל על מהלך-הניקוי 2026-06-03 (docs/halacha-strict-rubric.md)
ועל halacha_panel_approve.py הקיים.
5. תשתית קיימת לבנות עליה
- פאנל תלת-מודלי:
scripts/halacha_panel_approve.py(Claude מקומי + DeepSeek + Gemini, KEEP_SYSTEM) — אותם 3 מודלים מ-gold-set (AC1=0.92). מקור-הצבעות. - דדופ/קישור V41:
db.nearest_canonical_halacha(cosine), lookup-before-insert בחילוץ. - ולידטורים:
services/halacha_quality.py(non_decision/application/thin/quote/NLI). - רובריקה:
docs/halacha-strict-rubric.md(6 עילות-חיתוך). - שער-מקור:
db.EXTRACTION_ELIGIBLE_PREDICATE(db.py:7171) — נקודת-הזרקת תקרת/תיוג. - סינתזה:
services/canonical_synthesis.py+backfill_canonical_synthesis.py(כבר נבנו; יחולו על הניצולים בשם החדש — פאזה אחרונה).
6. פאזות-ביצוע (מוצע)
| # | פאזה | תוכן | תלות |
|---|---|---|---|
| 0 | עצירה | הקפאת ריצת-הסינתזה המלאה (בוצע) | — |
| A | מודל-הצבעות משותף | שירות panel_extraction — 3 מודלים, התאמה סמנטית, votes+mean-score, כלל-אישור. מקור-יחיד ל-B ו-C (G2) |
— |
| B | רף להבא | חיבור A ל-halacha_extractor: תקרת-5, דדופ-משחרר-סלוט, תיוג הלכה/כלל-פרשני לפי מקור. מחליף auto-approve חד-מודלי |
A |
| C | סינון רטרואקטיבי | סקריפט-batch מריץ A על 5,243 לפי פסק; ניצולים≤5; השאר rejected (הפיך) | A |
| D | שם | "הלכה"→הלכה/כלל-פרשני/עקרונות; UI + תיאורי-כלים + תיעוד. rename-DB מלא = אופציונלי-נפרד | — |
| E | סינתזה | canonical_synthesis על הניצולים, בשם החדש |
C, D |
סדר-בנייה מומלץ: A → (B ‖ D) → C → E. A הוא הליבה המשותפת; D (שם) עצמאי ובטוח להקדים.
7. Invariants
מקיים: INV-G10/INV-LRN1 (שער-יו"ר על מקרי-גבול), INV-AH (עיגון-מקור בחילוץ), INV-G2
(מודל-הצבעות מקור-יחיד ל-B+C), INV-G9 (audit-trail להצבעות + לסינון), INV-G6 (רענון-embedding).
מודל-הצבעות-היו"ר משתלב ב-active-learning הקיים (halacha_panel_rounds, project_active_learning_panel).