באג עמידות: ריצת-heartbeat כפולה על אותו issue דורסת טיוטת-קובץ תוך כדי כתיבה #444
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
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 (tag
legal-ai, id 155, status היהpending) ב-2026-08-05. הפניות(#155)בהודעות-commit ישנות מתייחסות למזהה ה-TaskMaster, לא למספר ה-issue הזה.