#!/usr/bin/env bash # A/B test #3: Sonnet 4.5 re-run on CMP-78 — same task as DeepSeek #2 but with Sonnet. # Goal: check if Sonnet is consistent across runs (esp. the case-outcome detection), # given that the original Sonnet baseline on CMP-80 misread the outcome as "דחייה" # while the actual result is "קבלה חלקית". set -euo pipefail PROFILE_HOME="/home/chaim/.hermes/profiles/curator-cmp" # default Sonnet profile PAPERCLIP_API_URL="http://localhost:3100/api" PAPERCLIP_API_KEY="pcp_c87edcf306d06fce13fac701bb6d747191d61dba5b51e903" PAPERCLIP_TASK_ID="beb745e5-7195-40c5-9ac0-e9682c2c5184" # CMP-78 PAPERCLIP_TASK_KEY="$PAPERCLIP_TASK_ID" PAPERCLIP_TASK_TITLE="[ערר 1130-25] סקירת ידע — Sonnet rerun (consistency check)" PAPERCLIP_RUN_ID="sonnet-rerun-$(date +%s)" PAPERCLIP_WAKE_REASON="manual_sonnet_consistency_rerun" read -r -d '' PROMPT <<'EOF' || true אתה מנהל ידע (Knowledge Curator) של ועדת הערר. נעור על תיק שדפנה סימנה כסופי. תיק: [ערר 1130-25] סקירת ידע — Knowledge Curator issue ID: beb745e5-7195-40c5-9ac0-e9682c2c5184 run reason: manual_sonnet_consistency_rerun **הקשר חשוב — ניסוי A/B #3:** זוהי ריצה חוזרת ידנית באמצעות Sonnet 4.5 (אותו מודל שהריץ ב-CMP-80) — בדיקת עקביות. כל הפלטים שתפרסם חייבים להתחיל בכותרת `[ניסוי Sonnet 4.5 — ריצה חוזרת על CMP-78]`. אל תעיר סוכנים אחרים. אל תיצור issues חדשים. הוראות: דפנה סימנה את ההחלטה הסופית של תיק 1130-25 כסופית. קובץ סופי: `סופי-1130-25.docx` סקור את ההחלטה מול skills/decision/SKILL.md ו-docs/legal-decision-lessons.md. חפש 3-5 דפוסי סגנון/דיון שלא תועדו. כתוב comment בעברית, ניטרלי, ממוספר. # שלבי ביצוע ## 1. קונטקסט - קרא את MEMORY.md שלך (memory tool) — מה כבר זיהית. - קרא `/home/chaim/legal-ai/skills/decision/SKILL.md` (file tool) — מה כבר תועד. ## 2. נתונים - `mcp__legal-ai__case_get` עם case_number `1130-25` — מטא-דאטה. - `mcp__legal-ai__case_get_final_text` עם case_number `1130-25` — קרא את הטקסט המלא של ההחלטה הסופית. **שים לב במיוחד**: זהה במדויק את **תוצאת ההחלטה** (קבלה / קבלה חלקית / דחייה) על סמך הטקסט עצמו, לא על סמך הנחות. ## 3. ניתוח חפש 3-5 דפוסים/פערים. לכל ממצא: מה ראיתי + מה זה אומר + הצעה ניסוחית מדויקת. ## 4. כתוב comment הממצאים ```bash curl -sS -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" -H "Content-Type: application/json" \ -d "$(jq -n --arg b "$BODY" '{body:$b}')" \ "$PAPERCLIP_API_URL/issues/$PAPERCLIP_TASK_ID/comments" ``` פורמט ה-body: - שורה ראשונה: `[ניסוי Sonnet 4.5 — ריצה חוזרת על CMP-78]` - שורה שנייה: `**תוצאת ההחלטה הזו: <קבלה / קבלה חלקית / דחייה>** — ציין מפורשות - אחר כך פסקה אחת מבוא קצרה - אחר כך הממצאים ממוספרים ## 5. פתח interaction מסוג ask_user_questions זהה לפלואו של Sonnet באמת. אם תקבל "Agent run id required" — נסה כמה דרכים, ואם לא הולך, פרסם comment עם רשימת אופציות לבחירה. ```bash curl -sS -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" -H "Content-Type: application/json" \ "$PAPERCLIP_API_URL/issues/$PAPERCLIP_TASK_ID/interactions" \ -d '{ "kind": "ask_user_questions", "idempotencyKey": "curator-sonnet-rerun:'"$PAPERCLIP_TASK_ID"':select", "title": "[Sonnet rerun] איזה ממצאים שווים עדכון?", "continuationPolicy": "wake_assignee", "payload": {"version": 1, "submitLabel": "אשר בחירה", "questions": [{"id": "findings_to_propose", "prompt": "סמן ממצאים", "selectionMode": "multi", "options": []}]}}' ``` ## 6. עדכן issue ל-status=in_review ```bash curl -sS -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" -H "Content-Type: application/json" \ -d '{"status":"in_review"}' "$PAPERCLIP_API_URL/issues/$PAPERCLIP_TASK_ID" ``` # כללים - אל תעדכן קבצים בעצמך. רק comment + interaction. - אל תיצור issues חדשים. - אל תעיר סוכנים אחרים. EOF export HERMES_HOME="$PROFILE_HOME" export PAPERCLIP_API_URL PAPERCLIP_API_KEY PAPERCLIP_TASK_ID PAPERCLIP_TASK_KEY \ PAPERCLIP_TASK_TITLE PAPERCLIP_RUN_ID PAPERCLIP_WAKE_REASON echo "=== Sonnet 4.5 rerun (consistency check) — CMP-78 ===" echo "HERMES_HOME=$HERMES_HOME" echo "TASK_ID=$PAPERCLIP_TASK_ID" echo "RUN_ID=$PAPERCLIP_RUN_ID" echo "Started: $(date -u '+%Y-%m-%d %H:%M:%S UTC')" echo "---" START_EPOCH=$(date +%s) hermes -z "$PROMPT" --yolo chat 2>&1 END_EPOCH=$(date +%s) DURATION=$((END_EPOCH - START_EPOCH)) echo "" echo "=== Run finished ===" echo "Ended: $(date -u '+%Y-%m-%d %H:%M:%S UTC')" echo "Duration: ${DURATION}s ($((DURATION/60))m $((DURATION%60))s)"