באג עמידות: ריצת-heartbeat כפולה על אותו issue דורסת טיוטת-קובץ תוך כדי כתיבה #444

Open
opened 2026-08-05 11:01:15 +00:00 by chaim · 0 comments
Owner

What & Why

בעת עבודה על CMPA-116 (ערר 8125-09-24, כתיבת בלוק י+יא), ריצת-heartbeat שנייה של אותו סוכן (run 6f48d781) עשתה checkout ל-issue בזמן שקריאת legal-writer subagent הארוכה (~573s) של ריצה ראשונה (397fd2e8) עוד רצה. הריצה השנייה כתבה טיוטת-דיון מתחרה (גרסה תֵמָטית, headers לא-קנוניים) ל-data/cases/8125-09-24/drafts/decision.md ב-10:18, ודרסה את גרסת ה-writer הקנונית (## י. דיון). התאוששתי דרך git (commit 81d948b), שחזרתי, validate 7/7, וייצאתי DOCX יציב. אך הריצה השנייה תפסה את ה-ownership lock ולכן הריצה הראשונה לא יכלה לעדכן comment/status (Issue run ownership conflict).

הקשר ופירוט

שורש: (1) drafts/decision.md מבוסס-קובץ ולא-נעול — שתי ריצות כותבות לאותו path. (2) ה-platform מאפשר checkout שני ל-issue שכבר בריצה ארוכה (אין mutual-exclusion ברמת issue בזמן ריצת subagent ארוכה). (3) validate_decision מפענח את הקובץ לפי headers קנוניים (## י., ## יא.) — גרסה לא-קנונית נכשלת ב-claims_coverage/structural_integrity. כיווני-תיקון לבדיקה: נעילת-issue אמיתית בזמן ריצה פעילה / זיהוי double-checkout ודחיית הריצה הישנה מוקדם; כתיבת בלוקים ל-DB (save_block_content) ולא רק לקובץ כדי שהקובץ לא יהיה ה-SoT היחיד; auto-commit שלא ידרוס שינויים לא-ממוזגים. ראה reference_paperclip_recovery_loops + feedback_shared_worktree_branch_race. ארטיפקטים: exports/החלטה-דיון-והכרעה-v1.docx (גרסה A תקפה), git 81d948b (A), git 42bae60 (B המתחרה).

Acceptance Criteria

⚠️ טרם הוגדרו. המשימה הועברה מ-TaskMaster ללא testStrategy.
לפני לקיחתה — להגדיר AC ולסמן status:ready (כלל התבנית: issue ללא AC אינו pickable).


הועבר מ-TaskMaster (tag legal-ai, id 155, status היה pending) ב-2026-08-05. הפניות (#155) בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.

## What & Why בעת עבודה על CMPA-116 (ערר 8125-09-24, כתיבת בלוק י+יא), ריצת-heartbeat שנייה של אותו סוכן (run 6f48d781) עשתה checkout ל-issue בזמן שקריאת legal-writer subagent הארוכה (~573s) של ריצה ראשונה (397fd2e8) עוד רצה. הריצה השנייה כתבה טיוטת-דיון מתחרה (גרסה תֵמָטית, headers לא-קנוניים) ל-data/cases/8125-09-24/drafts/decision.md ב-10:18, ודרסה את גרסת ה-writer הקנונית (## י. דיון). התאוששתי דרך git (commit 81d948b), שחזרתי, validate 7/7, וייצאתי DOCX יציב. אך הריצה השנייה תפסה את ה-ownership lock ולכן הריצה הראשונה לא יכלה לעדכן comment/status (Issue run ownership conflict). ## הקשר ופירוט שורש: (1) drafts/decision.md מבוסס-קובץ ולא-נעול — שתי ריצות כותבות לאותו path. (2) ה-platform מאפשר checkout שני ל-issue שכבר בריצה ארוכה (אין mutual-exclusion ברמת issue בזמן ריצת subagent ארוכה). (3) validate_decision מפענח את הקובץ לפי headers קנוניים (## י., ## יא.) — גרסה לא-קנונית נכשלת ב-claims_coverage/structural_integrity. כיווני-תיקון לבדיקה: נעילת-issue אמיתית בזמן ריצה פעילה / זיהוי double-checkout ודחיית הריצה הישנה מוקדם; כתיבת בלוקים ל-DB (save_block_content) ולא רק לקובץ כדי שהקובץ לא יהיה ה-SoT היחיד; auto-commit שלא ידרוס שינויים לא-ממוזגים. ראה reference_paperclip_recovery_loops + feedback_shared_worktree_branch_race. ארטיפקטים: exports/החלטה-דיון-והכרעה-v1.docx (גרסה A תקפה), git 81d948b (A), git 42bae60 (B המתחרה). ## Acceptance Criteria > ⚠️ **טרם הוגדרו.** המשימה הועברה מ-TaskMaster ללא `testStrategy`. > לפני לקיחתה — להגדיר AC ולסמן `status:ready` (כלל התבנית: issue ללא AC אינו pickable). --- <sub>הועבר מ-TaskMaster (tag `legal-ai`, id **155**, status היה `pending`) ב-2026-08-05. הפניות `(#155)` בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.</sub>
chaim added the type:bugpriority:p1-higharea:agents labels 2026-08-05 11:01:15 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#444