# 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 כמותיים, מוזרק לכתיבה. 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 (מדד-מרחק-סגנון). ### 0.4 ניהול ב-UI `/methodology` = **עורך-הפרופיל** (declarative: יחסי-זהב, כללי-דיון, צ׳קליסטים, ביטויי-מעבר, אנטי-דפוסים, voice-invariants). `/training` = **שולחן-הלמידה** (קורפוס, פורטרט-סגנון, השוואת draft↔final, curator, מדד-מרחק, פנקס-התאמה). ### 0.5 Invariants חדשים **INV-LRN4 (ניגוד-אמת → G10/G9):** למידת-קול מבוססת **pairing draft↔final ברמת-בלוק**, לא קריאת-final בלבד. כל החלטה אינה "סגורה" עד שהושוותה מול הסופי; כל סופי מנותח מול הטיוטה. נשמר פנקס-התאמה (`draft_final_pairs`) עם מצב-חיים `draft_done → final_received → analyzed → lessons_folded`. *מקורות:* 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 מקומיים בלבד): - **למידה:** `ingest_final_version` (Opus distillation) → **פאנל-סגנון דו-סוכני** (DeepSeek+Gemini, "למידה כפולה") שמצביע על כל לקח-style_method; הסכמה 2/2 → `decision_lesson` (`source=panel:deepseek+gemini`); פיצול → ליו"ר. - **הלכות:** `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) — הפאנל יוצר *הצעות* בלבד. --- ## 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 ב-Paperclip + רישום כל ממצא כ-`decision_lesson` דרך `POST /api/training/corpus/{corpus_id}/lessons` (`source:"curator"`) שמופיע ב-UI תחת הטאב "מה למדנו" (`hermes-curator.md:73-96`). - **אינו מעדכן** קבצים בעצמו (skills/, lessons.py, DB) — רק מציע (`hermes-curator.md:125-130`). ### 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: עדכון-ידע דורש אישור-יו"ר ידני — אין auto-commit (governance →G10) **כלל:** מנגנוני-הלמידה (Hermes, ניתוח-פידבק שבועי) **מציעים בלבד**. כל שינוי ב- [SKILL.md](../../skills/decision/SKILL.md) או ב-[legal-decision-lessons.md](../legal-decision-lessons.md) מחייב **בחינה ואישור ידניים של היו"ר/חיים** ואז commit ידני — **לעולם לא auto-committed**. Hermes כותב comment + `decision_lesson`, לא קבצים; ה-CEO השבועי כותב לקובץ אך הצעותיו מאומתות ידנית לפני קיבוע. זהו פֶּאֶט של [INV-G10](00-constitution.md#inv-g10-המערכת-מסייעת--שערים-אנושיים-הם-invariant) על שכבת-הידע: גם הלמידה כפופה לשיקול-הדעת האנושי. **מקורות:** 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). **הפרה ידועה:** — --- ## 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).