feat(halacha): עצירה-רכה של הדריינר בסף-ניצול (75/65) + מקור-אמת יחיד למכסה #265
Reference in New Issue
Block a user
Delete Branch "worktree-halacha-soft-ceiling-stop"
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?
מה ולמה
המשך ל-#259. שם הספים (75/65) נאכפו ע"י קטילת הדריינר (
pm2 stop) באמצע חילוץ. היו"ר הבהיר: ב-75% יש מכסה לסיים את התיק שרץ — אז לתת לו להסתיים ולא להתחיל חדש, במקום לקטול. בנוסף "סדר בקוד": לוגיקת-המכסה הייתה כפולה.השינוי
legal_mcp/services/usage_limits.py(stdlib-only) — מקור-אמת יחיד:subscription_usage/USAGE_CEILINGS/ceiling_status. מיובא גם מ-system-python (supervisor) וגם מה-venv (drain);__init__ריקים → import בטוח מחוץ ל-venv.quota_exhausted/quota_available→wrappers דקים. ענף cooldown: קטילה (hold-stopped) רק ב-429 טרי (log_rl); סף-רך →hold-softבליpm2 stop.limit=4→1(בדיקת-סף בין כל תיק); שער-סף ב-run_in_executor, fail-OPEN כש-endpoint None (supervisor מגבה ב-429-kill); שמירת קצב 30ש' בין תיקים (limit=1ביטל את המרווח הפנימי).אימות end-to-end (endpoint חי)
CEILING_5H=30<45%===STOP=== usage ceiling reached (5h=45%/30 ...)— 0 תיקים, לא נגע ב-lock ✅status=online+סף-רךaction=hold-soft,stop_drainנקרא 0 ✅action=hold-stopped,stop_drainנקרא 1 ✅py_compile3 קבציםנדחה
court_fetch_service/usage_status(העתק שלישי, async/aiohttp, גשר-מארח רגיש-דיפלוי, רק 3 קבועים) — איחוד עתידי ב-PR נפרד; לא נוגעים כאן.Invariants
הערה ליו"ר (post-merge)
host-side scripts — אחרי מיזוג צריך
git checkout origin/mainשל 3 הקבצים בעץ הראשי (stale, 68 מאחור) כדי שהטיק הבא של pm2 ירוץ עם הקוד החדש. בנוסף מחיקת שארית מקומיתscripts/monitor_halacha_queue.py(לא-מתויקת).🤖 Generated with Claude Code