אופרציונליזציה של לולאת רכישת-הסגנון — סגירת ממצאי אודיט #122 #437

Open
opened 2026-08-05 11:01:12 +00:00 by chaim · 0 comments
Owner

What & Why

אודיט #122 הראה שלולאת-הלמידה מחווטת ועובדת, אך "בקושי חיה": מתוך 7 תיקים סופיים רק 2 נכנסו לרשם הדיסטילציה (draft_final_pairs) ורק 1 קופל end-to-end. אומת שהמנגנון (snapshot ב-mark-final + יקיצת-הרמס להרצת final_learning_pipeline) נוסף ~2026-06-06 ולכן עובד לכל תיק שסומן-סופי אחריו (1130-25, 8126-03-25 ✓). הפער הוא: (א) 5 תיקי-מאי היסטוריים שקדמו למנגנון; (ב) 8126 ממתין ל-promote ידני (לא באג); (ג) drift-מקורות בין ערוצי-הקיפול. משימה זו מרכזת את כל פריטי-הפעולה. דוח-המקור: data/audit/learning-loop-activity-20260611.md.

הקשר ופירוט

ממצאים (אומתו בקוד+DB 2026-06-11):

  1. המנגנון תקין לתיקים חדשים — web/app.py mark-final (~3318): UPDATE status=final → create_draft_final_pair (snapshot טיוטה מ-decision_blocks) → wake_curator_for_final (issue-בן לרמס עם brief להריץ scripts/final_learning_pipeline.py). הפייפליין: ingest_final_version (Opus, status→analyzed) → enroll style_corpus → style_lesson_panel (DeepSeek+Gemini 2/2 → decision_lessons).

  2. בלוקר-כיסוי = רק 5 תיקי-מאי היסטוריים (קדמו למנגנון; pair ראשון 6.6):

    • בני-backfill (final+blocks קיימים): 8070-25, 1194-25, 1200-25.
    • לא בני-backfill: 1033-25, 1017-03-26 — status=final אך אין מסמך סופי בדיסק (רק טיוטה/עריכה). ממצא-תקינות נפרד.
  3. process_final_version לא מאחסן כשאין pair (learning_loop.py:54 if pair_id is not None) — נופל-לאחור ל-decision_blocks לחישוב הניתוח, אך אם אין pair קיים — לא יוצר ולא שומר. backfill חייב create_draft_final_pair תחילה.

  4. 8126-03-25 ממתין-יו"ר, לא תקוע-טכנית — השלבים האוטומטיים הושלמו, 9 decision_lessons (panel) כבר מזינים את הכותב (block_writer.py:927, ללא סינון promote). נותר רק לחיצת promote לקיפול ל-appeal_type_rules.

  5. interaction תלוי 1200-25 ("אילו ממצאים לקדם", 26.5) — לא נענה. ניקוי.

הקשר: docs/spec/07-learning.md (INV-LRN1/4/5, G10) · scripts/final_learning_pipeline.py · scripts/style_lesson_panel.py · web/paperclip_client.py:wake_curator_for_final · #121 (קונצנזוס) · #125 (provenance drift). כל שינוי-קוד ב-worktree מבודד + PR.

Acceptance Criteria

אחרי backfill: draft_final_pairs מכיל את 3 התיקים המוכנים עם status≥analyzed; decision_lessons חדשים מיוחסים אליהם; אפס תיק final חדש ללא pair (guard). 1033-25/1017-03-26 — הוכרעו (לא-final או הושלם מסמך). שאילתת-האימות של #122 מריצה funnel נקי.

תתי-משימות

  • 125.1 תיקון process_final_version: create-or-update של draft_final_pair
    • learning_loop.py:54 שומר את הניתוח רק אם pair_id קיים; כשאין pair (תיק היסטורי/קריאת-ingest ישירה) הוא מחשב diff+analysis ומשליך אותם. לתקן ל-create-or-update: אם אין pair → create_draft_final_pair (draft מ-decision_blocks, final_path) ואז update. בטוח לתיקים חדשים (שם תמיד יש pair מ-mark-final → רק ה-update רץ). זהו keystone שמאפשר backfill ומקשיח ingest ישיר.
  • 125.2 Backfill 3 תיקי-מאי המוכנים (8070-25, 1194-25, 1200-25)
    • סקריפט backfill מקומי: לכל אחד מ-8070-25/1194-25/1200-25 — create_draft_final_pair (draft מ-decision_blocks, final_path=סופי-*.docx) ואז להריץ scripts/final_learning_pipeline.py --case X (Opus distillation + style panel). מאכלס את הרשם וה-decision_lessons רטרואקטיבית. מקומי בלבד (מפתחות LLM מקומיים). תלוי בתיקון create-or-update (או יוצר pair מפורשות לפני).
  • 125.3 הכרעה: 2 תיקים final ללא מסמך סופי (1033-25, 1017-03-26)
    • 1033-25 ו-1017-03-26 מסומנים status=final ב-DB אך אין להם מסמך סופי (סופי-*.docx) בדיסק — רק טיוטות/עריכות. ממצא-תקינות: או שהם לא באמת סופיים (לתקן סטטוס), או שהמסמך הסופי לא הועלה (להעלות דרך 'העלאת החלטה סופית'). הכרעת-יו"ר נדרשת. עד אז הם לא בני-backfill (אין מול מה להשוות). לשקול guard שמונע מעבר ל-final בלי קובץ סופי.

