fix(X13): הקשחה נגד דליפת-זיכרון מדפדפנים + reaper ל-task-master-mcp #115
Reference in New Issue
Block a user
Delete Branch "worktree-court-fetch-harden"
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?
למה
בעקבות השאלה "האם לא תהיה דליפת-זיכרון?" — חיזוק שירות-האחזור (X13 Tier-1) נגד דפדפנים יתומים, + טיפול בדליפה הגדולה בפועל שהתגלתה בכיול:
task-master-mcp.שלוש שכבות-הגנה לשירות-האחזור
async with AsyncCamoufox— סוגר את הדפדפן בכל exception (כבר היה).asyncio.wait_forקשיח (COURT_FETCH_HARD_TIMEOUT_S, ברירת-מחדל 180ש') סביב כל ה-fetch — דפדפן שנתקע מבוטל, ה-__aexit__מפרק אותו.camoufox-binיתומים (ppid=1) לפני ואחרי כל fetch (_reap_orphan_browsers). סדרתיות (INV-CF4) מבטיחה שכלppid=1הוא שארית בטוחה-להריגה.max_memory_restart: 1.5Gבשירות (כבר קיימת) = רשת-ביטחון ברמת-התהליך.הדליפה הגדולה: task-master-mcp
תהליכי
task-master-mcp(כלי TaskMaster) שמתייתמים (ppid=1) ומתנפחים ל~3GB כל אחד הם מה שהרווה את השרת בפועל (1.6Gi פנוי, swap מוצה) וקרס את הדפדפן בכיול.scripts/reap_orphan_procs.py— reaper כללי: הורגtask-master-mcp+camoufox-binרק כשהםppid=1(תהליך עם הורה-חי לעולם לא נוגעים)./procטהור (בלי psutil).--dry-run/--loop N.scripts/legal-reaper.config.cjs— דמון pm2 (loop 180ש',max_memory_restart 100M).בטיחות
ה-reaper נוגע רק ב-
ppid=1(יתומים). MCP-servers מחוברים (הורה = תוסף Claude, ~190MB) ודפדפן ש-fetch חי משתמש בו (הורה = ה-python) — לא נוגעים בהם.אימות
_reap_orphan_browsers()→ 0 (אין יתומים כעת);find_orphans()→ 0 (אין false-positives);--dry-runנקי.התקנה (host)
pm2 start scripts/legal-reaper.config.cjs && pm2 save🤖 Generated with Claude Code
שלוש שכבות-הגנה נגד דליפת-זיכרון מדפדפנים יתומים, + טיפול בדליפה הגדולה בפועל בשרת (task-master-mcp). - camofox_client.py: - asyncio.wait_for קשיח סביב כל ה-fetch (COURT_FETCH_HARD_TIMEOUT_S=180ש') — hang → ביטול → async-with tear-down → reap. - _reap_orphan_browsers(): הורג camoufox-bin יתומים (ppid=1) לפני ואחרי כל fetch. סדרתיות (INV-CF4) → כל ppid=1 הוא שארית בטוחה. - scripts/reap_orphan_procs.py: reaper כללי ל-task-master-mcp (~3GB יתומים) + camoufox-bin. רק ppid=1; /proc טהור. --dry-run / --loop N. - scripts/legal-reaper.config.cjs: דמון pm2 (loop 180s, max_memory_restart 100M). - X13 spec + SCRIPTS.md: תיעוד שכבות-ההגנה. max_memory_restart בשירות (1.5G) כבר נותן רשת-ביטחון ברמת-התהליך. Invariants: מקיים INV-CF4 (politeness/serial) — ללא שינוי חוזה. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>