INV-STG1 Phase 2: read-wire ה-pipeline ל-ensure_local → כתיבת-בלוב ל-S3 בלבד (ללא דיסק) #440
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What & Why
להשלים את INV-STG1: לחווט את כל קוראי-הקבצים (ingest/extract/OCR/embed/processor) דרך storage.ensure_local במקום פתיחת file_path ישירה מהדיסק, כך שאתרי-ההעלאה יוכלו לכתוב ל-S3 בלבד (להפיל את עותק-הדיסק שה-seal של Phase-1 משאיר). תנאי-קדם לניקוי-הדיסק (#128). נפתח 2026-06-11 אחרי Phase-1 (PR #205).
הקשר ופירוט
רקע: Phase-1 (PR #205) אטם 15 אתרי-כתיבה ב-dual-write (דיסק ל-pipeline + storage.mirror ל-S3). ה-pipeline עדיין דיסק-תלוי (קורא לפי
documents.file_path/cases.active_draft_pathוכו' מהדיסק) → לכן ה-seal משאיר עותק-דיסק. Phase-2 = להפיל את עותק-הדיסק.עבודה:
open(/read_bytes/read_text/Path(...).existsעל נתיבי-DATA_DIR ב-ingest.py, extractor.py, processor.py, ocr, embeddings, block_writer, docx_*, וכל מי שקוראfile_pathמ-DB.await storage.ensure_local(key)(מוריד ל-/tmp תחת s3; מחזיר נתיב-דיסק תחת filesystem) + cleanup של ה-temp.# noqa: STG1). ה-leak-guard יאכוף שלא נשארו.הקשר: services/storage.py (ensure_local קיים) · web/app.py (_seal_blob, 15 sealed) · test_storage_write_leak_guard · scripts/storage_leak_tripwire.py · docs/spec/X14-storage-minio.md INV-STG1. סיכון: נוגע ב-pipeline-העיבוד הקריטי → לבדוק כל endpoint חי. אחרי Phase-2 → #128 (ניקוי-דיסק) בטוח.
Acceptance Criteria
לכל endpoint שמעלה/מעבד: לרוץ end-to-end ולוודא tripwire --since=עכשיו מחזיר 0 קבצים חדשים בדיסק. ה-leak-guard עובר גם אחרי הסרת ה-dual-writes (אין write_bytes לא-מסומן). regression: serve/ingest/extract/export ירוקים.
הועבר מ-TaskMaster (tag
legal-ai, id 129, status היהpending) ב-2026-08-05. הפניות(#129)בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.