Files
legal-ai/docs/spec/00-constitution.md
Chaim 36d10b6a70 feat(X13): auto-fetch court verdicts from נט המשפט → corpus (Tier 0 + scaffold)
תת-מערכת אחזור-פסיקה אוטומטי: כשיומון מצביע על פס"ד בית-משפט, מסווגים את
הערכאה, מורידים מהמקור הציבורי המתאים, וקולטים דרך צינור-הקליטה הקנוני.

- spec-first: docs/spec/X13-court-fetch.md (INV-CF1..CF7) + אינדקס
- מסווג court_citation.py (supreme/admin/skip) + 10 בדיקות (עת"מ 46111-12-22 → admin)
- Tier 0: court_fetch_supreme.py — supremedecisions API (reverse-engineered), httpx
  + browser-headers (אומת 200) + politeness
- תור court_fetch_jobs (SCHEMA_V30) + DB helpers + court_fetch_orchestrator.py
- Tier 1 scaffold: legal-court-fetch-service (aiohttp+Bearer, מראת legal-chat-service)
  + camofox_client (Camoufox open-source) + recaptcha_audio (Whisper מקומי) + pm2
- Tier 2 fallback חינני: manual + missing_precedent (INV-CF2/CF3 — אין drop שקט)
- כלי-MCP court_verdict_fetch / court_fetch_status; SCRIPTS.md

Invariants: מקיים G2 (מסלול-קליטה יחיד, INV-CF1) · G3/G1 (idempotent+נרמול, INV-CF5)
· G4/§6 (אין בליעה שקטה, INV-CF2) · G10 (שער-אנושי, INV-CF3) · G5 (source_type,
INV-CF6) · G9 (provenance+audit, INV-CF7). מקורות INV-CF4: RFC 9309 · Google
crawler · OWASP OAT.

Follow-ups (טרם אומתו חי): live Tier-0 validation · התקנת camofox-browser+whisper
· כיול selectors Tier-1 · COURT_FETCH_SHARED_SECRET (Infisical+Coolify) · טריגר
מ-digest try_autolink (worktree-digests-radar). V30 עלול להתנגש עם digests-radar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 18:08:23 +00:00

24 KiB
Raw Blame History

00 — חוקת המערכת (Constitution)

זהו שער-הכניסה היחיד לספ המערכת עוזר משפטי. הוא מגדיר את הייעוד, עקרונות-העבודה, תבנית ה-invariant, פרוטוקול-האימות, ה-invariants הגלובליים (G1G11), כללי-ההנדסה, אינדקס הספ ונספח המקורות. כל קובץ-תחום (0107, X1X5) כפוף לחוקה זו ומפנה אליה.


1. ייעוד

מערכת AI שמסייעת ליו"ר ועדת הערר לתכנון ובנייה (מחוז ירושלים, עו"ד דפנה תמיר) לנסח החלטות מעין-שיפוטיות כתובות ומנומקות — מסמכים משפטיים פורמליים שעומדים לביקורת שיפוטית — תוך שמירה על הקול, השיקול והאחריות של היו"ר.

  • משרת: יו"ר הוועדה (משתמש-על) והסוכנים הפועלים בשמה.
  • מחזור-חיים: ניהול תיקים → בסיס ידע (3 קורפוסים) → אחזור סמנטי (RAG) → סיוע-כתיבה (12 בלוקים, סגנון דפנה) → ייצוא DOCX.
  • 3 סוגי עררים: רישוי ובנייה (1xxx, חם), היטל השבחה (8xxx, קר), פיצויים ס'197 (9xxx, קר).
  • ה"למה" העמוק: המערכת מסייעת — היו"ר מכריעה (שערים קריטיים ידניים בכוונה); מנוע צבירת-ידע (לומד מהחלטות סופיות ומפידבק); רב-חברתי (CMP/CMPA).

