fix(ops): יישור MULTIMODAL_ENABLED בשרת ה-MCP + תיעוד דריפט האחסון שנותר #466

Merged
chaim merged 1 commits from worktree-mcp-env-align into main 2026-08-05 13:58:41 +00:00
Owner

הקונטיינר ושרת ה-MCP הם שתי דלתות לאותו קורפוס וחייבים לדרג אותו זהה. הם לא עשו זאת: הקונטיינר MULTIMODAL_ENABLED=true, השרת נפל ל-false (‏~/.env לא מגדיר). סוכן ו-UI יכלו לענות על אותה שאלה מקבוצות-תוצאות שונות (G2).

שונה: MULTIMODAL_ENABLED: "true" בקונפיג pm2 + תיעוד השירות ב-runbook, כולל האזהרה שקוד ב-mcp-server/ לא נכנס לתוקף עד restart — שלושה מיזוגים היום רצו על קוד ישן עד שהבחנתי.

לא שונה — STORAGE_BACKEND: דורש MINIO_ENDPOINT/ACCESS_KEY/SECRET_KEY שאינם ב-Infisical (רק ב-Coolify). בלעדיהם MINIO_ENDPOINT נפתר ל-http://minio:9000 — שם-רשת פנימי, לא נגיש מהמארח — וכל פעולת-בלוב נשברת. יצירת סוד חדש דורשת אישור חיים, אז הדריפט מתועד ב-runbook עם בדיוק מה שנדרש לסגירה. MinIO כן נגיש מהמארח (https://s3.nautilus.marcusgroup.org → 200).

invariants: G2 · §6

הקונטיינר ושרת ה-MCP הם שתי דלתות לאותו קורפוס וחייבים לדרג אותו זהה. הם לא עשו זאת: הקונטיינר `MULTIMODAL_ENABLED=true`, השרת נפל ל-`false` (‏`~/.env` לא מגדיר). סוכן ו-UI יכלו לענות על אותה שאלה מקבוצות-תוצאות שונות (G2). **שונה:** `MULTIMODAL_ENABLED: "true"` בקונפיג pm2 + תיעוד השירות ב-runbook, כולל האזהרה שקוד ב-`mcp-server/` **לא נכנס לתוקף עד restart** — שלושה מיזוגים היום רצו על קוד ישן עד שהבחנתי. **לא שונה — `STORAGE_BACKEND`:** דורש `MINIO_ENDPOINT`/`ACCESS_KEY`/`SECRET_KEY` שאינם ב-Infisical (רק ב-Coolify). בלעדיהם `MINIO_ENDPOINT` נפתר ל-`http://minio:9000` — שם-רשת פנימי, לא נגיש מהמארח — וכל פעולת-בלוב נשברת. יצירת סוד חדש דורשת אישור חיים, אז הדריפט **מתועד ב-runbook** עם בדיוק מה שנדרש לסגירה. MinIO כן נגיש מהמארח (`https://s3.nautilus.marcusgroup.org` → 200). **invariants:** G2 · §6
chaim added 1 commit 2026-08-05 13:58:27 +00:00
fix(ops): יישור MULTIMODAL_ENABLED בשרת ה-MCP + תיעוד דריפט האחסון שנותר
All checks were successful
INV-AG3 Agent Tool Grants / agent-tool-grants (pull_request) Successful in 6s
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
Lint — undefined names / undefined-names (pull_request) Successful in 14s
95571e0f05
הקונטיינר והשרת ה-HTTP הם שתי דלתות לאותו קורפוס, ולכן חייבים לדרג
אותו. הם לא עשו זאת: הקונטיינר רץ `MULTIMODAL_ENABLED=true`, בעוד שרת
ה-MCP נפל לברירת-המחדל `false` — `~/.env` אינו מגדיר את הדגל כלל. סוכן
ו-UI יכלו לענות על אותה שאלה מתוך קבוצות-תוצאות שונות, בלי שאיש ידע
(G2 — מסלול מקביל שמתפצל בשקט).

מה שונה
- `MULTIMODAL_ENABLED: "true"` בקונפיג ה-pm2 של legal-mcp-http.
- תיעוד השירות ב-operations-runbook (פורט, שער-Bearer, ו**האזהרה
  שהחשובה מכולן**: קוד ב-`mcp-server/` לא נכנס לתוקף עד restart — זהו
  תהליך ארוך-חיים, בניגוד ל-stdio שנטען בכל סשן. שלושה מיזוגים היום
  רצו על קוד ישן עד שהבחנתי).

מה **לא** שונה, ולמה
`STORAGE_BACKEND` נשאר לא-מוגדר. הקונטיינר רץ `s3`, השרת נופל
ל-`filesystem`, וזה דריפט אמיתי — סוכן שכותב דרך MCP כותב לדיסק בעוד
ה-web קורא מ-S3. אבל הפיכת הדגל דורשת `MINIO_ENDPOINT`/`ACCESS_KEY`/
`SECRET_KEY`, ואלה **אינם ב-Infisical** — רק ב-env של Coolify. בלעדיהם
`MINIO_ENDPOINT` נפתר לברירת-המחדל `http://minio:9000` (שם-רשת פנימי של
דוקר, לא נגיש מהמארח) וכל פעולת-בלוב נשברת.

יצירת סוד חדש מחייבת אישור חיים לשם/תיקייה/תגית, ולכן הדריפט מתועד
בבירור ב-runbook עם בדיוק מה שצריך כדי לסגור אותו — במקום להישאר
ידיעה שבעל-פה. MinIO **כן** נגיש מהמארח: `https://s3.nautilus.marcusgroup.org`
מחזיר 200 ב-`/minio/health/live` (אומת), כך שהחסם היחיד הוא הסודות.

invariants: G2 (שתי דלתות, דירוג אחד) · §6 (הדריפט הנותר מתועד, לא נבלע)
chaim merged commit 09c737bddf into main 2026-08-05 13:58:41 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#466