fix(block-writer): רתימת חלון-1M של Opus 4.8 לבלוק-י (#216) #389

Merged
chaim merged 1 commits from worktree-blockyod-1m into main 2026-06-30 20:40:48 +00:00
Owner

הבעיה

בלוק-י (דיון והכרעה — החלק העיקרי של ההחלטה) מזריק את התיק המלא כ-source_context → 805K/891K תווים, מעל _MAX_PROMPT_CHARS=400_000. בכיול #212 זה גרם ל-8 דילוגים.

אבחנה: הגבול 400K אינו גבול-מודל אלא שומר מלאכותי שתאם את קיר חלון-ההקשר הישן (200K-טוקן ≈ ~400K תווים עברית @~2 תווים/טוקן). Opus 4.8 מציע 1M-טוקן במחיר רגיל (בלי תוספת long-context).

אומת (CLI 2.1.196):

  • הפרומפט עובר ל-claude -p דרך stdin (לא arg) → אין ARG_MAX; ה"crash" האמפירי = גלישת-הקשר מול 200K.
  • --model claude-opus-4-8modelUsage=claude-opus-4-8 (200K).
  • --model 'claude-opus-4-8[1m]'exit 0, success, modelUsage=claude-opus-4-8[1m] (1M), בלי beta-header.

השינוי

  • אסקלציה דינמית: פרומפט > _CTX_1M_THRESHOLD_CHARS=350_000claude-opus-4-8[1m]; אחרת הבנייה הסטנדרטית (בלוקים קטנים נשארים זולים/מהירים).
  • _MAX_PROMPT_CHARS 400_000 → 1_500_000 (~750K טוקנים; מרווח-ביטחון מתחת ל-1M) כשומר-קשיח סופי גם על בניית-ה-1M; הודעת-השגיאה מפנה לצמצום source-context.
  • model_used (provenance) משקף את הבנייה בפועל (200K/[1m]).
  • claude_session: אזהרת-גודל מעודכנת (350K + רמז ל-[1m]).
  • ספ 04-analysis-writing §1.3: תיעוד האסקלציה.

Invariants

  • G2 — מקוים: אסקלציה היא עידון של אותו מודל-נעוץ (Opus 4.8, חלון רחב), לא מסלול-מודל מקביל. הספ עודכן כדי להישאר מקור-אמת.
  • G1 / INV-WR* — ללא נגיעה; בלוק-י נשאר xhigh.
  • כלל-הנדסה §6 — לא נבלעות שגיאות: השומר-הקשיח הסופי (1.5M) נשמר.

אימות

  • py_compile נקי לשני הקבצים.
  • בדיקת-לוגיקה: בלוק קטן (50K)→200K · בלוק-י (891K)→[1m] (קודם נכשל ב-400K) · >1.5M→שומר-קשיח.
  • אימות-חי (ריצת בלוק-י על תיק גדול 1130/8137 ב-[1m]) — צעד הבא לאחר deploy.

קשור: TaskMaster legal-ai #216; memory reference_claude_generation_path.

🤖 Generated with Claude Code

## הבעיה בלוק-י (דיון והכרעה — החלק העיקרי של ההחלטה) מזריק את התיק המלא כ-`source_context` → 805K/891K תווים, מעל `_MAX_PROMPT_CHARS=400_000`. בכיול #212 זה גרם ל-8 דילוגים. **אבחנה:** הגבול 400K **אינו גבול-מודל** אלא שומר מלאכותי שתאם את קיר חלון-ההקשר ה**ישן** (200K-טוקן ≈ ~400K תווים עברית @~2 תווים/טוקן). Opus 4.8 מציע **1M-טוקן במחיר רגיל** (בלי תוספת long-context). **אומת (CLI 2.1.196):** - הפרומפט עובר ל-`claude -p` דרך **stdin** (לא arg) → אין ARG_MAX; ה"crash" האמפירי = גלישת-הקשר מול 200K. - `--model claude-opus-4-8` → `modelUsage=claude-opus-4-8` (200K). - `--model 'claude-opus-4-8[1m]'` → **exit 0, success, `modelUsage=claude-opus-4-8[1m]`** (1M), **בלי beta-header**. ## השינוי - **אסקלציה דינמית:** פרומפט > `_CTX_1M_THRESHOLD_CHARS=350_000` → `claude-opus-4-8[1m]`; אחרת הבנייה הסטנדרטית (בלוקים קטנים נשארים זולים/מהירים). - `_MAX_PROMPT_CHARS` 400_000 → **1_500_000** (~750K טוקנים; מרווח-ביטחון מתחת ל-1M) כשומר-קשיח סופי גם על בניית-ה-1M; הודעת-השגיאה מפנה לצמצום source-context. - `model_used` (provenance) משקף את הבנייה בפועל (200K/`[1m]`). - `claude_session`: אזהרת-גודל מעודכנת (350K + רמז ל-`[1m]`). - ספ `04-analysis-writing` §1.3: תיעוד האסקלציה. ## Invariants - **G2** — מקוים: אסקלציה היא **עידון של אותו מודל-נעוץ** (Opus 4.8, חלון רחב), **לא מסלול-מודל מקביל**. הספ עודכן כדי להישאר מקור-אמת. - **G1 / INV-WR\*** — ללא נגיעה; בלוק-י נשאר xhigh. - כלל-הנדסה §6 — לא נבלעות שגיאות: השומר-הקשיח הסופי (1.5M) נשמר. ## אימות - ✅ `py_compile` נקי לשני הקבצים. - ✅ בדיקת-לוגיקה: בלוק קטן (50K)→200K · בלוק-י (891K)→`[1m]` (קודם נכשל ב-400K) · >1.5M→שומר-קשיח. - ⏳ אימות-חי (ריצת בלוק-י על תיק גדול 1130/8137 ב-`[1m]`) — צעד הבא לאחר deploy. קשור: TaskMaster `legal-ai` #216; memory `reference_claude_generation_path`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-30 20:38:38 +00:00
fix(block-writer): רתימת חלון-1M של Opus 4.8 לבלוק-י (#216)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 10s
2b68d6cbeb
הגבול _MAX_PROMPT_CHARS=400_000 היה שומר מלאכותי שתאם את קיר ה-200K-טוקן
של בניית-Opus הסטנדרטית (~400K תווים עברית @~2 תווים/טוקן) — לא גבול-מודל.
Opus 4.8 מציע חלון 1M-טוקן במחיר רגיל; `claude -p` חושף אותו ישירות כ-model-id
`claude-opus-4-8[1m]` (אומת CLI 2.1.196, בלי beta-header). בלוק-י (דיון), שנושא
את התיק המלא כ-source-context (805K/891K תווים), נחסם רק ע"י השומר המיושן.

שינויים:
- block_writer: GENERATION_MODEL_1M + סף אסקלציה _CTX_1M_THRESHOLD_CHARS=350_000.
  פרומפט > הסף → `[1m]`; אחרת הבנייה הסטנדרטית (בלוקים קטנים נשארים זולים/מהירים).
- _MAX_PROMPT_CHARS 400_000 → 1_500_000 (~750K טוקנים; מרווח מתחת ל-1M) כשומר-קשיח
  סופי גם על בניית-ה-1M; הודעת-השגיאה מפנה לצמצום-source-context.
- model_used (provenance) משקף את הבנייה בפועל (200K/[1m]).
- claude_session: אזהרת-גודל מעודכנת (350K + רמז ל-[1m]).
- ספ 04-analysis-writing §1.3: תיעוד האסקלציה כעידון של אותו pin (לא מסלול מקביל, G2).

Invariants: מקיים G2 (אותו מודל-נעוץ, חלון רחב — לא מסלול מקביל), G1, INV-WR*;
לא בולע שגיאות (שומר-קשיח סופי נשאר). xhigh לבלוק-י ללא שינוי.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
chaim merged commit bc0a4bb895 into main 2026-06-30 20:40:48 +00:00
chaim deleted branch worktree-blockyod-1m 2026-06-30 20:40:48 +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#389