feat(drafting): טיוטת-ביניים דטרמיניסטית — Opus 4.8 + effort per-בלוק (#204) #356
Reference in New Issue
Block a user
Delete Branch "worktree-agent-a0d2502e8308bc27c"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
מה ולמה
WS5 / TaskMaster
legal-ai#204. הופך אתwrite_interim_draft/export_interim_draftלדטרמיניסטיים-מבנית.הבאג שתוקן: מנגנון-הייצור עובר
claude_session.query()→claude -p(מנוי claude.ai, עלות-שולית-אפס, מקומי-בלבד).BLOCK_CONFIGהגדירtemp(0/0.1/0.4) ו-model(sonnet/opus) per-בלוק — מטא-דאטה-מת: הקריאה ב-block_writer.py:447העבירה רקprompt/timeout/tools, אף פעם לאmodel/effort/temp. הייצור רץ על מודל ברירת-המחדל של ה-CLI עם פרומפטים-חופשיים → מקור אי-העקביות ("מסמך שונה בכל פעם").התיקון:
model="claude-opus-4-8"(GENERATION_MODEL) לכל בלוקי-ה-AI +effortper-בלוק שמועבר בפועל דרךclaude_session.query→claude -p --model … --effort ….highבספק."לפנינו ערר…"(סוף ל-OR"עניינה של החלטה זו").docx_exporter._INTERIM_BLOCK_ORDER).write_interim_draftמתזמר את אותוwrite_and_store_block→write_blockהקנוני (אין מסלול-ייצור שני).temp/model(אליאס) מ-BLOCK_CONFIG;modelכעת מפתח-dispatch בלבד ("script"/"ai").temperatureמתועד deprecated (Opus 4.7/4.8 דוחים אותו→HTTP 400);decision_blocks.temperatureנשמר=0 לתאימות-עמודה בלבד.MODEL_MAPהוסר.timeoutנגזר מ-effort.הוכחת מסלול (model+effort מגיעים ל-CLI):
write_interim_draft→write_and_store_block→write_block(block_writer.py:effort = block_cfg.get("effort", DEFAULT_EFFORT);query(prompt, model=GENERATION_MODEL, effort=effort, …)) →claude_session.query(if model: cmd += ["--model", model];if effort: cmd += ["--effort", effort]).צרכנים שעודכנו:
/api/settings/mcp/blocks(web/app.py) +blocks-tab.tsx+McpBlock— חושפיםeffort(לאtemperatureהמת) + המודל-הנעוץ.ספ:
docs/block-schema.md §3(effort מחליף Temperature/Thinking-budget) ·docs/spec/06-export.md(דטרמיניזם-מבני של טיוטת-הביניים).Invariants — הצהרה (חובה)
write_interim_draftמתזמר את אותוblock_writer.write_and_store_block→write_blockשל ההחלטה המלאה; השינוי הוא באותו מסלול, לא פיצול חדש.claude -p), לא Anthropic SDK ולא מהקונטיינר (ראהclaude_sessiondocstring /reference_claude_generation_path)._INTERIM_BLOCK_ORDER) נשמר; השינוי מחזק את הדטרמיניזם של מקור-התוכן.צ'קליסט — פרוטוקול כתיבת-קוד
docs/spec/00-constitution.md+06-export.md+block-schema.md+project_workflow_redesign/התוכנית לפני הכתיבהwrite_block)mcp-server/srcוה-skills נקייםdocs/spec/gap-audit.md— אין GAP/FU ממופה לשדות-המתים האלה (זו עבודת #204)pytest mcp-server/tests→ 431 passed;tsc --noEmit→ 0 שגיאותאימות
python3 -m pytest mcp-server/tests -q→ 431 passed, 1 warning.cd web-ui && npx tsc --noEmit→ exit 0.write_blockמעבירmodel=GENERATION_MODEL, effort=effortל-claude_session.query, ו-queryמתרגם ל---model/--effortב-claude -p. (אי-אפשר להריץ את המודל-החי מ-כאן — איןclaudeCLI/Python venv בעץ; הדטרמיניזם-המבני ניתן-לחיזוי מהקוד.)לצורך #208 (כיול-אמפירי): נקודות-ההזרקה מוכנות —
model=/effort=ב-claude_session.query+BLOCK_CONFIG[*].effortהם הידיות ל-A/B; מדידה דרךstyle_distanceעלdraft_final_pairs.🤖 Generated with Claude Code