2. עקרונות-עבודה

  1. אסור להניח שהקיים תקין (בהנדסה). כל מה שמופה בקוד = "טענה לבדיקה", לא "אמת". "תקין" מבחינה הנדסית נגזר ממקורות חיצוניים סמכותיים, לא מהמערכת שתחת חשד.
  2. פרוטוקול אימות 3-מקורות — חל על החלטות הנדסה/פיתוח בלבד: כל invariant הנדסי/ ארכיטקטוני (תכנון ובניית האפליקציה — נתונים, מזהים, ingest, אחזור) מגובה ב-≥3 מקורות סמכותיים מוכרים בעלי ידע מקצועי מוכח. כשאין 3 → מסומן ⚠ UNVERIFIED ומועלה ליו"ר. התוכן המשפטי אינו כפוף לכלל זה — הסמכות עליו היא היו"ר (דפנה) ומסמכי-הפרויקט (block-schema, decision-methodology, legal-decision-lessons, skills/decision), לא מקורות חיצוניים.
  3. מנגנון: מחקר עצמאי → טיוטה לביקורת. קודם חוקרים את הסמכויות החיצוניות (להחלטות הנדסה), ורק אז מנסחים את ה-invariant.
  4. מודל-שיתוף: על החלטות טכניות/אדריכליות אני חוקר ומכריע מקצועית ומציג תוצאה מוגמרת. שואל את היו"ר (חיים) רק במקום שבו הוא הסמכות — כוונה, עדיפויות עסקיות, ותוכן משפטי-דומייני.

3. תבנית-invariant

מבנה אחיד לכל חוק בספ (בכל הקבצים):

### INV-<תחום><מספר>: <כותרת קצרה>
**כלל:** <ניסוח נורמטיבי חד — מה חייב להתקיים>
**מקורות:** <≥3 סמכויות> | סטטוס: verified / ⚠ UNVERIFIED
**אכיפה:** <היכן/איך נאכף — schema / ולידציית-כתיבה / בדיקת-בריאות / שער אנושי>
**הפרה ידועה:** <דוגמה מהמערכת, אם יש — מקשר ל-audit; אחרת "—">

שדה המקורות לפי סוג invariant (שלושה מודלי-סמכות):

  1. הנדסי (תאוריה כללית — נתונים/אחזור/ארכיטקטורה) → מקורות = ≥3 סמכויות חיצוניות + סטטוס.
  2. תוכן-משפטימקור-סמכות = היו"ר + מסמכי-הפרויקט (ללא סטטוס-אימות חיצוני).
  3. פרויקטלי-תפעולי (עובדות על האינטגרציה/התפעול של מערכת זו — אין להן סמכות חיצונית, למשל "wakeup דרך API") → מקור-סמכות = ה-runbooks של הפרויקט (CLAUDE.md, HEARTBEAT.md, סקריפטים), קשור ל-invariant הנדסי גלובלי שאותו הוא מיישם.

4. פרוטוקול-אימות

חל על invariants הנדסיים (G1G10) — החלטות תכנון/בניית האפליקציה. ה-invariant של תוכן-משפטי (G11) אינו כפוף לפרוטוקול זה; הסמכות עליו היא היו"ר + מסמכי-הפרויקט.

  • כל invariant הנדסי נושא שדה מקורות + סטטוס: verified / ⚠ UNVERIFIED.
  • verified = מגובה ב-≥3 מקורות סמכותיים מוכרים בעלי ידע מקצועי מוכח.
  • ⚠ UNVERIFIED = החלטה הנדסית שיש לה פחות מ-3 מקורות סמכותיים מאומתים. פריט כזה לא מוכרע לבד — מועלה ליו"ר עם הערת-הסלמה המתעדת מה חסר והיכן יאומת.
  • החלטות טכניות → מחקר עצמאי + הכרעה מקצועית + הצגת תוצאה. שאלה ליו"ר רק במקום שבו הוא הסמכות (ראה עיקרון 4 לעיל).

5. Invariants גלובליים

אלה החוקים החוצים את כל המערכת — לב החוקה. הם נחלקים לשני סוגים לפי מקור-הסמכות:

  • G1G10 — invariants הנדסיים (תכנון/בניית האפליקציה): כל אחד מגובה ב-≥3 סמכויות טכניות מוכרות (נספח §8). ביחד הם מייבשים את כשל-השורש החוזר: מסלולים/קורפוסים מקבילים שמתפצלים (drift) בלי שכבה שמגדירה ואוכפת "תקין".
  • G11 — invariant תוכן-משפטי: הסמכות עליו היא היו"ר (דפנה) + מסמכי-הפרויקט, לא מקורות חיצוניים, ואינו כפוף לפרוטוקול ≥3-המקורות.

