feat(ci): G12 leak-guard — אכיפת שער-הפלטפורמה (R4, #113) #177

Merged
chaim merged 1 commits from worktree-leak-guard-g12 into main 2026-06-10 09:41:16 +00:00
Owner

מה ולמה

R4 — האכיפה האוטומטית של INV-G12 (docs/spec/X15 §4), שסוגרת את היוזמה: מעכשיו דליפת-Paperclip לשכבת-האינטליגנציה נתפסת אוטומטית, לא ב-review.

שני כללים קשיחים (ב-scripts/leak_guard.py — מימוש קנוני יחיד, stdlib-בלבד, G2):

  1. mcp-server/src ללא סמלי-Paperclip — allowlist מנומק לפי substring ל-6 ההפניות הלגיטימיות (גשר-pm2 שמונה את שירות paperclip + 3 הערות-מקור של company_id).
  2. import seam: רק web/agent_platform_port.py (+ קבצי-המעטפת) מייבאים paperclip_* (R2).

שלושה אכיפנים, מאכף אחד:

  • CI hard gate.gitea/workflows/leak-guard.yaml (על pull_request + push→main).
  • pytesttest_platform_port_leak_guard.py (כולל self-test שמוודא שה-guard עצמו תופס הזרקה — לא ירקב).
  • hook בזמן-אמתspec-guard.sh בודק את התוכן-הנכתב על כתיבה ל-mcp-server/src ומזהיר מיידית (לא-deduped). תזכורת-הספ עודכנה ל-G1–G12.

מחריג קבצים-נוצרים (web-ui/types.ts) ומעטפת מוצהרת; הפרונט מחוץ להיקף-האינטליגנציה (ממצא R3).

Invariants — הצהרה (חובה)

  • נוגע / מקיים: G12 (אכיפה אוטומטית של שער-הפלטפורמה) · G2 (מאכף יחיד לשלושה צרכנים — אין מסלול-בדיקה מקביל).

צ'קליסט — פרוטוקול כתיבת-קוד

  • קראתי X15 §4 + spec-guard.sh הקיים
  • לא יוצר מסלול מקביל (G2) — מימוש-בדיקה אחד
  • אין בליעה שקטה — הפרה = exit 1 + file:line
  • עדכנתי scripts/SCRIPTS.md (כלל חובה)
  • בדיקות עוברות

אימות

סריקה נקייה          → ✓ exit 0
הזרקת pc.sh ל-mcp-server/src → exit 1 (נתפס)
seam-violation ב-web → exit 1 (נתפס)
hook: mcp-server edit → אזהרת-G12; web edit → תזכורת-ספ
pytest test_platform_port_leak_guard → 3 passed (כולל self-test)
bash -n spec-guard.sh → ok ; workflow YAML → ok

🤖 Generated with Claude Code

## מה ולמה R4 — האכיפה האוטומטית של **INV-G12** (docs/spec/X15 §4), שסוגרת את היוזמה: מעכשיו דליפת-Paperclip לשכבת-האינטליגנציה נתפסת **אוטומטית**, לא ב-review. **שני כללים קשיחים** (ב-`scripts/leak_guard.py` — מימוש קנוני יחיד, stdlib-בלבד, G2): 1. `mcp-server/src` ללא סמלי-Paperclip — allowlist מנומק לפי substring ל-6 ההפניות הלגיטימיות (גשר-pm2 שמונה את שירות `paperclip` + 3 הערות-מקור של `company_id`). 2. **import seam:** רק `web/agent_platform_port.py` (+ קבצי-המעטפת) מייבאים `paperclip_*` (R2). **שלושה אכיפנים, מאכף אחד:** - **CI hard gate** — `.gitea/workflows/leak-guard.yaml` (על `pull_request` + `push→main`). - **pytest** — `test_platform_port_leak_guard.py` (כולל self-test שמוודא שה-guard עצמו תופס הזרקה — לא ירקב). - **hook בזמן-אמת** — `spec-guard.sh` בודק את התוכן-הנכתב על כתיבה ל-`mcp-server/src` ומזהיר מיידית (לא-deduped). תזכורת-הספ עודכנה ל-G1–G12. מחריג קבצים-נוצרים (`web-ui/types.ts`) ומעטפת מוצהרת; הפרונט מחוץ להיקף-האינטליגנציה (ממצא R3). ## Invariants — הצהרה (חובה) - **נוגע / מקיים:** **G12** (אכיפה אוטומטית של שער-הפלטפורמה) · **G2** (מאכף יחיד לשלושה צרכנים — אין מסלול-בדיקה מקביל). ## צ'קליסט — פרוטוקול כתיבת-קוד - [x] קראתי X15 §4 + spec-guard.sh הקיים - [x] לא יוצר מסלול מקביל (G2) — מימוש-בדיקה אחד - [x] אין בליעה שקטה — הפרה = exit 1 + file:line - [x] עדכנתי scripts/SCRIPTS.md (כלל חובה) - [x] בדיקות עוברות ## אימות ``` סריקה נקייה → ✓ exit 0 הזרקת pc.sh ל-mcp-server/src → exit 1 (נתפס) seam-violation ב-web → exit 1 (נתפס) hook: mcp-server edit → אזהרת-G12; web edit → תזכורת-ספ pytest test_platform_port_leak_guard → 3 passed (כולל self-test) bash -n spec-guard.sh → ok ; workflow YAML → ok ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-10 09:41:10 +00:00
feat(ci): G12 leak-guard — enforce the Agent Platform Port seam (R4, #113)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 5s
d2b622f28e
המאכף האוטומטי של INV-G12 (docs/spec/X15 §4). שני כללים קשיחים:
1. mcp-server/src (שכבת-האינטליגנציה) ללא סמלי-Paperclip — allowlist מנומק לפי
   substring ל-6 ההפניות הלגיטימיות (pm2-bridge + הערות-מקור company_id).
2. import seam — רק web/agent_platform_port.py (+ קבצי-המעטפת) מייבאים paperclip_*.

מימוש קנוני אחד (scripts/leak_guard.py, stdlib-בלבד), משותף לשלושה אכיפנים (G2):
• CI hard gate: .gitea/workflows/leak-guard.yaml (pull_request + push→main)
• pytest: mcp-server/tests/test_platform_port_leak_guard.py (כולל self-test שמוודא
  שה-guard תופס הזרקה — לא ירקב)
• hook בזמן-אמת: spec-guard.sh בודק את התוכן-הנכתב (new_string/content) על כתיבה
  ל-mcp-server/src ומזהיר על הזרקת-Paperclip (לא-deduped); תזכורת-הספ עודכנה ל-G1–G12.

מחריג קבצים-נוצרים (web-ui types.ts) ומעטפת מוצהרת; הפרונט מחוץ להיקף-האינטליגנציה
(ממצא R3). עודכן scripts/SCRIPTS.md.

אימות: סריקה נקייה exit 0; הזרקת pc.sh ל-mcp-server → exit 1; seam-violation ב-web → exit 1;
hook מזהיר על mcp-server ומזכיר-ספ על web; pytest 3 passed; bash -n + YAML תקינים.

Invariants: G12 (אכיפה), G2 (מאכף יחיד לשלושה צרכנים).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 61d235175f into main 2026-06-10 09:41:16 +00:00
chaim deleted branch worktree-leak-guard-g12 2026-06-10 09:41:16 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#177