# 07 — לולאת הלמידה (Learning Loop) קובץ-תחום זה כפוף ל-[חוקת המערכת](00-constitution.md) ומפרט כיצד המערכת **לומדת לאורך זמן** — מהחלטות סופיות (Hermes), מפידבק-היו"ר, ומצמיחת-הקורפוס — באופן שמזין חזרה את הכתיבה ([04-analysis-writing.md](04-analysis-writing.md)) ואת שערי-האיכות ([05-qa-review.md](05-qa-review.md)). הוא אוכף את [INV-G10](00-constitution.md#inv-g10-המערכת-מסייעת--שערים-אנושיים-הם-invariant) (שערים אנושיים — אישור היו"ר על כל עדכון-ידע) ואת [INV-G4](00-constitution.md#inv-g4-חוזה-שלמות-לפני-שמיש--ניתן-לחיפוש) / כלל-ההנדסה **quality-at-source** (האחריות לאיכות יושבת במקור, לא בטלאי במורד הזרם). > **⚠ קובץ מעורב — שני מודלי-סמכות** (לפי החוקה §3, §5): > - **שער-הממשל** (Hermes מציע — היו"ר מאשרת ידנית; אין auto-commit ל-SKILL/lessons) > הוא **invariant הנדסי** במודל הממשל-שיפוטי → נושא `מקורות:` (NCSC/JTC · CEPEJ 2018 · > FJC) + `סטטוס: verified`. > - **כלל-ההנדסה quality-at-source** (היכן יושבת האחריות לאיכות-הידע) → invariant הנדסי > במודל הנדסת-הנתונים → נושא `מקורות:` (Fowler — Data Mesh / quality-at-source · > DAMA-UK · ISO 8000) + `סטטוס: verified`. --- ## 0. תת-מערכת רכישת-הסגנון (Style Acquisition) — יעד-העל וההפרדה מהכתיבה **יעד-העל של legal-ai:** שהסוכנים יכתבו וינתחו עררים **בדיוק כמו עו"ד דפנה תמיר** — להפנים את הקול והשיטה, לא רק לייצר טיוטה תקנית. ל-end זה מחייב **הפרדה מובהקת בין שתי תת-מערכות**: | | **Writing Subsystem** | **Style-Acquisition Subsystem** | |---|---|---| | שאלה | "איך אכתוב את התיק כמו דפנה?" | "מה למדנו מהפער בין מה שכתבנו למה שדפנה חתמה?" | | טריגר | issue כתיבה | `mark-final` | | פלט | 12 בלוקים | עדכוני-קול מאושרים + מדד-מרחק | | סוכנים | writer/analyst/qa/ceo | hermes-curator (מורחב) | | יחס ל-artifacts-הקול | **צרכן read-only** | **היחיד שכותב** (דרך שער INV-G10) | ### 0.1 הגישה: Authorial Style Profiling, לא fine-tuning היעד הוא **Text Style Transfer** מבוסס **פרופיל-סגנון מופשט** — להכליל את סגנון/שיטת דפנה ולהתאים לתיק הספציפי. fine-tuning של משקולות **לא רלוונטי**: המודל (Opus) סגור, והקורפוס (~48 החלטות, יו"ר חדשה) קטן מדי — מצב שבו הספרות מראה שפרופיל-מופשט + דוגמאות מנצח (≈+15% מעל RAG-בלבד). **מדיניות-העתקה לפי סוג-תוכן:** קבוע/נוסחאי (פתיחים דוקטרינליים, תבניות-סיום) → מותר להעתיק; ניתוח/טענות ספציפיים → להכליל ולהתאים; מהות (הלכה/עובדה מתיק אחר) → אסור (INV-LRN5). ### 0.2 שלושת ערוצי-ההזנה לכותב 1. **A — פרופיל-מופשט (ראשי):** voice-fingerprint + author-features כמותיים, מוזרק לכתיבה. **חידוש מהקורפוס:** החלק הכמותי (יחסי-מבנה) מתרענן אוטומטית-ודטרמיניסטית מהקורפוס הגדל (`measure_corpus_ratios`→כותב); הפרוזה המופשטת מסונתזת מחדש ע"י `scripts/regenerate_voice_fingerprint.py` (Opus) כ**הצעה מגודרת-יו"ר** (INV-LRN1 קשיח — לא auto, היו"ר מקבעת ידנית; STYLE בלבד INV-LRN5). 2. **B — דוגמאות + תבניות (תומך):** פסקאות-בלוק אמיתיות + Copy-Paste Templates + contrastive. 3. **C — deep-read (נקודתי):** voice-XXXX.md — worked example לתיק-מופת. ### 0.3 הצינור החוזר per-final (7 שלבים) `mark-final` → [1] INTAKE (snapshot של הטיוטה) → [2] PAIRING (בלוק↔בלוק) → [3] ALIGNMENT (diff פר-בלוק) → [4] DISTILLATION (מפריד סגנון↔מהות) → [5] CURATION (Hermes + שער-יו"ר) → [6] FEEDBACK (ניתוב לערוץ A/B/C) → [7] MEASUREMENT (מדד-מרחק-סגנון + snapshot-held-out פרוספקטיבי, §0.7). ### 0.4 ניהול ב-UI `/methodology` = **עורך-הפרופיל היחיד** (declarative: יחסי-זהב, כללי-דיון, צ׳קליסטים, ביטויי-מעבר, אנטי-דפוסים, voice-invariants). `/training` = **שולחן-הלמידה** (קורפוס, פורטרט-סגנון, השוואת draft↔final, curator, מדד-מרחק, פנקס-התאמה). **שער-אישור אחד · טרנזקציית-כותב אחת (INV-IA3 → [X17](X17-information-architecture.md)):** ל-`decision_lesson` יש **סטטוס-יחיד** שקובע "זורם-לכותב" — `review_status='approved'` (INV-LRN1/G10). הדגל `applied_to_skill` **הוסר** (היה אינפורמטיבי-בלבד, נכתב-לשומקום → בלבל את היו"ר ב"שני שערים"; גל-2 #131). לקח שהיו"ר מחבר ידנית נוצר כבר כ-`approved`; לקח-פאנל נוצר כ-`proposed` וממתין לשער. promote של זוג draft↔final מטמיע את הלקחים/הביטויים שהיו"ר בחר **דרך appeal_type_rules בטרנזקציה אחת נעולה (FOR UPDATE)** — מסלול-כתיבה-יחיד, ללא read-modify-write מתפצל מול עורך-המתודולוגיה (MET-2/3, להלן G2 הפרות-ידועות). ### 0.5 Invariants חדשים **INV-LRN4 (ניגוד-אמת → G10/G9):** למידת-קול מבוססת **pairing draft↔final ברמת-בלוק**, לא קריאת-final בלבד. כל החלטה אינה "סגורה" עד שהושוותה מול הסופי; כל סופי מנותח מול הטיוטה. נשמר פנקס-התאמה (`draft_final_pairs`) עם מצב-חיים `draft_done → final_received → analyzed → lessons_folded`. ההכללה (האם הלמידה משפרת תיקים שלא-נלמדו) נמדדת פרוספקטיבית — §0.7. *מקורות:* imitation-learning-from-expert-edits · contrastive personalization (arxiv 2504.08745) · author-profiling. *סטטוס: verified.* **INV-LRN5 (טוהר-הקול → G4/G11):** שכבת-ידע-הקול (voice-fingerprint, style_patterns, exemplars) **לא תכיל הלכות/עובדות ספציפיות** — רק סגנון ושיטה. מהות מנותבת ל-precedent_library/halacha. ה-distillation מפריד במקור. *מקורות:* quality-at-source (Data Mesh) · separation-of-concerns. *סטטוס: verified.* ### 0.6 מסלול-העלאת-סופי נקי + פאנלים אוטומטיים (מדורג) היו"ר מעלה את **ההחלטה החתומה שלה** דרך מסלול ייעודי — `POST /api/cases/{case}/final/upload` (כפתור "העלאת החלטה סופית של היו"ר" בלשונית-הטיוטות). **נבדל** מ-`exports/upload` (גרסה-מתוקנת-שלנו+retrofit) ומ-`mark-final` (סימון export-שלנו), ולכן אינו מסלול-מקביל (G2) אלא יכולת חסרה. הקליטה (סינכרונית ב-endpoint) מבצעת את **לולאת-צמיחת-הקורפוס** (§1.3) במלואה: 1. **קורפוס-הסגנון** (voice) תחת ה-`case_number` **המלא** (בל"מ≠ערר — מונע התנגשות-מספר) + פתיחת `draft_final_pairs` (`final_received`, INV-LRN4). 2. **ספריית-הפסיקה** — ההחלטה נכנסת ל-`case_law` כ-`internal_committee` **תמיד** (כדי שתהיה ברת-ציטוט בהחלטות עתידיות). `chair_name` נקבע **דטרמיניסטית** (תיק → ברירת-מחדל-ועדה, לעולם לא ריק — אילוץ `case_law_internal_chair_check`); לא נשען על חילוץ-LLM. מטה-דאטה נוסף (תאריך/צדדים) מועשר אסינכרונית ע"י מחלץ-Gemini. 3. **בדיקת-ציטוטים** — `extract_internal_citations` מקשר את הפסיקה שההחלטה מצטטת לספרייה; כל ציטוט שאינו בספרייה **מסומן אוטומטית** כ-`missing_precedent` (open) להעלאה ע"י היו"ר. 4. הציטוטים-המקושרים מזינים את **לולאת-ה-corroboration** (X11): ציטוט-נכנס מההחלטה שלנו מחזק את ההלכות של התקדים המצוטט (`corroboration_rebuild`). ואז שני שלבים אוטומטיים נפרדים (`run-learning` / `run-halacha`) המעירים worker מקומי (claude/DeepSeek/Gemini מקומיים בלבד): - **למידה:** הצינור (`final_learning_pipeline.py`) רץ בסדר `enroll_style_corpus` (יצירת רשומת-הקורפוס, מהיר — **ראשון** מאז #159 כדי שהקורפוס יהיה זמין לפני הדיסטילציה הארוכה) → `ingest_final_version` (Opus distillation) → **פאנל-סגנון דו-סוכני** (DeepSeek+Gemini, "למידה כפולה") שמצביע על כל לקח-style_method; הסכמה 2/2 → `decision_lesson` (`source=panel:deepseek+gemini`) **שזורם אוטומטית לכותב** כ-`approved` (שער-מדורג, INV-LRN1) — הפיך (veto-יו"ר ב-/training); פיצול → ליו"ר. **במקביל** (יקיצת `final_learning_*`) האוצֵר ממשיך ל-§A ורושם ממצאי-`source='curator'` (ערוץ ג׳, §1.1). - **הלכות:** `extract_internal_citations` → `precedent_extract_halachot` → `corroboration_rebuild` → **פאנל-הלכות תלת-סוכני** (`halacha_panel_approve.py --apply`). שני הפאנלים **הפיכים** (גיבוי-CSV ל-`data/audit/`) ומסלימים מחלוקות. ההטמעה ל-`SKILL.md`/`legal-decision-lessons.md` ולכל **מהות** נשארת **אישור-יו"ר ידני קשיח** (INV-LRN1/G10); לקחי-**סגנון** בקונצנזוס זורמים אוטומטית-והפיך לכותב. ### 0.7 מדד-ההכללה הפרוספקטיבי (held-out trend — "מסלול A") **השאלה שזה עונה:** האם הלמידה באמת *מכלילה* — כלומר משפרת טיוטות של תיקים **שלא נלמדו** — ולא רק "משננת" תיקים שכבר ראינו. מדד-מרחק-הסגנון (שלב [7]) על תיק שלקחיו כבר הוטמעו אינו held-out; מדידה רטרואקטיבית בלתי-אפשרית כי הלקחים נשמרים `appeal_type_rules` (`universal`) **ללא תיוג-מקור** → אין leave-one-out. לכן המדידה **פרוספקטיבית**: נלכדת ברגע היחיד שבו היא נקייה. **המנגנון (אוטומטי, ב-`final/upload`, ללא LLM):** מיד אחרי פתיחת הזוג `draft_final_pair` אבל **לפני** הטמעת-לקחי-התיק (ה-fold הוא שלב-`promote` ידני נפרד ב-`/training`, §0.4), נלכד snapshot של `style_distance` (`anti_pattern_total`, סטיית-יחסי-זהב, `change_percent`) יחד עם **גודל-בריכת-הלקחים** באותו רגע (מספר `discussion_rules`+`transition_phrases` ב-`universal`). מכיוון שהטיוטה נכתבה עם הבריכה ה**קודמת** בלבד, כל שורה היא נקודת-נתון held-out נקייה: *"עם N לקחים מצטברים, הטיוטה שלנו על תיק שלא-נראה קיבלה ציון X"*. **הקריאה:** טבלת `style_distance_history` (append-only) + `GET /api/learning/style-distance-history`. ירידה ב-`anti_pattern_total`/`change_percent` ככל ש-N גדל = **הוכחה מתגלגלת שהלמידה מכלילה** (INV-LRN4 — זהו משטח-המגמה של "ניגוד-האמת"). **אזהרת-פרשנות:** `change_percent` מערבב סגנון עם שלמות-תוכן (לפעמים היו"ר מכפילה אורך כי חסרה מהות, לפעמים חותכת) → `anti_pattern_total` הוא הסיגנל הנקי-יותר לסגנון. שימוש-חוזר בשירות `style_distance` ובבריכת `appeal_type_rules` — אין מסלול-מדד מקביל (G2). > **חלון נקי חד-פעמי:** תיק שכבר `lessons_folded` פספס את חלון ה-held-out שלו — אין backfill. הטבלה מתמלאת קדימה מהסופי הבא. --- ## 1. שלוש לולאות-המשנה הלמידה אינה אירוע יחיד אלא **שלוש לולאות** המתנקזות לאותם מסמכי-ידע מוסמכים ([legal-decision-lessons.md](../legal-decision-lessons.md), [skills/decision/SKILL.md](../../skills/decision/SKILL.md)) ולקורפוסים: ### 1.1 לולאת-Hermes (post-export → הצעה → אישור) הסוכן [hermes-curator](../../.claude/agents/hermes-curator.md) (adapter `deepseek_local`, פרופילים `curator-cmp` / `curator-cmpa`) נקרא **אחרי שדפנה מסמנת קובץ כסופי** ב-UI (`POST /api/cases/{case_number}/exports/{filename}/mark-final` → `pc_wake_curator_for_final()` ב-`web/paperclip_client.py` → sub-issue + wakeup; **חיבור ישיר מה-UI, לא דרך CEO** — `hermes-curator.md:27-35`). הוא: - **קורא בלבד** את הטקסט הסופי (`case_get_final_text`), `get_style_guide`, ואת `SKILL.md` / `legal-decision-lessons.md` / `corpus-analysis.md` המקומיים (`hermes-curator.md:60-70`). - מזהה **3–5 דפוסים/פערים** חדשים, כל ממצא מתויג `[סגנון]` / `[מבנה]` / `[לקסיקון משפטי]` / `[טבלאי]` (`hermes-curator.md:99-108`). - **מציע** — comment + interaction בערוץ-הפלטפורמה, וגם **רושם כל ממצא מבנית** כ-`decision_lesson` (`source='curator'`, `review_status='proposed'`) דרך כלי-ה-MCP `record_curator_findings` (`hermes-curator.md` §A.5b → `tools/workflow.py::record_curator_findings` → `db.add_decision_lesson`). הממצאים מופיעים ב-`/training` טאב "אוצֵר" (ערוץ ג׳) ועוברים את שער-היו"ר (INV-LRN1). > **דריפט-מימוש שנסגר (2026-06-28):** עד גל זה הסוכן כתב comment בלבד והספ תיאר endpoint שלא נקרא — > הממצאים האיכותיים אבדו, וכרטיס-האוצֵר (`get_curator_stats`) ספר `source='curator'` שאיש לא כתב → 0. > `record_curator_findings` מממש את INV-LRN3 בפועל. - **אינו מאשר ואינו מטמיע** — read-only על התוכן; רישום-הממצא הוא *הצעה* מגודרת-שער, לא שינוי-קול. אינו עורך `skills/` / `lessons.py` / שכבת-הקול בעצמו (`hermes-curator.md` §"כללים כלליים"). - **שני ערוצי-למידה נפרדים על אותו סופי:** ערוץ-האוצֵר (כאן, qualitative, `source='curator'`) ו**פאנל-הסגנון** הדו-סוכני שהצינור מפעיל (§0.6 — DeepSeek+Gemini, `source='panel:deepseek+gemini'`). שניהם `decision_lessons` ממתיני-שער; ערוץ הדיסטילציה (`appeal_type_rules`, §0.4) הוא השלישי. > **נסגר (TaskMaster #159, 2026-06-28):** ה-`PIPELINE-WAKE BRANCH` (`hermes-curator.md`) מבדיל כעת > `final_learning_*` מ-`final_halacha_*`: על **learning** הסוכן מפעיל את הצינור ברקע ו**ממשיך ל-§A** > (מצב AUTO — רושם ממצאי-`curator`, מדלג על interaction), על **halacha** יוצא מיד כקודם. המירוץ מול > `enroll_style_corpus` נסגר בכך ש-enroll רץ **ראשון** בצינור (§0.6) — הקורפוס קיים תוך שניות, הרבה לפני > שהסוכן/ה-§A מסיים את ניתוח-ה-LLM; `record_curator_findings` כולל גם retry כרשת-ביטחון. ### 1.2 לולאת-פידבק-היו"ר (capture → ניתוח שבועי → לקחים) - **לכידה מובנית:** `record_chair_feedback` שומר הערת-דפנה בטבלת `chair_feedback` (`category ∈ {missing_content, wrong_tone, wrong_structure, factual_error, style, other}`) — `tools/workflow.py:348`, ראה [05-qa-review.md](05-qa-review.md) §2.3. - **ניתוח שבועי:** ה-scheduled job `weekly-feedback-analysis` (ראשון 19:00, `plugin-legal-ai/src/manifest.ts:175-179`) מושך `GET /api/chair-feedback/weekly-summary`, ואם יש פריטים — **מעיר את ה-CEO** לעדכן את `legal-decision-lessons.md` עם הלקחים החדשים (`worker.ts:784-837`; הוראת ה-prompt: "הוסף רק לקחים חדשים… קבץ לפי נושא" — `worker.ts:830`). - אין פריטים → הג'וב מדלג בשקט (`worker.ts:805`). ל-CEO שמתעורר מ-`weekly-feedback-job` **אין `issueId`** — הוא כותב לקובץ בלבד, לא מפרסם comment ולא סוגר issue (כלל מ-[CLAUDE.md](../../CLAUDE.md) "Scheduled Jobs"). ### 1.3 לולאת-צמיחת-הקורפוס (החלטה סופית → קורפוס → אחזור) החלטה סופית נקלטת לקורפוס-הסגנון (`ingest_final_version` — ראה [06-export.md](06-export.md) § Hermes), ופסיקה/החלטות-ועדה חדשות נקלטות דרך המסלול הקנוני של [01-ingest.md](01-ingest.md). כך הקורפוס שמזין את האחזור ([03-retrieval.md](03-retrieval.md)) **גדל מהפלט עצמו** — והדיון הבא נשען על תקדים עשיר יותר. צמיחה זו כפופה לאותו חוזה-שלמות ([G4](00-constitution.md#inv-g4-חוזה-שלמות-לפני-שמיש--ניתן-לחיפוש)) כמו כל קליטה. --- ## 2. הלולאה במלואה (הציור) ``` ┌──────────────────────────────────────────────────────┐ │ │ ┌─────────────▼─────────────┐ ┌────────────────────────┐ │ │ כתיבה (04) │ ───▶ │ QA + שערים אנושיים (05)│ │ │ 12 בלוקים · סגנון דפנה │ │ validate_decision + │ │ │ ← lessons.py CONTENT_ │ │ פידבק-היו"ר │ │ │ CHECKLISTS · SKILL.md │ └───────────┬────────────┘ │ └───────────────────────────┘ │ ייצוא (06) │ ▲ ▼ │ │ ┌──────────────────────┐ │ ┌────────┴──────────────┐ │ סימון "סופי" (UI) │ │ │ legal-decision- │ │ mark-final │ │ │ lessons.md + SKILL.md │ └───────┬──────────────┘ │ │ (מסמכי-ידע מוסמכים) │ │ │ └────────▲──────────────┘ ┌──────────┴───────────┐ │ │ ▼ ▼ │ │ ✋ אישור-יו"ר ידני ┌───────────────┐ ┌────────────────┐│ └──────────────────────│ Hermes curator │ │ ingest_final → ││ (commit ידני בלבד) │ → הצעות(comment)│ │ קורפוס-סגנון → ┘│ └───────────────┘ │ אחזור (03) │ ┌───────────────────────────┐ └────────────────┘ │ פידבק-היו"ר (05) ──┐ │ │ chair_feedback │ │ └────────────────────┼───────┘ ▼ weekly-feedback-analysis (job) │ מעיר CEO ▼ עדכון legal-decision-lessons.md ──┐ └──▶ (חזרה ל-04 / lessons.py) ``` הקשר לכתיבה: הלקחים והצ'קליסטים שב-`CONTENT_CHECKLISTS` (`mcp-server/src/legal_mcp/services/lessons.py:355`, בורר `get_content_checklist` `:509-555`) ו-`get_lessons_for_outcome` (`lessons.py:309`) מוזרקים ל-prompt-הכתיבה לפי סוג-ערר ותוצאה — ראה [04-analysis-writing.md](04-analysis-writing.md) §5. כל סגירה של לולאה (Hermes או פידבק) שמשנה את `legal-decision-lessons.md` / `SKILL.md` משפיעה ישירות על הכתיבה הבאה. --- ## 3. Invariants של התחום ### INV-LRN1: עדכון-ידע דורש שער-יו"ר — **שער מדורג** לפי סיכון (governance →G10) **כלל (מעודכן 2026-06-28, הכרעת-יו"ר):** השער **מדורג לפי סיכון-התוכן**, לא אחיד: - **מהות** (הלכה / תקדים / עובדה / כל שינוי ב-[SKILL.md](../../skills/decision/SKILL.md) או ב-[legal-decision-lessons.md](../legal-decision-lessons.md)) → **שער-קשיח**: בחינה ואישור ידניים של היו"ר/חיים ואז commit ידני — **לעולם לא auto-committed**. פאנל-ההלכות התלת-סוכני מציע בלבד. - **סגנון** (`decision_lessons` בקטגוריות style/structure/lexicon/tabular, וכן discussion_rules / transition_phrases / anti_patterns) שעבר **קונצנזוס-פאנל 2/2** → **זורם אוטומטית לכותב** (`review_status='approved'`), **הפיך**: היו"ר רואה ויכול **לבטל בדיעבד** ב-/training. זהו שינוי-קול נמוך-סיכון (טהור-מהות לפי INV-LRN5), בקרת-איכות מובנית (2 מודלים), והפיכוּת — ולכן עדיין "תחת בקרת-המשתמש" במובן NCSC/CEPEJ (veto, לא אישור-מראש על כל פריט). זהו פֶּאֶט של [INV-G10](00-constitution.md#inv-g10-המערכת-מסייעת--שערים-אנושיים-הם-invariant) על שכבת-הידע: הלמידה כפופה לשיקול-הדעת האנושי — קשיח למהות, הפיך-veto לסגנון. **מימוש:** `scripts/style_lesson_panel.py:_review_status_for` קובע `approved` לקטגוריות-סגנון בקונצנזוס, `proposed` אחרת; הכותב צורך רק `approved` ([db.get_recent_decision_lessons]). **מקורות:** NCSC/JTC — *Principles & Practices for AI Use in Courts* (human-in-the-loop; never replace human judgment) · Council of Europe / CEPEJ (2018, under user control) · Federal Judicial Center — *Judicial Writing Manual* (2d ed.) | סטטוס: verified **אכיפה:** הסוכן read-only על תוכן ו-write רק על comments (`hermes-curator.md:1-3, 125-130`); תהליך-האישור — הצעת-curator כ-comment ב-Paperclip → חיים בוחן ומאשר ידנית → commit ל- `SKILL.md` ו-`docs/legal-decision-lessons.md` (מ-[CLAUDE.md](../../CLAUDE.md) "Hermes Curator"); ה-CEO השבועי מתעורר בלי `issueId` וכותב לקובץ בלבד ([CLAUDE.md](../../CLAUDE.md) "Scheduled Jobs"). **הפרה ידועה:** — ### INV-LRN2: האחריות לאיכות יושבת במקור — quality-at-source (engineering →G4) **כלל:** האחריות לאיכות-הידע (לקחים, הלכות, metadata של פריטים מואנדקסים) נאכפת **קרוב ככל האפשר לנקודת-היצירה/הקליטה** — בעת ניסוח-ההחלטה, בעת לכידת-הפידבק, ובעת קליטת-פריט — **לא** מתוקנת בדיעבד במורד-הזרם (re-OCR, טלאי-קריאה, ניחוש בזמן-חיפוש). פריט-ידע חסר-שלמות מסומן ומדווח בנקודת-הכניסה, לא מתקבל בשקט. **מקורות:** Martin Fowler — *Data Mesh* (quality-at-source: domain owns data quality at the point of creation) · DAMA-UK *Six Primary Dimensions for Data Quality* (2013, completeness) · ISO 8000 (Data quality) | סטטוס: verified **אכיפה:** חוזה-שלמות בקליטה ([01-ingest.md](01-ingest.md) §2, [02-data-model.md](02-data-model.md)) + "אין בליעה שקטה" (חוקה §6); לכידת-פידבק מובנית בנקודת-ההערה (`record_chair_feedback`, `tools/workflow.py:348`); לקחים נשמרים מבני ולא ad-hoc (`lessons.py`, [legal-decision-lessons.md](../legal-decision-lessons.md)). **הפרה ידועה:** ראה [INV-G4](00-constitution.md#inv-g4-חוזה-שלמות-לפני-שמיש--ניתן-לחיפוש) (ערן סופר 8046/24 אונדקס עם `headnote`/`summary`/`tags` ריקים — שלמות לא נאכפה במקור) → ממצא ל-[audit](../audit-report.md). ### INV-LRN3: ידע נלכד באופן מובנה — לא ad-hoc (engineering →G9) **כלל:** פידבק ולקחים נלכדים ב**מבנה דטרמיניסטי ועקיב** — `chair_feedback` (עם `category` ו-`block_id`), `decision_lessons` (עם `category`/`source`), ו-`CONTENT_CHECKLISTS` בקוד — כך שהלמידה **עמידה וניתנת-לביקורת**, לא פזורה בהערות חופשיות. מקור-הלקח (`source:"curator"` מול פידבק-יו"ר) משומר לעקיבוּת. **מקורות:** ISO 15489-1:2016 (records reliability/authenticity) · DAMA-UK *Six Primary Dimensions for Data Quality* (2013) · ISO 8000 (Data quality) | סטטוס: verified **אכיפה:** טבלת `chair_feedback` + `record_chair_feedback`/`list_chair_feedback` (`tools/workflow.py:348, 393`); `decision_lessons` עם `source`+`category` (`hermes-curator.md:79-96`); `CONTENT_CHECKLISTS`/`get_lessons_for_outcome` (`lessons.py:355, 309`). עקיבוּת-מקור קושרת ל-[X5-audit-provenance.md](X5-audit-provenance.md). **הפרה ידועה:** — ### INV-LRN6: סינתזת-עיקרון-קנוני מעוגנת ומגודרת-שער (V41 Phase 4 → G10/INV-AH/G9) **כלל:** סינתזת ה-`canonical_statement` של עיקרון-הלכה קנוני (מיזוג/זיקוק ניסוחי-המופעים לניסוח אחד כללי) חייבת לקיים שלושה תנאים: **(א) עיגון** — הניסוח נובע מ-`supporting_quote` של המופעים בלבד, ללא הוספת דין/סייג/ציטוט-תיק שאינו במקור; חוסר-עיגון → **הימנעות** (`grounded=false`, נשמר הניסוח הקיים) ולא המצאה ([INV-AH](../anti-hallucination-gate.md), AH-1/2/3). **(ב) שער-drift** — הניסוח המסונתז מוטמע-מחדש ומושווה (cosine) לניסוח-המקור; מתחת לרצפה (`HALACHA_CANONICAL_SYNTH_DRIFT_FLOOR`=0.80) הסינתזה **נדחית** (נשמר המקור) — הטמעה מהוזה/סוטה-נושא לא תדרוס עיקרון תקין בשקט. **(ג) שער-יו"ר** — סינתזה אף פעם אינה מאשרת: היא מקדמת `review_status` מ-`pending_synthesis` ל-`pending_review` בלבד; ההכרעה הסופית היא של היו"ר בפאנל ([INV-LRN1](#inv-lrn1-עדכון-ידע-דורש-אישור-יור-ידני--אין-auto-commit-governance-g10)/G10). כל ניסיון-סינתזה (התקבל / נשמר-מקור / נמנע) **מתועד** (CSV ב-`data/audit/` + log), ובהטמעה מתעדכן ה-embedding יחד עם הניסוח כדי ש-lookup-before-insert (cosine) לא יסחף ([INV-G6](00-constitution.md#inv-g6-re-index-בכל-שינוי-תוכן)). **מסלול-יחיד (G2):** כל הקוראים (backfill, כלי-MCP `canonical_synthesize_pending`, דריינר-לילה) עוברים דרך `services/canonical_synthesis.py::synthesize_canonical` — אין נתיב-סינתזה מקביל. **מקורות:** Stanford RegLab/Magesh et al. (JELS 2025 — grounding מול הזיה) · Dhuliawala et al. *Chain-of-Verification* (arXiv:2309.11495, 2023) · RAGAS faithfulness (atomic-claim grounding) | סטטוס: verified **אכיפה:** `services/canonical_synthesis.py` (עיגון בפרומפט, `_new_citations`, שער-drift); `db.apply_canonical_synthesis` (סטטוס→pending_review אטומי + רענון-embedding); הפאנל הקנוני (`/precedents`, PR#300) לאישור-יו"ר; CSV-audit ב-`data/audit/canonical-synthesis-*.csv`. **הפרה ידועה:** — (חדש) ### INV-LRN7: חילוץ-עקרונות מגודר-פאנל + טרמינולוגיה נכונה (#152 → G2/G10/INV-AH) **כלל:** חילוץ עקרונות-משפטיים מפסיקה (להבא ורטרואקטיבית) עובר משטר-פאנל אחיד: **3 מודלים עצמאיים** (Claude מקומי + DeepSeek + Gemini) מנתחים לעומק כל החלטה, מציעים מועמדים עם ציון, המועמדים מותאמים בין-מודלית (cosine), ולכל אחד `votes` (# מודלים) ו-`score` (ממוצע-המצביעים). **כלל-אישור:** 3 קולות→אישור · 2 וציון≥0.85→ אישור · 2 ו<0.85→`pending_review` (יו"ר, G10) · ≤1→נדחה. **תקרה:** עד `HALACHA_PANEL_MAX_NEW`=5 עקרונות חדשים לכל החלטה (לפי ציון); עיקרון מוכר מקושר ל-canonical קיים (cosine, V41) ואינו נספר בתקרה. **טרמינולוגיה (מהות, לא קוסמטיקה):** ועדת-ערר **מיישמת** דין ואינה יוצרת הלכה — עיקרון מפס"ד מחוזי/עליון מחייב = **הלכה**, מהחלטת ועדת-ערר = **כלל פרשני**, מפסיקה משכנעת = **עיקרון**; המטרייה = **עקרונות משפטיים**. הסיווג נגזר מ-`first_established_in` (source_kind/is_binding), ללא עמודה חדשה. **מקור-יחיד (G2):** extractor (`_extract_via_panel`), סינון רטרואקטיבי (`cull_principles.py`), ושני הם דרך `services/panel_extraction` + `panel_judges` — אין נתיב-פאנל מקביל. **מקורות:** gold-set tri-model consensus (AC1=0.92, [[project_goldset_tri_model_consensus]]) · LegalBench (gemini-2.5-flash) · Trust-or-Escalate (ICLR 2025) | סטטוס: verified **אכיפה:** `services/panel_extraction.py` (panel_extract/panel_keep_score/classify/apply_cap), `services/panel_judges.py`, `halacha_extractor._extract_via_panel`, `db.store_panel_principles`, `scripts/cull_principles.py`, `services/principles.py` (תווית). config `HALACHA_PANEL_*`. החלטת-יו"ר 2026-06-19; מקור-אמת: [`../legal-principles-redesign.md`](../legal-principles-redesign.md). **הפרה ידועה:** — (חדש) ### INV-LRN8: סינתזת-לקחים מעוגנת + מגודרת-שער-מדורג (#158 → G2/G10/INV-AH) **כלל:** לקחי-סגנון (`decision_lessons`) חופפים מאוחדים ל**לקח-על אחד** עשיר ומוכלל, כך שהסט שזורם לכותב **קטֵן ומשתבח** (פותר את החיתוך-השקט limit=15, #157) — Authorial Style Profiling (§0.1: פרופיל-מופשט מנצח ערימת-דוגמאות). המנגנון מחקה את סינתזת-הקנוני (INV-LRN6) **על אותה טבלה** — אין מאגר-מקביל (G2): (א) אשכול greedy לפי cosine (`LESSON_SYNTH_CLUSTER_THRESHOLD`) בתוך shard של `practice_area`+`category`; (ב) מיזוג ע"י `claude_session` **מעוגן-מקור** — נובע מלקחי-המקור בלבד, סגנון-בלבד (לא מהות, INV-LRN5), abstain אם לא-מתמזג (INV-AH); (ג) **שער-drift** — הלקח-הממוזג מוטמע-מחדש ומושווה (cosine) ל-centroid האשכול; מתחת ל-`LESSON_SYNTH_DRIFT_FLOOR` נדחה. הלקח-על נכתב `source='synthesis'` עם `synthesized_from`, והמקורות → `review_status='superseded'` (provenance, לא נצרכים-כותב). **שער מדורג-הפיך (הכרעת-יו"ר 2026-06-28):** מאחר שכל המקורות `approved`, הלקח-על זורם `approved` עם veto-יו"ר ב-/training — דחייתו משחזרת את המקורות ל-`approved` (`db.revert_lesson_synthesis`). idempotency: lookup-cosine מול synthesis קיים לפני INSERT. **מסלול-יחיד (G2):** הכלי `lesson_synthesize_pending` והסקריפט `backfill_lesson_synthesis.py` עוברים שניהם דרך `services/lesson_synthesis.py`. audit CSV ב-`data/audit/lesson-synthesis-*.csv`. **מקורות:** Authorial Style Profiling · grounding-vs-hallucination (Stanford RegLab) · CoVe (arXiv:2309.11495) | סטטוס: verified **אכיפה:** `services/lesson_synthesis.py` (אשכול/מיזוג/drift), `db.{fetch_synthesis_candidates, apply_lesson_synthesis,revert_lesson_synthesis,nearest_synthesis_lesson,synthesis_shards}`, SCHEMA_V46 (`embedding`+`synthesized_from`). config `LESSON_SYNTH_*`. **הפרה ידועה:** — (חדש) --- ## 4. הג'ובים המתוזמנים (תמיכת-תשתית ללולאה) | Job (`manifest.ts`) | לוח-זמנים | תפקיד בלולאה | |---------------------|-----------|---------------| | `weekly-feedback-analysis` | ראשון 19:00 (`:175-179`) | מסכם פידבק-יו"ר → מעיר CEO לעדכון `legal-decision-lessons.md` (`worker.ts:784-837`) | | `stale-case-reminder` | יומי 08:00 (`:169-172`) | תזכורת על תיקים תקועים 30+ ימים (`worker.ts:710-780`) — היגיינת-תהליך, לא ידע | | `sync-case-status` | כל 15 דק' (`:162-166`) | מסנכרן סטטוסי-תיקים legal-ai↔Paperclip (`worker.ts:624`) — תשתית, לא ידע | רק `weekly-feedback-analysis` הוא חלק מלולאת-הלמידה; שני האחרים הם היגיינת-תהליך/סנכרון. --- ## 5. הפניות-אחיות - [00-constitution.md](00-constitution.md#inv-g10-המערכת-מסייעת--שערים-אנושיים-הם-invariant) — INV-G10 (שערים אנושיים) + [INV-G4](00-constitution.md#inv-g4-חוזה-שלמות-לפני-שמיש--ניתן-לחיפוש) (quality-at-source) + כלל-ההנדסה §6. - [04-analysis-writing.md](04-analysis-writing.md) — הכתיבה שהלקחים/הצ'קליסטים מזינים (§3, §5). - [05-qa-review.md](05-qa-review.md) — שער פידבק-היו"ר (§2.3) שמתחיל את לולאת-הפידבק. - [01-ingest.md](01-ingest.md) — קליטה אחידה (quality-at-source) לצמיחת-הקורפוס. - [03-retrieval.md](03-retrieval.md) — האחזור שהקורפוס הגדל מזין. - [06-export.md](06-export.md) — `mark-final` שמפעיל את Hermes + `ingest_final_version`. - [X5-audit-provenance.md](X5-audit-provenance.md) — עקיבוּת-מקור של לקחים (`source`). - הסוכן: [.claude/agents/hermes-curator.md](../../.claude/agents/hermes-curator.md). - מסמכי-הידע המוסמכים: [legal-decision-lessons.md](../legal-decision-lessons.md) · [skills/decision/SKILL.md](../../skills/decision/SKILL.md) · [corpus-analysis.md](../corpus-analysis.md).