5א. Invariants הנדסיים (G1G10)

INV-G1: מזהה קנוני מנורמל בכתיבה

כלל: לכל ישות יש מזהה קנוני יחיד, מנורמל בנקודת-הכתיבה (לא תיקון-סלחני בקריאה בלבד). case_number נשמר בצורה קנונית אחת; קריאה משווה מול הצורה הקנונית, לא מטליאה. מקורות: SSOT (Single Source of Truth — normalization principle) · E.F. Codd, First Normal Form (CACM 13(6), 1970) · Martin Kleppmann, Designing Data-Intensive Applications (O'Reilly, 2017) | סטטוס: verified אכיפה: schema (אילוץ ייחודיות על המפתח הקנוני) + ולידציית-כתיבה בנקודת-הקליטה; מפורט ב-X1-identifiers.md ו-02-data-model.md. הפרה ידועה: _normalize_case_number סלחני בקריאה בלבד (קומיט "tolerant case_number lookup"); 8126-25 לא נמצא מול האמיתי 8126-03-25 → ממצא ל-audit.

INV-G2: מקור-אמת יחיד — אין מסלולים מקבילים מתפצלים

כלל: לכל סוג-נתון יש מקור-אמת יחיד ומסלול-קוד קנוני אחד. אסור להוסיף מסלול מקביל ליכולת קיימת — ישויות-אחיות חולקות מסלול קנוני אחד; נתונים נגזרים (derived) משוחזרים מהמקור, לא נכתבים במקביל. מקורות: Martin Kleppmann (system of record vs. derived data, DDIA 2017) · Martin Fowler (Canonical Data Model) · SSOT (Single Source of Truth) | סטטוס: verified אכיפה: ביקורת-ארכיטקטורה + כלל-הנדסה "סימטריה" (§6); מפורט ב-01-ingest.md. הפרה ידועה: שני מסלולי ingest מקבילים לישויות-אחיות (ingest_precedent מול ingest_internal_decision) שמתפצלים — לדוגמה: המסלול החיצוני מתזמן חילוץ metadata (request_metadata_extraction), והמסלול הפנימי לא — ולכן ערן סופר 8046/24 נקלטה בלי metadata → ממצא ל-audit.

INV-G3: ingest אחיד ו-idempotent

כלל: קליטה היא אחידה ו-idempotent — upsert על מפתח דטרמיניסטי. קליטה חוזרת של אותו פריט אינה יוצרת כפילות ואינה משנה תוצאה. מקורות: Martin Kleppmann (DDIA, idempotence & exactly-once) · Stripe / CDC idempotency-key pattern · ISO 8000 (Data quality) | סטטוס: verified אכיפה: ולידציית-כתיבה + מפתח-upsert דטרמיניסטי בנקודת-הקליטה; מפורט ב- 01-ingest.md. הפרה ידועה: 3 החלטות "סופר" נקלטו ב-3 פורמטים שונים (8126/24, ציטוט-מלא כ-case_number) — היעדר upsert דטרמיניסטי → ממצא ל-audit.

INV-G4: חוזה-שלמות לפני "שמיש / ניתן-לחיפוש"

כלל: רשומה אינה נחשבת "שמישה" או "ניתנת-לחיפוש" עד ששדות-החובה שלה מולאו ואומתו מול spec מפורש. שלמות נבדקת לפני חשיפה לאחזור. מקורות: ISO 8000 (completeness) · DAMA-UK Six Primary Dimensions for Data Quality (2013, completeness) · ISO 15489-1:2016 (records reliability) | סטטוס: verified אכיפה: חוזה-שלמות באכיפת-קוד + בדיקת-בריאות; מפורט ב-02-data-model.md ו-03-retrieval.md. הפרה ידועה: ערן סופר 8046/24 אונדקס עם headnote/summary/tags ריקים → ממצא ל-audit.

INV-G5: metadata מלא + הפרדת-קורפוס נאכפת בכל query

כלל: לכל פריט מואנדקס יש metadata מלא (כולל מזהה-מקור וסוג-קורפוס), והפרדת- הקורפוס נאכפת בכל מסלול-query — אין דליפה בין 3 הקורפוסים. מקורות: Pinecone (multitenancy / metadata filtering) · RAG attribution (Lewis et al., 2020, NeurIPS) · ISO 8000 (Data quality) | סטטוס: verified אכיפה: schema (metadata חובה) + פילטר-קורפוס נאכף בשכבת-החיפוש; מפורט ב- 03-retrieval.md ו-X5-audit-provenance.md. הפרה ידועה: משימה #56 — דליפת source_kind ב-halacha_filters בין קורפוסים → ממצא ל-audit.

INV-G6: re-index בכל שינוי תוכן

כלל: כל שינוי-תוכן של פריט מואנדקס מפעיל re-index של ה-embedding שלו. אין embeddings מיושנים מול התוכן הנוכחי. מקורות: Pinecone (index freshness / data sync) · Weaviate (re-vectorization on update) · RAG freshness (Lewis et al., 2020) | סטטוס: verified אכיפה: טריגר re-index בנקודת-העדכון + בדיקת-בריאות (גילוי drift); מפורט ב- 02-data-model.md ו-03-retrieval.md. הפרה ידועה:

INV-G7: מיזוג RRF — לא סכום-ציונים

כלל: מיזוג תוצאות בין retrievers נעשה לפי דירוג (Reciprocal Rank Fusion), לא סכום/ממוצע ציונים גולמיים — שכן ציונים בסקיילים שונים אינם בני-השוואה ישירה. מקורות: Elastic (Reciprocal Rank Fusion) · Weaviate (Hybrid Search Explained) · OpenSearch / Azure AI Search (corroborating RRF guidance) | סטטוס: verified אכיפה: קוד-המיזוג בשכבת-האחזור; מפורט ב-03-retrieval.md. הפרה ידועה:

INV-G8: איכות-אחזור נמדדת — precision + recall

כלל: איכות-האחזור נמדדת אמפירית (precision + recall) באמצעות eval harness, לא מונחת. שינוי בשכבת-האחזור מלווה במדידה. מקורות: Manning, Raghavan & Schütze, Introduction to Information Retrieval (CUP, 2008) · RAG evaluation literature (Lewis et al., 2020 ואחריו) · Elastic (relevance evaluation guidance) | סטטוס: verified אכיפה: eval harness + בדיקת-בריאות תקופתית; מפורט ב-03-retrieval.md. הפרה ידועה:

INV-G9: עקיבוּת-מקור + audit-trail ל-AI

כלל: כל פלט של המערכת עקיב למקורו (citation/provenance), וכל שימוש ב-AI מתועד ב-audit-trail הניתן לביקורת. מקורות: Council of Europe / CEPEJ — European Ethical Charter on AI in judicial systems (2018, user-control principle) · NCSC/JTC — Principles & Practices for AI Use in Courts · ISO 15489-1:2016 (records authenticity/integrity) | סטטוס: verified אכיפה: audit-trail באכיפת-קוד + עקיבוּת-מקור בכל פלט; מפורט ב- X5-audit-provenance.md. הפרה ידועה:

INV-G10: המערכת מסייעת — שערים אנושיים הם invariant

כלל: המערכת מסייעת ואינה מחליפה את שיקול-הדעת האנושי. השערים האנושיים (אישור הלכה, בחירת תוצאה, פידבק היו"ר) הם invariant — חובה, לא רשות. תיקון (החלטת-יו"ר 2026-05-31): שער אישור-ההלכה יכול להיות מסופק ע"י טיפול שיפוטי מצטבר (citator פנימי), לא רק ע"י היו"ר — הלכה שאומצה (followed) ע"י ≥N ערכאות/ועדות מצטטות, ללא טיפול שלילי, מאושרת אוטומטית. זהו שיפוט אנושי (של המצטטים), לא שיפוט-AI (ה-AI רק מזהה ומסווג את הטיפול הקיים). שער-היו"ר נשאר חובה לזנב הלא-מצוטט ולכל טיפול שלילי (distinguished/overruled). מפורט ב-X11-citation-corroboration.md (INV-COR1COR6). מקורות: NCSC/JTC — Principles & Practices for AI Use in Courts ("never replace human judgment") · CEPEJ (2018, under user control) · Federal Judicial Center — Judicial Writing Manual (2d ed.) · [לתיקון — מקורות פתוחים:] Fowler et al., Network Analysis and the Law (Political Analysis 15:3, 2007) — ציטוטים-נכנסים = מדד-סמכות · Demir & Canbaz, Validate Your Authority: Benchmarking LLMs on Multi-Label Precedent Treatment Classification (NLLP/ACL, 2025) · Hellyer (Law Library Journal 110:4, 2018, open-access) — טיפול-שיפוטי-מצטבר כמתודולוגיה מתועדת | סטטוס: verified אכיפה: שערים אנושיים בקוד-הזרימה (gate לא ניתן לעקיפה); מסלול-corroboration ב- X11; מפורט ב-05-qa-review.md. הפרה ידועה: 10/19 הלכות מאושרות, התגלה במקרה — שער ידני שקוף בלי נראות backlog → ממצא ל-audit.

5ב. Invariant תוכן-משפטי (G11)

INV-G11: תוכן החלטה מנומקת

כלל: החלטה מנומקת מקיימת: רקע ניטרלי (עובדות בלבד, ללא שיפוט) · ללא כפילות (בלוק דיון מפנה, לא חוזר) · מענה לטענות הצד המפסיד · "מבחן-השופט" (קריא לשופט שלא מכיר את התיק) · טענות מקוריות בלבד (מכתבי הטענות). מקור-סמכות: היו"ר (עו"ד דפנה תמיר) + מסמכי-הפרויקט — block-schema.md, decision-methodology.md, legal-decision-lessons.md, skills/decision/SKILL.md. אינו כפוף לפרוטוקול ≥3-המקורות החיצוני — זהו תוכן משפטי-דומייני, באחריות היו"ר. אכיפה: שערי QA + checklist-תוכן לפי סוג-ערר; מפורט ב-04-analysis-writing.md ו-05-qa-review.md. הפרה ידועה:


