FU-2a: idempotent ingest + write-time normalization + searchable flag (GAP-03/06/13) #12
Reference in New Issue
Block a user
Delete Branch "fix/fu2a-idempotent-ingest"
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?
Summary
GAP-03/06/13 (FU-2a, pure-code). מאמת מול 3+ מקורות (PostgreSQL ON CONFLICT, DDD write-boundary normalization, materialized validity flag).
INSERT … ON CONFLICT … DO UPDATEאטומי בשתי פונקציות ה-create, עם חזרה על ה-predicate של ה-partial-index (V15) + COALESCE ממוקד. מחליף SELECT-then-INSERT (race-prone) וגם את קידום cited_only→external_upload. אומת מול DB אמיתי (idempotent)._canonical_case_numberבכתיבה, type-aware: internal/cases מנרמל (trim·prefix-strip·/→-, ללא הוספת/הסרת חודש); external שומר את ה-citation (המזהה הקנוני שלו).searchable(V21) נגזרת מחוזה-השלמות (INV-DM1), recompute בסיום קליטה/חילוץ-metadata, חשיפה ב-health-check, וסינון בחיפוש הפסיקה.מספק INV-ING2/G3/G1/ID1/DM1.
Decision gate (searchable filter)
ה-dry-run גילה ש-2 פסקי בג"ץ חוצי-תחום (33/16 chunks) היו נופלים בגלל practice_area ריק. במקום לזייף תחום — חוזה-השלמות תוקן לדרוש practice_area רק ל-internal/cases (לא לפסיקה חיצונית). backfill סימן 80 רשומות searchable (24 external + 56 internal); cited_only (49) לא-searchable וממילא מוחרג מחיפוש הפסיקה ע"י source_kind. הפילטר הופעל ב-0 הפלות לגיטימיות.
Boundary / out of scope
Test Plan
🤖 Generated with Claude Code