הועבר מ-TaskMaster (tag legal-ai, id 125, status היה in-progress) ב-2026-08-05. הפניות (#125) בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.

## What & Why אודיט #122 הראה שלולאת-הלמידה מחווטת ועובדת, אך "בקושי חיה": מתוך 7 תיקים סופיים רק 2 נכנסו לרשם הדיסטילציה (draft_final_pairs) ורק 1 קופל end-to-end. אומת שהמנגנון (snapshot ב-mark-final + יקיצת-הרמס להרצת final_learning_pipeline) נוסף ~2026-06-06 ולכן עובד לכל תיק שסומן-סופי אחריו (1130-25, 8126-03-25 ✓). הפער הוא: (א) 5 תיקי-מאי היסטוריים שקדמו למנגנון; (ב) 8126 ממתין ל-promote ידני (לא באג); (ג) drift-מקורות בין ערוצי-הקיפול. משימה זו מרכזת את כל פריטי-הפעולה. דוח-המקור: data/audit/learning-loop-activity-20260611.md. ## הקשר ופירוט **ממצאים (אומתו בקוד+DB 2026-06-11):** 1. **המנגנון תקין לתיקים חדשים** — web/app.py mark-final (~3318): UPDATE status=final → create_draft_final_pair (snapshot טיוטה מ-decision_blocks) → wake_curator_for_final (issue-בן לרמס עם brief להריץ scripts/final_learning_pipeline.py). הפייפליין: ingest_final_version (Opus, status→analyzed) → enroll style_corpus → style_lesson_panel (DeepSeek+Gemini 2/2 → decision_lessons). 2. **בלוקר-כיסוי = רק 5 תיקי-מאי היסטוריים** (קדמו למנגנון; pair ראשון 6.6): - בני-backfill (final+blocks קיימים): **8070-25, 1194-25, 1200-25**. - **לא** בני-backfill: **1033-25, 1017-03-26** — status=final אך אין מסמך סופי בדיסק (רק טיוטה/עריכה). ממצא-תקינות נפרד. 3. **process_final_version לא מאחסן כשאין pair** (learning_loop.py:54 `if pair_id is not None`) — נופל-לאחור ל-decision_blocks לחישוב הניתוח, אך אם אין pair קיים — לא יוצר ולא שומר. backfill חייב create_draft_final_pair תחילה. 4. **8126-03-25 ממתין-יו"ר, לא תקוע-טכנית** — השלבים האוטומטיים הושלמו, 9 decision_lessons (panel) כבר מזינים את הכותב (block_writer.py:927, ללא סינון promote). נותר רק לחיצת promote לקיפול ל-appeal_type_rules. 5. **interaction תלוי 1200-25** ("אילו ממצאים לקדם", 26.5) — לא נענה. ניקוי. **הקשר:** docs/spec/07-learning.md (INV-LRN1/4/5, G10) · scripts/final_learning_pipeline.py · scripts/style_lesson_panel.py · web/paperclip_client.py:wake_curator_for_final · #121 (קונצנזוס) · #125 (provenance drift). כל שינוי-קוד ב-worktree מבודד + PR. ## Acceptance Criteria אחרי backfill: draft_final_pairs מכיל את 3 התיקים המוכנים עם status≥analyzed; decision_lessons חדשים מיוחסים אליהם; אפס תיק final חדש ללא pair (guard). 1033-25/1017-03-26 — הוכרעו (לא-final או הושלם מסמך). שאילתת-האימות של #122 מריצה funnel נקי. ## תתי-משימות - [x] **125.1** תיקון process_final_version: create-or-update של draft_final_pair - learning_loop.py:54 שומר את הניתוח רק אם pair_id קיים; כשאין pair (תיק היסטורי/קריאת-ingest ישירה) הוא מחשב diff+analysis ומשליך אותם. לתקן ל-create-or-update: אם אין pair → create_draft_final_pair (draft מ-decision_blocks, final_path) ואז update. בטוח לתיקים חדשים (שם תמיד יש pair מ-mark-final → רק ה-update רץ). זהו keystone שמאפשר backfill ומקשיח ingest ישיר. - [x] **125.2** Backfill 3 תיקי-מאי המוכנים (8070-25, 1194-25, 1200-25) - סקריפט backfill מקומי: לכל אחד מ-8070-25/1194-25/1200-25 — create_draft_final_pair (draft מ-decision_blocks, final_path=סופי-*.docx) ואז להריץ scripts/final_learning_pipeline.py --case X (Opus distillation + style panel). מאכלס את הרשם וה-decision_lessons רטרואקטיבית. מקומי בלבד (מפתחות LLM מקומיים). תלוי בתיקון create-or-update (או יוצר pair מפורשות לפני). - [ ] **125.3** הכרעה: 2 תיקים final ללא מסמך סופי (1033-25, 1017-03-26) - 1033-25 ו-1017-03-26 מסומנים status=final ב-DB אך אין להם מסמך סופי (סופי-*.docx) בדיסק — רק טיוטות/עריכות. ממצא-תקינות: או שהם לא באמת סופיים (לתקן סטטוס), או שהמסמך הסופי לא הועלה (להעלות דרך 'העלאת החלטה סופית'). הכרעת-יו"ר נדרשת. עד אז הם לא בני-backfill (אין מול מה להשוות). לשקול guard שמונע מעבר ל-final בלי קובץ סופי. --- <sub>הועבר מ-TaskMaster (tag `legal-ai`, id **125**, status היה `in-progress`) ב-2026-08-05. הפניות `(#125)` בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.</sub>
chaim added the area:writingstatus:in-progresstype:chorepriority:p1-high labels 2026-08-05 11:01:12 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#437