6. כללי-הנדסה (מונעים הישנות)

  • סימטריה: אסור להוסיף מסלול מקביל ליכולת קיימת — מרחיבים את המסלול הקנוני (נגזר מ-G2).
  • נרמול לא תיקון-תסמין: מתקנים נתון במקור (קנוני), לא מטליאים בקריאה (נגזר מ-G1).
  • Quality-at-source: שלמות נאכפת קרוב ככל האפשר לקליטה (Martin Fowler — Data Mesh / quality-at-source; נגזר מ-G4).
  • אין בליעה שקטה: רשומה חסרה/פגומה מסומנת ומדווחת, לא מתקבלת בשקט (תואם feedback קיים — אסור bare except: pass; נגזר מ-G4).

7. אינדקס הספ

הערה: כל קבצי הספ (00, 0107, X1X10) קיימים. החוקה היא שער-הכניסה; כל קובץ-תחום כפוף לה.

קובץ תפקיד אוכף invariants
00-constitution.md חוקה — ייעוד, invariants גלובליים, כללי-הנדסה, אינדקס G1G11
01-ingest.md קליטה מאוחדת: מסמכי-תיק / פסיקה חיצונית / החלטות-ועדה — חוזה מסלול-יחיד G2, G3
02-data-model.md אחסון: ישויות (cases, case_law, documents, chunks, halachot…) + חוזה-שלמות לכל ישות G1, G4, G6
03-retrieval.md 3 קורפוסים + כלי-חיפוש · hybrid/RRF · attribution · eval harness G4, G5, G6, G7, G8, G9
04-analysis-writing.md חילוץ טענות · 12 בלוקים · סגנון דפנה (מצטט block-schema.md) G11
05-qa-review.md שערי QA + שערים אנושיים (אישור הלכה, בחירת תוצאה, פידבק) כ-invariant G10, G11
06-export.md ייצוא DOCX לפי תבנית דפנה G2, G9
07-learning.md Hermes · לקחים · לולאת פידבק היו"ר · צמיחת קורפוס (quality-at-source) G4, G10
X1-identifiers.md מודל מזהים קנוני: נרמול case_number בכתיבה · cases מול case_law · פורמטי ציטוט G1
X2-multi-company.md CMP/CMPA · 14 סוכנים · כללי sync G2
X3-integration-deploy.md Paperclip (wakeup, ניתוב comments, webhooks) · Coolify/pm2 G2, G9 (תפעולי)
X4-agents.md מפת הסוכנים (דומיין + סוכני-התהליך) G10
X5-audit-provenance.md audit-trail לשימוש ב-AI · עקיבוּת כל מקור מצוטט · שלמות-רשומה G5, G9
X6-ui-api-contract.md web-ui ↔ API: OpenAPI=SSoT · response models · envelope · SSE · חוזי-טופס + כללי-עיצוב G2, G4, G9 (UI)
X7-paperclip-client-params.md לקוח-Paperclip קנוני · IDs/env/keys מ-config · webhook idempotency/אירוע מגורס G2, G9 (תפעולי)
X8-field-provenance.md מקור-מילוי כל שדה (דטרמיניסטי/Opus/ידני/נגזר) · preservation · trust · verbatim-quote G9, G10
X9-mcp-tool-contract.md חוזה 71 כלי-ה-MCP: envelope · שמות · idempotency · extract/get-symmetry · שלמות-הרשאות G2, G3, G10
X10-deploy-env-secrets.md env-catalog SSoT · מקור-config יחיד (Coolify) · ללא hardcode · secrets · drift G2, G4, G9
X11-citation-corroboration.md citator פנימי — תיקוף הלכות בטיפול-שיפוטי מצטבר · תיקון-G10 מבוקר · סף-corroboration · התאמה-להלכה G9, G10
X13-court-fetch.md אחזור-פסיקה אוטומטי מנט המשפט — 3 שכבות (עליון/מנהלי/skip) · שירות-מארח · reCAPTCHA · שער-אנושי G2, G3, G4, G5, G9, G10

