יוצר web/agent_platform_port.py כמודול היחיד שמייבא web.paperclip_client/paperclip_api. app.py מייבא כעת אך-ורק מה-Port — 0 imports ישירים של paperclip_* (היפוך-תלות פנימה, Ports & Adapters / Dependency Rule). החלפת-הפלטפורמה = מימוש-מחדש של מודול אחד. שתי שכבות ב-Port: (א) side-effects של מחזור-חיים נחשפים גם בשם-דומיין (archive_case_project/restore/create/notify_case_status — אירועי-הדומיין המומלצים לקוד חדש); (ב) פעולות issue/interaction/comment/agent — re-export בשם pc_* (קריאות API, לא אירועים). מעבר מלא לפעלי-דומיין = follow-up; ה-import seam (החלק הניתן-לאכיפה ב-G12) מוחזק בכל מקרה. שינוי import-only באתרי-הקריאה — אפס שינוי-התנהגות, regression מינימלי. אימות: app.py 0 imports ישירים; py_compile OK; כל 23 הסמלים נפתרים מה-Port; domain-aliases identity-wired; test_paperclip_access_guard 5 passed. Invariants: G12 (שער-הפלטפורמה — seam יחיד), G2 (מקור-אמת יחיד למגע-פלטפורמה). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.9 KiB
3.9 KiB