123 lines
9.0 KiB
Markdown
123 lines
9.0 KiB
Markdown
# עיצוב-מחדש: עקרונות משפטיים (לשעבר "הלכות")
|
||
|
||
> **מקור-ההחלטה:** 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. אלגוריתם-החילוץ החדש (חל על שני המקורות)
|
||
|
||
```text
|
||
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]]).
|
||
|
||
---
|
||
|
||
## 8. שכבת-החשיבות (TaskMaster #153) — חוסם את מסה-ה-cull
|
||
|
||
**הרקע (אבחון-ייצור 2026-06-20):** 49% מהעקרונות החיים (1,751/3,562) מקורם בפס"ד שדפנה
|
||
ציטטה או שמופיע ביומון. דירוג-קונצנזוס לבדו (A) עיוור-לחשיבות ועלול לקבור את ההלכה
|
||
שדפנה הסתמכה עליה. לכן **לפני מסה-cull** בונים שכבת-חשיבות שמגנה על הזהב ברמת-העיקרון.
|
||
|
||
### 8.1 שלוש דרגות-חשיבות (לפי *מי* מצטט/מסמן)
|
||
| דרגה | סיגנל | מקור | התנהגות בסינון |
|
||
|------|-------|------|----------------|
|
||
| **1 — זהב** | דפנה ציטטה / יומון | `precedent_internal_citations` (source.chair_name='דפנה תמיר') · `digests` | **פטור-מגן**: שורד תמיד |
|
||
| **2 — הסתמכות-שיפוטית** | יו"ר-אחר ציטט | `precedent_internal_citations` (source.chair_name≠דפנה) | משקל-חשיבות גבוה (לא מגן) |
|
||
| **3 — מרכזיות** | ציטוט כללי/צד · instance_count · treatment | citator · `/graph` PageRank | משקל-בסיס |
|
||
|
||
(אין טבלת bookmarks — היו עוגני-DOCX, לא רלוונטי.)
|
||
|
||
### 8.2 זיהוי-זהב ברמת-עיקרון (לא ברמת-פסק — קריטי)
|
||
דפנה מצטטת פס"ד בשביל **הלכה אחת** ממנו, לא כל ~19 העקרונות. לכן:
|
||
- **gold_chair:** מטמיעים את `match_context` (טקסט סביב הציטוט, מאוכלס 100%) → cosine מול
|
||
עקרונות הפס"ד-המצוטט → ההתאמה-הטובה ≥ סף (~0.78) מקבלת `gold_chair`.
|
||
- **gold_digest:** מטמיעים `digests.headline_holding` → התאמה לעקרונות הפס"ד-המקושר.
|
||
- כל התאמה שומרת מקור-הזהב + ציון-התאמה (G9). **חובה להריץ את מחלץ-הציטוטים גם על ~45
|
||
ההחלטות של יו"רים-אחרים** כדי לאכלס דרגה 2 (כיום רק 398 ציטוטי-דפנה חולצו).
|
||
|
||
### 8.3 importance_score רציף (לדירוג + RAG)
|
||
`halachot.importance_score`∈[0,1] = משוקלל: דרגה-1 ≫ דרגה-2 ≫ דרגה-3 + סמכות
|
||
(עליון 1.0/מחוזי 0.7/ועדה 0.4) − penalty(overruled). `importance_signals` jsonb (שקיפות).
|
||
משקלים ב-config, ניתני-כיול-יו"ר.
|
||
|
||
### 8.4 שילוב בסינון (הכרעת chaim: כל-הזהב + עד-5-לא-זהב)
|
||
זהב(דרגה-1) → מוגן, שורד ללא תקרה (gold+0-votes→pending_review, כי התאמה עלולה
|
||
false-positive). לא-זהב → דירוג `(importance_score, votes, score)`, שומרים עד 5. כלומר
|
||
החלטה עם 7 הלכות-זהב תשמור 7+; עם 0 זהב תשמור עד 5.
|
||
|
||
### 8.5 RAG (הרווח הגדול) + רענון
|
||
`importance_score` מבוסט באחזור (`search_precedent_library`/halacha) → הלכות-דפנה+סמכותיות
|
||
צפות ראשונות בכתיבה. job רענון תקופתי (יומון/החלטה חדשים → re-match), כמו `corroboration_rebuild`.
|
||
|
||
> **סדר-ביצוע:** 8 (שכבת-חשיבות) → 3+4 (cull-מוגן) → 5 (סינתזה על הניצולים).
|