4f7c3733e272ef11cd4b07b9c76b563c48c4d925
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 5s
תיקון: העלאת פסיקה/החלטת-ועדה (precedent-library + internal-decisions) נכשלה תחת backend s3-only עם "Package not found at '/data/...docx'" / "Converted file not found". השורש: `ingest._stage_file` כותב את הקובץ דרך `storage.put_file` ומחזיר נתיב-DATA_DIR, אבל תחת s3-only ה-blob נכתב רק ל-MinIO ואין עותק בדיסק — ואז הצינור קרא את הנתיב ישירות מהדיסק (extract_text) → קובץ לא קיים. מסלול תיקי-המקרה לא נפגע כי הוא שומר עותק-דיסק + mirror_file; רק מסלול _stage_file המשותף קרא את ה-key כאילו הוא על הדיסק. התיקון (נרמול-במקור, G1; קריאה דרך שכבת-האחסון, INV-STG1): - `_stage_file` מחזיר עכשיו את ה-KEY (נתיב יחסי-DATA_DIR), לא Path. - `ingest_document` ו-`digest_library` מאתרים נתיב-קריאה מקומי דרך `storage.ensure_local` (עותק-דיסק תחת filesystem/dual; הורדה ל-temp תחת s3-only) ומנקים את ה-temp ב-finally — בלי דליפה ל-/tmp. - מולטימודל (PDF) קורא את אותו נתיב מקומי מאומת. בדיקות: test_unified_ingest::test_ingest_reads_via_ensure_local_when_no_disk_copy מדמה backend ללא עותק-דיסק ומוודא שהצינור משלים (נכשל מול הקוד הישן). 55 עוברות. Invariants: מקיים INV-STG1 (קריאה/כתיבה רק דרך שכבת-האחסון), G1 (נרמול-במקור, לא תיקון-בקריאה), G2 (אין מסלול מקביל — תיקון הצינור הקנוני). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merge pull request 'fix(learning): chair_name במקור — סופי-ועדה תמיד נכנס לקורפוס-הפסיקה (#134)' (#226) from worktree-chair-name-rootfix into main
Description
AI Legal Decision Drafting System — MCP server, web upload, RAG search
Languages
Python
63.5%
TypeScript
34.2%
JavaScript
1.2%
Shell
0.8%
CSS
0.2%