diff --git a/docs/spec/X5-audit-provenance.md b/docs/spec/X5-audit-provenance.md index 93113dd..b3fe9a6 100644 --- a/docs/spec/X5-audit-provenance.md +++ b/docs/spec/X5-audit-provenance.md @@ -49,13 +49,13 @@ Track Changes). הקובץ אוכף את 5. **locator פתיר בכל תוצאת-אחזור.** כל span מוחזר נושא מזהה-מקור + locator ([03-retrieval INV-RET5](03-retrieval.md#inv-ret5-כל-span-מוחזר-עקיב-למקורו), `search.py:77-86,322-343`); הלכות נושאות `supporting_quote` (`db.py:652`) + `page_number` (`db.py:631,711,729`). -6. **telemetry של חיפושים.** `telemetry.log_search` → `search_logs` - (`telemetry.py:105`, `search.py:62,118,190,271`) רושם query/practice_area/top_case_law_ids — +6. **telemetry של חיפושים.** `telemetry.log_search_bg` (ב-search.py) → מפעיל את `log_search` האסינכרוני → `search_logs` + (`telemetry.py:105,161`, `search.py:62,118,190,271`) רושם query/practice_area/top_case_law_ids — תצפית על מה נשלף, fire-and-forget (`telemetry.py:8-12,100-101`). 7. **לקחים ופידבק מיוחסים.** `decision_lessons.source` (`db.py:208`: manual/curator/chair/ style_analyzer) ו-`chair_feedback.lesson_extracted`/`applied_to` (`db.py:458-459`) מתעדים את **מקור** הלקח ([07-learning.md](07-learning.md)). -8. **טבלת `audit_log` (פעולה כללית).** `log_action(action, case_id, document_id, details, actor)` +8. **טבלת `audit_log` (פעולה כללית).** `log_action(action, case_id, document_id, details, user)` (עמודת-DB: `actor`) (`audit.py:18-44`) → `audit_log` (`db.py:159-167`, אינדקסים `:168-170`). קיימת, אך נכתבת כיום כמעט-ורק ב-`case_subtype_override` (`cases.py:203`) — ראה [§5](#5-current-vs-target--ממצאי-audit). @@ -141,7 +141,7 @@ retrieved_case_law_ids}`) — הטבלה כבר תומכת ב-`details JSONB` + תומך בקישור, אך אין בדיקה שכל ציטוט בטקסט אכן פתיר ל-`case_law`. **תסמין:** ציטוט שהמודל ייצר בלי locator יכול לעבור. **יעד:** ולידציה שכל citation בעלת `case_law_id` פתיר, אחרת flag לאימות-יו"ר. - **שלמות ה-DB מול ה-DOCX-החי נחלשת אחרי עריכה (INV-AUD2).** אחרי `revise_draft`/`apply_user_edit`, - `active_draft_path` הופך מקור-בפועל בלי re-sync לבלוקים (`db.py:185-188`; + `active_draft_path` הופך מקור-בפועל בלי re-sync לבלוקים (`db.py:189`; [06-export INV-EX1](06-export.md#inv-ex1-ייצוא-דטרמיניסטי-ומשוחזר-מהבלוקים--docx-הוא-נתון-נגזר-g2)). **יעד:** re-sync מהבלוקים או חוזה מפורש + health-check לגילוי drift. - **telemetry בולעת שגיאות בשתיקה (תיעוד, לא הערכה).** `log_search` swallow מכוון