fix(writer): כלל-הסגנון בסוף הפרומפט — חותך אנטי-דפוסים ב-72–93% #421
Reference in New Issue
Block a user
Delete Branch "worktree-anti-pattern-directive-position"
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?
מה ולמה
הכלל לא היה חסר — הוא היה במקום שבו הוא לא תופס.
lessons.ANTI_PATTERNS(הרשימה שמולהstyle_distanceמודד) כבר הוזרקה לפרומפט-הכותב. אבל היא יושבת בתו ~46,781 מתוך 46,950 שלstyle_context, שהוא עצמו מקטע אחד מתוך ~12 בפרומפט המורכב. התוצאה: הלולאה מזהה את ההפרות, הכותב ממשיך לייצר אותן, ודפנה מוחקת אותן ידנית.A/B מדוד מול הסופיים החתומים (9 תיקים, 60 ייצורים, 2026-07-28) בודד את התיקון: אותו כלל בדיוק, בסוף הפרומפט, חותך
anti_pattern_totalב-72–93%.לשם קנה-מידה: ההפרש שנמדד בין המודלים באותו מדד היה ≤0.5 ולא עקבי. הכיול נותן 1.6–4.1. מיקום הכלל שווה פי-3 מבחירת-המודל.
מה השתנה
lessons.anti_pattern_directive()— רינדור שני של אותה רשימה קנונית. מקור אחד, שתי תצוגות — לא שני כללים שיכולים להיפרד.write_block(בתהליך) ו-get_block_context(סוכןlegal-writer). המסלול השני התגלה תוך כדי — אילו התיקון הוחל רק על הראשון, הבלוקים שהסוכן כותב היו ממשיכים להפר ושני הכותבים היו נפרדים בסגנון.golden_ratios(הקטגוריה הראשונה) הפיל את הלולאה לפני שהגיעה לאנטי-דפוסים והשמיט את אינווריאנטי-הסגנון כליל — עםlogger.warningגנרי בלבד. תקלת-overrides לא יכולה יותר "ללמד מחדש" את הכותב סגנון שגוי.Invariants — הצהרה (חובה)
lessons.ANTI_PATTERNS, אותו מקור ש-style_distanceמודד מולו. שני מסלולי-הכתיבה יושרו כדי שלא ייפרדו.צ'קליסט — פרוטוקול כתיבת-קוד
docs/spec/00-constitution.md+ ספ-התחום הרלוונטיgap-audit.md— לא נוגע ב-GAP/FU ממופהאימות
pytest mcp-server/tests/— 473 passed (470 קיימות + 3 חדשות).test_anti_pattern_directive.py:prompt +=לא מתרחש אחרי ההוראה — היא באמת אחרונה.מקור-הראיה
הדוחות המלאים ב-
data/eval/effort-calibration-20260728T1047*/1108*/1210*/1233*— אך הםgitignored(.gitignore:23), כלומר קיימים רק ב-worktree. הטבלה למעלה היא התמצית העמידה.תלות
ה-harness שהפיק את המדידה הוא PR #420 (ממד model×prompt). ה-PR הזה עומד בפני עצמו ואינו תלוי בו לוגית.