fix(writer): נטרול כלים ב-block_writer + style_analyzer — השלמת #182 #183

Merged
chaim merged 1 commits from worktree-writer-tools-disable into main 2026-06-11 12:05:53 +00:00
Owner

מה ולמה

המשך ל-#182. שני האתרים שנותרו עם claude_session.query() ליצירת-טקסט/ניתוח שמרו על ברירת-המחדל של ה-CLI (כל הכלים פעילים), ולכן חשופים לאותו error_max_turns: המודל פולט stop_reason:"tool_use", מפיל את --max-turns 1, ומאלץ retry יקר.

  • block_writer.py:413 — כתיבת פרוזת בלוק (Opus/Sonnet). יצירת-טקסט טהורה, אף פעם לא צריך כלי.
  • style_analyzer.py:166/183/196 — single/multi-pass + synthesis; הפלט מפוענח כ-JSON (_parse_and_store_patterns/_extract_json). text→JSON טהור.

אחרי PR זה — כל קריאות ה-LLM ב-services/ שאינן צריכות כלים מעבירות tools="".

Invariants — הצהרה (חובה)

  • נוגע / מקיים: INV-G2 (מקור-אמת יחיד / סימטריה) — מיישר את שני האתרים האחרונים למסלול הקנוני claude_session.query(tools=""). אין בליעה שקטה (§6). ללא שינוי-ספ.

צ'קליסט — פרוטוקול כתיבת-קוד

  • קראתי את docs/spec/00-constitution.md לפני הכתיבה
  • השינוי לא יוצר מסלול מקביל (G2) ולא מתקן תסמין בקריאה (G1)
  • לא הוספתי מגע-Paperclip מחוץ ל-Platform Port (G12)
  • אין בליעה שקטה של שגיאות
  • בדיקות עוברות
  • לא data-migration

אימות

  • py_compile נקי על שני הקבצים.
  • pytest -k "block or style or writer"18 עוברות.
  • grep 'tools=""' מאשר 4 הקריאות.

🤖 Generated with Claude Code

## מה ולמה המשך ל-[#182](https://gitea.nautilus.marcusgroup.org/ezer-mishpati/legal-ai/pulls/182). שני האתרים שנותרו עם `claude_session.query()` ליצירת-טקסט/ניתוח שמרו על ברירת-המחדל של ה-CLI (כל הכלים פעילים), ולכן חשופים לאותו `error_max_turns`: המודל פולט `stop_reason:"tool_use"`, מפיל את `--max-turns 1`, ומאלץ retry יקר. - **block_writer.py:413** — כתיבת פרוזת בלוק (Opus/Sonnet). יצירת-טקסט טהורה, אף פעם לא צריך כלי. - **style_analyzer.py:166/183/196** — single/multi-pass + synthesis; הפלט מפוענח כ-JSON (`_parse_and_store_patterns`/`_extract_json`). text→JSON טהור. אחרי PR זה — **כל** קריאות ה-LLM ב-`services/` שאינן צריכות כלים מעבירות `tools=""`. ## Invariants — הצהרה (חובה) - **נוגע / מקיים:** **INV-G2** (מקור-אמת יחיד / סימטריה) — מיישר את שני האתרים האחרונים למסלול הקנוני `claude_session.query(tools="")`. **אין בליעה שקטה** (§6). ללא שינוי-ספ. ## צ'קליסט — פרוטוקול כתיבת-קוד - [x] קראתי את `docs/spec/00-constitution.md` לפני הכתיבה - [x] השינוי **לא** יוצר מסלול מקביל (G2) ולא מתקן תסמין בקריאה (G1) - [x] **לא** הוספתי מגע-Paperclip מחוץ ל-Platform Port (G12) - [x] אין בליעה שקטה של שגיאות - [x] בדיקות עוברות - [x] לא data-migration ## אימות - `py_compile` נקי על שני הקבצים. - `pytest -k "block or style or writer"` → **18 עוברות**. - `grep 'tools=""'` מאשר 4 הקריאות. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-11 12:03:55 +00:00
fix(writer): disable tools on block_writer + style_analyzer claude_session calls
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
64db643e6d
המשך ל-#182 — שני האתרים שנותרו עם query()‎ ליצירת-טקסט/ניתוח, ששמרו על
ברירת-המחדל של ה-CLI (כל הכלים פעילים) ולכן חשופים לאותו error_max_turns:
המודל פולט stop_reason:"tool_use", מפיל את --max-turns 1, ומאלץ retry יקר.

- block_writer.py:413 — כתיבת פרוזת בלוק (Opus/Sonnet). יצירת-טקסט טהורה,
  אף פעם לא צריך כלי.
- style_analyzer.py:166/183/196 — single/multi-pass + synthesis; הפלט מפוענח
  כ-JSON (_parse_and_store_patterns/_extract_json). text→JSON טהור.

מיישר את שני האחרונים לאותו מסלול קנוני (claude_session.query(tools="")).
עכשיו כל קריאות ה-LLM שאינן צריכות כלים מעבירות tools="".

Invariants: מקיים INV-G2 (מסלול קנוני יחיד; סימטריה). אין בליעה שקטה (§6).
ללא שינוי-ספ.

בדיקות: py_compile נקי; 18 בדיקות (block/style/writer) עוברות.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 4d1d1eb3fa into main 2026-06-11 12:05:53 +00:00
chaim deleted branch worktree-writer-tools-disable 2026-06-11 12:05:53 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#183