X6X10 (מחזור-2): מכסים את 8 משטחי-האפליקציה שמחוץ לצינור-הליבה (אינטגרציה, web-ui, מילוי-שדות, אחסון-ניתוחים, כלי-MCP, deploy/env). הממצאים ב-gap-audit.md (GAP-24..62 → FU-9..15) וב-ui-audit.md. הרחבות-אחות: 02-data-model (INV-DM4DM6), X4-agents (INV-AG3).

עקרונות: כל קובץ עצמאי, ממוקד, agent-readable, יעד ≤~500 שורות (תפיחה = סימן לפיצול). מסמכים קיימים (architecture.md, product-specification.md, block-schema.md…) לא נמחקים ולא משוכפלים — מצוטטים כ"מקור" ומאומתים מול הסמכויות; סתירה = ממצא ל-audit.


8. נספח מקורות סמכותיים

(מאומתים במחקר 30.5.2026)

ממשל-AI שיפוטי + שערים אנושיים (G9, G10)

אחזור / RAG / IR

שלמות-נתונים / איכות / רשומות

  • DAMA-DMBOK2 + DAMA-UK — Six Primary Dimensions for Data Quality (2013).
  • ISO 8000 — Data quality (8000-8/61/110).
  • ISO 15489-1:2016 — Records management (authenticity/reliability/integrity/usability).
  • Martin Kleppmann — Designing Data-Intensive Applications (O'Reilly, 2017).
  • E.F. Codd — Relational model & normalization (CACM 13(6), 1970).
  • Martin Fowler — Canonical Data Model / Data Mesh (quality-at-source).

(נספח המקורות מתייחס ל-invariants ההנדסיים G1G10 בלבד. התוכן המשפטי — G11 — נשען על מסמכי-הפרויקט וסמכות היו"ר, כמפורט ב-G11.)