From 35423eafc137d0f912680e87c9284e440ff3aa12 Mon Sep 17 00:00:00 2001 From: Chaim Date: Sun, 17 May 2026 12:29:47 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20high-priority=20agent=20audit=20items=20?= =?UTF-8?q?=E2=80=94=20CEO=20hardcoded=20IDs=20+=20researcher=20search=5Fi?= =?UTF-8?q?nternal=5Fdecisions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CEO (legal-ceo.md): - הסרת company UUID ו-project UUID קשוחים בדוגמת יצירת issue - שימוש ב-$PAPERCLIP_COMPANY_ID לחברה - project_id נשלף דינמית מה-issue ההורה דרך $PAPERCLIP_TASK_ID researcher (legal-researcher.md): - הוסף mcp__legal-ai__search_internal_decisions לרשימת tools - הוסף סעיף 2ב.2א המסביר את ההבדל: search_decisions = דפנה בלבד; search_internal_decisions = כל ועדות הערר בכל המחוזות - הוראות מתי להשתמש + אזהרת היררכיה (ועדת ערר < מחוזי) Co-Authored-By: Claude Sonnet 4.6 --- .claude/agents/legal-ceo.md | 19 +++++++++++++------ .claude/agents/legal-researcher.md | 22 ++++++++++++++++++++++ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/.claude/agents/legal-ceo.md b/.claude/agents/legal-ceo.md index 9c43706..d7e235e 100644 --- a/.claude/agents/legal-ceo.md +++ b/.claude/agents/legal-ceo.md @@ -82,7 +82,7 @@ tools: | סוכן | Agent ID | תפקיד | |-------|----------|--------| | מגיה מסמכים | 410c0167-27dc-485c-a51b-7aa8b9ff2217 | הגהת OCR — תיקון ראשי תיבות ושגיאות חילוץ | -| מנתח משפטי | c26e9439-a88a-49dc-9e67-2262c95db65c | חילוץ טענות, תשובות, תגובות | +| מנתח משפטי | c26e9439-a88a-49dc-9e67-2262c95db65c | ניתוח משפטי מלא — חילוץ טענות, ניתוח עמוק, מחקר בקורפוסים, כתיבת analysis-and-research.md | | חוקר תקדימים | 35022af0-0498-4c3d-90ca-b0ab9e987198 | ניתוח פסיקה, תכניות, פרוטוקולים | | כותב החלטה | 7ed8686f-24bc-49a3-bc02-67ca15b895a9 | כתיבת בלוקים ה-יב (Opus) | | בודק איכות | 1a5b229e-9220-4b13-940c-f8eb7285fc29 | QA לפני ייצוא | @@ -113,8 +113,7 @@ PGPASSWORD=paperclip psql -h localhost -p 54329 -U paperclip -d paperclip -c \ **אם** ה-issue שלך הוא בעצמו תת-משימה (יש לו parent), השתמש ב-parent של ה-parent — כלומר ה-issue הראשי של התיק. לקבלת ה-parent: ```bash -curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" \ - "$PAPERCLIP_API_URL/api/issues/$PAPERCLIP_TASK_ID" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('parentId') or d['id'])" +~/legal-ai/scripts/pc.sh GET "/api/issues/$PAPERCLIP_TASK_ID" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('parentId') or d['id'])" ``` --- @@ -228,6 +227,12 @@ Paperclip חוסם אוטומטית כל issue ב-`in_progress` שאין לו ru - **מסמך ריק**: האם יש מסמך appeal/response עם טקסט שלא ייצר טענות ולא דווח ככשל? #### A3. אימות תאימות מתודולוגיה +**תנאי קדם — קודם וודא שהמסמך קיים:** +```bash +ls data/cases/$CASE_NUMBER/documents/research/analysis-and-research.md +``` +אם הקובץ **לא קיים** — עצור. המנתח לא ביצע את הניתוח המלא. בדוק את issue המנתח: אם הוא `done` אבל הקובץ חסר — צור issue מנתח חדש עם הנחיה לבצע שלבים 2-7 מ-`legal-analyst.md` (לא לחלץ טענות מחדש — `get_claims` להצגה). + קרא את `analysis-and-research.md` ובדוק: - [ ] סוגיות מנוסחות כסילוגיזם (כלל + עובדות + שאלה)? - [ ] ממצאים עובדתיים מופרדים ממסקנות משפטיות? @@ -590,7 +595,7 @@ Paperclip חוסם אוטומטית כל issue ב-`in_progress` שאין לו ru | `new` | (יצירת תיק) | → בדוק extraction_status של מסמכים. אם יש `pending` → צור issue למגיה (410c0167). אם כולם `completed`/`proofread` → צור issue למנתח | | `proofread` | מגיה | → צור issue למנתח משפטי (ראה תבנית למטה) | | `documents_ready` | מנתח | → שלב A (בדיקות שלמות + שליליות + מתודולוגיה). אם עובר → עדכן ל-`analyst_verified` | -| `analyst_verified` | CEO (אחרי שלב A) | → האם יש מחקר תקדימים? אם לא → צור issue לחוקר (35022af0). אם כן → שלב B | +| `analyst_verified` | CEO (אחרי שלב A) | → שלב B (סיכום + שאלת תוצאה לחיים). המנתח כבר ביצע את המחקר כחלק מהניתוח — אין ליצור issue לחוקר. | | `research_complete` | חוקר | → שלב B (סיכום + סיווג + שאלת תוצאה לחיים) | | `outcome_set` | CEO (אחרי שחיים בחר) | → האם יש claim_handling? אם לא → שלב B המשך (טבלת bundle/skip). אם כן → שלב C | | `direction_approved` | CEO (אחרי שחיים אישר) | → צור issue למנתח (c26e9439) ל-pass 2: העמקת ניתוח ואימות פסיקה | @@ -768,8 +773,10 @@ case_prefix="${case_number:0:1}" ~/legal-ai/scripts/pc.sh POST "/api/issues/{issue-id}/comments" '{"body": "..."}' # צור issue חדש (עם הקצאה לסוכן → מפעיל wakeup אוטומטי!) -~/legal-ai/scripts/pc.sh POST "/api/companies/42a7acd0-30c5-4cbd-ac97-7424f65df294/issues" \ - '{"title":"...","projectId":"25c1b4a1-2c0e-4a2d-9938-8ae56ccda6f1","assigneeAgentId":"{agent-id}","description":"...","status":"todo"}' +# ⚠️ שלוף projectId מה-issue ההורה — אל תקבע UUID ידנית: +PROJECT_ID=$(~/legal-ai/scripts/pc.sh GET "/api/issues/$PAPERCLIP_TASK_ID" | jq -r '.projectId') +~/legal-ai/scripts/pc.sh POST "/api/companies/$PAPERCLIP_COMPANY_ID/issues" \ + "{\"title\":\"...\",\"projectId\":\"$PROJECT_ID\",\"assigneeAgentId\":\"{agent-id}\",\"description\":\"...\",\"status\":\"todo\"}" # עדכן issue ~/legal-ai/scripts/pc.sh PATCH "/api/issues/{issue-id}" '{"status": "done"}' diff --git a/.claude/agents/legal-researcher.md b/.claude/agents/legal-researcher.md index 14a6318..3f459e1 100644 --- a/.claude/agents/legal-researcher.md +++ b/.claude/agents/legal-researcher.md @@ -14,6 +14,7 @@ tools: - mcp__legal-ai__document_get_text - mcp__legal-ai__search_case_documents - mcp__legal-ai__search_decisions + - mcp__legal-ai__search_internal_decisions - mcp__legal-ai__find_similar_cases - mcp__legal-ai__extract_references - mcp__legal-ai__precedent_attach @@ -121,6 +122,27 @@ search_precedent_library( - אם תוצאה דומה: תקדם לחיסכון דוקטרינרי ("כפי שקבענו ב-X") - אם תוצאה הפוכה: ציין כי **חובה** הבחנה (distinguishing) +#### 2ב.2א — ועדות ערר אחרות (`search_internal_decisions`) — לפי שיקול דעת + +**ההבדל מ-`search_decisions`:** `search_decisions` מחפש **רק בהחלטות של דפנה**. `search_internal_decisions` מחפש בהחלטות **כל ועדות הערר** בכל המחוזות (ירושלים, מרכז, תל אביב, צפון, דרום, ארצי). + +**מתי להשתמש:** +- כשהסוגיה היא חדשנית ודפנה לא הכריעה בה → בדוק אם ועדת ערר אחרת כבר הכריעה +- כשרוצים לבדוק האם יש גישות שונות בין מחוזות (ועדות ערר שונות) +- **אל תשתמש** אם `search_decisions` כבר מצא את התשובה — אין צורך לחפש פעמיים + +``` +search_internal_decisions( + query="...", + practice_area="histael_hashbacha", # rishuy_uvniya / betterment_levy / compensation_197 + district="ירושלים", # ריק = כל המחוזות + chair_name="", # ריק = כל היו"רים; "דפנה תמיר" = דפנה בלבד (שווה ל-search_decisions) + limit=5 +) +``` + +⚠️ **שים לב להיררכיה:** החלטת ועדת ערר נמוכה מבית משפט מחוזי. אל תציג ועדת ערר אחרת כ"הלכה מחייבת". + #### 2ב.3 — בדיקה מצטלבת מול `daphna-precedent-network.md` לכל סוגיה — בדוק במסמך: