feat(principles): עיצוב-מחדש עקרונות משפטיים — פאנל-3, תקרת-5, סינון רטרואקטיבי, סינתזה, טרמינולוגיה (#152) #304

Merged
chaim merged 4 commits from worktree-canonical-synthesis into main 2026-06-19 11:17:06 +00:00
22 changed files with 2102 additions and 89 deletions

View File

@@ -0,0 +1,3 @@
canonical_id,instance_count,status,drift_cosine,reason,before,after
b4c36a38-0772-497c-981e-2c28f9cb1059,3,accepted,0.8963,הוסר המשפט על תכניות ישנות הנעדרות פירוט — אינו מעוגן באף אחד מהציטוטים-התומכים; שני המשפטים הנותרים משותפים לשלושת המופעים.,"היתר בנייה חייב לעלות בקנה אחד עם הוראות התכניות שבתוקף ולהינתן מכוח תכנית הכוללת רמת פירוט נאותה; רמת הפירוט הנדרשת נגזרת מאופי ההיתר המבוקש, מהבנייה המתוכננת ומהשלכותיה על סביבתה. תכניות ישנות הנעדרות פירוט מספק אינן יכולות לשמש בסיס להוצאת היתרי בנייה.","היתר בנייה חייב לעלות בקנה אחד עם הוראות התכניות שבתוקף ולהינתן מכוח תכנית הכוללת רמת פירוט נאותה; רמת הפירוט הנדרשת נגזרת מאופי ההיתר המבוקש, מהבנייה המתוכננת ומהשלכותיה על סביבתה."
1fb10fbb-cffa-4bb8-951b-51f59345f51a,2,accepted,0.9498,שני המופעים זהים בתוכנם והניסוח הקיים כבר מזקק במדויק את הציטוטים-התומכים — לשון תוחמת את מרחב הפרשנות ובתוכו נבחרת המשמעות המגשימה את התכלית; לא נדרש שינוי מהותי.,"לשון הנורמה היא המסד שעליו נבנה הפירוש התכליתי, והיא הקובעת את גבול התפרשותה של הנורמה; מבין מספר משמעויות לשוניות אפשריות יש לבחור באותה משמעות המגשימה באופן המלא ביותר את תכלית החקיקה.",לשון הנורמה היא המסד שעליו נבנה הפירוש התכליתי והיא הקובעת את גבול התפרשותה של הנורמה; מבין מספר משמעויות לשוניות אפשריות יש לבחור באותה משמעות המגשימה באופן המלא ביותר את תכלית החקיקה.
1 canonical_id instance_count status drift_cosine reason before after
2 b4c36a38-0772-497c-981e-2c28f9cb1059 3 accepted 0.8963 הוסר המשפט על תכניות ישנות הנעדרות פירוט — אינו מעוגן באף אחד מהציטוטים-התומכים; שני המשפטים הנותרים משותפים לשלושת המופעים. היתר בנייה חייב לעלות בקנה אחד עם הוראות התכניות שבתוקף ולהינתן מכוח תכנית הכוללת רמת פירוט נאותה; רמת הפירוט הנדרשת נגזרת מאופי ההיתר המבוקש, מהבנייה המתוכננת ומהשלכותיה על סביבתה. תכניות ישנות הנעדרות פירוט מספק אינן יכולות לשמש בסיס להוצאת היתרי בנייה. היתר בנייה חייב לעלות בקנה אחד עם הוראות התכניות שבתוקף ולהינתן מכוח תכנית הכוללת רמת פירוט נאותה; רמת הפירוט הנדרשת נגזרת מאופי ההיתר המבוקש, מהבנייה המתוכננת ומהשלכותיה על סביבתה.
3 1fb10fbb-cffa-4bb8-951b-51f59345f51a 2 accepted 0.9498 שני המופעים זהים בתוכנם והניסוח הקיים כבר מזקק במדויק את הציטוטים-התומכים — לשון תוחמת את מרחב הפרשנות ובתוכו נבחרת המשמעות המגשימה את התכלית; לא נדרש שינוי מהותי. לשון הנורמה היא המסד שעליו נבנה הפירוש התכליתי, והיא הקובעת את גבול התפרשותה של הנורמה; מבין מספר משמעויות לשוניות אפשריות יש לבחור באותה משמעות המגשימה באופן המלא ביותר את תכלית החקיקה. לשון הנורמה היא המסד שעליו נבנה הפירוש התכליתי והיא הקובעת את גבול התפרשותה של הנורמה; מבין מספר משמעויות לשוניות אפשריות יש לבחור באותה משמעות המגשימה באופן המלא ביותר את תכלית החקיקה.

View File

@@ -0,0 +1,21 @@
canonical_id,instance_count,status,drift_cosine,reason,before,after
3374fddc-ff56-4083-9ef3-3e7d5f98c28a,1,accepted,0.916,"הניסוח הקיים כבר כללי, מעוגן בציטוט-התומך ('רחוקים מזמינות לבניה') ונקי ממילות-פתיחה ועובדות-תיק; בוצע תיקון-איות זניח בלבד (בנייה) ללא שינוי מהותי.","קיומן של 'תשתיות-על' בלבד במועד הקובע, בהיעדר פיתוח פנים-מתחמי של אזור התוכנית, מלמד כי המגרשים שיועדו בתוכנית לבניה טרם הגיעו לכלל זמינות לבניה.","קיומן של תשתיות-על בלבד במועד הקובע, בהיעדר פיתוח פנים-מתחמי של אזור התוכנית, מלמד כי המגרשים שיועדו בתוכנית לבנייה טרם הגיעו לכלל זמינות לבנייה."
a7bb351e-4fef-4115-94b0-c270c1a00bc5,1,accepted,0.918,קוצר והודק לניסוח כללי יותר תוך שמירה על ההבחנה המעוגנת בין מבחן ההתאמה (שימוש חורג מהיתר) למבחן ההצדקה התכנונית (שימוש חורג מתוכנית); הוסר עודף ניסוח.,"כאשר מבוקש היתר לשימוש חורג מהיתר (להבדיל משימוש חורג מתוכנית), אין צורך להצדיק תכנונית את השימוש המבוקש, שכן התוכנית כבר מתירה אותו; המבחן הרלוונטי הוא מבחן ההתאמה — האם הבניין הקיים, שנבנה לשימוש שונה, מתאים לשימוש המבוקש — ולא מבחן ההצדקה התכנונית.","במבוקש היתר לשימוש חורג מהיתר, להבדיל משימוש חורג מתוכנית, המבחן הוא מבחן ההתאמה — האם המבנה הקיים מתאים לשימוש המבוקש — ולא מבחן ההצדקה התכנונית, שכן התוכנית כבר מתירה את השימוש."
7cc3a473-45c2-40d4-9a94-25ae8d0926a4,1,accepted,0.913,"זוקק וקוצר הניסוח ('בטל החוזה כולו ולא רק בהוראתו הפסולה') תוך שמירה מלאה על העיגון בציטוט-התומך, בלא הוספת דין או סייג.","מקום שחלקו הבלתי-חוקי של חוזה שלוב ושזור בשאר חלקיו באופן שאינו ניתן להפרדה, אין להפריד בין חלקי החוזה והוא בטל כולו, ולא רק בהוראתו הפסולה.","מקום שחלקו הבלתי-חוקי של חוזה שלוב ושזור ביתר חלקיו באופן שאינו ניתן להפרדה, בטל החוזה כולו ולא רק בהוראתו הפסולה."
72bd4205-0063-4ff1-ab60-14e17b1f5bfd,1,accepted,0.9198,"החלפתי 'אינן בגדר הקלה' ב'אינן טעונות הליך הקלה' (מדויק יותר ונסמך על הנימוק), הסרתי את 'ומועד אירוע המס' העודף שאינו בציטוט-התומך אלא בנימוק בלבד, וליטשתי את ניסוח חלוקת התשלום.","זכויות שהוטמעו בתכנית ואינן בגדר הקלה דינן כזכויות מעין-מוקנות, ולגביהן המועד הקובע ומועד אירוע המס לעניין היטל השבחה הוא מועד אישור התכנית ולא מועד אישור הזכויות בפועל; אולם מקום שבו המימוש נעשה בדרך של מכר, מתחלק תשלום ההשבחה — חלקו משולם במימוש בדרך המכר וחלקו בעת הוצאת היתר הבניה המממש את הזכויות המעין-מוקנות.","זכויות שהוטמעו בתכנית ואינן טעונות הליך הקלה דינן כזכויות מעין-מוקנות, ולגביהן המועד הקובע לעניין היטל השבחה הוא מועד אישור התכנית ולא מועד אישור הזכויות בפועל; ואולם מקום שבו המימוש נעשה בדרך של מכר, מתחלק תשלום ההשבחה — חלקו משולם בעת המימוש בדרך המכר וחלקו בעת הוצאת היתר הבניה המממש את הזכויות המעין-מוקנות."
d85d0c15-a699-4041-90cd-133220aa8060,1,accepted,0.9274,"זוקק לניסוח אחד רציף ותמציתי תוך שמירה על שלושת רכיבי העיקרון המעוגנים בציטוט — מקור תכנוני, קשר סיבתי ישיר, ושלילת חיוב על השבחה לא-תכנונית.",היטל השבחה מוטל אך ורק על עליית שווי מקרקעין הנובעת מפעולה תכנונית של הרשות; תנאי הכרחי לחיוב בהיטל הוא קיומו של קשר סיבתי ישיר בין הפעילות התכנונית המשביחה לבין עליית שווי המקרקעין שלפיה מחושבת ההשבחה. עליית שווי הנובעת מטעמים שאינם תכנוניים אינה בת-חיוב בהיטל.,"היטל השבחה מוטל אך ורק על עליית שווי מקרקעין הנובעת מפעולה תכנונית, ותנאי לחיוב בו הוא קשר סיבתי ישיר בין הפעולה התכנונית המשביחה לבין עליית השווי שלפיה מחושבת ההשבחה; עליית שווי הנובעת מטעם שאינו תכנוני אינה בת-חיוב בהיטל."
85c85ee3-6c2f-4493-81f5-677398f29c4c,1,accepted,0.8128,"הוסרו שם השכונה (רחביה) והעיר (ירושלים) כעובדות-תיק ספציפיות, והעיקרון נוסח כרב-תחולה; 'המועדפת' הוחלפה ב'הפשוטה' בהתאם לציטוט-המקור, ונשמרו יסוד היעילות, נטל ההנמקה לסטייה, וחריג המקרים הנדירים.","גישת ההשוואה היא השיטה המועדפת והיעילה ביותר לקביעת היטל השבחה, ועל השמאי לנמק מדוע בחר לסטות ממנה לטובת גישות אחרות, במיוחד באזורי ביקוש פעילים כשכונת רחביה בירושלים בהם נחתמות עסקאות מכר באופן שוטף ולא מתקיימים אותם מקרים נדירים המצדיקים שימוש בגישות שמאיות חלופיות.","גישת ההשוואה היא השיטה הפשוטה והיעילה ביותר לקביעת חיובי היטל השבחה, ושימוש בגישות שמאיות חלופיות שמור למקרים נדירים בלבד; משכך, ובמיוחד באזורי ביקוש שבהם נחתמות עסקאות מכר באופן שוטף, על השמאי לנמק מדוע בחר לסטות ממנה."
5f4e986b-7554-45e2-89fa-9e0f856169c3,1,abstained,,no change proposed,"כדי שהפרה לכאורית של תכנית תגבור על שיהוי חריף, נדרש שאימוץ פרשנות הרשות לתכנית יפגע פגיעה חמורה ומשמעותית בשלטון החוק. כל עוד הפרשנות שהעניקה הרשות לתכנית היא פרשנות אפשרית — גם אם בסופו של הליך תידחה — לא די בה כדי להצדיק התערבות חרף השיהוי.","כדי שהפרה לכאורית של תכנית תגבור על שיהוי חריף, נדרש שאימוץ פרשנות הרשות לתכנית יפגע פגיעה חמורה ומשמעותית בשלטון החוק. כל עוד הפרשנות שהעניקה הרשות לתכנית היא פרשנות אפשרית — גם אם בסופו של הליך תידחה — לא די בה כדי להצדיק התערבות חרף השיהוי."
df6a17ea-33c5-4935-adb0-1ba1688e57e5,1,accepted,0.8846,"מיקדתי את העיקרון בליבת המקור (פירוט נאות כתנאי להיתר, והפגיעה בשקיפות ובשיתוף הציבור), והסרתי את התוספות שאינן עולות מהציטוט-התומך — 'פועל יוצא של התכנון המקומי' וההפניה לסעיף 145(ב).","היתר בנייה הוא פועל יוצא של התכנון המקומי וחייב לעלות בקנה אחד עם הוראות התכניות שבתוקף ולהינתן מכוח תכנית הכוללת רמת פירוט נאותה (סעיף 145(ב) לחוק); מתן היתר לפי תכנית הנעדרת פירוט מספיק חוטא לתכליות ההליכים הסטטוטוריים, ובהן שקיפות הליכי התכנון ושיתוף הציבור.","היתר בנייה חייב להישען על תכנית הכוללת רמת פירוט נאותה; מתן היתר מכוח תכנית הנעדרת פירוט מספיק חוטא לתכליות ההליכים הסטטוטוריים המהווים תנאי לאישור התכנית, ובהן שקיפות הליכי התכנון ושיתוף הציבור בהם."
d4b70600-3a7a-4216-a2a7-9cbad81c7b7a,1,accepted,0.897,"זוקק הניסוח לרגיסטר נקי ותמציתי תוך שמירה על כל יסודות העיקרון (קריאה משולבת של סעיפים 1 ו-259, חוכר לדורות כבעלים, עסקה טרם רישום, מקרקעי רמ""י, תחולה כללית) המעוגנים בציטוט ובנימוק; לא נוספו דין, סייג או הפניות חדשות.","את הגדרת ""בעל"" שבסעיף 1 לחוק התכנון והבניה ואת סעיף 259 יש לקרוא יחדיו, כך שהחוק רואה גם חוכר לדורות כבעלים — ובכלל זה מי שהעסקה בעניינו טרם הושלמה ברישום, ובלבד שמדובר בעסקה במקרקעין המנוהלים לפי חוק רשות מקרקעי ישראל. הגדרה זו אינה מוגבלת לעניין היטל השבחה אלא חלה באופן כללי.","הגדרת ""בעל"" שבסעיף 1 לחוק התכנון והבניה נקראת יחד עם סעיף 259, כך שגם חוכר לדורות נחשב בעלים — לרבות מי שעסקתו במקרקעין טרם הושלמה ברישום, ובלבד שמדובר במקרקעין המנוהלים לפי חוק רשות מקרקעי ישראל; קריאה משולבת זו חלה באופן כללי ואינה מוגבלת לעניין היטל ההשבחה."
bde10435-1572-4558-8074-5c8d9b8ade8a,1,accepted,0.89,"הוסר רכיב 'מקרי הביניים שבהם הכף מעוינת תהא הנטייה שלא לפטור', שהוא כלל-הכרעה ספציפי שאינו עולה מהציטוט התומך ומהנימוק; נשמר הגרעין המעוגן — חזקת היחידה הכלכלית, הטלת נטל הסתירה על הנישום, ורף הוכחתי ברור הנגזר מתכלית מניעת תכנוני מס.","קיימת חזקה כי בני זוג מהווים יחידה כלכלית אחת שיש למסותה ככזו, וההפרדה הרכושית היא החריג ולא הכלל; הנטל לסתור חזקה זו מוטל על הנישומים, והיא תיסתר רק בהצגת ראיות ברורות להפרדה רכושית ממשית ועקבית בפועל. במקרי ביניים שבהם הכף מעוינת תהא הנטייה שלא לפטור ממס, מתוך תכלית מניעת תכנוני מס המצדיקה רף הוכחתי ברור.","חזקה היא כי בני זוג מהווים יחידה כלכלית אחת שיש למסותה ככזו, והנטל לסתור חזקה זו מוטל על הנישומים; לנוכח תכלית מניעת תכנוני מס תיסתר החזקה רק בהוכחה ברורה של הפרדה רכושית ממשית ועקבית בפועל."
c41e4b84-d7e5-4e30-9b50-6d9e98cadbe2,1,drift_rejected,0.7808,drift 0.781 < floor 0.8,שתיקת התכנית החלה על המקרקעין ביחס להקמת בריכת שחיה אין בה כדי להצביע על כך שמדובר בשימוש אסור בייעוד למגורים; היעדר הוראה מפורשת בתכנית אינו שקול לאיסור.,"שתיקת התכנית ביחס לשימוש מסוים אין בה כדי להצביע על כך שמדובר בשימוש אסור, מקום שהשימוש נלווה לייעוד החל על המקרקעין; היעדר הוראה מפורשת המתירה את השימוש אינו שקול לאיסורו."
6e9993f4-60bb-4e6d-bbbe-4eeae7c0d919,1,accepted,0.8422,"זוקק לעיקרון רב-תחולה: הוכלל מבנה ניסוח-השימוש (סיווג-על + פירוט בסוגריים) במקום הדוגמה הקונקרטית, תוך שמירה על הגרעין המעוגן בציטוט — גמישות פרשנית מול פרשנות דווקנית.","כאשר תכנית מגדירה את השימוש המותר במקרקעין כ""בניין ציבורי (בית ספר)"" — להבדיל מהגדרה של ""בית ספר בלבד"" — יש לפרש את ההגדרה בפרשנות תכליתית המאפשרת גמישות, כך שמותרים שימושים נוספים מאותה משפחת שימושים (""מבני חינוך""), ולא רק בית ספר במובן הדווקני.","כאשר תכנית מגדירה שימוש מותר בנוסח של סיווג-על המלווה בפירוט בסוגריים — כגון ""בניין ציבורי (בית ספר)"" — להבדיל מהגדרה בלעדית ודווקנית, יש לפרשו בפרשנות תכליתית מרחיבה המתירה את כלל משפחת השימושים שאליה משתייך הפירוט, ולא את הפריט הנקוב בלבד."
18c5037f-5b9a-4c19-ac8b-69fc555fbe03,1,accepted,0.8879,"חודדה ההבחנה כך שתשקף את הזיקה שבמקור בין הטלת ההיטל על חברה יזמית להתאמת הגישה הכלכלית, בלי להוסיף דין חדש.","בבחירת גישת השומה ההולמת לקביעת היטל השבחה בפרויקט פינוי-בינוי, זהות החייב בהיטל מהווה שיקול רלוונטי, ויש להבחין בין הטלת ההיטל על חברה יזמית לבין הטלתו על בעלי דירות פרטיים.","זהות החייב בהיטל השבחה בפרויקט פינוי-בינוי מהווה שיקול רלוונטי בבחירת גישת השומה ההולמת, ויש להבחין בין חברה יזמית — שלגביה עשויה הגישה הכלכלית להלום את קביעת גובה ההיטל — לבין בעלי דירות פרטיים."
94d504c5-7263-429e-8a9a-9413ee859224,1,accepted,0.8816,זוקק לניסוח קצר ומדויק יותר הנשען ישירות על לשון התקנה ועל הנימוק (בחינה מהותית = הפעלת סמכות כדין); הוסר ביטוי 'חותמת גומי' שאינו עולה מהציטוט-התומך.,"מוסד תכנון המקיים דיון חוזר רשאי להותיר את החלטת ועדת המשנה על כנה, ובלבד שבחן את ההחלטה ושקל אם יש מקום לשנותה; אימוץ החלטת ועדת המשנה לאחר בחינה כאמור הוא החלטה לגיטימית בהתאם לדין, ואין בו כשלעצמו משום פגם של 'חותמת גומי'.","מוסד תכנון המקיים דיון חוזר רשאי להותיר את החלטת ועדת המשנה על כנה, ובלבד שבחן אותה ושקל אם יש מקום לשנותה; השארת ההחלטה על כנה לאחר בחינה מהותית כאמור היא הפעלת סמכות כדין ואינה פגם פרוצדורלי."
4bc63c4a-6a92-4a36-84c2-120aaf144579,1,accepted,0.899,"הידוק לשוני בלבד — איחוד 'הנעשה במקרקעין' ל'במקרקעין', 'הייעוד התכנוני שלהם' ל'ייעודם התכנוני', ו'ביטויי השימוש המותרים בה' ל'השימושים המותרים בו'; ללא תוספת דין מעבר למקורות.",לצורך סיווג תכנוני יש להבחין בין השימוש בפועל הנעשה במקרקעין לבין הייעוד התכנוני שלהם; מקור הזכות החוזי ומטרות ההקצאה של הקרקע עשויים ללמד על אופיו של הייעוד ועל פרשנות ביטויי השימוש המותרים בה.,לצורך סיווג תכנוני יש להבחין בין השימוש בפועל במקרקעין לבין ייעודם התכנוני; מקור הזכות החוזי ומטרות הקצאת הקרקע עשויים ללמד על אופי הייעוד ועל פרשנות השימושים המותרים בו.
f6fb8145-9c3f-4a54-8487-b0ad6ba5f991,1,accepted,0.9063,"ליטוש רגיסטר וקיצור בלבד ('אינו ממסה' במקום 'אינו נועד למסות', 'עליית שווי' במקום 'העלייה בשווי'); כל יסודות העיקרון נשמרו ומעוגנים בציטוט-התומך.","היטל ההשבחה אינו נועד למסות עליית-ערך כללית או 'שבח-סתם' של מקרקעין, אלא אך ורק את העלייה בשווי המקרקעין שנגרמה בעקבות פעולות תכנון של הוועדה המקומית, וזאת כדי לממן את ההוצאות שהוועדה נטלה על עצמה לצורך הכנת תכניות הבינוי וביצוען.","היטל ההשבחה אינו ממסה עליית-ערך כללית או 'שבח-סתם' של מקרקעין, אלא אך ורק את עליית שווי המקרקעין שנגרמה בעקבות פעולות תכנון של הוועדה המקומית, וזאת כדי לממן את ההוצאות שנטלה על עצמה הוועדה לצורך הכנת תכניות הבינוי וביצוען."
afe4dd53-e1d1-4e74-b994-15f0daf4ce88,1,accepted,0.8743,"חודד הרישא של בחינת הלשון והתכלית כמכלול בכך שנוסף 'ולא במנותק', הנובע ישירות מהנימוק והציטוט-התומך; לא נוסף דין או מקור חדש.","תכנית בניין עיר היא בגדר חיקוק, ועל פרשנותה חלים הכללים הרגילים של פרשנות חקיקה; משכך יש לבחון את לשון התכנית ותכליתה כמכלול אחד.","תכנית בניין עיר היא בגדר חיקוק, ועל פרשנותה חלים הכללים הרגילים של פרשנות חקיקה; לפיכך יש לבחון את לשון התכנית ואת תכליתה כמכלול אחד, ולא במנותק זו מזו."
7928bb10-b142-46d7-aaed-9e8d9a183772,1,accepted,0.9144,"חודד שהפיצול נובע מאי-הוודאות אם תוגש הבקשה (ולא מעצם ודאות האישור), כעולה במפורש מהציטוט-התומך; שאר הניסוח נשמר.","ההבחנה בין זכויות מעין מוקנות לזכויות צפות נבחנת לפי מבחן הוודאות במועד אישור התכנית: בזכויות מעין מוקנות קיימת ודאות במועד האישור כי בקשה לניצול הזכויות תאושר, ולפיכך התשלום מפוצל בין מועד המכר למועד היתר הבניה; בזכויות צפות, לעומת זאת, לא קיימת ודאות במועד הקובע באשר לאישור הזכויות, היקפן ואופן ניצולן.","ההבחנה בין זכויות מעין מוקנות לזכויות צפות נבחנת לפי מבחן הוודאות במועד אישור התכנית: בזכויות מעין מוקנות קיימת ודאות במועד האישור כי ככל שתוגש בקשה לניצול הזכויות היא תאושר, ומשום שאין ודאות אם תוגש בקשה כאמור מפוצל התשלום בין מועד המכר למועד היתר הבניה; בזכויות צפות, לעומת זאת, אין במועד הקובע ודאות באשר לעצם אישור הזכויות, היקפן ואופן ניצולן."
28b8fb4b-a044-4f36-9635-94d3156c3403,1,accepted,0.8924,"הובלט שההכרעה היא לפי שיקולים תכנוניים בלבד (כעולה מהנימוק והמקור), והוחלף 'בעל זכות' ב'בעל זכות במקרקעין' ו'סעד קנייני' ב'סעד במישור הקנייני' בהתאם ללשון הציטוט-התומך.","ההליך התכנוני, על כל שלביו, עוסק בסוגיות תכנוניות בלבד, גם כאשר מתעוררות בו אגב אורחא שאלות קנייניות; הוא אינו משנה את מצבת הזכויות הקנייניות, אינו מכריע במחלוקות קנייניות, ואינו חוסם בעל זכות מלפנות לערכאה המוסמכת לשם קבלת סעד קנייני.","ההליך התכנוני, על כל שלביו, מוכרע על-פי שיקולים תכנוניים בלבד, גם כאשר מתעוררות בו אגב אורחא שאלות קנייניות; אין בו כדי לשנות את מצבת הזכויות הקנייניות, להכריע במחלוקת קניינית, או למנוע מבעל זכות במקרקעין לפנות לערכאה המוסמכת לשם קבלת סעד במישור הקנייני."
08aee54b-9d92-47d2-b57b-0735dd34c0c4,1,accepted,0.8993,"צומצמה ההכפלה בין 'מהותי ולא מוסדי' לבין הנימוק, וחודד הרצף הלוגי מהמבחן אל התוצאה — בלי להוסיף דין שאינו במקור.","בקשת רשות ערעור לבית המשפט העליון על פסק דין של בית משפט מחוזי שניתן בערעור על החלטת רשם של אותו בית משפט, דינה כבקשה ב'גלגול שלישי' המחייבת רשות ערעור. לצורך סיווג זה המבחן הוא מהותי ולא מוסדי: אף שהרשם ושופט בית המשפט המחוזי משתייכים לאותה ערכאה במישור המוסדי, משעה ששני שופטים דנו בעניין זה בערעור על זה התקיימה מהותית ערכאת ערעור, ולפיכך לא די בהצבעה על אפשרות טעות עובדתית או משפטית אלא נדרשת שאלה נורמטיבית רחבה.","בקשת רשות ערעור על פסק דין של בית משפט מחוזי שניתן בערעור על החלטת רשם של אותו בית משפט נחשבת לבקשה ב'גלגול שלישי', שכן הסיווג נקבע לפי מבחן מהותי ולא מוסדי: משדנו שני שופטים בעניין זה בערעור על זה, התקיימה ערכאת ערעור במובן המהותי, אף שמוסדית שתי הדרגות שוכנות באותה ערכאה. לפיכך מתן הרשות מותנה בשאלה נורמטיבית רחבה, ולא די בהצבעה על אפשרות של טעות עובדתית או משפטית."
1 canonical_id instance_count status drift_cosine reason before after
2 3374fddc-ff56-4083-9ef3-3e7d5f98c28a 1 accepted 0.916 הניסוח הקיים כבר כללי, מעוגן בציטוט-התומך ('רחוקים מזמינות לבניה') ונקי ממילות-פתיחה ועובדות-תיק; בוצע תיקון-איות זניח בלבד (בנייה) ללא שינוי מהותי. קיומן של 'תשתיות-על' בלבד במועד הקובע, בהיעדר פיתוח פנים-מתחמי של אזור התוכנית, מלמד כי המגרשים שיועדו בתוכנית לבניה טרם הגיעו לכלל זמינות לבניה. קיומן של תשתיות-על בלבד במועד הקובע, בהיעדר פיתוח פנים-מתחמי של אזור התוכנית, מלמד כי המגרשים שיועדו בתוכנית לבנייה טרם הגיעו לכלל זמינות לבנייה.
3 a7bb351e-4fef-4115-94b0-c270c1a00bc5 1 accepted 0.918 קוצר והודק לניסוח כללי יותר תוך שמירה על ההבחנה המעוגנת בין מבחן ההתאמה (שימוש חורג מהיתר) למבחן ההצדקה התכנונית (שימוש חורג מתוכנית); הוסר עודף ניסוח. כאשר מבוקש היתר לשימוש חורג מהיתר (להבדיל משימוש חורג מתוכנית), אין צורך להצדיק תכנונית את השימוש המבוקש, שכן התוכנית כבר מתירה אותו; המבחן הרלוונטי הוא מבחן ההתאמה — האם הבניין הקיים, שנבנה לשימוש שונה, מתאים לשימוש המבוקש — ולא מבחן ההצדקה התכנונית. במבוקש היתר לשימוש חורג מהיתר, להבדיל משימוש חורג מתוכנית, המבחן הוא מבחן ההתאמה — האם המבנה הקיים מתאים לשימוש המבוקש — ולא מבחן ההצדקה התכנונית, שכן התוכנית כבר מתירה את השימוש.
4 7cc3a473-45c2-40d4-9a94-25ae8d0926a4 1 accepted 0.913 זוקק וקוצר הניסוח ('בטל החוזה כולו ולא רק בהוראתו הפסולה') תוך שמירה מלאה על העיגון בציטוט-התומך, בלא הוספת דין או סייג. מקום שחלקו הבלתי-חוקי של חוזה שלוב ושזור בשאר חלקיו באופן שאינו ניתן להפרדה, אין להפריד בין חלקי החוזה והוא בטל כולו, ולא רק בהוראתו הפסולה. מקום שחלקו הבלתי-חוקי של חוזה שלוב ושזור ביתר חלקיו באופן שאינו ניתן להפרדה, בטל החוזה כולו ולא רק בהוראתו הפסולה.
5 72bd4205-0063-4ff1-ab60-14e17b1f5bfd 1 accepted 0.9198 החלפתי 'אינן בגדר הקלה' ב'אינן טעונות הליך הקלה' (מדויק יותר ונסמך על הנימוק), הסרתי את 'ומועד אירוע המס' העודף שאינו בציטוט-התומך אלא בנימוק בלבד, וליטשתי את ניסוח חלוקת התשלום. זכויות שהוטמעו בתכנית ואינן בגדר הקלה דינן כזכויות מעין-מוקנות, ולגביהן המועד הקובע ומועד אירוע המס לעניין היטל השבחה הוא מועד אישור התכנית ולא מועד אישור הזכויות בפועל; אולם מקום שבו המימוש נעשה בדרך של מכר, מתחלק תשלום ההשבחה — חלקו משולם במימוש בדרך המכר וחלקו בעת הוצאת היתר הבניה המממש את הזכויות המעין-מוקנות. זכויות שהוטמעו בתכנית ואינן טעונות הליך הקלה דינן כזכויות מעין-מוקנות, ולגביהן המועד הקובע לעניין היטל השבחה הוא מועד אישור התכנית ולא מועד אישור הזכויות בפועל; ואולם מקום שבו המימוש נעשה בדרך של מכר, מתחלק תשלום ההשבחה — חלקו משולם בעת המימוש בדרך המכר וחלקו בעת הוצאת היתר הבניה המממש את הזכויות המעין-מוקנות.
6 d85d0c15-a699-4041-90cd-133220aa8060 1 accepted 0.9274 זוקק לניסוח אחד רציף ותמציתי תוך שמירה על שלושת רכיבי העיקרון המעוגנים בציטוט — מקור תכנוני, קשר סיבתי ישיר, ושלילת חיוב על השבחה לא-תכנונית. היטל השבחה מוטל אך ורק על עליית שווי מקרקעין הנובעת מפעולה תכנונית של הרשות; תנאי הכרחי לחיוב בהיטל הוא קיומו של קשר סיבתי ישיר בין הפעילות התכנונית המשביחה לבין עליית שווי המקרקעין שלפיה מחושבת ההשבחה. עליית שווי הנובעת מטעמים שאינם תכנוניים אינה בת-חיוב בהיטל. היטל השבחה מוטל אך ורק על עליית שווי מקרקעין הנובעת מפעולה תכנונית, ותנאי לחיוב בו הוא קשר סיבתי ישיר בין הפעולה התכנונית המשביחה לבין עליית השווי שלפיה מחושבת ההשבחה; עליית שווי הנובעת מטעם שאינו תכנוני אינה בת-חיוב בהיטל.
7 85c85ee3-6c2f-4493-81f5-677398f29c4c 1 accepted 0.8128 הוסרו שם השכונה (רחביה) והעיר (ירושלים) כעובדות-תיק ספציפיות, והעיקרון נוסח כרב-תחולה; 'המועדפת' הוחלפה ב'הפשוטה' בהתאם לציטוט-המקור, ונשמרו יסוד היעילות, נטל ההנמקה לסטייה, וחריג המקרים הנדירים. גישת ההשוואה היא השיטה המועדפת והיעילה ביותר לקביעת היטל השבחה, ועל השמאי לנמק מדוע בחר לסטות ממנה לטובת גישות אחרות, במיוחד באזורי ביקוש פעילים כשכונת רחביה בירושלים בהם נחתמות עסקאות מכר באופן שוטף ולא מתקיימים אותם מקרים נדירים המצדיקים שימוש בגישות שמאיות חלופיות. גישת ההשוואה היא השיטה הפשוטה והיעילה ביותר לקביעת חיובי היטל השבחה, ושימוש בגישות שמאיות חלופיות שמור למקרים נדירים בלבד; משכך, ובמיוחד באזורי ביקוש שבהם נחתמות עסקאות מכר באופן שוטף, על השמאי לנמק מדוע בחר לסטות ממנה.
8 5f4e986b-7554-45e2-89fa-9e0f856169c3 1 abstained no change proposed כדי שהפרה לכאורית של תכנית תגבור על שיהוי חריף, נדרש שאימוץ פרשנות הרשות לתכנית יפגע פגיעה חמורה ומשמעותית בשלטון החוק. כל עוד הפרשנות שהעניקה הרשות לתכנית היא פרשנות אפשרית — גם אם בסופו של הליך תידחה — לא די בה כדי להצדיק התערבות חרף השיהוי. כדי שהפרה לכאורית של תכנית תגבור על שיהוי חריף, נדרש שאימוץ פרשנות הרשות לתכנית יפגע פגיעה חמורה ומשמעותית בשלטון החוק. כל עוד הפרשנות שהעניקה הרשות לתכנית היא פרשנות אפשרית — גם אם בסופו של הליך תידחה — לא די בה כדי להצדיק התערבות חרף השיהוי.
9 df6a17ea-33c5-4935-adb0-1ba1688e57e5 1 accepted 0.8846 מיקדתי את העיקרון בליבת המקור (פירוט נאות כתנאי להיתר, והפגיעה בשקיפות ובשיתוף הציבור), והסרתי את התוספות שאינן עולות מהציטוט-התומך — 'פועל יוצא של התכנון המקומי' וההפניה לסעיף 145(ב). היתר בנייה הוא פועל יוצא של התכנון המקומי וחייב לעלות בקנה אחד עם הוראות התכניות שבתוקף ולהינתן מכוח תכנית הכוללת רמת פירוט נאותה (סעיף 145(ב) לחוק); מתן היתר לפי תכנית הנעדרת פירוט מספיק חוטא לתכליות ההליכים הסטטוטוריים, ובהן שקיפות הליכי התכנון ושיתוף הציבור. היתר בנייה חייב להישען על תכנית הכוללת רמת פירוט נאותה; מתן היתר מכוח תכנית הנעדרת פירוט מספיק חוטא לתכליות ההליכים הסטטוטוריים המהווים תנאי לאישור התכנית, ובהן שקיפות הליכי התכנון ושיתוף הציבור בהם.
10 d4b70600-3a7a-4216-a2a7-9cbad81c7b7a 1 accepted 0.897 זוקק הניסוח לרגיסטר נקי ותמציתי תוך שמירה על כל יסודות העיקרון (קריאה משולבת של סעיפים 1 ו-259, חוכר לדורות כבעלים, עסקה טרם רישום, מקרקעי רמ"י, תחולה כללית) המעוגנים בציטוט ובנימוק; לא נוספו דין, סייג או הפניות חדשות. את הגדרת "בעל" שבסעיף 1 לחוק התכנון והבניה ואת סעיף 259 יש לקרוא יחדיו, כך שהחוק רואה גם חוכר לדורות כבעלים — ובכלל זה מי שהעסקה בעניינו טרם הושלמה ברישום, ובלבד שמדובר בעסקה במקרקעין המנוהלים לפי חוק רשות מקרקעי ישראל. הגדרה זו אינה מוגבלת לעניין היטל השבחה אלא חלה באופן כללי. הגדרת "בעל" שבסעיף 1 לחוק התכנון והבניה נקראת יחד עם סעיף 259, כך שגם חוכר לדורות נחשב בעלים — לרבות מי שעסקתו במקרקעין טרם הושלמה ברישום, ובלבד שמדובר במקרקעין המנוהלים לפי חוק רשות מקרקעי ישראל; קריאה משולבת זו חלה באופן כללי ואינה מוגבלת לעניין היטל ההשבחה.
11 bde10435-1572-4558-8074-5c8d9b8ade8a 1 accepted 0.89 הוסר רכיב 'מקרי הביניים שבהם הכף מעוינת תהא הנטייה שלא לפטור', שהוא כלל-הכרעה ספציפי שאינו עולה מהציטוט התומך ומהנימוק; נשמר הגרעין המעוגן — חזקת היחידה הכלכלית, הטלת נטל הסתירה על הנישום, ורף הוכחתי ברור הנגזר מתכלית מניעת תכנוני מס. קיימת חזקה כי בני זוג מהווים יחידה כלכלית אחת שיש למסותה ככזו, וההפרדה הרכושית היא החריג ולא הכלל; הנטל לסתור חזקה זו מוטל על הנישומים, והיא תיסתר רק בהצגת ראיות ברורות להפרדה רכושית ממשית ועקבית בפועל. במקרי ביניים שבהם הכף מעוינת תהא הנטייה שלא לפטור ממס, מתוך תכלית מניעת תכנוני מס המצדיקה רף הוכחתי ברור. חזקה היא כי בני זוג מהווים יחידה כלכלית אחת שיש למסותה ככזו, והנטל לסתור חזקה זו מוטל על הנישומים; לנוכח תכלית מניעת תכנוני מס תיסתר החזקה רק בהוכחה ברורה של הפרדה רכושית ממשית ועקבית בפועל.
12 c41e4b84-d7e5-4e30-9b50-6d9e98cadbe2 1 drift_rejected 0.7808 drift 0.781 < floor 0.8 שתיקת התכנית החלה על המקרקעין ביחס להקמת בריכת שחיה אין בה כדי להצביע על כך שמדובר בשימוש אסור בייעוד למגורים; היעדר הוראה מפורשת בתכנית אינו שקול לאיסור. שתיקת התכנית ביחס לשימוש מסוים אין בה כדי להצביע על כך שמדובר בשימוש אסור, מקום שהשימוש נלווה לייעוד החל על המקרקעין; היעדר הוראה מפורשת המתירה את השימוש אינו שקול לאיסורו.
13 6e9993f4-60bb-4e6d-bbbe-4eeae7c0d919 1 accepted 0.8422 זוקק לעיקרון רב-תחולה: הוכלל מבנה ניסוח-השימוש (סיווג-על + פירוט בסוגריים) במקום הדוגמה הקונקרטית, תוך שמירה על הגרעין המעוגן בציטוט — גמישות פרשנית מול פרשנות דווקנית. כאשר תכנית מגדירה את השימוש המותר במקרקעין כ"בניין ציבורי (בית ספר)" — להבדיל מהגדרה של "בית ספר בלבד" — יש לפרש את ההגדרה בפרשנות תכליתית המאפשרת גמישות, כך שמותרים שימושים נוספים מאותה משפחת שימושים ("מבני חינוך"), ולא רק בית ספר במובן הדווקני. כאשר תכנית מגדירה שימוש מותר בנוסח של סיווג-על המלווה בפירוט בסוגריים — כגון "בניין ציבורי (בית ספר)" — להבדיל מהגדרה בלעדית ודווקנית, יש לפרשו בפרשנות תכליתית מרחיבה המתירה את כלל משפחת השימושים שאליה משתייך הפירוט, ולא את הפריט הנקוב בלבד.
14 18c5037f-5b9a-4c19-ac8b-69fc555fbe03 1 accepted 0.8879 חודדה ההבחנה כך שתשקף את הזיקה שבמקור בין הטלת ההיטל על חברה יזמית להתאמת הגישה הכלכלית, בלי להוסיף דין חדש. בבחירת גישת השומה ההולמת לקביעת היטל השבחה בפרויקט פינוי-בינוי, זהות החייב בהיטל מהווה שיקול רלוונטי, ויש להבחין בין הטלת ההיטל על חברה יזמית לבין הטלתו על בעלי דירות פרטיים. זהות החייב בהיטל השבחה בפרויקט פינוי-בינוי מהווה שיקול רלוונטי בבחירת גישת השומה ההולמת, ויש להבחין בין חברה יזמית — שלגביה עשויה הגישה הכלכלית להלום את קביעת גובה ההיטל — לבין בעלי דירות פרטיים.
15 94d504c5-7263-429e-8a9a-9413ee859224 1 accepted 0.8816 זוקק לניסוח קצר ומדויק יותר הנשען ישירות על לשון התקנה ועל הנימוק (בחינה מהותית = הפעלת סמכות כדין); הוסר ביטוי 'חותמת גומי' שאינו עולה מהציטוט-התומך. מוסד תכנון המקיים דיון חוזר רשאי להותיר את החלטת ועדת המשנה על כנה, ובלבד שבחן את ההחלטה ושקל אם יש מקום לשנותה; אימוץ החלטת ועדת המשנה לאחר בחינה כאמור הוא החלטה לגיטימית בהתאם לדין, ואין בו כשלעצמו משום פגם של 'חותמת גומי'. מוסד תכנון המקיים דיון חוזר רשאי להותיר את החלטת ועדת המשנה על כנה, ובלבד שבחן אותה ושקל אם יש מקום לשנותה; השארת ההחלטה על כנה לאחר בחינה מהותית כאמור היא הפעלת סמכות כדין ואינה פגם פרוצדורלי.
16 4bc63c4a-6a92-4a36-84c2-120aaf144579 1 accepted 0.899 הידוק לשוני בלבד — איחוד 'הנעשה במקרקעין' ל'במקרקעין', 'הייעוד התכנוני שלהם' ל'ייעודם התכנוני', ו'ביטויי השימוש המותרים בה' ל'השימושים המותרים בו'; ללא תוספת דין מעבר למקורות. לצורך סיווג תכנוני יש להבחין בין השימוש בפועל הנעשה במקרקעין לבין הייעוד התכנוני שלהם; מקור הזכות החוזי ומטרות ההקצאה של הקרקע עשויים ללמד על אופיו של הייעוד ועל פרשנות ביטויי השימוש המותרים בה. לצורך סיווג תכנוני יש להבחין בין השימוש בפועל במקרקעין לבין ייעודם התכנוני; מקור הזכות החוזי ומטרות הקצאת הקרקע עשויים ללמד על אופי הייעוד ועל פרשנות השימושים המותרים בו.
17 f6fb8145-9c3f-4a54-8487-b0ad6ba5f991 1 accepted 0.9063 ליטוש רגיסטר וקיצור בלבד ('אינו ממסה' במקום 'אינו נועד למסות', 'עליית שווי' במקום 'העלייה בשווי'); כל יסודות העיקרון נשמרו ומעוגנים בציטוט-התומך. היטל ההשבחה אינו נועד למסות עליית-ערך כללית או 'שבח-סתם' של מקרקעין, אלא אך ורק את העלייה בשווי המקרקעין שנגרמה בעקבות פעולות תכנון של הוועדה המקומית, וזאת כדי לממן את ההוצאות שהוועדה נטלה על עצמה לצורך הכנת תכניות הבינוי וביצוען. היטל ההשבחה אינו ממסה עליית-ערך כללית או 'שבח-סתם' של מקרקעין, אלא אך ורק את עליית שווי המקרקעין שנגרמה בעקבות פעולות תכנון של הוועדה המקומית, וזאת כדי לממן את ההוצאות שנטלה על עצמה הוועדה לצורך הכנת תכניות הבינוי וביצוען.
18 afe4dd53-e1d1-4e74-b994-15f0daf4ce88 1 accepted 0.8743 חודד הרישא של בחינת הלשון והתכלית כמכלול בכך שנוסף 'ולא במנותק', הנובע ישירות מהנימוק והציטוט-התומך; לא נוסף דין או מקור חדש. תכנית בניין עיר היא בגדר חיקוק, ועל פרשנותה חלים הכללים הרגילים של פרשנות חקיקה; משכך יש לבחון את לשון התכנית ותכליתה כמכלול אחד. תכנית בניין עיר היא בגדר חיקוק, ועל פרשנותה חלים הכללים הרגילים של פרשנות חקיקה; לפיכך יש לבחון את לשון התכנית ואת תכליתה כמכלול אחד, ולא במנותק זו מזו.
19 7928bb10-b142-46d7-aaed-9e8d9a183772 1 accepted 0.9144 חודד שהפיצול נובע מאי-הוודאות אם תוגש הבקשה (ולא מעצם ודאות האישור), כעולה במפורש מהציטוט-התומך; שאר הניסוח נשמר. ההבחנה בין זכויות מעין מוקנות לזכויות צפות נבחנת לפי מבחן הוודאות במועד אישור התכנית: בזכויות מעין מוקנות קיימת ודאות במועד האישור כי בקשה לניצול הזכויות תאושר, ולפיכך התשלום מפוצל בין מועד המכר למועד היתר הבניה; בזכויות צפות, לעומת זאת, לא קיימת ודאות במועד הקובע באשר לאישור הזכויות, היקפן ואופן ניצולן. ההבחנה בין זכויות מעין מוקנות לזכויות צפות נבחנת לפי מבחן הוודאות במועד אישור התכנית: בזכויות מעין מוקנות קיימת ודאות במועד האישור כי ככל שתוגש בקשה לניצול הזכויות היא תאושר, ומשום שאין ודאות אם תוגש בקשה כאמור מפוצל התשלום בין מועד המכר למועד היתר הבניה; בזכויות צפות, לעומת זאת, אין במועד הקובע ודאות באשר לעצם אישור הזכויות, היקפן ואופן ניצולן.
20 28b8fb4b-a044-4f36-9635-94d3156c3403 1 accepted 0.8924 הובלט שההכרעה היא לפי שיקולים תכנוניים בלבד (כעולה מהנימוק והמקור), והוחלף 'בעל זכות' ב'בעל זכות במקרקעין' ו'סעד קנייני' ב'סעד במישור הקנייני' בהתאם ללשון הציטוט-התומך. ההליך התכנוני, על כל שלביו, עוסק בסוגיות תכנוניות בלבד, גם כאשר מתעוררות בו אגב אורחא שאלות קנייניות; הוא אינו משנה את מצבת הזכויות הקנייניות, אינו מכריע במחלוקות קנייניות, ואינו חוסם בעל זכות מלפנות לערכאה המוסמכת לשם קבלת סעד קנייני. ההליך התכנוני, על כל שלביו, מוכרע על-פי שיקולים תכנוניים בלבד, גם כאשר מתעוררות בו אגב אורחא שאלות קנייניות; אין בו כדי לשנות את מצבת הזכויות הקנייניות, להכריע במחלוקת קניינית, או למנוע מבעל זכות במקרקעין לפנות לערכאה המוסמכת לשם קבלת סעד במישור הקנייני.
21 08aee54b-9d92-47d2-b57b-0735dd34c0c4 1 accepted 0.8993 צומצמה ההכפלה בין 'מהותי ולא מוסדי' לבין הנימוק, וחודד הרצף הלוגי מהמבחן אל התוצאה — בלי להוסיף דין שאינו במקור. בקשת רשות ערעור לבית המשפט העליון על פסק דין של בית משפט מחוזי שניתן בערעור על החלטת רשם של אותו בית משפט, דינה כבקשה ב'גלגול שלישי' המחייבת רשות ערעור. לצורך סיווג זה המבחן הוא מהותי ולא מוסדי: אף שהרשם ושופט בית המשפט המחוזי משתייכים לאותה ערכאה במישור המוסדי, משעה ששני שופטים דנו בעניין זה בערעור על זה התקיימה מהותית ערכאת ערעור, ולפיכך לא די בהצבעה על אפשרות טעות עובדתית או משפטית אלא נדרשת שאלה נורמטיבית רחבה. בקשת רשות ערעור על פסק דין של בית משפט מחוזי שניתן בערעור על החלטת רשם של אותו בית משפט נחשבת לבקשה ב'גלגול שלישי', שכן הסיווג נקבע לפי מבחן מהותי ולא מוסדי: משדנו שני שופטים בעניין זה בערעור על זה, התקיימה ערכאת ערעור במובן המהותי, אף שמוסדית שתי הדרגות שוכנות באותה ערכאה. לפיכך מתן הרשות מותנה בשאלה נורמטיבית רחבה, ולא די בהצבעה על אפשרות של טעות עובדתית או משפטית.

View File

@@ -0,0 +1,101 @@
canonical_id,instance_count,status,drift_cosine,reason,before,after
660bb5ae-1209-4215-812e-efbfc37f373c,1,accepted,0.8685,"צומצם לשני הפנים המעוגנים בציטוט-התומך; הוסר הפן השלישי בדבר פגיעה בשלטון החוק והאיזון התלת-שלבי, שאינו עולה ממקור-העיגון אלא מן הנימוק בלבד.","טענת שיהוי בהליך מינהלי נבחנת בשני פנים: הפן האובייקטיבי — חלוף הזמן עד הגשת ההליך והפגיעה באינטרסים ראויים של הרשות או של צדדים שלישיים ושינוי מצבם לרעה; והפן הסובייקטיבי — התנהלות העותר והשאלה אם יש בה כדי ללמד על ויתור על זכויותיו. בנוסף יש לבחון אם קבלת טענת השיהוי תותיר על כנה החלטה או מעשה מינהלי הפוגעים פגיעה חמורה בשלטון החוק או באינטרס ציבורי חשוב, ועל בית המשפט לאזן בין שלושת ההיבטים הללו לפי משקלם היחסי בנסיבות העניין.",טענת שיהוי בהליך מינהלי נבחנת בשני פנים: הפן האובייקטיבי — חלוף הזמן עד הגשת ההליך והפגיעה באינטרסים ראויים של הרשות או של צדדים שלישיים ושינוי מצבם לרעה בשל חלוף הזמן; והפן הסובייקטיבי — התנהלות העותר והשאלה אם יש בה כדי ללמד על ויתור על זכויותיו.
5bede666-24ac-487c-87a7-5c253e04966c,1,abstained,,no change proposed,"תכליתם של פיצויי ההפקעה היא להעניק לבעל הזכויות בקרקע את השווי הכספי של הזכות או טובת ההנאה שהופקעו מידיו, ולהעמידו באותו מצב כספי שבו היה עומד אלמלא ההפקעה.","תכליתם של פיצויי ההפקעה היא להעניק לבעל הזכויות בקרקע את השווי הכספי של הזכות או טובת ההנאה שהופקעו מידיו, ולהעמידו באותו מצב כספי שבו היה עומד אלמלא ההפקעה."
f3200101-162b-4f1f-af39-73a3088280a6,1,accepted,0.8503,"תומצת ונוקה הרגיסטר, נוסף שם-העיקרון 'הסדר שלילי' העולה מן הנימוק; לא נוסף דין מעבר למקור.","בפרשנות הוראת תכנית בדבר חישוב אחוזי הבניה, כאשר התכנית מפרטת במפורש כי שטחים מסוימים יובאו בחשבון חישוב אחוזי הבניה ושותקת ביחס לשטח אחר שייעודו מוגדר כשטח שאין לבנות בו, השתיקה — בצירוף ההסדר המפורש לגבי השטחים האחרים — מלמדת כי לשון התכנית אינה סובלת את הכללת אותו שטח בחישוב.","מקום שהוראת תכנית מונה במפורש את השטחים הבאים במניין חישוב אחוזי הבנייה ושותקת ביחס לשטח שייעודו הוגדר כשטח שאין לבנות בו, ההסדר המפורש לגבי יתר השטחים, בצירוף שתיקה זו, מלמד שלשון התכנית אינה סובלת את הכללת אותו שטח בחישוב (הסדר שלילי)."
4066d496-3088-425c-8b24-19df3cb4b8f4,1,accepted,0.9523,הניסוח הקנוני שופר בעיגון הסמכות בסעיף 14(ג) לתוספת — מקור-הסמכות שעליו נשען הנימוק — תוך שמירה על שני אגפי העיקרון; לא נוסף דין שאינו במקורות.,סמכות ועדת הערר למנות שמאי מייעץ מטעמה קמה רק מקום שהערר הוגש לפי סעיף 14(א) לתוספת בלבד; בערר המוגש לפי סעיף 14(ב)(4) על הכרעת שמאי מכריע אין הוועדה רשאית למנות שמאי מייעץ.,"סמכות ועדת הערר למנות שמאי מייעץ מטעמה, מכוח סעיף 14(ג) לתוספת, קמה רק מקום שהערר הוגש לפי סעיף 14(א) לתוספת; בערר על הכרעת שמאי מכריע המוגש לפי סעיף 14(ב)(4) לתוספת אין הוועדה מוסמכת למנות שמאי מייעץ."
a230f193-3048-48a1-8295-3369ac80f644,1,abstained,,no change proposed,"ביקורת בית המשפט לעניינים מנהליים על החלטות ועדת הערר במישור המקצועי תיעשה במשורה, מתוך ריסון והכרה במומחיותה של הוועדה.","ביקורת בית המשפט לעניינים מנהליים על החלטות ועדת הערר במישור המקצועי תיעשה במשורה, מתוך ריסון והכרה במומחיותה של הוועדה."
74db9cb4-acd7-47af-b8b9-7940bc9f3b81,1,abstained,,no change proposed,"בהפעילם את הסמכות להאריך או להעניק פטור מהיטל השבחה בפינוי-בינוי, אין השרים רשאים לשקול שיקולים של כדאיות כלכלית.","בהפעילם את הסמכות להאריך או להעניק פטור מהיטל השבחה בפינוי-בינוי, אין השרים רשאים לשקול שיקולים של כדאיות כלכלית."
7beb9330-1c8a-4f93-90d7-a71b5e3c48dc,1,accepted,0.9523,"הניסוח הודק והובהר ('יונחה לערוך', 'חלופות תכנוניות ממשיות') תוך שמירה מלאה על עיגון הציטוט; לא נוסף דין או סייג.","חובת מוסד התכנון ליתן משקל רב לשיקול הסביבתי, ובמיוחד בתכניות בעלות פוטנציאל לפגיעה משמעותית בסביבה, מחייבת אותו להנחות את עורך התסקיר לערוך תסקיר חלופות שבו ייבחנו חלופות תכנוניות אפשריות לתכנית המוצעת עצמה, ולא אך חלופות הנוגעות לאופן יישומה של אותה בחירה תכנונית.","חובת מוסד התכנון ליתן משקל רב לשיקול הסביבתי, ובמיוחד בתכניות בעלות פוטנציאל לפגיעה משמעותית בסביבה, מחייבת כי עורך התסקיר יונחה לערוך תסקיר חלופות הבוחן חלופות תכנוניות ממשיות לתכנית המוצעת עצמה, ולא אך חלופות הנוגעות לאופן יישומה של אותה בחירה תכנונית."
8643bd58-a740-499c-b012-968de6cae7f2,1,accepted,0.9342,"צומצמה הכפילות (""בהכרח"") והניסוח חודד תוך שמירה מלאה על העיגון בציטוט-התומך; לא נוסף דין או סייג.","הקמת מרחבים מוגנים דירתיים (ממ""דים) בבניין רב-קומות נעשית בהכרח בצורת ""מגדל"" — זה על גבי זה — מטעמים קונסטרוקטיביים ומיגוניים, ולפיכך לא ניתן להקים ממ""ד בקומה גבוהה ללא בסיס קונסטרוקטיבי בקומה שמתחתיה. עיקרון טכני-תכנוני זה מהווה מושכלת יסוד שניתן להניחה בפרשנות הוראות בינוי.","הקמת מרחבים מוגנים דירתיים (ממ""דים) בבניין רב-קומות נעשית בצורת ""מגדל"", זה על גבי זה, מטעמים קונסטרוקטיביים ומיגוניים, ולפיכך לא ניתן להקים ממ""ד בקומה גבוהה ללא בסיס קונסטרוקטיבי לממ""ד בקומה שמתחתיה. נתון טכני-תכנוני זה מהווה מושכלת יסוד שניתן להניחה בפרשנות הוראות בינוי."
a82d1f17-351c-4aac-a5da-9d24bd87760d,1,accepted,0.9477,"חודד הקשר בין ההרמוניה החקיקתית למקור הסמכות (החוק המסמיך) שעולה מהנימוק, ולוכדו 'כללי פרשנות מקובלים' במקום 'עקרונות פרשניים'; לא נוסף דין שאינו במקורות.",מונח שתכנית נוקטת בו מבלי להגדירו אינו מתפרש בחלל ריק אלא לפי עקרונות פרשניים מקובלים; עקרונות של הרמוניה חקיקתית מוליכים להעניק למונח כזה את המשמעות שניתנה לו בחוק התכנון והבנייה.,"מונח שתכנית נוקטת בו מבלי להגדירו אינו מתפרש בחלל ריק אלא לפי כללי פרשנות מקובלים, ושיקול ההרמוניה החקיקתית מוליך להעניק לו את המשמעות שניתנה לאותו מונח בחוק התכנון והבנייה כחוק המסמיך."
dbcde5e1-78a9-4c47-a22a-1e4ef1a42664,1,accepted,0.9237,"חודד שהעיגון נשען על תיחום התחולה בקו הכחול (כעולה מהנימוק והציטוט) והניסוח הודק, בלי להוסיף דין או סייג שאינו במקורות.","תוכנית מתאר אינה קובעת הוראות נורמטיביות מחייבות ביחס לשטח המצוי מחוץ לתחומה (מחוץ לקו הכחול), גם כאשר נספח (כגון נספח תחבורתי) כולל איור או תרשים המדגים את אופן השתלבות התוכנית עם המרקם והמערך הקיים שמחוץ לגבולותיה; לאיור מסוג זה אופי מדגים-מנחה ואין בו כדי להחיל הסדר תכנוני מעבר לקו הכחול.","תחום תחולתה הנורמטיבית של תוכנית מתאר מתוחם בקו הכחול, ואין היא קובעת הוראות מחייבות ביחס לשטח שמחוצה לו; איור או תרשים בנספח (כגון נספח תחבורתי) המדגים את אופן השתלבות התוכנית עם המרקם והמערך הקיים מחוץ לגבולותיה הוא בעל אופי מדגים-מנחה בלבד ואין בו כדי להחיל הסדר תכנוני מעבר לקו הכחול."
40fd0045-2c91-4b91-bf3d-94df86849917,1,accepted,0.9487,חודד שהמבחן מהותי ולא פורמלי (מעוגן בנימוק) והוסר עומס לשוני; התוכן זהה למקור.,"ניתן להוציא היתר בנייה על סמך תכנית מתאר מקומית, מבלי להידרש לתכנית מפורטת, רק מקום שהתכנית כוללת הוראות ברמת פירוט מספקת; כותרתה הפורמלית של התכנית (""מפורטת"") אינה מכרעת, ומידת הפירוט הנדרשת עשויה להימצא גם בתכנית מתאר מקומית. מקום שהתכנית קובעת עקרונות כלליים בלבד, אין היא יכולה לשמש בסיס למתן היתרים.","היתר בנייה ניתן להוצאה על סמך תכנית מתאר מקומית, בלא תכנית מפורטת, רק כאשר התכנית כוללת הוראות ברמת פירוט מספקת; המבחן הוא מהותי — מידת הפירוט המצויה בתכנית בפועל — ואינו תלוי בכותרתה הפורמלית, כך שהפירוט הנדרש עשוי להימצא גם בתכנית מתאר מקומית. תכנית הקובעת עקרונות כלליים בלבד אינה יכולה לשמש בסיס למתן היתרים."
9bcc8c7b-2fc6-4b64-b00f-de721161afe9,1,accepted,0.9204,זוקק לניסוח כללי הנשען על אבחנת המקור בין שימוש ישיר במקרקעין לבין הפקת 'פירותיהם' בהשכרה; הוסרה הנמקת ה'פעילות המסחרית' שאינה הכרחית והודגשה אי-הרלוונטיות של ייעוד התמורה.,"פטור ממס/היטל למוסד ציבורי לפי סעיף הפטור הרלוונטי חל אך ורק כאשר המקרקעין עצמם משמשים או מיועדים לשמש במישרין את מטרות המוסד. השכרת המקרקעין לצד שלישי — גם אם דמי השכירות מועברים במלואם לצרכי המוסד — אינה מזכה בפטור, באשר מדובר בפעילות מסחרית ולא בשימוש ישיר במקרקעין למטרות המוסד.","פטור ממס/היטל למוסד ציבורי לפי סעיף הפטור הרלוונטי חל אך ורק מקום שבו המקרקעין עצמם משמשים או מיועדים לשמש במישרין את מטרות המוסד; שימוש עקיף בלבד — כגון הפקת פירות מן המקרקעין בדרך של השכרתם — אינו מזכה בפטור, ואין נפקא מינה שהתמורה מופנית כולה לקידום מטרות המוסד."
4cee2a9f-6510-4bea-a928-713f5ed39b39,1,drift_rejected,0.7738,drift 0.774 < floor 0.8,"היטל ההשבחה הוא בן-זוגו הראוי של הפיצוי לפי סעיף 197 לחוק התכנון והבניה: כשם שבעל מקרקעין זכאי לפיצוי מקום שתכנית פגעה במקרקעיו, כך מוטל עליו לשאת בהיטל השבחה כאשר התכנית השביחה את מקרקעיו — מי שנתעשר אך בשל פעילות נורמטיבית-תכנונית של רשויות הציבור ראוי שישתף את הקהילה באותה התעשרות.",היטל ההשבחה מושתת על ההיגיון שמי שמקרקעיו הושבחו אך בשל פעילות נורמטיבית-תכנונית של רשויות הציבור ראוי שישתף את הקהילה בהתעשרות שצמחה לו ממנה.
5cec0ebd-fa6d-4cf0-9443-45cd2d49981d,1,abstained,,no change proposed,תכנית שאינה מביאה בפועל לשינוי בהיקף הזכויות או להשבחת שווי הנכסים שבתחומה — לרבות מקום שזכויותיה זהות הלכה למעשה לאלה שכבר התאפשרו מכוח תכנית קודמת שעמדה בתוקף במצב הקודם — אינה תכנית משביחה ואין בה כדי להקים חבות בהיטל השבחה.,תכנית שאינה מביאה בפועל לשינוי בהיקף הזכויות או להשבחת שווי הנכסים שבתחומה — לרבות מקום שזכויותיה זהות הלכה למעשה לאלה שכבר התאפשרו מכוח תכנית קודמת שעמדה בתוקף במצב הקודם — אינה תכנית משביחה ואין בה כדי להקים חבות בהיטל השבחה.
dbb7a22a-f571-4fd1-ac61-308ef5ac197e,1,drift_rejected,0.7623,drift 0.762 < floor 0.8,"בפרשנות תכנית בנייה חלים עקרונות פרשנות החוק, ולפיכך יש להתחקות אחר תכלית התכנית כדי לברר את משמעותה ולהכריע בין מרכיביה.","בפרשנות תכנית בנייה חלים עקרונות פרשנות החוק, ויש להתחקות אחר תכלית התכנית כדי לברר את משמעותה וליישב בין מרכיביה."
d2311380-92b3-4c67-858d-b71988ca8e8a,1,accepted,0.9609,הוסרה התוספת 'על פי פרמטרים מקובלים ואמות מידה ברורות' שאינה מעוגנת בציטוט-המקור או בנימוק; שאר הניסוח נשען על הציטוט (אין באישור משום אישור תכנוני) ועל הנימוק (בחינה עצמאית של מיקום וחלופות).,"הכרזה על תכנית כפרויקט תשתית לאומית, וכן הזיקה למקרקעין העומדת בבסיס ההכרזה, אינן מהוות אישור תכנוני ואינן כובלות את שיקול דעתם של מוסדות התכנון; על מוסד התכנון לבחון באופן עצמאי את התאמת המיקום המוצע מבחינה תכנונית ואת קיומן של חלופות עדיפות, על פי פרמטרים מקובלים ואמות מידה ברורות.","הכרזה על תכנית כפרויקט תשתית לאומית, וכן הזיקה למקרקעין העומדת בבסיס ההכרזה, אינן מהוות אישור תכנוני ואינן כובלות את שיקול דעתם של מוסדות התכנון; על מוסד התכנון לבחון באופן עצמאי את התאמת המיקום המוצע מבחינה תכנונית ואת קיומן של חלופות עדיפות."
fd9dba56-a9ad-424f-96db-ab6e733549a8,1,accepted,0.9037,"הניסוח הודק לעיקרון המעוגן בציטוט (חוקיות + הליך הוגן וראוי) ובנימוק (קניין + ודאות ויציבות), והוסרה התוספת בדבר 'כל מוכר וקונה יוכלו לדעת מראש' שהרחיבה מעבר למקור.","גביית היטל השבחה כפופה לעיקרון החוקיות ולחובת הרשות לקיים הליך גבייה הוגן וראוי; נוכח זכות הקניין של הנישום בכספו, יש לעצב את ההיטל באופן המבטיח ודאות ויציבות במדיניות המס, כך שכל מוכר וקונה יוכלו לדעת מראש את נטל המס החל עליהם.","עיקרון החוקיות חל גם על גביית היטל השבחה ומחייב את הרשות לקיים הליך גבייה הוגן וראוי; נוכח זכות הקניין של הנישום בכספו, יש לעצב את ההיטל באופן המבטיח ודאות ויציבות במדיניות המס."
f9fce831-ff42-4d78-bd75-cd7efe86c113,1,accepted,0.8955,"הוסר הפירוט ""מתנגדים ואחרים"" שאינו עולה מהציטוט-התומך, והניסוח הודק לליבת העיקרון — שמירת הזכות לתבוע פיצוי ואי-חסימתה על הסף, ללא הכרעה בשאלת עצם הזכאות.","שינוי ייעוד מקרקעין הנעשה בדרך התכנונית של שינוי תכנית בניין עיר משמר את זכותם של מתנגדים ואחרים לבקש פיצויים בגין הפגיעה במקרקעין; זכות זו אינה נחסמת על הסף, וזאת מבלי לקבוע אם בנסיבות העניין אכן קמה זכות לפיצוי.","שינוי ייעודם של מקרקעין הנעשה בדרך התכנונית של שינוי תכנית בניין עיר משמר את הזכות לתבוע פיצויים בגין הפגיעה במקרקעין ואינו חוסם זכות זו על הסף, וזאת מבלי להכריע אם בנסיבות העניין אכן קמה זכות לפיצוי."
634f781c-18b6-46d0-98b4-13da81259efe,1,accepted,0.9033,"חודד הקשר הסיבתי (""שכן"") ונוסף כי הפגם בפרסום פוגע תחילה בזכות ההתנגדות — מעוגן בנימוק שלפיו אי-מילוי דרכי הפרסום פוגע בזכות בעלי העניין להתנגד; לא נוסף דין חדש.","חובת הפרסום של תכנית וזכות ההתנגדות לה הן שני צדדים של אותו עיקרון, וקיומה התקין של חובת הפרסום הוא תנאי להבטחת הליך הגשת התנגדויות אפקטיבי; קיום פגום של דרכי הפרסום שנקבעו עלול לפגום בתוקפו של הליך התכנון.","חובת הפרסום של תכנית וזכות ההתנגדות לה הן שני צדדים של אותו עיקרון, שכן קיומה התקין של חובת הפרסום הוא תנאי להבטחת הליך התנגדויות אפקטיבי; קיום פגום של דרכי הפרסום שנקבעו עלול לפגוע בזכות ההתנגדות ולפגום בתוקפו של הליך התכנון."
825663c8-d9fa-4070-9953-96c899872b8f,1,accepted,0.904,"שוּנה למבנה ההשוואתי 'ככל ש... כך' הנאמן לציטוט-המקור, וזוקק לניסוח קצר ורציף יותר ללא שינוי בתוכן המעוגן.","במסגרת דוקטרינת ה""רצף התכנוני"", קיומה של תכנית מאוחרת המשחררת את ההקפאה, וכן קוצר פרק הזמן שחלף ממועד אישור התכנית הראשונה (שנועדה להיות זמנית ולחול לתקופה מוגבלת) ועד אישור התכנית המאוחרת — מגדילים את הנטייה להכיר בזיקה הייחודית בין שתי התכניות ולראותן כרצף תכנוני אחד.","במסגרת דוקטרינת 'הרצף התכנוני', ככל שפרק הזמן שחלף בין אישור תכנית ראשונה — שנועדה להיות זמנית ולחול לתקופה מוגבלת — לבין אישור תכנית מאוחרת המשחררת את ההקפאה קצר יותר, כך גדלה הנטייה להכיר בזיקה הייחודית שביניהן ולראותן כרצף תכנוני אחד."
171141d4-32c3-4f8f-a48a-1040eba1c904,1,accepted,0.879,מיקדתי את העיקרון בליבת המקור — שיקול דעת פרטני לאור הנסיבות מול משקל ראוי לשלטון החוק; הסרתי את 'הימנעות מקביעות מוחלטות' שאינה עולה מפורשות מהציטוט-התומך.,"בהקשר של עבריינות בניה על מוסד התכנון להימנע מקביעות מוחלטות, ולהפעיל את שיקול דעתו לאור הנסיבות הפרטיקולריות של המקרה, ובלבד שהשיקול של שמירה על שלטון החוק יזכה למשקל ראוי בהחלטה.","בהקשר של עבריינות בנייה נדרש ממוסד התכנון להפעיל שיקול דעת פרטני לאור הנסיבות הקונקרטיות של המקרה, ובלבד שהשיקול של שמירה על שלטון החוק יזכה למשקל ראוי בהחלטה."
f34c51cf-f655-4df9-8611-14c4c2d54828,1,accepted,0.8535,פושט את פתיח 'סיווג זכויות שמקנה תכנית לצורך השאלה' לכדי ניסוח ישיר של עיתוי החיוב; שומר על העיגון המהותי (היקף שיקול הדעת ותחום ההתפרשות) ועל קריטריון טיב התכנית כלשון המקור.,"סיווג זכויות שמקנה תכנית לצורך השאלה אם יש להטיל היטל השבחה בשלב אישור התכנית או רק בשלב הוצאת היתר הבנייה אינו נחתך לפי טיב התכנית (תמ""א או אחרת), אלא נבחן באופן מהותי, ובתלות, בין היתר, בהיקף שיקול הדעת המוקנה במסגרתה ובתחום התפרשותה.","השאלה אם חיוב בהיטל השבחה מכוח תכנית קם בשלב אישור התכנית או רק בשלב הוצאת היתר הבנייה אינה נחתכת לפי טיב התכנית (תמ""א או אחרת), אלא נבחנת באופן מהותי, בהתאם, בין היתר, להיקף שיקול הדעת המוקנה במסגרתה ולתחום התפרשותה."
d652b0f7-7101-41c2-977a-a5a65c3d79e1,1,accepted,0.9236,"אוחד למשפט אחד עם סדר לוגי (תנאי→נקודת-התחלה→תוצאה), הוסרה הכפילות בין שני המשפטים; כל הרכיבים מעוגנים בציטוט-התומך.","מקום שבקשה להיתר לא פורסמה לציבור, אין לזקוף לחובת בעל דין את האיחור בהגשת בקשה להארכת מועד בגין התקופה שקדמה למועד שבו נודע לו בפועל על הבקשה ועל הבינוי מכוחה; מירוץ האיחור מתחיל ממועד הידיעה בפועל.","מקום שבקשה להיתר לא פורסמה לציבור, מירוץ המועד להגשת בקשה להארכת מועד מתחיל ממועד שבו נודע לבעל הדין בפועל על הבקשה ועל הבינוי מכוחה, ואין לזקוף לחובתו את האיחור בגין התקופה שקדמה לכך."
69e10a96-ae26-4bf2-822b-768bf032fa14,1,drift_rejected,0.7789,drift 0.779 < floor 0.8,"אישור לשימוש חורג ניתן כחריג ובצמצום, ולא כדבר שבשגרה — עיקרון מושרש בפסיקה החל על בקשות לשימוש חורג.","אישור לשימוש חורג ניתן כחריג ובצמצום, ולא כדבר שבשגרה."
0eeebf3c-857b-48cc-ab8e-ec44caa510f4,1,accepted,0.9216,"הוספתי 'ראוי' ואת רכיב ההגנה 'על הציבור' המופיעים מפורשות בציטוט-המקור, לזיקוק נאמן יותר; שאר הניסוח נשמר.","התחשבות בעבירות בנייה שבוצעו בנכס במסגרת ההכרעה בבקשה להיתר אינה בגדר ענישה נוספת מעבר להליך הפלילי, אלא שיקול תכנוני לגיטימי ומתחייב שנועד לשלול את התמריצים לביצוע עבירות על דיני התכנון והבנייה ולהגן על שלטון החוק.","התחשבות בעבירות בנייה שבוצעו בנכס במסגרת ההכרעה בבקשה להיתר אינה בגדר ענישה נוספת מעבר להליך הפלילי, אלא שיקול תכנוני ראוי, לגיטימי ומתחייב שנועד לשלול את התמריצים לביצוע עבירות על דיני התכנון והבנייה ולהבטיח את ההגנה על שלטון החוק ועל הציבור."
c3f67090-5981-4d3e-90f8-a4f44c933d58,1,accepted,0.97,זוקק וקוצר הניסוח ל־'עצמאית ומוסיפה' תוך שמירה על העיגון במקור; הוסר כפל-הלשון 'נוספת ועצמאית' ומבנה ה־'שכן'.,"דרישת חתימת כל בעלי הזכויות במגרש על הבקשה להקלה לפי תקנה 2(9)(א)(3) לתקנות סטייה ניכרת היא דרישה נוספת ועצמאית, מעבר לדרישת הסכמת כל בעלי הזכויות הקבועה בתקנות הרישוי לכל בקשה להיתר — שכן זו האחרונה חלה ממילא אף על בקשה שאינה כרוכה בסטייה מתכנית.","דרישת חתימת כל בעלי הזכויות במגרש על בקשה להקלה לפי תקנה 2(9)(א)(3) לתקנות סטייה ניכרת היא דרישה עצמאית ומוסיפה על דרישת הסכמת כל בעלי הזכויות הקבועה בתקנות הרישוי לכל בקשה להיתר, החלה ממילא אף על בקשה שאינה כרוכה בסטייה מתכנית."
20b7aae6-ae8c-4e41-88c7-db28c81d5796,1,accepted,0.9433,"הניסוח הקיים כבר מעוגן במלואו בציטוט-התומך, כללי ובלתי-תלוי-תיק; לא נדרש שינוי מהותי מלבד תיקון-ניסוח זניח.","טענות המכוונות נגד עצם ההכרזה על מתחם כמתחם מועדף לדיור הן מוקדמות מטבען, ומקומן להתברר רק בשלבים התכנוניים הקונקרטיים שיבואו בהמשך ולא בשלב ההכרזה עצמה.","טענות המכוונות נגד עצם ההכרזה על מתחם כמתחם מועדף לדיור הן מוקדמות מטבען, ומקומן להתברר בשלבים התכנוניים הקונקרטיים שיבואו בהמשך ולא בשלב ההכרזה עצמה."
8cf51166-4d7b-4d50-bc69-4d3ca6d92d13,1,abstained,,no change proposed,אין להתערב בשומתו של שמאי מייעץ אלא מקום שנפלו בה שגיאות ברורות; בהיעדר שגיאות כאלה השומה עומדת בעינה.,אין להתערב בשומתו של שמאי מייעץ אלא מקום שנפלו בה שגיאות ברורות; בהיעדר שגיאות כאלה השומה עומדת בעינה.
917c4859-dbdd-4a0b-b76b-a9707f27834e,1,abstained,,no change proposed,לצורך בחינת השבחה כתוצאה מהקלה יש להשוות את שווי השוק האובייקטיבי של המקרקעין לאחר מתן ההקלה לעומת שווי השוק שלהם ערב מתן ההקלה; ההשבחה היא ההפרש בין שני ערכי שוק אלו.,לצורך בחינת השבחה כתוצאה מהקלה יש להשוות את שווי השוק האובייקטיבי של המקרקעין לאחר מתן ההקלה לעומת שווי השוק שלהם ערב מתן ההקלה; ההשבחה היא ההפרש בין שני ערכי שוק אלו.
0a86b3c0-4781-40e6-8354-1ffc21acfb09,1,accepted,0.9019,"ליטוש ניסוחי קל בלבד (תחביר ותמצות) תוך שמירה מלאה על תוכן העיקרון המעוגן בציטוט-התומך; הוסרה הכפילות ""שינוי תכנוני צפוי"" מול ""שינוי בתכונות"".","מקום בו צפוי שינוי בתכונות ובשימושי המקרקעין שסיכויי התרחשותו קרובים וממשיים, ותכנית שהתקבלה היא שסתמה את הגולל על אותו שינוי צפוי — מתקיים קשר סיבתי בינה לבין הפגיעה, וניתן להגדירה כ""תכנית פוגעת"" המקימה עילה לפיצוי לפי סעיף 197 לחוק התכנון והבניה.","מקום בו צפוי שינוי בתכונות המקרקעין ובשימושיהם שסיכויי התרחשותו קרובים וממשיים, ותכנית שהתקבלה היא הסותמת את הגולל על אותו שינוי צפוי, מתקיים קשר סיבתי בינה לבין הפגיעה, וניתן להגדירה כ""תכנית פוגעת"" המקימה עילה לפיצוי לפי סעיף 197 לחוק התכנון והבניה."
ae4e15d4-cc20-4c99-95be-06b89f3a3ebd,1,accepted,0.8701,"נוספה ההיגיון הפרשני המעוגן במקור ('פרשנות מצמצמת') והודגשה ההבחנה בין תמורה הונית ממכר לבין תמורה פירותית שוטפת, ללא הוספת דין שאינו במקורות.","הפטור מהיטל השבחה לפי החלופה השנייה בסעיף 19(ב)(4) לתוספת השלישית לחוק התכנון והבניה מוגבל למימוש זכויות בדרך של מכר בלבד, ואינו חל על תמורה פירותית כגון דמי שכירות.","הפטור מהיטל השבחה לפי החלופה השנייה שבסעיף 19(ב)(4) לתוספת השלישית לחוק התכנון והבניה מתפרש בצמצום וחל על מימוש זכויות בדרך של מכר בלבד, ואינו משתרע על תמורה פירותית שוטפת כגון דמי שכירות."
04a3ced3-e5a2-40a1-8f50-b498c80693de,1,accepted,0.9157,"חודד שההסדר אינו 'ממצה את הפלוגתא' (מקור הנימוק) ושהבקשה החדשה הוגשה בתום התקופה, תוך שמירה על כלליות; הכל מעוגן בציטוט-התומך.",הסדר פשרה שנערך ביחס לבקשה קודמת והוגבל בזמן אינו מקים השתק פלוגתא ביחס להליכים עתידיים הנוגעים לבקשה חדשה; היעדר ההשתק עשוי להילמד אף מהתנהגות בעל הדין שפעל במתווה חדש חרף ההסדר.,"הסדר פשרה שנערך ביחס לבקשה קודמת והוגבל בזמן אינו ממצה את הפלוגתא ואינו מקים השתק פלוגתא ביחס להליכים עתידיים הנוגעים לבקשה חדשה; היעדר ההשתק עשוי להילמד אף מהתנהגות בעל הדין עצמו, שבתום התקופה הגיש בקשה חדשה חרף ההסדר."
73ab5fe3-a5fe-4140-be81-943353cc959b,1,accepted,0.8944,הוקדם כלל-החובה (העמדת התשתית הסביבתית עובר להחלטה) לראש המשפט וההבחנה בין העיתויים נוסחה בתמצות; לא נוסף דין שאינו במקור.,"כאשר לתוכנית השלכות סביבתיות מהותיות, קיים שוני מהותי בין הגשת נספח/מסמך סביבתי הבוחן אף חלופות טרם אישור התוכנית וכאשר דנים בתוכנית עצמה, לבין קבלת הנספח הסביבתי רק לאחר אישור התוכנית; על מוסד התכנון להעמיד בפניו את התשתית הסביבתית, לרבות בחינת חלופות, עובר להחלטה על אישור התוכנית ולא בדיעבד.","כאשר לתוכנית השלכות סביבתיות מהותיות, על מוסד התכנון להעמיד בפניו את התשתית הסביבתית, לרבות בחינת חלופות, עובר להחלטה על אישור התוכנית ולא בדיעבד; קיים שוני מהותי בין מסמך סביבתי הבוחן חלופות המוגש טרם האישור ובעת הדיון בתוכנית עצמה, לבין נספח סביבתי המתקבל רק לאחר אישור התוכנית."
37ca3f6c-17b3-4981-b916-2594e32535db,1,abstained,,no change proposed,"סוגיית חלף היטל השבחה אינה מתבררת במסגרת הערר על שומת היטל ההשבחה, אלא יש לבררה מול רשות מקרקעי ישראל בהליכים המתאימים לכך.","סוגיית חלף היטל השבחה אינה מתבררת במסגרת הערר על שומת היטל ההשבחה, אלא יש לבררה מול רשות מקרקעי ישראל בהליכים המתאימים לכך."
148792a4-29a6-41c4-8f44-2aa1565b4972,1,accepted,0.8592,ניסוח הודק וקוצר תוך שמירה על שני יסודות המקור — תכלית-גבייה בלבד וחובת ההנפקה בהיעדר חוב; הוסר ה'כגון' הנגזר מעובדות-התיק.,"סמכות הרשות המקומית לעכב מתן אישורים הדרושים לרישום עסקה בלשכת רישום המקרקעין כל עוד בעל הנכס חב לה חוב כספי, היא כלי גבייה גרידא; בהעדר חוב אין להשתמש בסמכות זו למטרות זרות (כגון אכיפת דיני תכנון ובנייה), ועל הרשות להנפיק אישור על העדר חובות.","סמכות הרשות המקומית להתנות מתן אישור הדרוש לרישום עסקה בלשכת רישום המקרקעין בהיעדר חוב כספי של בעל הנכס היא כלי גבייה בלבד; אין להפעילה למטרות זרות, ובהיעדר חוב חבה הרשות להנפיק את האישור."
9f77e720-74bf-4a5a-8bdf-09ed2bf698c4,1,accepted,0.9044,"תומצת וזוקק; הוסר רף 'ראיות חותכות' שאינו עולה מהציטוט-התומך אלא מן הנימוק בלבד, ונשמרו רכיבי החזקה והעברת נטל הסתירה המעוגנים במקור.","משפורסמה תכנית מיתאר ברשומות חלה עליה החזקה שבסעיף 34א לפקודת הראיות, שלפיה דבר שפורסם ברשומות נעשה כראוי; נטל ההוכחה כי נפל שיבוש בהליכי הפרסום או בתוכן מוטל על הטוען נגד תוכן התכנית, ועליו להביא ראיות חותכות לסתירת החזקה.","תכנית מיתאר שפורסמה ברשומות חוסה תחת החזקה שבסעיף 34א לפקודת הראיות, שלפיה דבר שפורסם ברשומות חזקה שנעשה כראוי; נטל הסתירה — בין באשר לתקינות הליך הפרסום ובין באשר לתוכן הפרסום — מוטל על הטוען נגד התכנית."
32346580-8a01-4db4-b9d7-ca209c18912b,1,abstained,,no change proposed,הוראות הפטור מהיטל השבחה יש לפרש בצמצום ובהתאם לתכליותיהן.,הוראות הפטור מהיטל השבחה יש לפרש בצמצום ובהתאם לתכליותיהן.
727fd46f-bdd2-46c7-8ae2-bececed160bb,1,accepted,0.8954,"הניסוח הודק והופשט (""תכלית חובת הפיצוי"" במקום כפל-לשון), תוך שמירה מלאה על שני יסודות המקור — ההגנה על הקניין וחובת הפיצוי — ועל הנימוק נגד צמצום מלאכותי.","פרשנות חוק התכנון והבנייה בעניין פיצוי בגין פגיעה במקרקעין צריכה להיעשות באופן המתיישב עם ההגנה על זכות הקניין ועם החובה לפצות את בעל הזכות על פגיעה במקרקעיו, ובאופן שאינו מתמרץ את הרשות לפעול באופן מלאכותי לצמצום חובת הפיצוי.","פרשנות הוראות חוק התכנון והבנייה בדבר פיצוי בגין פגיעה במקרקעין תיעשה באופן המתיישב עם ההגנה על זכות הקניין ועם תכלית חובת הפיצוי לבעל הזכות הנפגעת, ואין לאמץ פרשנות המתמרצת את הרשות לצמצם באופן מלאכותי את חובת הפיצוי."
a4d28e42-139a-4350-8670-0d38e3d0ea90,1,accepted,0.8581,חודדה ההבחנה בין קיום עילת הפיצוי לבין אובדן הזכות בהתיישנות והוסף שם החוק לסעיף 197; הניסוח נותר מעוגן בציטוט-התומך בלבד.,יש להבחין בין השאלה אם התגבשה 'פגיעה' המקימה עילה לפי סעיף 197 לבין השאלה אם הזכות לפיצוי אבדה מחמת חלוף תקופת ההתיישנות; אובדן הזכות עקב התיישנות אינו מלמד על אי-התקיימות דרישת ה'פגיעה'.,יש להבחין בין השאלה אם התגבשה 'פגיעה' המקימה עילה לפיצוי לפי סעיף 197 לחוק התכנון והבניה לבין השאלה אם הזכות לפיצוי אבדה מחמת חלוף תקופת ההתיישנות; אובדן הזכות עקב התיישנות אינו מלמד על אי-התקיימותה של דרישת ה'פגיעה'.
7b38fbfd-315a-4d6c-a361-26d1e5b442ce,1,accepted,0.9371,"החלפת 'לבדה' ב'כשלעצמה' לרגיסטר נקי, ושיקוף הנימוק כי מדובר בשיקול אחד מני רבים הטעון איזון מול עמידה בסדרי הדין — הכול מעוגן בציטוט ובנימוק.","פגיעה אפשרית בכספי ציבור הנובעת מדחיית הבקשה להארכת מועד אינה יכולה לבדה לשמש טעם מיוחד המצדיק הארכת מועד, ויש לאזנה אל מול השיקול של עמידה בסדרי הדין.","פגיעה אפשרית בכספי ציבור הנובעת מדחיית בקשה להארכת מועד אינה יכולה כשלעצמה לשמש טעם מיוחד המצדיק הארכת מועד, אלא היא שיקול אחד מבין שיקולים שיש לאזנם אל מול ערך עמידה בסדרי הדין."
ebc6babb-5d24-47d5-8bff-15e09b7734e3,1,accepted,0.9386,"חודד הניסוח כך שההעדפה נובעת מהיות החלופה הפוגענית פחות בקניין (כעולה מהציטוט), ונוקה רישום החלופה ל""מבין שתי חלופות""; לא נוסף דין שאינו במקור.","לאור ההגנה החוקתית על הקניין הפרטי המעוגנת בסעיף 3 לחוק-יסוד: כבוד האדם וחירותו, מקום שבו קיימות שתי חלופות תכנוניות מאושרות כדין, יש להעדיף את החלופה המקלה עם בעל המקרקעין.","לאור ההגנה החוקתית על הקניין הפרטי המעוגנת בסעיף 3 לחוק-יסוד: כבוד האדם וחירותו, מבין שתי חלופות תכנוניות המאושרות כדין יש להעדיף את החלופה המקלה עם בעל המקרקעין, בהיותה הפוגענית פחות בקניינו."
7c537b2c-5f2d-4097-b917-90593cf7731e,1,accepted,0.8652,"הוסרה הסיפה בדבר אי-החובה להעלות על הכתב או לערוך כמסמך נפרד, שאינה עולה מהציטוט-התומך ומהנימוק; הושאר גרעין העיקרון המעוגן בזכות ההתייעצות לפי סעיף 8 ובהיעדר זכות טיעון נוספת.","מוסד תכנון רשאי לערוך התייעצויות פנימיות עם יועצים מקצועיים ואינו חייב להעמיד אותן לעיונו של מגיש תכנית או של מתנגד לה; עמדת היועץ המקצועי היא חלק מהדיון הפנימי של מוסד התכנון, אין חובה שתועלה על הכתב או תיערך כמסמך נפרד, ואין בה כדי להקים זכות טיעון נוספת.","מוסד תכנון רשאי לערוך התייעצויות פנימיות עם יועצים מקצועיים ואינו חייב להעמידן לעיונו של מגיש תכנית או של מתנגד לה; התייעצות פנימית זו אינה חלק מן ההליך החיצוני המקנה זכות טיעון, ואין בה כדי להקים זכות טיעון נוספת."
2ee8e563-83b3-459f-a8c8-5fae31246d99,1,accepted,0.8937,"זוקק למשפט אחד נקי; הוסר ""פטור"" שאינו עולה מן הציטוט (העוסק בזכויות בלבד) והוסרה הכפילות, תוך שמירה על המבחן הכמותי המעוגן במקור.","לעניין הזכאות לפטור/לזכויות במסלול חיזוק לפי תמ""א 38, המבחן הוא היקף הזכויות המבוקש ביחס למותר (כגון אי-חריגה מהיקף קומות מותר), ואילו אופן הבינוי או סדר הבינוי אינו משנה את הזכאות כל עוד מופע הבינוי אינו חורג מההיקף המותר.","הזכאות לזכויות בנייה במסלול החיזוק לפי תמ""א 38 נבחנת לפי היקף הזכויות המבוקש ביחס למותר, ולא לפי אופן הבינוי או סדר ביצועו, כל עוד מופע הבינוי אינו חורג מן ההיקף המותר."
fe31c01d-d4bf-4e4a-8b99-8c06a5a5fee5,1,accepted,0.9032,"זוקק וקוצר לניסוח כללי אחד החל על כל מגרש, תוך שמירת שני יסודות-העיגון: ההסתייגות המפורשת בתרש""צ והסדרת הייעודים בתב""ע הקודמת; לא נוסף דין או סייג.","כאשר תכנית בניין עיר קודמת הסדירה את ייעודי הקרקע במגרש, ותרש""צ מאוחרת קובעת מפורשות כי אין בה כדי לפגוע או לשנות הוראות תכניות שאושרו לפי חוק התכנון והבניה — לא ניתן לאשר מכוח התרש""צ המאוחרת בינוי נוסף הנוגד את הקבוע בתכנית בניין העיר הקודמת.","תרש""צ מאוחרת שנקבע בה במפורש כי אין בה כדי לפגוע או לשנות הוראות תכניות שאושרו לפי חוק התכנון והבניה, אינה יכולה לשמש בסיס לאישור בינוי נוסף הנוגד את הוראותיה של תכנית בניין עיר קודמת שהסדירה את ייעודי הקרקע במגרש."
16beb091-61de-4e7b-a360-7bb81b4fe4d0,1,accepted,0.8668,"הוסר הרישא ""אינה מצטמצמת לפגמים קיצוניים בלבד"" שאינו עולה מהציטוט-התומך; נותר העיקרון המעוגן ישירות במקור — חסר בהנמקה השולל ביקורת אפקטיבית מקים סמכות וחובת התערבות.","ביקורת שיפוטית על שומת היטל השבחה אינה מצטמצמת לפגמים קיצוניים בלבד; מקום שבו הנמקת השומה לוקה בחסר באופן שאינו מאפשר ביקורת שיפוטית אפקטיבית, מוסמך בית המשפט — ואף נדרש — להתערב במידה הנדרשת.","מקום שבו הנמקת שומת היטל השבחה לוקה בחסר באופן שאינו מאפשר ביקורת שיפוטית אפקטיבית, מוסמך בית המשפט — ואף נדרש — להתערב במידה הנדרשת."
5af13dd6-67dd-4398-9026-99c21834879b,1,accepted,0.8787,"הוסר הסייג שאינו מעוגן במקור ('צרכים והיקפים נקודתיים הסוטים אך במעט'), והוחלף בנימוק התכנוני העולה מהנימוק שבמקור — צמצום חריגות כדי שלא יעקפו את הצורך בתיקון תכניות.","היתר לשימוש חורג אינו ניתן כדבר שבשגרה אלא רק בנסיבות מיוחדות ויוצאות דופן; הכלל הוא שאין ליתן היתר לשימוש חורג, ורק במקרים חריגים — ולצרכים והיקפים נקודתיים הסוטים אך במעט מהקבוע בתכניות החלות — יוענק היתר שכזה.","היתר לשימוש חורג אינו ניתן כדבר שבשגרה אלא רק בנסיבות מיוחדות וחריגות, שכן ההליך התכנוני נוטה לצמצם חריגות מתכנית כדי שאלה לא ישמשו אמצעי לעקיפת הצורך בהכנתן ובתיקונן של תכניות."
215332e9-1fef-44c5-8998-77e6df1ce55a,1,accepted,0.9428,"שולב מהנימוק יסוד 'הציפייה להמשך ההליך' ו'איון תרומת התכניות המפורטות', שניהם מעוגנים בציטוט ובנימוק, תוך שמירה על ניסוח כללי ובלתי-תלוי-תיק.","אין לקבוע את שווי המקרקעין במצב הקודם על בסיס השווי שלאחר אישור התכנית הארצית והתכנית המחוזית בלבד, שכן אלו מתוות מגמות ועקרונות כלליים ואינן כוללות הוראות קונקרטיות המקנות ודאות לשינוי הייעוד; קביעה כזו מתעלמת מחלק ניכר מההליך התכנוני המשביח שאיפשר את שינוי הייעוד ואת אישור התכניות המשביחות.","אין לקבוע את שווי המקרקעין במצב הקודם על בסיס השווי שלאחר אישור התכנית הארצית והתכנית המחוזית בלבד, שכן תכניות אלו מתוות מגמות ועקרונות כלליים ויוצרות ציפייה להמשך ההליך התכנוני, ואינן כוללות הוראות קונקרטיות המקנות ודאות לשינוי הייעוד; קביעה כזו מתעלמת מחלק ניכר מההליך התכנוני המשביח שאיפשר את שינוי הייעוד ואת אישורן של התכניות המפורטות המשביחות, ומאיינת את תרומתן."
56e53183-e410-4f39-9561-6e63b5ba5e9c,1,accepted,0.9263,הוספת הטעם המעגן (מומחיות השמאי) המופיע בנימוק וזיקוק קל של הניסוח; עילות ההתערבות נותרו זהות למקור.,"ועדת הערר תיטה לאמץ את חוות דעתו של השמאי, והתערבותה בה מוגבלת ככלל למקרים חריגים — בהם נפלה טעות מהותית או דופי חמור, או שהשמאי נסמך על מסד עובדתי בלתי הולם, על הנחות לא הגיוניות, על תשתית משפטית חסרה או שגויה, או שלא סיפק הסבר מניח את הדעת לשאלות שנשאל.","ועדת הערר תיטה לאמץ את חוות דעתו של השמאי מתוך הכרה במומחיותו, והתערבותה בקביעותיו תוגבל ככלל למקרים חריגים שבהם נפלה טעות מהותית או דופי חמור, או שחוות הדעת נסמכה על מסד עובדתי בלתי הולם, על הנחות בלתי הגיוניות או על תשתית משפטית חסרה או שגויה, או שהשמאי לא סיפק הסבר מניח את הדעת לשאלות שנשאל."
ac8ac719-cc4b-4f21-8bb8-ac788b395dd1,1,accepted,0.9271,זוקק העיקרון סביב היעדר בסיס-ההשוואה כטעם ל'אי-התאמה ואי-ישימות' (כלשון הציטוט) ונוסף סיוג-המראה בדבר תחולת הדלתא על השבחה תוספתית בלבד — שניהם עולים מהנימוק; הוסר ניסוח 'הטלת היטל ביתר במרבית המקרים' שאינו מעוגן בציטוט.,"במיזמי התחדשות עירונית הכוללים הריסה ובניה מחדש, וכן במיזמים המקודמים מכוח תמ""א 38, שבהם המצב התכנוני החדש יוצר מוצר תכנוני חדש בעל שונות מהותית מהמצב התכנוני שקדם לו — אין לחשב את היטל ההשבחה בשיטת הדלתא, משום ששיטה זו אינה מתאימה ואינה ישימה בנסיבות אלה וגורמת לעיוות ההשבחה ובמרבית המקרים להטלת היטל ביתר על הנישום.","מקום שבו המצב התכנוני החדש יוצר מוצר תכנוני חדש בעל שונות מהותית מן המצב התכנוני שקדם לו — כבמיזמי התחדשות עירונית הכוללים הריסה ובנייה מחדש ובמיזמים מכוח תמ""א 38 — אין לחשב את היטל ההשבחה בשיטת הדלתא, שכן היעדר בסיס להשוואה בין המצב הקודם לחדש הופך שיטה זו לבלתי-מתאימה ובלתי-ישימה ומביא לעיוות שומת ההשבחה; שיטת הדלתא יפה רק להשבחה תוספתית השומרת על המצב התכנוני הקיים."
d7bb7e90-3f7b-4eb7-aafa-1e284a36c56c,1,drift_rejected,0.7961,drift 0.796 < floor 0.8,"בתיקי פינוי-בינוי, אמידת ההשבחה הכוללת — בשלב שטרם החלת תחשיב הפטור — תיערך אך ורק לפי השיטה המסורתית: ההפרש שבין שווי המקרקעין לאחר אישור התכנית לבין שוויים טרם התכנית, תוך נטרול הציפיות הנובעות מההליך התכנוני.","בפינוי-בינוי, ההשבחה הכוללת בשלב שטרם החלת תחשיב הפטור נאמדת אך ורק לפי השיטה המסורתית."
9e5397e6-e4af-4db0-8ed5-3e4cea124c0e,1,accepted,0.8759,"הודק הניסוח למשפט אחד רציף וחד, תוך שמירה על שני רכיבי העיקרון המעוגנים בציטוט (בסיס בלעדי במסמכי התכנון וההיתר; איסור שומה על שימוש נטען חיצוני) ללא הוספת דין או סייג.","שומת השבחה נערכת אך ורק על פי מסמכי התכנון הקיימים וההיתר שאושר, ולא על פי טענות ממקורות חיצוניים שאינם בהלימה למסמכים אלה. שמאי מקרקעין אינו רשאי להתעלם מהבינוי או מהשימוש שאושרו בהיתר ולערוך שומה על בסיס שימוש נטען אחר.","שומת השבחה נערכת אך ורק על יסוד מסמכי התכנון וההיתר שאושר, ולא על פי טענות חיצוניות שאינן בהלימה למסמכים אלה; אין השמאי רשאי להתעלם מהבינוי או מהשימוש שאושרו בהיתר ולשום על בסיס שימוש נטען אחר."
704ace88-3cff-4cad-ad46-d6f5ce4ef72e,1,accepted,0.857,"הוסרו השיקולים בדבר היחס בין הסעדים, התנהלות הצדדים ומורכבות ההליך — אינם עולים מהציטוט-התומך שמעגן רק זכאות להחזר ריאלי בכפוף למבחני סבירות ומידתיות.","צד שזכה בהליך זכאי להחזר הוצאות ריאלי בגין שכר טרחת עורך דין והוצאות משפט שהוציא, ובלבד שההוצאות סבירות ומידתיות לניהול ההליך; בקביעת שיעורן יש לשקול את היחס בין הסעדים שנתבקשו לאלו שאושרו בפועל, את התנהלות הצדדים ואת מורכבות ההליך.","צד שזכה בהליך זכאי להחזר הוצאות ריאלי בגין שכר טרחת עורך דין והוצאות משפט שהוציא, ובלבד שההוצאות סבירות ומידתיות לניהול ההליך."
61b8c56e-d312-40d4-bdf3-0ca96fe2ad8a,1,accepted,0.8345,"הוסר רכיב 'הערות האזהרה' שאינו עולה מהציטוט-התומך, והגבלת היקף ההפקעה ל'דרוש באמת' עוגנה ישירות בנימוק; שאר העיקרון (כינון בחתימה+פרסום, חובת מידתיות) נשמר.","הפקעה נוצרת על-ידי שילוב חתימת השר והפרסום יחדיו, ועליה להיות מידתית באופן שהפרסום והערות האזהרה ישקפו מידתיות זו ויגדירו את המרחב המופקע בהתאם לצורך הציבורי שבבסיסה.","הפקעה מתכוננת בשילוב חתימת השר והפרסום, ומשאלה היוצרים אותה — עליהם לשקף את מידתיותה ולהגביל את היקף המופקע למה שדרוש באמת לצורך הציבורי שבבסיסה."
0dd1ab4a-928b-4720-8d29-11d6e041cd1f,1,accepted,0.9232,"הניסוח הודק וצומצם תוך שמירה על אותם רכיבים המעוגנים בציטוט (אפשרות לשכנע בצורך בדיון בעל-פה והשלמת טיעון בכתב, ומניעות עקב אי-ניצול ההזדמנות); לא נוסף דין או סייג חדש.","זכות הטיעון אינה מחייבת בהכרח קיום דיון פרונטלי בעל-פה; רשות מנהלית רשאית במסגרת סמכותה ושיקול דעתה להורות כי השלמת הטיעון תיעשה בכתב, ובלבד שהעמידה לצדדים הזדמנות לשכנע בצורך בדיון בעל-פה ולהשלים טיעון בכתב. צד שנמנע מלנצל הזדמנויות אלו ולא התנגד לבירור על יסוד החומר הכתוב מנוע מלטעון לפגם בזכות הטיעון.","זכות הטיעון אינה מחייבת בהכרח דיון בעל-פה, ורשות מנהלית רשאית במסגרת שיקול דעתה להורות כי הטיעון יושלם בכתב, ובלבד שניתנה לצדדים הזדמנות לשכנע בצורך בדיון בעל-פה ולהשלים טיעונם בכתב; צד שנמנע מלנצל הזדמנויות אלו ולא התנגד לבירור על יסוד החומר הכתוב מנוע מלטעון לפגיעה בזכות הטיעון."
0b47b8ef-41eb-488e-89b2-a93532bd7f1e,1,accepted,0.8731,"נוספו עקרונות השוויון, הצדק החלוקתי ואמון הציבור — שלושת היסודות שעליהם מעוגנת חובת הראיה הכוללת בציטוט-המקור — והם הושמטו בניסוח הקודם.","ועדת ערר הדנה בעררים על שומות שמאים מכריעים שונים באותו מרחב תכנון נדרשת לראיה כוללת של מכלול השומות והטענות — השמאיות והמשפטיות — ואינה רשאית להסתפק בבחינה פרטנית של כל שומה בנפרד, אגב התעלמות מהתמונה הרחבה ומהיחס שבין השומה הקונקרטית שבפניה לבין הערכות השווי בכל מרחבי התכנית.","ועדת ערר הדנה בעררים על שומות שמאים מכריעים שונים באותו מרחב תכנון נדרשת להתבונן במבט רחב על מכלול השומות שבאזור ולבסס את הכרעתה על ראיה כוללת זו, מתוך שקילת עקרונות השוויון, הצדק החלוקתי ואמון הציבור בהליכים; אין היא רשאית להסתפק בבחינה פרטנית של כל שומה בנפרד תוך התעלמות מהתמונה הרחבה ומהיחס שבין השומה הקונקרטית שבפניה לבין הערכות השווי בכלל מרחבי התכנית."
ba0c6103-baa3-4559-a6de-8ac24cbbeef4,1,accepted,0.9355,"תוקן לניסוח הדוק יותר המעמיד את מבחן השימוש העתידי במרכז; כל הרכיבים מעוגנים בציטוט ובנימוק, ללא הוספת דין.","במסגרת בחינת הזכאות לפטור מהיטל השבחה לפי סעיף 19(ג) לתוספת השלישית, מוקד הבדיקה לקיום דרישת הזהות בין המחזיק במקרקעין לבין החייב בהיטל אינו השימוש שנעשה בנכס בעבר, אלא השימוש העתידי המיועד בדירה שתיבנה — קרי האם היא נועדה לשמש למגורי החייב בהיטל או קרובו.","בבחינת הזכאות לפטור מהיטל השבחה לפי סעיף 19(ג) לתוספת השלישית, דרישת הזהות בין המחזיק במקרקעין לבין החייב בהיטל נבחנת לפי השימוש העתידי המיועד בדירה שתיבנה — אם נועדה לשמש למגורי החייב או קרובו — ולא לפי השימוש שנעשה בנכס בעבר."
0fa1e979-b737-436f-878c-cc8f263ccbf5,1,abstained,,no change proposed,"היקף זכות הטיעון והשימוע ומתכונתם אינם קבועים אלא נגזרים מהנסיבות הקונקרטיות של העניין; ככל שההחלטה המינהלית צפויה לפגוע בזכות חשובה יותר ובאופן חמור יותר, כך מתעצמת חובת הרשות להעניק זכות טיעון רחבה ומשמעותית יותר.","היקף זכות הטיעון והשימוע ומתכונתם אינם קבועים אלא נגזרים מהנסיבות הקונקרטיות של העניין; ככל שההחלטה המינהלית צפויה לפגוע בזכות חשובה יותר ובאופן חמור יותר, כך מתעצמת חובת הרשות להעניק זכות טיעון רחבה ומשמעותית יותר."
20be9db3-5a84-40c5-aa0e-ecb5020b5ec3,1,accepted,0.9518,"איחוד שני המשפטים למשפט אחד רציף וצמצום מילולי; תוכן העיקרון, היקפו והנימוק זהים למקור ולא נוסף דין או סייג.","מימוש זכויות בדרך של מכר, בטרם הוצאת היתר בניה, אינו מקים חבות בהיטל השבחה. זאת מחמת היעדר ודאות והקושי לאמוד את שיעור ההשבחה בטרם ניתן היתר בניה בפועל.","מימוש זכויות בדרך של מכר, בטרם הוצאת היתר בניה, אינו מקים חבות בהיטל השבחה, מחמת היעדר ודאות והקושי לאמוד את שיעור ההשבחה בטרם ניתן היתר בניה בפועל."
7ccde39d-90cd-40d9-a3a3-6109620ed2ba,1,drift_rejected,0.7768,drift 0.777 < floor 0.8,"בית המשפט לא ייזקק לבירור סוגייה שאיבדה את ממשותה והפכה לתיאורטית או אקדמית בלבד, ובכלל זה ערעור המופנה כנגד מעשה עשוי, אלא במקרים חריגים בלבד.","בית המשפט לא ייזקק לבירור סוגייה שאיבדה את ממשותה ונותרה בעלת אופי תיאורטי או אקדמי בלבד, אלא במקרים חריגים."
ea79b5f3-efce-46c7-9ff9-1ae2f037c88d,1,accepted,0.901,"מבנה מחדש המעמיד את השיקול התכנוני (ההתגוננות האזרחית) כראש העיקרון והתוצאה כנגזרת ממנו, תוך הסרת כפל-לשון; כל הרכיבים מעוגנים בציטוט-המקור.","קיימת הצדקה תכנונית למתן הקלה המאפשרת בינוי הממצה את האפשרות להוספת ממ""ד, אף כאשר מדובר בחריגה חלקית מקו הבניין, וזאת נוכח החשיבות הציבורית של בניית ממ""ד לצורכי התגוננות אזרחית.","החשיבות הציבורית שבבניית ממ""ד לצורכי התגוננות אזרחית מהווה שיקול תכנוני המצדיק מתן הקלה המאפשרת בינוי הממצה את האפשרות להוספת ממ""ד, אף כאשר הדבר כרוך בחריגה חלקית מקו הבניין."
3283130b-c38f-4141-abd7-680dfd6a4cae,1,accepted,0.8651,"אוחד הניסוח למשפט קנוני אחד וזוקק לרגיסטר נקי ('פוגע... באופן אישי', 'לתקוף את האישור בערר') תוך שמירה מלאה על העיגון בציטוט — פגיעה אישית במקרקעין/בנכס כתנאי-סף למעמד.",תנאי-סף למעמדו של עורר כנגד אישור בינוי הוא הצבעה על פגיעה אישית במקרקעין שבבעלותו או בנכסו; מי שלא הראה כי הבינוי המוצע משפיע עליו או על נכסו באופן אישי — אין לו מעמד להעלאת הערר.,"תנאי-סף למעמדו של עורר כנגד אישור בינוי הוא הצבעה על פגיעה אישית במקרקעין שבבעלותו או בנכסו; משלא הוראה כי הבינוי המוצע פוגע בו או בנכסו באופן אישי, אין לו מעמד לתקוף את האישור בערר."
775e5cf5-e9a0-4560-80a2-4530e4310dad,1,accepted,0.914,"חודדה תכלית הסעיף — האיסור מוגבל לקירות בגבול חיצוני בלבד — בהתבסס על לשון הציטוט, ללא הוספת דין; הרגיסטר נוקה.","לועדה המקומית נתון מתחם שיקול דעת ביישום סעיף 2.23 לתוספת השלישית לתקנות בבתים דו-משפחתיים, בהתאם לנסיבות הקונקרטיות ולתנאי השטח; האיסור לקרוע חלונות ""בקו גבול צדדים או אחורי של נכס"" אינו חל על קיר הפונה לחלק הפנימי של החלקה עצמה.","לועדה המקומית נתון מתחם שיקול דעת ביישום סעיף 2.23 לתוספת השלישית לתקנות בבתים דו-משפחתיים, בהתאם לנסיבות הקונקרטיות ולתנאי השטח; האיסור לקרוע חלונות בקו גבול צדדי או אחורי של נכס מצומצם לקירות הפונים לגבול חיצוני, ואינו חל על קיר הפונה לחלקה הפנימית עצמה."
07f6c67a-2c79-41c8-a63e-a403b3378160,1,accepted,0.8483,"הוחזר הדיוק שבמקור — ""התקפות טילים"" במקום ""התקפות"", ושופר מבנה המשפט; ללא הוספת דין.","התקנת מרחב מוגן דירתי (ממ""ד) מהווה צורך ציבורי ברור הנובע מהמצב הביטחוני, וחשיבותו נלמדת משורת תיקוני חקיקה שמטרתם עידוד ותמרוץ בנייתו כאמצעי יעיל להגנה מפני התקפות בעורף.","התקנת מרחב מוגן דירתי (ממ""ד) מהווה צורך ציבורי ברור הנובע מהמצב הביטחוני, וחשיבותו כאמצעי יעיל להגנה מפני התקפות טילים בעורף נלמדת משורה ארוכה של תיקוני חקיקה שמטרתם עידוד ותמרוץ בנייתו."
58a97a51-3374-4b1a-89e8-f87409543cf2,1,accepted,0.9107,"הניסוח הקיים כבר מעוגן במלואו בציטוט-התומך וכללי דיו; נעשה ליטוש מינורי בלבד (השלמת שם החוק וצמצום קל), ללא הוספת דין, סייג או עובדת-תיק.","לצורך אומדן הפגיעה והפיצוי לפי סעיף 197 לחוק, מקום שתכנית פוגעת משנה ייעוד קרקע מבנייה לחקלאות, יש לאמוד את שווי הקרקע כמצבה עובר לתכנית הפוגעת אל מול שווייה כמצבה בעקבותיה, ולפצות את בעל הזכות בשיעור גריעת השווי שנגרמה כתוצאה מן השינוי.","לצורך אומדן הפגיעה והפיצוי לפי סעיף 197 לחוק התכנון והבנייה, מקום שתכנית פוגעת משנה את ייעוד הקרקע מבנייה לחקלאות, יש לאמוד את שווי הקרקע כמצבה עובר לתכנית הפוגעת אל מול שווייה כמצבה בעקבותיה, ולפצות את בעל הזכות בשיעור גריעת השווי שנגרמה מן השינוי."
39d00376-a7d8-4b9b-af57-fe6a7b8b6ec7,1,accepted,0.8622,"הוצג ההיקף כפרמטר עצמאי (ולא רק 'שני'), הובהר היחס בין גודל השטח הבנוי לעוצמת הבחינה כעולה מהנימוק, והניסוח רוכך לכלל רב-תחולה; לא נוספו דין, חריג או מקורות חדשים.","פרמטר שני בבחינת בקשה לשימוש חורג הוא היקף השימוש החורג — להבדיל מן העצימות (הפער התכנוני), ההיקף מתייחס לשטח הבנוי שבגינו מתבקש השימוש; אין דין בקשה לשימוש חורג במבנה זעיר כדין בקשה לשימוש חורג במבנה רחב-היקף.","היקף השימוש החורג הוא פרמטר עצמאי בבחינת בקשה לשימוש חורג, הנבדל מן העצימות (הפער התכנוני) ומתמקד בשטח הבנוי שבגינו מתבקש השימוש; ככל שגדל היקף השטח הבנוי כן מתחזקת הבחינה הנדרשת, ואין דין בקשה במבנה זעיר כדין בקשה במבנה רחב-היקף."
a1be8e43-e04f-4f24-96a1-a4b4feb8515e,1,accepted,0.9009,"שולב מבחן המהות-לא-השם העולה מהציטוט (""כל שם דומה"") כליבת העיקרון, ונשמר העיגון בסעיף 145 ללא הוספת דין או סייג.","היתר חפירה ודיפון מהווה ""היתר בניה"" כמשמעותו ומכוחו של סעיף 145 לחוק התכנון והבניה, ואין בשם השונה שניתן לו כדי לגרוע ממעמדו הנורמטיבי כהיתר בניה; פרשנות זו תואמת את לשון החוק ותכליתו.","היתר חפירה ודיפון, ויהא שמו אשר יהא, מהווה ""היתר בניה"" כמשמעותו בסעיף 145 לחוק התכנון והבניה; סיווגו נקבע על-פי מבחן מהותי ולא על-פי כותרתו, ואין בשם השונה שניתן לו כדי לגרוע ממעמדו הנורמטיבי כהיתר בניה."
b557d6df-051c-42a7-897e-c128b4f590f7,1,accepted,0.953,ליטוש לשוני בלבד (תקיפת... במקום לתקוף; 'מקום שעולה'); תוכן העיקרון וגבולותיו זהים למקור-העיגון.,"דרך המלך לתקוף החלטה של ועדה מקומית או רשות רישוי מקומית ליתן היתר בנייה, כאשר עולה טענה של סטייה מתכנית, היא בהגשת ערר לועדת הערר; זאת להבדיל ממחלוקות בשאלות קנייניות או של שימוש וחזקה (הנדונות בערכאות האזרחיות) ומטענות לפגמים מינהליים שאינם תכנוניים, כגון ניגוד עניינים (הנדונות בבית המשפט לעניינים מינהליים).","דרך המלך לתקיפת החלטת ועדה מקומית או רשות רישוי מקומית ליתן היתר בנייה, מקום שעולה טענה לסטייה מתכנית, היא בהגשת ערר לועדת הערר; זאת להבדיל ממחלוקות קנייניות או בשאלות של שימוש וחזקה, הנדונות בערכאות האזרחיות, ומטענות לפגמים מינהליים שאינם תכנוניים, כגון ניגוד עניינים, הנדונות בבית המשפט לעניינים מינהליים."
b7d0496a-1110-4ca7-97fc-ccd28b681085,1,accepted,0.8553,"הוסר המספר הקונקרטי 'עד 36 פעוטות' שהוא פרט-תיק ספציפי, כדי לזקק עיקרון רב-תחולה; גרעין השיקול נשמר כלשון הציטוט-התומך.","כאשר הוועדה המקומית מאשרת הפעלת מעון יום הכולל עד 36 פעוטות לפי תיקון החוק, השיקול היחיד שעליה להפעיל לגביו את שיקול דעתה הוא האם מתקיימת פגיעה מרחבית משמעותית שאינה ניתנת לתיקון.","כאשר הוועדה המקומית מאשרת הפעלת מעון יום מכוח תיקון החוק, השיקול היחיד שעליה להפעיל לגביו את שיקול דעתה הוא האם מתקיימת פגיעה מרחבית משמעותית שאינה ניתנת לתיקון."
5743e389-c4b8-41e5-b156-2ecfa0252131,1,accepted,0.9481,"זוקק והודק הניסוח תוך עיגון מפורש בכך שעצם טענת הסטייה מקנה סמכות ומחייבת בירור מקדמי (כעולה מהנימוק והציטוט-התומך); לא נוספו דין, חריג או ציטוטי-תיקים.","למתנגד מוקנית זכות ערר לוועדת הערר על החלטת ועדה מקומית ליתן היתר בנייה, מקום שנטען כי ההיתר מהווה הקלה או שימוש חורג בסטייה מתכנית — וזאת אף אם הוועדה המקומית סברה כי ההיתר עולה בקנה אחד עם התכנון התקף. ועדת הערר אינה רשאית לדחות ערר כזה על הסף, אלא חייבת לבחון את טענת הסטייה מתכנית כטענה מקדמית, וככל שתמצא כי ההיתר סוטה מתכנית — תדון בהתנגדות לגופה.","למתנגד מוקנית זכות ערר לוועדת הערר על החלטת ועדה מקומית ליתן היתר בנייה, מקום שנטען כי ההיתר מהווה הקלה או שימוש חורג בסטייה מתכנית, אף אם הוועדה המקומית סברה כי ההיתר תואם את התכנון התקף. עצם טענת הסטייה מקנה לוועדת הערר את הסמכות ומחייבת אותה לברר את הטענה כשאלה מקדמית, בלא לדחות את הערר על הסף; ומשנמצא כי ההיתר סוטה מתכנית — תידון ההתנגדות לגופה."
69d0ede6-ab2f-4047-9558-aaccae329827,1,accepted,0.8975,"צומצם וחודד הניסוח (הסרת כפל ""אינה שוללת ואינה גורעת"" ופישוט התחביר) תוך שמירה מלאה על העיקרון המעוגן בציטוט בדבר המסלולים המקבילים.","הסמכות הספציפית שהוקנתה לשרים לקבוע היטל השבחה מופחת לגבי מתחמי פינוי-בינוי אינה שוללת ואינה גורעת מסמכותם הכללית מכוח ""סעיף הסל"" ליתן פטור מלא מהיטל השבחה למתחמים מסוג זה; מדובר במסלולים מקבילים העומדים זה לצד זה.","הקניית סמכות ספציפית לקבוע היטל השבחה מופחת למתחמי פינוי-בינוי אינה גורעת מן הסמכות הכללית שמכוח ""סעיף הסל"" ליתן פטור מלא מהיטל השבחה למתחמים אלה; שני המסלולים מקבילים ועומדים זה לצד זה."
40e3238d-9914-47bf-82f3-b187fbacafaa,1,accepted,0.8238,"מוקד הניסוח בעיקרון המעוגן ישירות בציטוט-התומך (נטרול הפוטנציאל מן המצב הקודם לפי הלכת לוסטרניק); הוסרה הסיפא בדבר המשקל לעסקאות 'תכנון בעתיד' שמקורה בנימוק היישומי ולא בציטוט, וכן תוקנה ההצגה הפסקנית.","פוטנציאל תכנוני הנובע מייעוד שנקבע בתוכנית מתאר נחשב חלק מן ההליך התכנוני של התוכנית המשביחה במובנו הרחב, ולפי הלכת לוסטרניק יש לנטרלו מהמצב הקודם בעת עריכת השומה; ממילא אין לייחס משקל בלעדי לעסקאות השוואה שנעשו בייעוד 'תכנון בעתיד'.","פוטנציאל תכנוני הנובע מייעוד שנקבע בתוכנית מתאר מהווה חלק מן ההליך התכנוני של התוכנית המשביחה במובנו הרחב, ולפי הלכת לוסטרניק יש להתעלם ממנו ולנטרלו מן המצב הקודם בעת עריכת שומת ההשבחה."
43173db6-51aa-46d9-a655-e3e9dad9889b,1,abstained,,no change proposed,"שטחי שירות הנלווים באופן אינהרנטי לשימוש עיקרי (כגון מחסנים נלווים לדירות מגורים) ישומו כנגזרת משווי השימוש העיקרי, ולא לפי שימוש חלופי אחר; באין השימוש העיקרי אין הצדקה לשטחי השירות.","שטחי שירות הנלווים באופן אינהרנטי לשימוש עיקרי (כגון מחסנים נלווים לדירות מגורים) ישומו כנגזרת משווי השימוש העיקרי, ולא לפי שימוש חלופי אחר; באין השימוש העיקרי אין הצדקה לשטחי השירות."
1c23018f-010b-4808-88e9-62e2e2ce6f37,1,accepted,0.8973,"הניסוח הקיים כבר מעוגן במלואו בציטוט-התומך, כללי ובלתי-תלוי-תיק; לא נמצא רכיב מעוגן להוספה או לזיקוק נוסף.","בחישוב היטל השבחה תובא במניין אך ורק ההשבחה הקשורה בקשר סיבתי ישיר לתכנית המשביחה; על השמאי לחלץ ולבודד את מרכיב השבחת התכנון מכלל הגורמים שהביאו לעליית שווי המקרקעין, ורק רכיב זה משמש בסיס לחיוב בהיטל.","בחישוב היטל השבחה תובא במניין אך ורק ההשבחה הקשורה בקשר סיבתי ישיר לתכנית המשביחה; על השמאי לחלץ ולבודד את מרכיב השבחת התכנון מיתר הגורמים שהביאו לעליית שווי המקרקעין, ורק רכיב זה משמש בסיס לחיוב בהיטל."
0e483c66-c1fc-4380-98de-2475e1428539,1,abstained,,no change proposed,"ירידת ערך מקרקעין הנובעת מאישור התכנית ומביצועה ככתבה וכלשונה מגולמת בפיצוי לפי סעיף 197 לחוק התכנון והבניה, ועל כן לא ניתן לתבוע פיצוי בגין אותו נזק בהליך נזיקי — אף כלפי נתבע אחר וללא תלות בעילה הנזיקית שמכוחה נתבע הפיצוי.","ירידת ערך מקרקעין הנובעת מאישור התכנית ומביצועה ככתבה וכלשונה מגולמת בפיצוי לפי סעיף 197 לחוק התכנון והבניה, ועל כן לא ניתן לתבוע פיצוי בגין אותו נזק בהליך נזיקי — אף כלפי נתבע אחר וללא תלות בעילה הנזיקית שמכוחה נתבע הפיצוי."
221e2af0-a6cd-47ba-b676-4b392e03c1bc,1,accepted,0.9166,"הידוק הניסוח סביב מאזן ההוראות הכולל וצמצום החזרתיות, תוך שמירה מלאה על העיגון בציטוט-המקור.",בהערכת השפעתה של תכנית על שווי המקרקעין יש לשקלל יחד את כל הוראות התכנית — המשביחות והפוגעות כאחד — ורק אם סך כל ההוראות מביא ליתרון על פני המצב התכנוני הקודם תיחשב התכנית למשביחה ותחויב בהיטל השבחה.,"בהערכת השבחתה של תכנית יש לשקלל יחד את כל הוראותיה המשפיעות על שווי המקרקעין, המשביחות והפוגעות כאחד, ותכנית תיחשב משביחה החייבת בהיטל השבחה רק אם מאזן הוראותיה הכולל מביא ליתרון על פני המצב התכנוני הקודם."
6b1d0d8e-cd89-4bce-a7d5-d75ea0c4eaed,1,accepted,0.9666,"ניסוח קיים נשמר כמעט במלואו; הובהר ששיקול הדעת התכנוני הוא מקצועי ('אינה באה להחליף'), בעיגון מלא לציטוט התומך וללא הוספת דין.","הביקורת השיפוטית על החלטות מוסדות התכנון מתמקדת בבחינת חוקיות ההליכים ודרכי קבלת ההחלטה, ואינה מחליפה את שיקול הדעת התכנוני של הרשות; בית המשפט יתערב במשורה, רק מקום בו נפל בהחלטה פגם חוקי על-פי עילות הביקורת המינהלית, כגון חריגה מסמכות, שיקולים פסולים או חריגה קיצונית ממתחם הסבירות.","הביקורת השיפוטית על החלטות מוסדות התכנון מתמקדת בבחינת חוקיות ההליכים ודרכי קבלת ההחלטה, ואינה באה להחליף את שיקול הדעת התכנוני המקצועי של הרשות; בית המשפט יתערב במשורה, רק מקום בו נפל בהחלטה פגם חוקי לפי עילות הביקורת המינהלית, כגון חריגה מסמכות, שיקולים פסולים או חריגה קיצונית ממתחם הסבירות."
17f3126b-dbc7-49f6-8bdb-15f5800d909a,1,accepted,0.9159,"הוספתי את ההבחנה המעוגנת במקור בין ההכרזה לבין תכנית פוגעת ('להבדיל מתכנית פוגעת'), והסרתי את הדוגמה הספציפית בסוגריים לטובת ניסוח כללי יותר.","הכרזה על קרקע (כגון הכרזה לשימור קרקע חקלאית) המגבילה בנייה ושימושים אינה מקימה כשלעצמה זכות לפיצוי בעל הזכות במקרקעין בגין הפגיעה בקניינו הנובעת מאותן הגבלות, אף אם הפגיעה בשווי הקרקע משמעותית ביותר.","הכרזה על קרקע המגבילה בנייה ושימושים אינה מקימה כשלעצמה, להבדיל מתכנית פוגעת, זכות לפיצוי בעל הזכות במקרקעין בגין הפגיעה בקניינו הנובעת מאותן הגבלות, אף אם הפגיעה בשווי הקרקע משמעותית."
5ca099ed-136d-4c59-9a15-e548334a6c11,1,accepted,0.8679,"הוסרו הדוגמאות בסוגריים (משקלו המוגבל, חזקת החפות) שאינן עולות מפורשות מהציטוט-התומך המדבר על 'כל המגבלות הכרוכות בכך' באופן כללי; שאר העיקרון נשמר כמעוגן.","מוסד תכנון רשאי להביא בחשבון, במסגרת מכלול שיקוליו, את עצם הגשתו של כתב אישום ואת תוכנו כראיה מנהלית, ובלבד שייעשה כן בכפוף למגבלות הכרוכות בשימוש בכתב אישום שטרם הוכרע (משקלו המוגבל, חזקת החפות וכיו""ב).","מוסד תכנון רשאי להביא בחשבון, במסגרת מכלול שיקוליו, את עצם הגשתו של כתב אישום ואת תוכנו כראיה מנהלית, בכפוף למגבלות הכרוכות בהסתמכות על כתב אישום שטרם הוכרע."
0c1cde3e-2caf-4d05-b684-9e53931111f3,1,drift_rejected,0.7924,drift 0.792 < floor 0.8,"אף אם ניתן לפרש את פסק דין ""קבוצת הירדן"" כך שאינו חל על העיר תל אביב-יפו, יש להחיל את דרך חישוב הפטור מהיטל השבחה המפורטת בו גם על תל אביב-יפו; הלכת קבוצת הירדן אינה מוגבלת גאוגרפית.",דרך חישוב הפטור מהיטל השבחה שנקבעה בהלכת קבוצת הירדן אינה מוגבלת גאוגרפית וחלה באופן אחיד על כל רשות מקומית.
9d4f9cda-a169-4ac1-9c8b-7dc99fbe486b,1,accepted,0.9304,"חודד שהשלכת-הרוחב והתקדים נבחנים לפי מאפייני המבנה הקונקרטי (עולה מהנימוק והציטוט-התומך) ושהאישור אינו בר-הכללה, מבלי להוסיף דין או נסיבות שאינם במקור.","טענת ועדה מקומית כי אישור שימוש חורג ממגורים למסחר יעודד בקשות דומות, יביא להשלכות רוחב ולצמצום היצע יחידות הדיור, או יהווה תקדים — אינה מתקבלת מקום שאופי הבינוי של המבנה ייחודי ואינו נפוץ; במצב כזה האישור מוגבל למקרה המסוים ואין בו כדי לפרוץ אל מעבר לנסיבותיו.","טענת ועדה מקומית כי אישור שימוש חורג ממגורים למסחר יעודד בקשות דומות, יביא להשלכות רוחב, יצמצם את היצע יחידות הדיור או יהווה תקדים — אינה מתקבלת מקום שאופי הבינוי של המבנה ייחודי ואינו נפוץ; השלכת-הרוחב והתקדים נבחנים לפי מאפייני המבנה הקונקרטי, ובבינוי ייחודי האישור מוגבל לנסיבות המקרה ואינו בר-הכללה."
3ca50208-ca74-4631-a2ef-758e97e30b95,1,accepted,0.9304,"זוקק וקוצר הניסוח (הסרת כפילות ""וועדת הערר"" והאיות הכפול); העיקרון נותר מעוגן בציטוט-התומך בדבר היעדר סמכות לערר על חידוש היתר.","החלטה בדבר חידוש או הארכת תוקפו של היתר בנייה לפי תקנות התכנון והבנייה (רישוי בנייה), תשע""ו-2016, אינה נמנית עם ההחלטות שעליהן ניתן לערור לוועדת הערר, ולפיכך וועדת הערר נעדרת סמכות לדון בערר המוגש על החלטה כאמור.","החלטה בדבר חידוש או הארכת תוקפו של היתר בנייה לפי תקנות התכנון והבנייה (רישוי בנייה), תשע""ו-2016, אינה נמנית עם ההחלטות הניתנות לערר לפני ועדת הערר, ועל כן ועדת הערר נעדרת סמכות לדון בערר המוגש עליה."
ca7f25f9-40b7-4f75-928f-16f348f47d82,1,accepted,0.9003,"הידוק רגיסטרי בלבד — קוצרו כפילויות ('נקיטה בהליך של', 'אכן') והומר התנאי לניסוח תמציתי, ללא הוספת דין שאינו עולה מהמקור.","צורך תכנוני או חברתי חיוני ודחוף עשוי להצדיק נקיטה בהליך של שימוש חורג כפתרון ביניים, מאחר שאישור מהלך תכנוני שלם גוזל זמן ארוך; ואולם תנאי לכך הוא הוכחה כי אכן קיים צורך חיוני ודחוף וכי ההמתנה עד לאישור המהלך התכנוני השלם תגרום נזק.","צורך תכנוני או חברתי חיוני ודחוף עשוי להצדיק שימוש חורג כפתרון ביניים, נוכח משך הזמן הארוך הכרוך באישור מהלך תכנוני שלם; ובלבד שהוּכח קיומו של צורך חיוני ודחוף וכי ההמתנה לאישור המהלך התכנוני השלם תגרום נזק."
4fb8c982-568b-4179-88a7-a5283f14cadc,1,accepted,0.8708,"נוסח מחדש כעיקרון איזון רב-תחולה — התועלת החברתית מול הפגיעה במתנגדים — תוך הוספת תנאי הגבירה העולה מן הנימוק, וללא הוספת דין מעבר למקורות.","הרווח החברתי לכלל הציבור עשוי להוות שיקול לאישור שימוש חורג גם מקום שבו השימוש כרוך בפגיעה במתנגדים, כאשר השימוש חיוני לציבור.","הרווח החברתי הצומח לכלל הציבור משימוש חורג החיוני לו עשוי להוות שיקול לאישור השימוש, אף כאשר הוא כרוך בפגיעה במתנגדים, ובלבד שהתועלת הציבורית גוברת על הפגיעה."
a8b1836f-e0c5-493f-b4bf-8a51aab0450c,1,drift_rejected,0.7808,drift 0.781 < floor 0.8,"שטחים ציבוריים סטטוטוריים אינם 'על הנייר' בלבד — הרשות המקומית מחויבת בפיתוחם, ומבני ציבור שנבנו בפועל (בתי ספר, גני ילדים, בתי כנסת, שצ""פים מפותחים) נלקחים בחשבון כחלק מהתשתית הציבורית הקיימת בשכונה לצורך הערכת היתכנות הקלות.","הרשות המקומית מחויבת בפיתוח השטחים הציבוריים הסטטוטוריים שבתחומה; משכך, אין לראות שטחים אלה כקיימים 'על הנייר' בלבד מקום שמבני ציבור ושטחים ציבוריים פותחו ונבנו בפועל ומהווים חלק מהתשתית הציבורית הקיימת בשכונה."
50313625-9da8-472d-8039-f6e810f27f65,1,accepted,0.9076,"ניסוח קומפקטי יותר באמצעות החלפת הניקודיים ("":"") בפסוקית-זיקה (""שלפיו"") ליצירת משפט אחד רציף; התוכן זהה ומעוגן בציטוט-התומך, ללא הוספת דין או סייג.","כאשר על המקרקעין קיימת בנייה הנגועה באי-חוקיות, יש להחיל את ""מבחן המגרש הריק"": השאלה הנשאלת היא האם נכון היה לאשר את הבקשה להיתר אילו לא הייתה קיימת על הקרקע אותה בנייה בלתי-חוקית.","כאשר על המקרקעין קיימת בנייה הנגועה באי-חוקיות, יש להחיל את ""מבחן המגרש הריק"", שלפיו נשאלת השאלה האם נכון היה לאשר את הבקשה להיתר אילו לא הייתה קיימת על הקרקע אותה בנייה בלתי-חוקית."
505884b8-feab-4221-a723-f915d745435a,1,abstained,,no change proposed,"היטל השבחה מוטל אך ורק על ""השבחת-תכנון"" — עליית ערך המקרקעין הנובעת באופן ישיר מהחלת הפעולה התכנונית עליהם — ולא על עליית שווי הנובעת מגורמים אחרים.","היטל השבחה מוטל אך ורק על ""השבחת-תכנון"" — עליית ערך המקרקעין הנובעת באופן ישיר מהחלת הפעולה התכנונית עליהם — ולא על עליית שווי הנובעת מגורמים אחרים."
c495b9be-4ee8-4585-b028-6854f9ce9f1c,1,accepted,0.9524,"הוספתי את אפיון התיקון כ""אקט מתקן שאינו פרסום חדש"" — מרכיב העולה מפורשות מהנימוק והציטוט-התומך — וחידדתי את הרגיסטר; הסייגים והמסקנות נותרו מעוגנים במקור.","הודעה בדבר תיקון טעות סופר בתכנית אינה מבטלת ואינה גורעת מתוקפה של ההודעה המקורית על אישור התכנית, ואינה מבטלת את תוקף התכנית עצמה; ככל שהיא רק מאזכרת את הפרסום הקודם, אין בה כדי לדחות את המועד הקובע.","הודעה על תיקון טעות סופר בתכנית היא אקט מתקן בלבד ואין בה משום פרסום חדש של אישור התכנית; היא אינה מבטלת ואינה גורעת מתוקף ההודעה המקורית על אישור התכנית ואף לא מתוקף התכנית עצמה, וככל שהיא רק מאזכרת את הפרסום הקודם אין בה כדי לדחות את המועד הקובע."
2ae64fb2-81b5-41d3-9061-f9744048876c,1,accepted,0.8438,"הוסרה הסיפא בדבר תכנית מתאר ארצית שאינה מעוגנת בציטוט; נותר הגרעין המעוגן — כפיפות מתקן התשתית לתב""ע ואי-תחליפיות של מסמך סביבתי-בריאותי.","הקמת מתקן תשתית כפופה להוראות התכנית המקומית (התב""ע), ותכנית מתאר ארצית החלה אינה פוטרת מן הצורך בהתאמה להוראות התב""ע מקום שזו נדרשת.","הקמת מתקן תשתית כפופה להוראות התכנית המקומית (התב""ע), ואין במסמך סביבתי-בריאותי כדי לפטור מן ההתאמה להוראות התב""ע."
1bc5a9bf-b0fb-4cc4-b2b9-d6d32ead2679,1,accepted,0.8543,"הוסר אופי הסיכום וצומצם הניסוח למשפט קנוני אחד נקי, תוך שמירה מלאה על העיקרון מהציטוט-התומך (סדר ייחוס הזכויות לפטור תחילה).","בעת חישוב היטל ההשבחה בפרויקט תמ""א 38 רואים בשלב הראשון את כל הזכויות כמנוצלות מכוח התמ""א (הפטורות), ורק זכויות עודפות מעבר לכך ייוחסו לתכנון הקיים החייב בהיטל.","בחישוב היטל השבחה בפרויקט תמ""א 38, בשלב הראשון רואים את מלוא הזכויות כמנוצלות מכוח התמ""א הפטורה, ורק זכויות עודפות מעבר לכך מיוחסות לתכנון הקיים החייב בהיטל."
56ae6e2d-5623-442f-b0fc-897bab0bebe5,1,accepted,0.9055,זוקק וקוצר: הובהר שהעתקת הנטל פועלת ביחסים החוזיים בלבד (כעולה מהנימוק והציטוט) והוסר הסיפא העודפת על 'סטיית ההסכם מהדין' שאינה נדרשת לעיקרון הכללי.,"זהות החייב בהיטל השבחה נקבעת על פי החוק ואינה ניתנת לשינוי בהסכם בין הצדדים; הסכם המעתיק את נטל התשלום מן הבעלים החייב על פי דין אל צד אחר אינו משפיע על סמכות גורמי הרשות המקומית להטיל את ההיטל על החייב בו מכוח החוק, ומשהוטל החיוב על מי שאינו החייב לפי דין — סטה ההסכם מהוראות הדין.",זהות החייב בהיטל השבחה נקבעת על פי דין ואינה ניתנת לשינוי בהסכם בין הצדדים; הסכם המעתיק את נטל התשלום אל צד אחר מחייב ביחסים החוזיים בלבד ואינו גורע מסמכות הרשות להטיל את ההיטל על החייב בו מכוח החוק.
00a587be-d0d3-433c-bb0a-0403dd5ce34a,1,accepted,0.9126,"ניסוח הודק לרגיסטר קנוני אחיד וסילוק הכפילות הדקדוקית, ללא הוספת דין שאינו עולה מהמקור.","פגם פרוצדורלי בהליך תכנוני שהוא תקלה טכנית בלבד ואינו פגם מהותי ניתן להחלת דוקטרינת הבטלות היחסית (דוקטרינת התוצאה היחסית), המאפשרת להימנע מביטול ההליך חרף הפגם.","פגם פרוצדורלי בהליך תכנוני שהוא תקלה טכנית בלבד ואינו פגם מהותי, מצדיק החלת דוקטרינת הבטלות היחסית (התוצאה היחסית) ומאפשר להימנע מביטול ההליך חרף הפגם."
a9be7842-eaf6-4fca-941d-0d72936dbf70,1,accepted,0.8585,"זוקק לליבת העיקרון המעוגנת בציטוט (תנאי 'הדבר מה נוסף' + שלילת ההקניה האוטומטית); הוסר הזנב הטיעוני 'וטענה הפוכה נוגדת את הדין ואת פסיקת בתי המשפט' שאינו עולה מהמקור, וכן ההקשר הספציפי 'בפני ועדת הערר'.","הקניית מעמד של 'עורר ציבורי' מותנית בכך שהעורר יצביע על פגם מהותי בשלטון החוק העולה כדי 'דבר מה נוסף'; עצם העלאת טענה לפגיעה בחוקיות בפני ועדת הערר אינה מקנה כשלעצמה מעמד ציבורי, וטענה הפוכה נוגדת את הדין ואת פסיקת בתי המשפט.",מעמד של 'עורר ציבורי' מותנה בהצבעה על פגם מהותי בשלטון החוק העולה כדי 'דבר מה נוסף'; עצם העלאת טענה לפגיעה בחוקיות אינה מקנה כשלעצמה מעמד ציבורי.
aedf265b-750b-4f74-84ac-cb02d4240126,1,abstained,,no change proposed,"בהיעדר תכנית כוללת שהוכנה בהתאם לדרישת תכנית מחוזית, ייעוד הקרקע נקבע על-פי התכנית המקומית החלה עליה, ולא על-פי הייעוד הנקוב בתכנית המחוזית.","בהיעדר תכנית כוללת שהוכנה בהתאם לדרישת תכנית מחוזית, ייעוד הקרקע נקבע על-פי התכנית המקומית החלה עליה, ולא על-פי הייעוד הנקוב בתכנית המחוזית."
2522e80a-d953-46c9-8d66-067c8d6df1c2,1,drift_rejected,0.7697,drift 0.770 < floor 0.8,"אין לקבל ניסיון של בעל דין להבחין בין תקדים החל עליו לבין המקרה הנדון, מקום שההבחנה נשענת על טענה העומדת בסתירה לעמדה שאותו בעל דין עצמו טען בהליך הקודם.","בעל דין אינו רשאי להבחין בין תקדים החל עליו לבין עניינו, כאשר ההבחנה נשענת על טענה הסותרת את העמדה שטען אותו בעל דין עצמו בהליך הקודם."
2a6fbc99-6c4f-4708-a404-4da36876466c,1,accepted,0.9109,"שמרתי את העיקרון המעוגן בציטוט (היררכיה מן הכללי אל המפורט והיתר הנסמך על תכנון מפורט במשבצת) ואת ההפניה הכללית לסעיף 145(ז), אך הסרתי את פירוט תוכן הסעיף ואת תאריך 1.1.96 שאינם עולים מהציטוט-התומך.","מערכת התכנון בנויה כהיררכיה של הסדרים ההולכים מן הכללי אל המפורט, ומתן היתר בנייה מחייב קיומה של תכנית מפורטת בדרגת פירוט סבירה לגבי המקרקעין נשוא ההיתר; דרישה זו קיבלה ביטוי סטטוטורי בסעיף 145(ז) לחוק התכנון והבניה, המתנה מתן היתר מכוח תכנית שהופקדה לאחר 1.1.96 באישור תכנית הקובעת הוראות בדבר פירוט ייעודי הקרקע, חלוקה למגרשים, קווי בניין, מספר קומות או גובה ושטחי בנייה מותרים.","מערכת התכנון בנויה כהיררכיה של הסדרי תכנון ההולכים מן הכללי אל המפורט ומסתיימים במתן היתר לביצוע עבודות הנסמך על התכנון המפורט במשבצת הקרקע; מכאן שמתן היתר בנייה מחייב קיומה של תכנית מפורטת בדרגת פירוט סבירה לגבי המקרקעין נושא ההיתר, דרישה שקיבלה עיגון סטטוטורי בסעיף 145(ז) לחוק התכנון והבניה."
801ca0a5-62da-4af7-9081-412c72dbc678,1,accepted,0.874,חידוד ניסוח בלבד — הובהר שהבכורה של התשריט היא ביחס לפרשנות תקנונית סותרת; שני היסודות מעוגנים בציטוט ובנימוק.,אין לפרש את הוראות תקנון התכנית בסתירה לתשריט ולייעודי הקרקע הקבועים בה; התשריט וייעודי הקרקע שנקבעו בו גוברים בקביעת תכליתם של המקרקעין.,אין לפרש את הוראות תקנון התכנית בסתירה לתשריט ולייעודי הקרקע הקבועים בה; בקביעת תכליתם של המקרקעין גוברים התשריט וייעודי הקרקע שנקבעו בו על פרשנות תקנונית הסותרת אותם.
eb6f7341-2b60-49c5-a14c-ed2000423994,1,accepted,0.9344,"הניסוח הודק לרצף לוגי אחד וזוקק לכלל פרשני כללי ('בהיעדר ניסוח מפורש'), תוך שמירה מלאה על העיגון בציטוט-התומך וללא הוספת דין.","'מניעה לפי דין' היא עילה הקבועה בדין ואינה עניין הנתון לשיקול דעתה של הרשות; שיקולים שבשיקול דעת, כגון שיקולי תכנון, אינם שקולים למניעה לפי דין ואינם מקימים אותה. אילו ביקש מתקין התקנות להחריג מקרים שבשיקול דעת היה קובע זאת במפורש.","'מניעה לפי דין' היא עילה הקבועה בדין ואינה נתונה לשיקול דעתה של הרשות; שיקולים שבשיקול דעת, ובכללם שיקולי תכנון, אינם שקולים למניעה לפי דין ואינם מקימים אותה, ובהיעדר ניסוח מפורש של חריג שבשיקול דעת אין להניח שמתקין התקנות התכוון להחריגם."
98e8702c-958f-47c0-a483-8acccb26699c,1,accepted,0.9299,סדר-המשפט הומר כך שעיקרון-הסמכות עומד בראש והעיגון הכפול מובא כנימוק נלווה; התוכן זהה לציטוט-התומך ללא תוספת דין.,"ועדת הערר, הן מכוח סמכותה להיכנס בנעלי הוועדה המקומית והן כמוסד תכנון הניצב בהיררכיה גבוהה יותר מן הוועדה המקומית, מוסמכת להנחות את הוועדה המקומית באשר לאופן הפעלת שיקול דעתה בעת שתידון בפניה בקשה להיתר עתידית.","ועדת הערר מוסמכת להנחות את הוועדה המקומית באשר לאופן הפעלת שיקול דעתה בבקשה להיתר עתידית, וזאת הן מכוח סמכותה להיכנס בנעלי הוועדה המקומית והן ממעמדה כמוסד תכנון הניצב בהיררכיה גבוהה ממנה."
fd5093f7-780f-441e-b258-f5df28c98b5c,1,accepted,0.944,הניסוח הודק והוסר הכפל ('הניתן לבעל זכויות... נתון לבעל הזכויות'); הליבה והעיגון בציטוט נשמרו ללא הוספת דין או סייג.,"הפטור מהיטל השבחה הניתן לבעל זכויות במקרקעין בגין דירת מגורים אינו מוגבל בהיקפו לפי שטח המקרקעין, ובהיעדר הגדרה מצמצמת בחוק יש להעדיף את הפרשנות שלפיה הפטור נתון לבעל הזכויות יהא שטח המקרקעין אשר יהא.","הפטור מהיטל השבחה בגין דירת מגורים אינו מוגבל בהיקפו לפי שטח המקרקעין, ובהיעדר הוראה מצמצמת בחוק יש להעדיף את הפרשנות שלפיה הפטור נתון לבעל הזכויות במקרקעין יהא שטח המקרקעין אשר יהא."
ca990277-7bb5-4924-8769-cf69074fd653,1,accepted,0.8625,"נוסף הטעם המצטבר השני (התנהלות הוועדה המקומית כלפי בעלי הזכויות) המופיע במפורש בציטוט-התומך אך הושמט בניסוח הקיים, והוסר פרט-המקרה הספציפי (התייחסות מפורשת למועד) כדי להכליל.","שתי תכניות נפרדות העומדות כל אחת בפני עצמה — תכנית מקפיאה ותכנית משחררת — עשויות להיראות כתכנית אחת לצורך בחינת פיצויים לפי סעיף 197, מקום שמתקיים ביניהן קשר תכנוני הדוק (""רצף תכנוני""), כגון כאשר התכנית המקפיאה מתייחסת במפורש לתכנית המשחררת הצפויה ולמועדה, ובכך מלמדת שהיא הייתה מלכתחילה תכנית זמנית שנועדה להקפיא מצב קיים עד לביצוע התכנית המשחררת.","שתי תכניות נפרדות — תכנית מקפיאה ותכנית משחררת — עשויות להיחשב כתכנית אחת לצורך בחינת הפגיעה והפיצויים לפי סעיף 197 לחוק התכנון והבניה, מקום שמתקיימים שני טעמים מצטברים ושלובים: זיקה תכנונית הדוקה בין התכניות (""רצף תכנוני""), המלמדת שהתכנית המקפיאה נועדה להקפיא מצב קיים עד לאישור התכנית המשחררת כשלב במהלך תכנוני אחד; והתנהלות הוועדה המקומית ביחסיה עם בעלי הזכויות במקרקעין."
1 canonical_id instance_count status drift_cosine reason before after
2 660bb5ae-1209-4215-812e-efbfc37f373c 1 accepted 0.8685 צומצם לשני הפנים המעוגנים בציטוט-התומך; הוסר הפן השלישי בדבר פגיעה בשלטון החוק והאיזון התלת-שלבי, שאינו עולה ממקור-העיגון אלא מן הנימוק בלבד. טענת שיהוי בהליך מינהלי נבחנת בשני פנים: הפן האובייקטיבי — חלוף הזמן עד הגשת ההליך והפגיעה באינטרסים ראויים של הרשות או של צדדים שלישיים ושינוי מצבם לרעה; והפן הסובייקטיבי — התנהלות העותר והשאלה אם יש בה כדי ללמד על ויתור על זכויותיו. בנוסף יש לבחון אם קבלת טענת השיהוי תותיר על כנה החלטה או מעשה מינהלי הפוגעים פגיעה חמורה בשלטון החוק או באינטרס ציבורי חשוב, ועל בית המשפט לאזן בין שלושת ההיבטים הללו לפי משקלם היחסי בנסיבות העניין. טענת שיהוי בהליך מינהלי נבחנת בשני פנים: הפן האובייקטיבי — חלוף הזמן עד הגשת ההליך והפגיעה באינטרסים ראויים של הרשות או של צדדים שלישיים ושינוי מצבם לרעה בשל חלוף הזמן; והפן הסובייקטיבי — התנהלות העותר והשאלה אם יש בה כדי ללמד על ויתור על זכויותיו.
3 5bede666-24ac-487c-87a7-5c253e04966c 1 abstained no change proposed תכליתם של פיצויי ההפקעה היא להעניק לבעל הזכויות בקרקע את השווי הכספי של הזכות או טובת ההנאה שהופקעו מידיו, ולהעמידו באותו מצב כספי שבו היה עומד אלמלא ההפקעה. תכליתם של פיצויי ההפקעה היא להעניק לבעל הזכויות בקרקע את השווי הכספי של הזכות או טובת ההנאה שהופקעו מידיו, ולהעמידו באותו מצב כספי שבו היה עומד אלמלא ההפקעה.
4 f3200101-162b-4f1f-af39-73a3088280a6 1 accepted 0.8503 תומצת ונוקה הרגיסטר, נוסף שם-העיקרון 'הסדר שלילי' העולה מן הנימוק; לא נוסף דין מעבר למקור. בפרשנות הוראת תכנית בדבר חישוב אחוזי הבניה, כאשר התכנית מפרטת במפורש כי שטחים מסוימים יובאו בחשבון חישוב אחוזי הבניה ושותקת ביחס לשטח אחר שייעודו מוגדר כשטח שאין לבנות בו, השתיקה — בצירוף ההסדר המפורש לגבי השטחים האחרים — מלמדת כי לשון התכנית אינה סובלת את הכללת אותו שטח בחישוב. מקום שהוראת תכנית מונה במפורש את השטחים הבאים במניין חישוב אחוזי הבנייה ושותקת ביחס לשטח שייעודו הוגדר כשטח שאין לבנות בו, ההסדר המפורש לגבי יתר השטחים, בצירוף שתיקה זו, מלמד שלשון התכנית אינה סובלת את הכללת אותו שטח בחישוב (הסדר שלילי).
5 4066d496-3088-425c-8b24-19df3cb4b8f4 1 accepted 0.9523 הניסוח הקנוני שופר בעיגון הסמכות בסעיף 14(ג) לתוספת — מקור-הסמכות שעליו נשען הנימוק — תוך שמירה על שני אגפי העיקרון; לא נוסף דין שאינו במקורות. סמכות ועדת הערר למנות שמאי מייעץ מטעמה קמה רק מקום שהערר הוגש לפי סעיף 14(א) לתוספת בלבד; בערר המוגש לפי סעיף 14(ב)(4) על הכרעת שמאי מכריע אין הוועדה רשאית למנות שמאי מייעץ. סמכות ועדת הערר למנות שמאי מייעץ מטעמה, מכוח סעיף 14(ג) לתוספת, קמה רק מקום שהערר הוגש לפי סעיף 14(א) לתוספת; בערר על הכרעת שמאי מכריע המוגש לפי סעיף 14(ב)(4) לתוספת אין הוועדה מוסמכת למנות שמאי מייעץ.
6 a230f193-3048-48a1-8295-3369ac80f644 1 abstained no change proposed ביקורת בית המשפט לעניינים מנהליים על החלטות ועדת הערר במישור המקצועי תיעשה במשורה, מתוך ריסון והכרה במומחיותה של הוועדה. ביקורת בית המשפט לעניינים מנהליים על החלטות ועדת הערר במישור המקצועי תיעשה במשורה, מתוך ריסון והכרה במומחיותה של הוועדה.
7 74db9cb4-acd7-47af-b8b9-7940bc9f3b81 1 abstained no change proposed בהפעילם את הסמכות להאריך או להעניק פטור מהיטל השבחה בפינוי-בינוי, אין השרים רשאים לשקול שיקולים של כדאיות כלכלית. בהפעילם את הסמכות להאריך או להעניק פטור מהיטל השבחה בפינוי-בינוי, אין השרים רשאים לשקול שיקולים של כדאיות כלכלית.
8 7beb9330-1c8a-4f93-90d7-a71b5e3c48dc 1 accepted 0.9523 הניסוח הודק והובהר ('יונחה לערוך', 'חלופות תכנוניות ממשיות') תוך שמירה מלאה על עיגון הציטוט; לא נוסף דין או סייג. חובת מוסד התכנון ליתן משקל רב לשיקול הסביבתי, ובמיוחד בתכניות בעלות פוטנציאל לפגיעה משמעותית בסביבה, מחייבת אותו להנחות את עורך התסקיר לערוך תסקיר חלופות שבו ייבחנו חלופות תכנוניות אפשריות לתכנית המוצעת עצמה, ולא אך חלופות הנוגעות לאופן יישומה של אותה בחירה תכנונית. חובת מוסד התכנון ליתן משקל רב לשיקול הסביבתי, ובמיוחד בתכניות בעלות פוטנציאל לפגיעה משמעותית בסביבה, מחייבת כי עורך התסקיר יונחה לערוך תסקיר חלופות הבוחן חלופות תכנוניות ממשיות לתכנית המוצעת עצמה, ולא אך חלופות הנוגעות לאופן יישומה של אותה בחירה תכנונית.
9 8643bd58-a740-499c-b012-968de6cae7f2 1 accepted 0.9342 צומצמה הכפילות ("בהכרח") והניסוח חודד תוך שמירה מלאה על העיגון בציטוט-התומך; לא נוסף דין או סייג. הקמת מרחבים מוגנים דירתיים (ממ"דים) בבניין רב-קומות נעשית בהכרח בצורת "מגדל" — זה על גבי זה — מטעמים קונסטרוקטיביים ומיגוניים, ולפיכך לא ניתן להקים ממ"ד בקומה גבוהה ללא בסיס קונסטרוקטיבי בקומה שמתחתיה. עיקרון טכני-תכנוני זה מהווה מושכלת יסוד שניתן להניחה בפרשנות הוראות בינוי. הקמת מרחבים מוגנים דירתיים (ממ"דים) בבניין רב-קומות נעשית בצורת "מגדל", זה על גבי זה, מטעמים קונסטרוקטיביים ומיגוניים, ולפיכך לא ניתן להקים ממ"ד בקומה גבוהה ללא בסיס קונסטרוקטיבי לממ"ד בקומה שמתחתיה. נתון טכני-תכנוני זה מהווה מושכלת יסוד שניתן להניחה בפרשנות הוראות בינוי.
10 a82d1f17-351c-4aac-a5da-9d24bd87760d 1 accepted 0.9477 חודד הקשר בין ההרמוניה החקיקתית למקור הסמכות (החוק המסמיך) שעולה מהנימוק, ולוכדו 'כללי פרשנות מקובלים' במקום 'עקרונות פרשניים'; לא נוסף דין שאינו במקורות. מונח שתכנית נוקטת בו מבלי להגדירו אינו מתפרש בחלל ריק אלא לפי עקרונות פרשניים מקובלים; עקרונות של הרמוניה חקיקתית מוליכים להעניק למונח כזה את המשמעות שניתנה לו בחוק התכנון והבנייה. מונח שתכנית נוקטת בו מבלי להגדירו אינו מתפרש בחלל ריק אלא לפי כללי פרשנות מקובלים, ושיקול ההרמוניה החקיקתית מוליך להעניק לו את המשמעות שניתנה לאותו מונח בחוק התכנון והבנייה כחוק המסמיך.
11 dbcde5e1-78a9-4c47-a22a-1e4ef1a42664 1 accepted 0.9237 חודד שהעיגון נשען על תיחום התחולה בקו הכחול (כעולה מהנימוק והציטוט) והניסוח הודק, בלי להוסיף דין או סייג שאינו במקורות. תוכנית מתאר אינה קובעת הוראות נורמטיביות מחייבות ביחס לשטח המצוי מחוץ לתחומה (מחוץ לקו הכחול), גם כאשר נספח (כגון נספח תחבורתי) כולל איור או תרשים המדגים את אופן השתלבות התוכנית עם המרקם והמערך הקיים שמחוץ לגבולותיה; לאיור מסוג זה אופי מדגים-מנחה ואין בו כדי להחיל הסדר תכנוני מעבר לקו הכחול. תחום תחולתה הנורמטיבית של תוכנית מתאר מתוחם בקו הכחול, ואין היא קובעת הוראות מחייבות ביחס לשטח שמחוצה לו; איור או תרשים בנספח (כגון נספח תחבורתי) המדגים את אופן השתלבות התוכנית עם המרקם והמערך הקיים מחוץ לגבולותיה הוא בעל אופי מדגים-מנחה בלבד ואין בו כדי להחיל הסדר תכנוני מעבר לקו הכחול.
12 40fd0045-2c91-4b91-bf3d-94df86849917 1 accepted 0.9487 חודד שהמבחן מהותי ולא פורמלי (מעוגן בנימוק) והוסר עומס לשוני; התוכן זהה למקור. ניתן להוציא היתר בנייה על סמך תכנית מתאר מקומית, מבלי להידרש לתכנית מפורטת, רק מקום שהתכנית כוללת הוראות ברמת פירוט מספקת; כותרתה הפורמלית של התכנית ("מפורטת") אינה מכרעת, ומידת הפירוט הנדרשת עשויה להימצא גם בתכנית מתאר מקומית. מקום שהתכנית קובעת עקרונות כלליים בלבד, אין היא יכולה לשמש בסיס למתן היתרים. היתר בנייה ניתן להוצאה על סמך תכנית מתאר מקומית, בלא תכנית מפורטת, רק כאשר התכנית כוללת הוראות ברמת פירוט מספקת; המבחן הוא מהותי — מידת הפירוט המצויה בתכנית בפועל — ואינו תלוי בכותרתה הפורמלית, כך שהפירוט הנדרש עשוי להימצא גם בתכנית מתאר מקומית. תכנית הקובעת עקרונות כלליים בלבד אינה יכולה לשמש בסיס למתן היתרים.
13 9bcc8c7b-2fc6-4b64-b00f-de721161afe9 1 accepted 0.9204 זוקק לניסוח כללי הנשען על אבחנת המקור בין שימוש ישיר במקרקעין לבין הפקת 'פירותיהם' בהשכרה; הוסרה הנמקת ה'פעילות המסחרית' שאינה הכרחית והודגשה אי-הרלוונטיות של ייעוד התמורה. פטור ממס/היטל למוסד ציבורי לפי סעיף הפטור הרלוונטי חל אך ורק כאשר המקרקעין עצמם משמשים או מיועדים לשמש במישרין את מטרות המוסד. השכרת המקרקעין לצד שלישי — גם אם דמי השכירות מועברים במלואם לצרכי המוסד — אינה מזכה בפטור, באשר מדובר בפעילות מסחרית ולא בשימוש ישיר במקרקעין למטרות המוסד. פטור ממס/היטל למוסד ציבורי לפי סעיף הפטור הרלוונטי חל אך ורק מקום שבו המקרקעין עצמם משמשים או מיועדים לשמש במישרין את מטרות המוסד; שימוש עקיף בלבד — כגון הפקת פירות מן המקרקעין בדרך של השכרתם — אינו מזכה בפטור, ואין נפקא מינה שהתמורה מופנית כולה לקידום מטרות המוסד.
14 4cee2a9f-6510-4bea-a928-713f5ed39b39 1 drift_rejected 0.7738 drift 0.774 < floor 0.8 היטל ההשבחה הוא בן-זוגו הראוי של הפיצוי לפי סעיף 197 לחוק התכנון והבניה: כשם שבעל מקרקעין זכאי לפיצוי מקום שתכנית פגעה במקרקעיו, כך מוטל עליו לשאת בהיטל השבחה כאשר התכנית השביחה את מקרקעיו — מי שנתעשר אך בשל פעילות נורמטיבית-תכנונית של רשויות הציבור ראוי שישתף את הקהילה באותה התעשרות. היטל ההשבחה מושתת על ההיגיון שמי שמקרקעיו הושבחו אך בשל פעילות נורמטיבית-תכנונית של רשויות הציבור ראוי שישתף את הקהילה בהתעשרות שצמחה לו ממנה.
15 5cec0ebd-fa6d-4cf0-9443-45cd2d49981d 1 abstained no change proposed תכנית שאינה מביאה בפועל לשינוי בהיקף הזכויות או להשבחת שווי הנכסים שבתחומה — לרבות מקום שזכויותיה זהות הלכה למעשה לאלה שכבר התאפשרו מכוח תכנית קודמת שעמדה בתוקף במצב הקודם — אינה תכנית משביחה ואין בה כדי להקים חבות בהיטל השבחה. תכנית שאינה מביאה בפועל לשינוי בהיקף הזכויות או להשבחת שווי הנכסים שבתחומה — לרבות מקום שזכויותיה זהות הלכה למעשה לאלה שכבר התאפשרו מכוח תכנית קודמת שעמדה בתוקף במצב הקודם — אינה תכנית משביחה ואין בה כדי להקים חבות בהיטל השבחה.
16 dbb7a22a-f571-4fd1-ac61-308ef5ac197e 1 drift_rejected 0.7623 drift 0.762 < floor 0.8 בפרשנות תכנית בנייה חלים עקרונות פרשנות החוק, ולפיכך יש להתחקות אחר תכלית התכנית כדי לברר את משמעותה ולהכריע בין מרכיביה. בפרשנות תכנית בנייה חלים עקרונות פרשנות החוק, ויש להתחקות אחר תכלית התכנית כדי לברר את משמעותה וליישב בין מרכיביה.
17 d2311380-92b3-4c67-858d-b71988ca8e8a 1 accepted 0.9609 הוסרה התוספת 'על פי פרמטרים מקובלים ואמות מידה ברורות' שאינה מעוגנת בציטוט-המקור או בנימוק; שאר הניסוח נשען על הציטוט (אין באישור משום אישור תכנוני) ועל הנימוק (בחינה עצמאית של מיקום וחלופות). הכרזה על תכנית כפרויקט תשתית לאומית, וכן הזיקה למקרקעין העומדת בבסיס ההכרזה, אינן מהוות אישור תכנוני ואינן כובלות את שיקול דעתם של מוסדות התכנון; על מוסד התכנון לבחון באופן עצמאי את התאמת המיקום המוצע מבחינה תכנונית ואת קיומן של חלופות עדיפות, על פי פרמטרים מקובלים ואמות מידה ברורות. הכרזה על תכנית כפרויקט תשתית לאומית, וכן הזיקה למקרקעין העומדת בבסיס ההכרזה, אינן מהוות אישור תכנוני ואינן כובלות את שיקול דעתם של מוסדות התכנון; על מוסד התכנון לבחון באופן עצמאי את התאמת המיקום המוצע מבחינה תכנונית ואת קיומן של חלופות עדיפות.
18 fd9dba56-a9ad-424f-96db-ab6e733549a8 1 accepted 0.9037 הניסוח הודק לעיקרון המעוגן בציטוט (חוקיות + הליך הוגן וראוי) ובנימוק (קניין + ודאות ויציבות), והוסרה התוספת בדבר 'כל מוכר וקונה יוכלו לדעת מראש' שהרחיבה מעבר למקור. גביית היטל השבחה כפופה לעיקרון החוקיות ולחובת הרשות לקיים הליך גבייה הוגן וראוי; נוכח זכות הקניין של הנישום בכספו, יש לעצב את ההיטל באופן המבטיח ודאות ויציבות במדיניות המס, כך שכל מוכר וקונה יוכלו לדעת מראש את נטל המס החל עליהם. עיקרון החוקיות חל גם על גביית היטל השבחה ומחייב את הרשות לקיים הליך גבייה הוגן וראוי; נוכח זכות הקניין של הנישום בכספו, יש לעצב את ההיטל באופן המבטיח ודאות ויציבות במדיניות המס.
19 f9fce831-ff42-4d78-bd75-cd7efe86c113 1 accepted 0.8955 הוסר הפירוט "מתנגדים ואחרים" שאינו עולה מהציטוט-התומך, והניסוח הודק לליבת העיקרון — שמירת הזכות לתבוע פיצוי ואי-חסימתה על הסף, ללא הכרעה בשאלת עצם הזכאות. שינוי ייעוד מקרקעין הנעשה בדרך התכנונית של שינוי תכנית בניין עיר משמר את זכותם של מתנגדים ואחרים לבקש פיצויים בגין הפגיעה במקרקעין; זכות זו אינה נחסמת על הסף, וזאת מבלי לקבוע אם בנסיבות העניין אכן קמה זכות לפיצוי. שינוי ייעודם של מקרקעין הנעשה בדרך התכנונית של שינוי תכנית בניין עיר משמר את הזכות לתבוע פיצויים בגין הפגיעה במקרקעין ואינו חוסם זכות זו על הסף, וזאת מבלי להכריע אם בנסיבות העניין אכן קמה זכות לפיצוי.
20 634f781c-18b6-46d0-98b4-13da81259efe 1 accepted 0.9033 חודד הקשר הסיבתי ("שכן") ונוסף כי הפגם בפרסום פוגע תחילה בזכות ההתנגדות — מעוגן בנימוק שלפיו אי-מילוי דרכי הפרסום פוגע בזכות בעלי העניין להתנגד; לא נוסף דין חדש. חובת הפרסום של תכנית וזכות ההתנגדות לה הן שני צדדים של אותו עיקרון, וקיומה התקין של חובת הפרסום הוא תנאי להבטחת הליך הגשת התנגדויות אפקטיבי; קיום פגום של דרכי הפרסום שנקבעו עלול לפגום בתוקפו של הליך התכנון. חובת הפרסום של תכנית וזכות ההתנגדות לה הן שני צדדים של אותו עיקרון, שכן קיומה התקין של חובת הפרסום הוא תנאי להבטחת הליך התנגדויות אפקטיבי; קיום פגום של דרכי הפרסום שנקבעו עלול לפגוע בזכות ההתנגדות ולפגום בתוקפו של הליך התכנון.
21 825663c8-d9fa-4070-9953-96c899872b8f 1 accepted 0.904 שוּנה למבנה ההשוואתי 'ככל ש... כך' הנאמן לציטוט-המקור, וזוקק לניסוח קצר ורציף יותר ללא שינוי בתוכן המעוגן. במסגרת דוקטרינת ה"רצף התכנוני", קיומה של תכנית מאוחרת המשחררת את ההקפאה, וכן קוצר פרק הזמן שחלף ממועד אישור התכנית הראשונה (שנועדה להיות זמנית ולחול לתקופה מוגבלת) ועד אישור התכנית המאוחרת — מגדילים את הנטייה להכיר בזיקה הייחודית בין שתי התכניות ולראותן כרצף תכנוני אחד. במסגרת דוקטרינת 'הרצף התכנוני', ככל שפרק הזמן שחלף בין אישור תכנית ראשונה — שנועדה להיות זמנית ולחול לתקופה מוגבלת — לבין אישור תכנית מאוחרת המשחררת את ההקפאה קצר יותר, כך גדלה הנטייה להכיר בזיקה הייחודית שביניהן ולראותן כרצף תכנוני אחד.
22 171141d4-32c3-4f8f-a48a-1040eba1c904 1 accepted 0.879 מיקדתי את העיקרון בליבת המקור — שיקול דעת פרטני לאור הנסיבות מול משקל ראוי לשלטון החוק; הסרתי את 'הימנעות מקביעות מוחלטות' שאינה עולה מפורשות מהציטוט-התומך. בהקשר של עבריינות בניה על מוסד התכנון להימנע מקביעות מוחלטות, ולהפעיל את שיקול דעתו לאור הנסיבות הפרטיקולריות של המקרה, ובלבד שהשיקול של שמירה על שלטון החוק יזכה למשקל ראוי בהחלטה. בהקשר של עבריינות בנייה נדרש ממוסד התכנון להפעיל שיקול דעת פרטני לאור הנסיבות הקונקרטיות של המקרה, ובלבד שהשיקול של שמירה על שלטון החוק יזכה למשקל ראוי בהחלטה.
23 f34c51cf-f655-4df9-8611-14c4c2d54828 1 accepted 0.8535 פושט את פתיח 'סיווג זכויות שמקנה תכנית לצורך השאלה' לכדי ניסוח ישיר של עיתוי החיוב; שומר על העיגון המהותי (היקף שיקול הדעת ותחום ההתפרשות) ועל קריטריון טיב התכנית כלשון המקור. סיווג זכויות שמקנה תכנית לצורך השאלה אם יש להטיל היטל השבחה בשלב אישור התכנית או רק בשלב הוצאת היתר הבנייה אינו נחתך לפי טיב התכנית (תמ"א או אחרת), אלא נבחן באופן מהותי, ובתלות, בין היתר, בהיקף שיקול הדעת המוקנה במסגרתה ובתחום התפרשותה. השאלה אם חיוב בהיטל השבחה מכוח תכנית קם בשלב אישור התכנית או רק בשלב הוצאת היתר הבנייה אינה נחתכת לפי טיב התכנית (תמ"א או אחרת), אלא נבחנת באופן מהותי, בהתאם, בין היתר, להיקף שיקול הדעת המוקנה במסגרתה ולתחום התפרשותה.
24 d652b0f7-7101-41c2-977a-a5a65c3d79e1 1 accepted 0.9236 אוחד למשפט אחד עם סדר לוגי (תנאי→נקודת-התחלה→תוצאה), הוסרה הכפילות בין שני המשפטים; כל הרכיבים מעוגנים בציטוט-התומך. מקום שבקשה להיתר לא פורסמה לציבור, אין לזקוף לחובת בעל דין את האיחור בהגשת בקשה להארכת מועד בגין התקופה שקדמה למועד שבו נודע לו בפועל על הבקשה ועל הבינוי מכוחה; מירוץ האיחור מתחיל ממועד הידיעה בפועל. מקום שבקשה להיתר לא פורסמה לציבור, מירוץ המועד להגשת בקשה להארכת מועד מתחיל ממועד שבו נודע לבעל הדין בפועל על הבקשה ועל הבינוי מכוחה, ואין לזקוף לחובתו את האיחור בגין התקופה שקדמה לכך.
25 69e10a96-ae26-4bf2-822b-768bf032fa14 1 drift_rejected 0.7789 drift 0.779 < floor 0.8 אישור לשימוש חורג ניתן כחריג ובצמצום, ולא כדבר שבשגרה — עיקרון מושרש בפסיקה החל על בקשות לשימוש חורג. אישור לשימוש חורג ניתן כחריג ובצמצום, ולא כדבר שבשגרה.
26 0eeebf3c-857b-48cc-ab8e-ec44caa510f4 1 accepted 0.9216 הוספתי 'ראוי' ואת רכיב ההגנה 'על הציבור' המופיעים מפורשות בציטוט-המקור, לזיקוק נאמן יותר; שאר הניסוח נשמר. התחשבות בעבירות בנייה שבוצעו בנכס במסגרת ההכרעה בבקשה להיתר אינה בגדר ענישה נוספת מעבר להליך הפלילי, אלא שיקול תכנוני לגיטימי ומתחייב שנועד לשלול את התמריצים לביצוע עבירות על דיני התכנון והבנייה ולהגן על שלטון החוק. התחשבות בעבירות בנייה שבוצעו בנכס במסגרת ההכרעה בבקשה להיתר אינה בגדר ענישה נוספת מעבר להליך הפלילי, אלא שיקול תכנוני ראוי, לגיטימי ומתחייב שנועד לשלול את התמריצים לביצוע עבירות על דיני התכנון והבנייה ולהבטיח את ההגנה על שלטון החוק ועל הציבור.
27 c3f67090-5981-4d3e-90f8-a4f44c933d58 1 accepted 0.97 זוקק וקוצר הניסוח ל־'עצמאית ומוסיפה' תוך שמירה על העיגון במקור; הוסר כפל-הלשון 'נוספת ועצמאית' ומבנה ה־'שכן'. דרישת חתימת כל בעלי הזכויות במגרש על הבקשה להקלה לפי תקנה 2(9)(א)(3) לתקנות סטייה ניכרת היא דרישה נוספת ועצמאית, מעבר לדרישת הסכמת כל בעלי הזכויות הקבועה בתקנות הרישוי לכל בקשה להיתר — שכן זו האחרונה חלה ממילא אף על בקשה שאינה כרוכה בסטייה מתכנית. דרישת חתימת כל בעלי הזכויות במגרש על בקשה להקלה לפי תקנה 2(9)(א)(3) לתקנות סטייה ניכרת היא דרישה עצמאית ומוסיפה על דרישת הסכמת כל בעלי הזכויות הקבועה בתקנות הרישוי לכל בקשה להיתר, החלה ממילא אף על בקשה שאינה כרוכה בסטייה מתכנית.
28 20b7aae6-ae8c-4e41-88c7-db28c81d5796 1 accepted 0.9433 הניסוח הקיים כבר מעוגן במלואו בציטוט-התומך, כללי ובלתי-תלוי-תיק; לא נדרש שינוי מהותי מלבד תיקון-ניסוח זניח. טענות המכוונות נגד עצם ההכרזה על מתחם כמתחם מועדף לדיור הן מוקדמות מטבען, ומקומן להתברר רק בשלבים התכנוניים הקונקרטיים שיבואו בהמשך ולא בשלב ההכרזה עצמה. טענות המכוונות נגד עצם ההכרזה על מתחם כמתחם מועדף לדיור הן מוקדמות מטבען, ומקומן להתברר בשלבים התכנוניים הקונקרטיים שיבואו בהמשך ולא בשלב ההכרזה עצמה.
29 8cf51166-4d7b-4d50-bc69-4d3ca6d92d13 1 abstained no change proposed אין להתערב בשומתו של שמאי מייעץ אלא מקום שנפלו בה שגיאות ברורות; בהיעדר שגיאות כאלה השומה עומדת בעינה. אין להתערב בשומתו של שמאי מייעץ אלא מקום שנפלו בה שגיאות ברורות; בהיעדר שגיאות כאלה השומה עומדת בעינה.
30 917c4859-dbdd-4a0b-b76b-a9707f27834e 1 abstained no change proposed לצורך בחינת השבחה כתוצאה מהקלה יש להשוות את שווי השוק האובייקטיבי של המקרקעין לאחר מתן ההקלה לעומת שווי השוק שלהם ערב מתן ההקלה; ההשבחה היא ההפרש בין שני ערכי שוק אלו. לצורך בחינת השבחה כתוצאה מהקלה יש להשוות את שווי השוק האובייקטיבי של המקרקעין לאחר מתן ההקלה לעומת שווי השוק שלהם ערב מתן ההקלה; ההשבחה היא ההפרש בין שני ערכי שוק אלו.
31 0a86b3c0-4781-40e6-8354-1ffc21acfb09 1 accepted 0.9019 ליטוש ניסוחי קל בלבד (תחביר ותמצות) תוך שמירה מלאה על תוכן העיקרון המעוגן בציטוט-התומך; הוסרה הכפילות "שינוי תכנוני צפוי" מול "שינוי בתכונות". מקום בו צפוי שינוי בתכונות ובשימושי המקרקעין שסיכויי התרחשותו קרובים וממשיים, ותכנית שהתקבלה היא שסתמה את הגולל על אותו שינוי צפוי — מתקיים קשר סיבתי בינה לבין הפגיעה, וניתן להגדירה כ"תכנית פוגעת" המקימה עילה לפיצוי לפי סעיף 197 לחוק התכנון והבניה. מקום בו צפוי שינוי בתכונות המקרקעין ובשימושיהם שסיכויי התרחשותו קרובים וממשיים, ותכנית שהתקבלה היא הסותמת את הגולל על אותו שינוי צפוי, מתקיים קשר סיבתי בינה לבין הפגיעה, וניתן להגדירה כ"תכנית פוגעת" המקימה עילה לפיצוי לפי סעיף 197 לחוק התכנון והבניה.
32 ae4e15d4-cc20-4c99-95be-06b89f3a3ebd 1 accepted 0.8701 נוספה ההיגיון הפרשני המעוגן במקור ('פרשנות מצמצמת') והודגשה ההבחנה בין תמורה הונית ממכר לבין תמורה פירותית שוטפת, ללא הוספת דין שאינו במקורות. הפטור מהיטל השבחה לפי החלופה השנייה בסעיף 19(ב)(4) לתוספת השלישית לחוק התכנון והבניה מוגבל למימוש זכויות בדרך של מכר בלבד, ואינו חל על תמורה פירותית כגון דמי שכירות. הפטור מהיטל השבחה לפי החלופה השנייה שבסעיף 19(ב)(4) לתוספת השלישית לחוק התכנון והבניה מתפרש בצמצום וחל על מימוש זכויות בדרך של מכר בלבד, ואינו משתרע על תמורה פירותית שוטפת כגון דמי שכירות.
33 04a3ced3-e5a2-40a1-8f50-b498c80693de 1 accepted 0.9157 חודד שההסדר אינו 'ממצה את הפלוגתא' (מקור הנימוק) ושהבקשה החדשה הוגשה בתום התקופה, תוך שמירה על כלליות; הכל מעוגן בציטוט-התומך. הסדר פשרה שנערך ביחס לבקשה קודמת והוגבל בזמן אינו מקים השתק פלוגתא ביחס להליכים עתידיים הנוגעים לבקשה חדשה; היעדר ההשתק עשוי להילמד אף מהתנהגות בעל הדין שפעל במתווה חדש חרף ההסדר. הסדר פשרה שנערך ביחס לבקשה קודמת והוגבל בזמן אינו ממצה את הפלוגתא ואינו מקים השתק פלוגתא ביחס להליכים עתידיים הנוגעים לבקשה חדשה; היעדר ההשתק עשוי להילמד אף מהתנהגות בעל הדין עצמו, שבתום התקופה הגיש בקשה חדשה חרף ההסדר.
34 73ab5fe3-a5fe-4140-be81-943353cc959b 1 accepted 0.8944 הוקדם כלל-החובה (העמדת התשתית הסביבתית עובר להחלטה) לראש המשפט וההבחנה בין העיתויים נוסחה בתמצות; לא נוסף דין שאינו במקור. כאשר לתוכנית השלכות סביבתיות מהותיות, קיים שוני מהותי בין הגשת נספח/מסמך סביבתי הבוחן אף חלופות טרם אישור התוכנית וכאשר דנים בתוכנית עצמה, לבין קבלת הנספח הסביבתי רק לאחר אישור התוכנית; על מוסד התכנון להעמיד בפניו את התשתית הסביבתית, לרבות בחינת חלופות, עובר להחלטה על אישור התוכנית ולא בדיעבד. כאשר לתוכנית השלכות סביבתיות מהותיות, על מוסד התכנון להעמיד בפניו את התשתית הסביבתית, לרבות בחינת חלופות, עובר להחלטה על אישור התוכנית ולא בדיעבד; קיים שוני מהותי בין מסמך סביבתי הבוחן חלופות המוגש טרם האישור ובעת הדיון בתוכנית עצמה, לבין נספח סביבתי המתקבל רק לאחר אישור התוכנית.
35 37ca3f6c-17b3-4981-b916-2594e32535db 1 abstained no change proposed סוגיית חלף היטל השבחה אינה מתבררת במסגרת הערר על שומת היטל ההשבחה, אלא יש לבררה מול רשות מקרקעי ישראל בהליכים המתאימים לכך. סוגיית חלף היטל השבחה אינה מתבררת במסגרת הערר על שומת היטל ההשבחה, אלא יש לבררה מול רשות מקרקעי ישראל בהליכים המתאימים לכך.
36 148792a4-29a6-41c4-8f44-2aa1565b4972 1 accepted 0.8592 ניסוח הודק וקוצר תוך שמירה על שני יסודות המקור — תכלית-גבייה בלבד וחובת ההנפקה בהיעדר חוב; הוסר ה'כגון' הנגזר מעובדות-התיק. סמכות הרשות המקומית לעכב מתן אישורים הדרושים לרישום עסקה בלשכת רישום המקרקעין כל עוד בעל הנכס חב לה חוב כספי, היא כלי גבייה גרידא; בהעדר חוב אין להשתמש בסמכות זו למטרות זרות (כגון אכיפת דיני תכנון ובנייה), ועל הרשות להנפיק אישור על העדר חובות. סמכות הרשות המקומית להתנות מתן אישור הדרוש לרישום עסקה בלשכת רישום המקרקעין בהיעדר חוב כספי של בעל הנכס היא כלי גבייה בלבד; אין להפעילה למטרות זרות, ובהיעדר חוב חבה הרשות להנפיק את האישור.
37 9f77e720-74bf-4a5a-8bdf-09ed2bf698c4 1 accepted 0.9044 תומצת וזוקק; הוסר רף 'ראיות חותכות' שאינו עולה מהציטוט-התומך אלא מן הנימוק בלבד, ונשמרו רכיבי החזקה והעברת נטל הסתירה המעוגנים במקור. משפורסמה תכנית מיתאר ברשומות חלה עליה החזקה שבסעיף 34א לפקודת הראיות, שלפיה דבר שפורסם ברשומות נעשה כראוי; נטל ההוכחה כי נפל שיבוש בהליכי הפרסום או בתוכן מוטל על הטוען נגד תוכן התכנית, ועליו להביא ראיות חותכות לסתירת החזקה. תכנית מיתאר שפורסמה ברשומות חוסה תחת החזקה שבסעיף 34א לפקודת הראיות, שלפיה דבר שפורסם ברשומות חזקה שנעשה כראוי; נטל הסתירה — בין באשר לתקינות הליך הפרסום ובין באשר לתוכן הפרסום — מוטל על הטוען נגד התכנית.
38 32346580-8a01-4db4-b9d7-ca209c18912b 1 abstained no change proposed הוראות הפטור מהיטל השבחה יש לפרש בצמצום ובהתאם לתכליותיהן. הוראות הפטור מהיטל השבחה יש לפרש בצמצום ובהתאם לתכליותיהן.
39 727fd46f-bdd2-46c7-8ae2-bececed160bb 1 accepted 0.8954 הניסוח הודק והופשט ("תכלית חובת הפיצוי" במקום כפל-לשון), תוך שמירה מלאה על שני יסודות המקור — ההגנה על הקניין וחובת הפיצוי — ועל הנימוק נגד צמצום מלאכותי. פרשנות חוק התכנון והבנייה בעניין פיצוי בגין פגיעה במקרקעין צריכה להיעשות באופן המתיישב עם ההגנה על זכות הקניין ועם החובה לפצות את בעל הזכות על פגיעה במקרקעיו, ובאופן שאינו מתמרץ את הרשות לפעול באופן מלאכותי לצמצום חובת הפיצוי. פרשנות הוראות חוק התכנון והבנייה בדבר פיצוי בגין פגיעה במקרקעין תיעשה באופן המתיישב עם ההגנה על זכות הקניין ועם תכלית חובת הפיצוי לבעל הזכות הנפגעת, ואין לאמץ פרשנות המתמרצת את הרשות לצמצם באופן מלאכותי את חובת הפיצוי.
40 a4d28e42-139a-4350-8670-0d38e3d0ea90 1 accepted 0.8581 חודדה ההבחנה בין קיום עילת הפיצוי לבין אובדן הזכות בהתיישנות והוסף שם החוק לסעיף 197; הניסוח נותר מעוגן בציטוט-התומך בלבד. יש להבחין בין השאלה אם התגבשה 'פגיעה' המקימה עילה לפי סעיף 197 לבין השאלה אם הזכות לפיצוי אבדה מחמת חלוף תקופת ההתיישנות; אובדן הזכות עקב התיישנות אינו מלמד על אי-התקיימות דרישת ה'פגיעה'. יש להבחין בין השאלה אם התגבשה 'פגיעה' המקימה עילה לפיצוי לפי סעיף 197 לחוק התכנון והבניה לבין השאלה אם הזכות לפיצוי אבדה מחמת חלוף תקופת ההתיישנות; אובדן הזכות עקב התיישנות אינו מלמד על אי-התקיימותה של דרישת ה'פגיעה'.
41 7b38fbfd-315a-4d6c-a361-26d1e5b442ce 1 accepted 0.9371 החלפת 'לבדה' ב'כשלעצמה' לרגיסטר נקי, ושיקוף הנימוק כי מדובר בשיקול אחד מני רבים הטעון איזון מול עמידה בסדרי הדין — הכול מעוגן בציטוט ובנימוק. פגיעה אפשרית בכספי ציבור הנובעת מדחיית הבקשה להארכת מועד אינה יכולה לבדה לשמש טעם מיוחד המצדיק הארכת מועד, ויש לאזנה אל מול השיקול של עמידה בסדרי הדין. פגיעה אפשרית בכספי ציבור הנובעת מדחיית בקשה להארכת מועד אינה יכולה כשלעצמה לשמש טעם מיוחד המצדיק הארכת מועד, אלא היא שיקול אחד מבין שיקולים שיש לאזנם אל מול ערך עמידה בסדרי הדין.
42 ebc6babb-5d24-47d5-8bff-15e09b7734e3 1 accepted 0.9386 חודד הניסוח כך שההעדפה נובעת מהיות החלופה הפוגענית פחות בקניין (כעולה מהציטוט), ונוקה רישום החלופה ל"מבין שתי חלופות"; לא נוסף דין שאינו במקור. לאור ההגנה החוקתית על הקניין הפרטי המעוגנת בסעיף 3 לחוק-יסוד: כבוד האדם וחירותו, מקום שבו קיימות שתי חלופות תכנוניות מאושרות כדין, יש להעדיף את החלופה המקלה עם בעל המקרקעין. לאור ההגנה החוקתית על הקניין הפרטי המעוגנת בסעיף 3 לחוק-יסוד: כבוד האדם וחירותו, מבין שתי חלופות תכנוניות המאושרות כדין יש להעדיף את החלופה המקלה עם בעל המקרקעין, בהיותה הפוגענית פחות בקניינו.
43 7c537b2c-5f2d-4097-b917-90593cf7731e 1 accepted 0.8652 הוסרה הסיפה בדבר אי-החובה להעלות על הכתב או לערוך כמסמך נפרד, שאינה עולה מהציטוט-התומך ומהנימוק; הושאר גרעין העיקרון המעוגן בזכות ההתייעצות לפי סעיף 8 ובהיעדר זכות טיעון נוספת. מוסד תכנון רשאי לערוך התייעצויות פנימיות עם יועצים מקצועיים ואינו חייב להעמיד אותן לעיונו של מגיש תכנית או של מתנגד לה; עמדת היועץ המקצועי היא חלק מהדיון הפנימי של מוסד התכנון, אין חובה שתועלה על הכתב או תיערך כמסמך נפרד, ואין בה כדי להקים זכות טיעון נוספת. מוסד תכנון רשאי לערוך התייעצויות פנימיות עם יועצים מקצועיים ואינו חייב להעמידן לעיונו של מגיש תכנית או של מתנגד לה; התייעצות פנימית זו אינה חלק מן ההליך החיצוני המקנה זכות טיעון, ואין בה כדי להקים זכות טיעון נוספת.
44 2ee8e563-83b3-459f-a8c8-5fae31246d99 1 accepted 0.8937 זוקק למשפט אחד נקי; הוסר "פטור" שאינו עולה מן הציטוט (העוסק בזכויות בלבד) והוסרה הכפילות, תוך שמירה על המבחן הכמותי המעוגן במקור. לעניין הזכאות לפטור/לזכויות במסלול חיזוק לפי תמ"א 38, המבחן הוא היקף הזכויות המבוקש ביחס למותר (כגון אי-חריגה מהיקף קומות מותר), ואילו אופן הבינוי או סדר הבינוי אינו משנה את הזכאות כל עוד מופע הבינוי אינו חורג מההיקף המותר. הזכאות לזכויות בנייה במסלול החיזוק לפי תמ"א 38 נבחנת לפי היקף הזכויות המבוקש ביחס למותר, ולא לפי אופן הבינוי או סדר ביצועו, כל עוד מופע הבינוי אינו חורג מן ההיקף המותר.
45 fe31c01d-d4bf-4e4a-8b99-8c06a5a5fee5 1 accepted 0.9032 זוקק וקוצר לניסוח כללי אחד החל על כל מגרש, תוך שמירת שני יסודות-העיגון: ההסתייגות המפורשת בתרש"צ והסדרת הייעודים בתב"ע הקודמת; לא נוסף דין או סייג. כאשר תכנית בניין עיר קודמת הסדירה את ייעודי הקרקע במגרש, ותרש"צ מאוחרת קובעת מפורשות כי אין בה כדי לפגוע או לשנות הוראות תכניות שאושרו לפי חוק התכנון והבניה — לא ניתן לאשר מכוח התרש"צ המאוחרת בינוי נוסף הנוגד את הקבוע בתכנית בניין העיר הקודמת. תרש"צ מאוחרת שנקבע בה במפורש כי אין בה כדי לפגוע או לשנות הוראות תכניות שאושרו לפי חוק התכנון והבניה, אינה יכולה לשמש בסיס לאישור בינוי נוסף הנוגד את הוראותיה של תכנית בניין עיר קודמת שהסדירה את ייעודי הקרקע במגרש.
46 16beb091-61de-4e7b-a360-7bb81b4fe4d0 1 accepted 0.8668 הוסר הרישא "אינה מצטמצמת לפגמים קיצוניים בלבד" שאינו עולה מהציטוט-התומך; נותר העיקרון המעוגן ישירות במקור — חסר בהנמקה השולל ביקורת אפקטיבית מקים סמכות וחובת התערבות. ביקורת שיפוטית על שומת היטל השבחה אינה מצטמצמת לפגמים קיצוניים בלבד; מקום שבו הנמקת השומה לוקה בחסר באופן שאינו מאפשר ביקורת שיפוטית אפקטיבית, מוסמך בית המשפט — ואף נדרש — להתערב במידה הנדרשת. מקום שבו הנמקת שומת היטל השבחה לוקה בחסר באופן שאינו מאפשר ביקורת שיפוטית אפקטיבית, מוסמך בית המשפט — ואף נדרש — להתערב במידה הנדרשת.
47 5af13dd6-67dd-4398-9026-99c21834879b 1 accepted 0.8787 הוסר הסייג שאינו מעוגן במקור ('צרכים והיקפים נקודתיים הסוטים אך במעט'), והוחלף בנימוק התכנוני העולה מהנימוק שבמקור — צמצום חריגות כדי שלא יעקפו את הצורך בתיקון תכניות. היתר לשימוש חורג אינו ניתן כדבר שבשגרה אלא רק בנסיבות מיוחדות ויוצאות דופן; הכלל הוא שאין ליתן היתר לשימוש חורג, ורק במקרים חריגים — ולצרכים והיקפים נקודתיים הסוטים אך במעט מהקבוע בתכניות החלות — יוענק היתר שכזה. היתר לשימוש חורג אינו ניתן כדבר שבשגרה אלא רק בנסיבות מיוחדות וחריגות, שכן ההליך התכנוני נוטה לצמצם חריגות מתכנית כדי שאלה לא ישמשו אמצעי לעקיפת הצורך בהכנתן ובתיקונן של תכניות.
48 215332e9-1fef-44c5-8998-77e6df1ce55a 1 accepted 0.9428 שולב מהנימוק יסוד 'הציפייה להמשך ההליך' ו'איון תרומת התכניות המפורטות', שניהם מעוגנים בציטוט ובנימוק, תוך שמירה על ניסוח כללי ובלתי-תלוי-תיק. אין לקבוע את שווי המקרקעין במצב הקודם על בסיס השווי שלאחר אישור התכנית הארצית והתכנית המחוזית בלבד, שכן אלו מתוות מגמות ועקרונות כלליים ואינן כוללות הוראות קונקרטיות המקנות ודאות לשינוי הייעוד; קביעה כזו מתעלמת מחלק ניכר מההליך התכנוני המשביח שאיפשר את שינוי הייעוד ואת אישור התכניות המשביחות. אין לקבוע את שווי המקרקעין במצב הקודם על בסיס השווי שלאחר אישור התכנית הארצית והתכנית המחוזית בלבד, שכן תכניות אלו מתוות מגמות ועקרונות כלליים ויוצרות ציפייה להמשך ההליך התכנוני, ואינן כוללות הוראות קונקרטיות המקנות ודאות לשינוי הייעוד; קביעה כזו מתעלמת מחלק ניכר מההליך התכנוני המשביח שאיפשר את שינוי הייעוד ואת אישורן של התכניות המפורטות המשביחות, ומאיינת את תרומתן.
49 56e53183-e410-4f39-9561-6e63b5ba5e9c 1 accepted 0.9263 הוספת הטעם המעגן (מומחיות השמאי) המופיע בנימוק וזיקוק קל של הניסוח; עילות ההתערבות נותרו זהות למקור. ועדת הערר תיטה לאמץ את חוות דעתו של השמאי, והתערבותה בה מוגבלת ככלל למקרים חריגים — בהם נפלה טעות מהותית או דופי חמור, או שהשמאי נסמך על מסד עובדתי בלתי הולם, על הנחות לא הגיוניות, על תשתית משפטית חסרה או שגויה, או שלא סיפק הסבר מניח את הדעת לשאלות שנשאל. ועדת הערר תיטה לאמץ את חוות דעתו של השמאי מתוך הכרה במומחיותו, והתערבותה בקביעותיו תוגבל ככלל למקרים חריגים שבהם נפלה טעות מהותית או דופי חמור, או שחוות הדעת נסמכה על מסד עובדתי בלתי הולם, על הנחות בלתי הגיוניות או על תשתית משפטית חסרה או שגויה, או שהשמאי לא סיפק הסבר מניח את הדעת לשאלות שנשאל.
50 ac8ac719-cc4b-4f21-8bb8-ac788b395dd1 1 accepted 0.9271 זוקק העיקרון סביב היעדר בסיס-ההשוואה כטעם ל'אי-התאמה ואי-ישימות' (כלשון הציטוט) ונוסף סיוג-המראה בדבר תחולת הדלתא על השבחה תוספתית בלבד — שניהם עולים מהנימוק; הוסר ניסוח 'הטלת היטל ביתר במרבית המקרים' שאינו מעוגן בציטוט. במיזמי התחדשות עירונית הכוללים הריסה ובניה מחדש, וכן במיזמים המקודמים מכוח תמ"א 38, שבהם המצב התכנוני החדש יוצר מוצר תכנוני חדש בעל שונות מהותית מהמצב התכנוני שקדם לו — אין לחשב את היטל ההשבחה בשיטת הדלתא, משום ששיטה זו אינה מתאימה ואינה ישימה בנסיבות אלה וגורמת לעיוות ההשבחה ובמרבית המקרים להטלת היטל ביתר על הנישום. מקום שבו המצב התכנוני החדש יוצר מוצר תכנוני חדש בעל שונות מהותית מן המצב התכנוני שקדם לו — כבמיזמי התחדשות עירונית הכוללים הריסה ובנייה מחדש ובמיזמים מכוח תמ"א 38 — אין לחשב את היטל ההשבחה בשיטת הדלתא, שכן היעדר בסיס להשוואה בין המצב הקודם לחדש הופך שיטה זו לבלתי-מתאימה ובלתי-ישימה ומביא לעיוות שומת ההשבחה; שיטת הדלתא יפה רק להשבחה תוספתית השומרת על המצב התכנוני הקיים.
51 d7bb7e90-3f7b-4eb7-aafa-1e284a36c56c 1 drift_rejected 0.7961 drift 0.796 < floor 0.8 בתיקי פינוי-בינוי, אמידת ההשבחה הכוללת — בשלב שטרם החלת תחשיב הפטור — תיערך אך ורק לפי השיטה המסורתית: ההפרש שבין שווי המקרקעין לאחר אישור התכנית לבין שוויים טרם התכנית, תוך נטרול הציפיות הנובעות מההליך התכנוני. בפינוי-בינוי, ההשבחה הכוללת בשלב שטרם החלת תחשיב הפטור נאמדת אך ורק לפי השיטה המסורתית.
52 9e5397e6-e4af-4db0-8ed5-3e4cea124c0e 1 accepted 0.8759 הודק הניסוח למשפט אחד רציף וחד, תוך שמירה על שני רכיבי העיקרון המעוגנים בציטוט (בסיס בלעדי במסמכי התכנון וההיתר; איסור שומה על שימוש נטען חיצוני) ללא הוספת דין או סייג. שומת השבחה נערכת אך ורק על פי מסמכי התכנון הקיימים וההיתר שאושר, ולא על פי טענות ממקורות חיצוניים שאינם בהלימה למסמכים אלה. שמאי מקרקעין אינו רשאי להתעלם מהבינוי או מהשימוש שאושרו בהיתר ולערוך שומה על בסיס שימוש נטען אחר. שומת השבחה נערכת אך ורק על יסוד מסמכי התכנון וההיתר שאושר, ולא על פי טענות חיצוניות שאינן בהלימה למסמכים אלה; אין השמאי רשאי להתעלם מהבינוי או מהשימוש שאושרו בהיתר ולשום על בסיס שימוש נטען אחר.
53 704ace88-3cff-4cad-ad46-d6f5ce4ef72e 1 accepted 0.857 הוסרו השיקולים בדבר היחס בין הסעדים, התנהלות הצדדים ומורכבות ההליך — אינם עולים מהציטוט-התומך שמעגן רק זכאות להחזר ריאלי בכפוף למבחני סבירות ומידתיות. צד שזכה בהליך זכאי להחזר הוצאות ריאלי בגין שכר טרחת עורך דין והוצאות משפט שהוציא, ובלבד שההוצאות סבירות ומידתיות לניהול ההליך; בקביעת שיעורן יש לשקול את היחס בין הסעדים שנתבקשו לאלו שאושרו בפועל, את התנהלות הצדדים ואת מורכבות ההליך. צד שזכה בהליך זכאי להחזר הוצאות ריאלי בגין שכר טרחת עורך דין והוצאות משפט שהוציא, ובלבד שההוצאות סבירות ומידתיות לניהול ההליך.
54 61b8c56e-d312-40d4-bdf3-0ca96fe2ad8a 1 accepted 0.8345 הוסר רכיב 'הערות האזהרה' שאינו עולה מהציטוט-התומך, והגבלת היקף ההפקעה ל'דרוש באמת' עוגנה ישירות בנימוק; שאר העיקרון (כינון בחתימה+פרסום, חובת מידתיות) נשמר. הפקעה נוצרת על-ידי שילוב חתימת השר והפרסום יחדיו, ועליה להיות מידתית באופן שהפרסום והערות האזהרה ישקפו מידתיות זו ויגדירו את המרחב המופקע בהתאם לצורך הציבורי שבבסיסה. הפקעה מתכוננת בשילוב חתימת השר והפרסום, ומשאלה היוצרים אותה — עליהם לשקף את מידתיותה ולהגביל את היקף המופקע למה שדרוש באמת לצורך הציבורי שבבסיסה.
55 0dd1ab4a-928b-4720-8d29-11d6e041cd1f 1 accepted 0.9232 הניסוח הודק וצומצם תוך שמירה על אותם רכיבים המעוגנים בציטוט (אפשרות לשכנע בצורך בדיון בעל-פה והשלמת טיעון בכתב, ומניעות עקב אי-ניצול ההזדמנות); לא נוסף דין או סייג חדש. זכות הטיעון אינה מחייבת בהכרח קיום דיון פרונטלי בעל-פה; רשות מנהלית רשאית במסגרת סמכותה ושיקול דעתה להורות כי השלמת הטיעון תיעשה בכתב, ובלבד שהעמידה לצדדים הזדמנות לשכנע בצורך בדיון בעל-פה ולהשלים טיעון בכתב. צד שנמנע מלנצל הזדמנויות אלו ולא התנגד לבירור על יסוד החומר הכתוב מנוע מלטעון לפגם בזכות הטיעון. זכות הטיעון אינה מחייבת בהכרח דיון בעל-פה, ורשות מנהלית רשאית במסגרת שיקול דעתה להורות כי הטיעון יושלם בכתב, ובלבד שניתנה לצדדים הזדמנות לשכנע בצורך בדיון בעל-פה ולהשלים טיעונם בכתב; צד שנמנע מלנצל הזדמנויות אלו ולא התנגד לבירור על יסוד החומר הכתוב מנוע מלטעון לפגיעה בזכות הטיעון.
56 0b47b8ef-41eb-488e-89b2-a93532bd7f1e 1 accepted 0.8731 נוספו עקרונות השוויון, הצדק החלוקתי ואמון הציבור — שלושת היסודות שעליהם מעוגנת חובת הראיה הכוללת בציטוט-המקור — והם הושמטו בניסוח הקודם. ועדת ערר הדנה בעררים על שומות שמאים מכריעים שונים באותו מרחב תכנון נדרשת לראיה כוללת של מכלול השומות והטענות — השמאיות והמשפטיות — ואינה רשאית להסתפק בבחינה פרטנית של כל שומה בנפרד, אגב התעלמות מהתמונה הרחבה ומהיחס שבין השומה הקונקרטית שבפניה לבין הערכות השווי בכל מרחבי התכנית. ועדת ערר הדנה בעררים על שומות שמאים מכריעים שונים באותו מרחב תכנון נדרשת להתבונן במבט רחב על מכלול השומות שבאזור ולבסס את הכרעתה על ראיה כוללת זו, מתוך שקילת עקרונות השוויון, הצדק החלוקתי ואמון הציבור בהליכים; אין היא רשאית להסתפק בבחינה פרטנית של כל שומה בנפרד תוך התעלמות מהתמונה הרחבה ומהיחס שבין השומה הקונקרטית שבפניה לבין הערכות השווי בכלל מרחבי התכנית.
57 ba0c6103-baa3-4559-a6de-8ac24cbbeef4 1 accepted 0.9355 תוקן לניסוח הדוק יותר המעמיד את מבחן השימוש העתידי במרכז; כל הרכיבים מעוגנים בציטוט ובנימוק, ללא הוספת דין. במסגרת בחינת הזכאות לפטור מהיטל השבחה לפי סעיף 19(ג) לתוספת השלישית, מוקד הבדיקה לקיום דרישת הזהות בין המחזיק במקרקעין לבין החייב בהיטל אינו השימוש שנעשה בנכס בעבר, אלא השימוש העתידי המיועד בדירה שתיבנה — קרי האם היא נועדה לשמש למגורי החייב בהיטל או קרובו. בבחינת הזכאות לפטור מהיטל השבחה לפי סעיף 19(ג) לתוספת השלישית, דרישת הזהות בין המחזיק במקרקעין לבין החייב בהיטל נבחנת לפי השימוש העתידי המיועד בדירה שתיבנה — אם נועדה לשמש למגורי החייב או קרובו — ולא לפי השימוש שנעשה בנכס בעבר.
58 0fa1e979-b737-436f-878c-cc8f263ccbf5 1 abstained no change proposed היקף זכות הטיעון והשימוע ומתכונתם אינם קבועים אלא נגזרים מהנסיבות הקונקרטיות של העניין; ככל שההחלטה המינהלית צפויה לפגוע בזכות חשובה יותר ובאופן חמור יותר, כך מתעצמת חובת הרשות להעניק זכות טיעון רחבה ומשמעותית יותר. היקף זכות הטיעון והשימוע ומתכונתם אינם קבועים אלא נגזרים מהנסיבות הקונקרטיות של העניין; ככל שההחלטה המינהלית צפויה לפגוע בזכות חשובה יותר ובאופן חמור יותר, כך מתעצמת חובת הרשות להעניק זכות טיעון רחבה ומשמעותית יותר.
59 20be9db3-5a84-40c5-aa0e-ecb5020b5ec3 1 accepted 0.9518 איחוד שני המשפטים למשפט אחד רציף וצמצום מילולי; תוכן העיקרון, היקפו והנימוק זהים למקור ולא נוסף דין או סייג. מימוש זכויות בדרך של מכר, בטרם הוצאת היתר בניה, אינו מקים חבות בהיטל השבחה. זאת מחמת היעדר ודאות והקושי לאמוד את שיעור ההשבחה בטרם ניתן היתר בניה בפועל. מימוש זכויות בדרך של מכר, בטרם הוצאת היתר בניה, אינו מקים חבות בהיטל השבחה, מחמת היעדר ודאות והקושי לאמוד את שיעור ההשבחה בטרם ניתן היתר בניה בפועל.
60 7ccde39d-90cd-40d9-a3a3-6109620ed2ba 1 drift_rejected 0.7768 drift 0.777 < floor 0.8 בית המשפט לא ייזקק לבירור סוגייה שאיבדה את ממשותה והפכה לתיאורטית או אקדמית בלבד, ובכלל זה ערעור המופנה כנגד מעשה עשוי, אלא במקרים חריגים בלבד. בית המשפט לא ייזקק לבירור סוגייה שאיבדה את ממשותה ונותרה בעלת אופי תיאורטי או אקדמי בלבד, אלא במקרים חריגים.
61 ea79b5f3-efce-46c7-9ff9-1ae2f037c88d 1 accepted 0.901 מבנה מחדש המעמיד את השיקול התכנוני (ההתגוננות האזרחית) כראש העיקרון והתוצאה כנגזרת ממנו, תוך הסרת כפל-לשון; כל הרכיבים מעוגנים בציטוט-המקור. קיימת הצדקה תכנונית למתן הקלה המאפשרת בינוי הממצה את האפשרות להוספת ממ"ד, אף כאשר מדובר בחריגה חלקית מקו הבניין, וזאת נוכח החשיבות הציבורית של בניית ממ"ד לצורכי התגוננות אזרחית. החשיבות הציבורית שבבניית ממ"ד לצורכי התגוננות אזרחית מהווה שיקול תכנוני המצדיק מתן הקלה המאפשרת בינוי הממצה את האפשרות להוספת ממ"ד, אף כאשר הדבר כרוך בחריגה חלקית מקו הבניין.
62 3283130b-c38f-4141-abd7-680dfd6a4cae 1 accepted 0.8651 אוחד הניסוח למשפט קנוני אחד וזוקק לרגיסטר נקי ('פוגע... באופן אישי', 'לתקוף את האישור בערר') תוך שמירה מלאה על העיגון בציטוט — פגיעה אישית במקרקעין/בנכס כתנאי-סף למעמד. תנאי-סף למעמדו של עורר כנגד אישור בינוי הוא הצבעה על פגיעה אישית במקרקעין שבבעלותו או בנכסו; מי שלא הראה כי הבינוי המוצע משפיע עליו או על נכסו באופן אישי — אין לו מעמד להעלאת הערר. תנאי-סף למעמדו של עורר כנגד אישור בינוי הוא הצבעה על פגיעה אישית במקרקעין שבבעלותו או בנכסו; משלא הוראה כי הבינוי המוצע פוגע בו או בנכסו באופן אישי, אין לו מעמד לתקוף את האישור בערר.
63 775e5cf5-e9a0-4560-80a2-4530e4310dad 1 accepted 0.914 חודדה תכלית הסעיף — האיסור מוגבל לקירות בגבול חיצוני בלבד — בהתבסס על לשון הציטוט, ללא הוספת דין; הרגיסטר נוקה. לועדה המקומית נתון מתחם שיקול דעת ביישום סעיף 2.23 לתוספת השלישית לתקנות בבתים דו-משפחתיים, בהתאם לנסיבות הקונקרטיות ולתנאי השטח; האיסור לקרוע חלונות "בקו גבול צדדים או אחורי של נכס" אינו חל על קיר הפונה לחלק הפנימי של החלקה עצמה. לועדה המקומית נתון מתחם שיקול דעת ביישום סעיף 2.23 לתוספת השלישית לתקנות בבתים דו-משפחתיים, בהתאם לנסיבות הקונקרטיות ולתנאי השטח; האיסור לקרוע חלונות בקו גבול צדדי או אחורי של נכס מצומצם לקירות הפונים לגבול חיצוני, ואינו חל על קיר הפונה לחלקה הפנימית עצמה.
64 07f6c67a-2c79-41c8-a63e-a403b3378160 1 accepted 0.8483 הוחזר הדיוק שבמקור — "התקפות טילים" במקום "התקפות", ושופר מבנה המשפט; ללא הוספת דין. התקנת מרחב מוגן דירתי (ממ"ד) מהווה צורך ציבורי ברור הנובע מהמצב הביטחוני, וחשיבותו נלמדת משורת תיקוני חקיקה שמטרתם עידוד ותמרוץ בנייתו כאמצעי יעיל להגנה מפני התקפות בעורף. התקנת מרחב מוגן דירתי (ממ"ד) מהווה צורך ציבורי ברור הנובע מהמצב הביטחוני, וחשיבותו כאמצעי יעיל להגנה מפני התקפות טילים בעורף נלמדת משורה ארוכה של תיקוני חקיקה שמטרתם עידוד ותמרוץ בנייתו.
65 58a97a51-3374-4b1a-89e8-f87409543cf2 1 accepted 0.9107 הניסוח הקיים כבר מעוגן במלואו בציטוט-התומך וכללי דיו; נעשה ליטוש מינורי בלבד (השלמת שם החוק וצמצום קל), ללא הוספת דין, סייג או עובדת-תיק. לצורך אומדן הפגיעה והפיצוי לפי סעיף 197 לחוק, מקום שתכנית פוגעת משנה ייעוד קרקע מבנייה לחקלאות, יש לאמוד את שווי הקרקע כמצבה עובר לתכנית הפוגעת אל מול שווייה כמצבה בעקבותיה, ולפצות את בעל הזכות בשיעור גריעת השווי שנגרמה כתוצאה מן השינוי. לצורך אומדן הפגיעה והפיצוי לפי סעיף 197 לחוק התכנון והבנייה, מקום שתכנית פוגעת משנה את ייעוד הקרקע מבנייה לחקלאות, יש לאמוד את שווי הקרקע כמצבה עובר לתכנית הפוגעת אל מול שווייה כמצבה בעקבותיה, ולפצות את בעל הזכות בשיעור גריעת השווי שנגרמה מן השינוי.
66 39d00376-a7d8-4b9b-af57-fe6a7b8b6ec7 1 accepted 0.8622 הוצג ההיקף כפרמטר עצמאי (ולא רק 'שני'), הובהר היחס בין גודל השטח הבנוי לעוצמת הבחינה כעולה מהנימוק, והניסוח רוכך לכלל רב-תחולה; לא נוספו דין, חריג או מקורות חדשים. פרמטר שני בבחינת בקשה לשימוש חורג הוא היקף השימוש החורג — להבדיל מן העצימות (הפער התכנוני), ההיקף מתייחס לשטח הבנוי שבגינו מתבקש השימוש; אין דין בקשה לשימוש חורג במבנה זעיר כדין בקשה לשימוש חורג במבנה רחב-היקף. היקף השימוש החורג הוא פרמטר עצמאי בבחינת בקשה לשימוש חורג, הנבדל מן העצימות (הפער התכנוני) ומתמקד בשטח הבנוי שבגינו מתבקש השימוש; ככל שגדל היקף השטח הבנוי כן מתחזקת הבחינה הנדרשת, ואין דין בקשה במבנה זעיר כדין בקשה במבנה רחב-היקף.
67 a1be8e43-e04f-4f24-96a1-a4b4feb8515e 1 accepted 0.9009 שולב מבחן המהות-לא-השם העולה מהציטוט ("כל שם דומה") כליבת העיקרון, ונשמר העיגון בסעיף 145 ללא הוספת דין או סייג. היתר חפירה ודיפון מהווה "היתר בניה" כמשמעותו ומכוחו של סעיף 145 לחוק התכנון והבניה, ואין בשם השונה שניתן לו כדי לגרוע ממעמדו הנורמטיבי כהיתר בניה; פרשנות זו תואמת את לשון החוק ותכליתו. היתר חפירה ודיפון, ויהא שמו אשר יהא, מהווה "היתר בניה" כמשמעותו בסעיף 145 לחוק התכנון והבניה; סיווגו נקבע על-פי מבחן מהותי ולא על-פי כותרתו, ואין בשם השונה שניתן לו כדי לגרוע ממעמדו הנורמטיבי כהיתר בניה.
68 b557d6df-051c-42a7-897e-c128b4f590f7 1 accepted 0.953 ליטוש לשוני בלבד (תקיפת... במקום לתקוף; 'מקום שעולה'); תוכן העיקרון וגבולותיו זהים למקור-העיגון. דרך המלך לתקוף החלטה של ועדה מקומית או רשות רישוי מקומית ליתן היתר בנייה, כאשר עולה טענה של סטייה מתכנית, היא בהגשת ערר לועדת הערר; זאת להבדיל ממחלוקות בשאלות קנייניות או של שימוש וחזקה (הנדונות בערכאות האזרחיות) ומטענות לפגמים מינהליים שאינם תכנוניים, כגון ניגוד עניינים (הנדונות בבית המשפט לעניינים מינהליים). דרך המלך לתקיפת החלטת ועדה מקומית או רשות רישוי מקומית ליתן היתר בנייה, מקום שעולה טענה לסטייה מתכנית, היא בהגשת ערר לועדת הערר; זאת להבדיל ממחלוקות קנייניות או בשאלות של שימוש וחזקה, הנדונות בערכאות האזרחיות, ומטענות לפגמים מינהליים שאינם תכנוניים, כגון ניגוד עניינים, הנדונות בבית המשפט לעניינים מינהליים.
69 b7d0496a-1110-4ca7-97fc-ccd28b681085 1 accepted 0.8553 הוסר המספר הקונקרטי 'עד 36 פעוטות' שהוא פרט-תיק ספציפי, כדי לזקק עיקרון רב-תחולה; גרעין השיקול נשמר כלשון הציטוט-התומך. כאשר הוועדה המקומית מאשרת הפעלת מעון יום הכולל עד 36 פעוטות לפי תיקון החוק, השיקול היחיד שעליה להפעיל לגביו את שיקול דעתה הוא האם מתקיימת פגיעה מרחבית משמעותית שאינה ניתנת לתיקון. כאשר הוועדה המקומית מאשרת הפעלת מעון יום מכוח תיקון החוק, השיקול היחיד שעליה להפעיל לגביו את שיקול דעתה הוא האם מתקיימת פגיעה מרחבית משמעותית שאינה ניתנת לתיקון.
70 5743e389-c4b8-41e5-b156-2ecfa0252131 1 accepted 0.9481 זוקק והודק הניסוח תוך עיגון מפורש בכך שעצם טענת הסטייה מקנה סמכות ומחייבת בירור מקדמי (כעולה מהנימוק והציטוט-התומך); לא נוספו דין, חריג או ציטוטי-תיקים. למתנגד מוקנית זכות ערר לוועדת הערר על החלטת ועדה מקומית ליתן היתר בנייה, מקום שנטען כי ההיתר מהווה הקלה או שימוש חורג בסטייה מתכנית — וזאת אף אם הוועדה המקומית סברה כי ההיתר עולה בקנה אחד עם התכנון התקף. ועדת הערר אינה רשאית לדחות ערר כזה על הסף, אלא חייבת לבחון את טענת הסטייה מתכנית כטענה מקדמית, וככל שתמצא כי ההיתר סוטה מתכנית — תדון בהתנגדות לגופה. למתנגד מוקנית זכות ערר לוועדת הערר על החלטת ועדה מקומית ליתן היתר בנייה, מקום שנטען כי ההיתר מהווה הקלה או שימוש חורג בסטייה מתכנית, אף אם הוועדה המקומית סברה כי ההיתר תואם את התכנון התקף. עצם טענת הסטייה מקנה לוועדת הערר את הסמכות ומחייבת אותה לברר את הטענה כשאלה מקדמית, בלא לדחות את הערר על הסף; ומשנמצא כי ההיתר סוטה מתכנית — תידון ההתנגדות לגופה.
71 69d0ede6-ab2f-4047-9558-aaccae329827 1 accepted 0.8975 צומצם וחודד הניסוח (הסרת כפל "אינה שוללת ואינה גורעת" ופישוט התחביר) תוך שמירה מלאה על העיקרון המעוגן בציטוט בדבר המסלולים המקבילים. הסמכות הספציפית שהוקנתה לשרים לקבוע היטל השבחה מופחת לגבי מתחמי פינוי-בינוי אינה שוללת ואינה גורעת מסמכותם הכללית מכוח "סעיף הסל" ליתן פטור מלא מהיטל השבחה למתחמים מסוג זה; מדובר במסלולים מקבילים העומדים זה לצד זה. הקניית סמכות ספציפית לקבוע היטל השבחה מופחת למתחמי פינוי-בינוי אינה גורעת מן הסמכות הכללית שמכוח "סעיף הסל" ליתן פטור מלא מהיטל השבחה למתחמים אלה; שני המסלולים מקבילים ועומדים זה לצד זה.
72 40e3238d-9914-47bf-82f3-b187fbacafaa 1 accepted 0.8238 מוקד הניסוח בעיקרון המעוגן ישירות בציטוט-התומך (נטרול הפוטנציאל מן המצב הקודם לפי הלכת לוסטרניק); הוסרה הסיפא בדבר המשקל לעסקאות 'תכנון בעתיד' שמקורה בנימוק היישומי ולא בציטוט, וכן תוקנה ההצגה הפסקנית. פוטנציאל תכנוני הנובע מייעוד שנקבע בתוכנית מתאר נחשב חלק מן ההליך התכנוני של התוכנית המשביחה במובנו הרחב, ולפי הלכת לוסטרניק יש לנטרלו מהמצב הקודם בעת עריכת השומה; ממילא אין לייחס משקל בלעדי לעסקאות השוואה שנעשו בייעוד 'תכנון בעתיד'. פוטנציאל תכנוני הנובע מייעוד שנקבע בתוכנית מתאר מהווה חלק מן ההליך התכנוני של התוכנית המשביחה במובנו הרחב, ולפי הלכת לוסטרניק יש להתעלם ממנו ולנטרלו מן המצב הקודם בעת עריכת שומת ההשבחה.
73 43173db6-51aa-46d9-a655-e3e9dad9889b 1 abstained no change proposed שטחי שירות הנלווים באופן אינהרנטי לשימוש עיקרי (כגון מחסנים נלווים לדירות מגורים) ישומו כנגזרת משווי השימוש העיקרי, ולא לפי שימוש חלופי אחר; באין השימוש העיקרי אין הצדקה לשטחי השירות. שטחי שירות הנלווים באופן אינהרנטי לשימוש עיקרי (כגון מחסנים נלווים לדירות מגורים) ישומו כנגזרת משווי השימוש העיקרי, ולא לפי שימוש חלופי אחר; באין השימוש העיקרי אין הצדקה לשטחי השירות.
74 1c23018f-010b-4808-88e9-62e2e2ce6f37 1 accepted 0.8973 הניסוח הקיים כבר מעוגן במלואו בציטוט-התומך, כללי ובלתי-תלוי-תיק; לא נמצא רכיב מעוגן להוספה או לזיקוק נוסף. בחישוב היטל השבחה תובא במניין אך ורק ההשבחה הקשורה בקשר סיבתי ישיר לתכנית המשביחה; על השמאי לחלץ ולבודד את מרכיב השבחת התכנון מכלל הגורמים שהביאו לעליית שווי המקרקעין, ורק רכיב זה משמש בסיס לחיוב בהיטל. בחישוב היטל השבחה תובא במניין אך ורק ההשבחה הקשורה בקשר סיבתי ישיר לתכנית המשביחה; על השמאי לחלץ ולבודד את מרכיב השבחת התכנון מיתר הגורמים שהביאו לעליית שווי המקרקעין, ורק רכיב זה משמש בסיס לחיוב בהיטל.
75 0e483c66-c1fc-4380-98de-2475e1428539 1 abstained no change proposed ירידת ערך מקרקעין הנובעת מאישור התכנית ומביצועה ככתבה וכלשונה מגולמת בפיצוי לפי סעיף 197 לחוק התכנון והבניה, ועל כן לא ניתן לתבוע פיצוי בגין אותו נזק בהליך נזיקי — אף כלפי נתבע אחר וללא תלות בעילה הנזיקית שמכוחה נתבע הפיצוי. ירידת ערך מקרקעין הנובעת מאישור התכנית ומביצועה ככתבה וכלשונה מגולמת בפיצוי לפי סעיף 197 לחוק התכנון והבניה, ועל כן לא ניתן לתבוע פיצוי בגין אותו נזק בהליך נזיקי — אף כלפי נתבע אחר וללא תלות בעילה הנזיקית שמכוחה נתבע הפיצוי.
76 221e2af0-a6cd-47ba-b676-4b392e03c1bc 1 accepted 0.9166 הידוק הניסוח סביב מאזן ההוראות הכולל וצמצום החזרתיות, תוך שמירה מלאה על העיגון בציטוט-המקור. בהערכת השפעתה של תכנית על שווי המקרקעין יש לשקלל יחד את כל הוראות התכנית — המשביחות והפוגעות כאחד — ורק אם סך כל ההוראות מביא ליתרון על פני המצב התכנוני הקודם תיחשב התכנית למשביחה ותחויב בהיטל השבחה. בהערכת השבחתה של תכנית יש לשקלל יחד את כל הוראותיה המשפיעות על שווי המקרקעין, המשביחות והפוגעות כאחד, ותכנית תיחשב משביחה החייבת בהיטל השבחה רק אם מאזן הוראותיה הכולל מביא ליתרון על פני המצב התכנוני הקודם.
77 6b1d0d8e-cd89-4bce-a7d5-d75ea0c4eaed 1 accepted 0.9666 ניסוח קיים נשמר כמעט במלואו; הובהר ששיקול הדעת התכנוני הוא מקצועי ('אינה באה להחליף'), בעיגון מלא לציטוט התומך וללא הוספת דין. הביקורת השיפוטית על החלטות מוסדות התכנון מתמקדת בבחינת חוקיות ההליכים ודרכי קבלת ההחלטה, ואינה מחליפה את שיקול הדעת התכנוני של הרשות; בית המשפט יתערב במשורה, רק מקום בו נפל בהחלטה פגם חוקי על-פי עילות הביקורת המינהלית, כגון חריגה מסמכות, שיקולים פסולים או חריגה קיצונית ממתחם הסבירות. הביקורת השיפוטית על החלטות מוסדות התכנון מתמקדת בבחינת חוקיות ההליכים ודרכי קבלת ההחלטה, ואינה באה להחליף את שיקול הדעת התכנוני המקצועי של הרשות; בית המשפט יתערב במשורה, רק מקום בו נפל בהחלטה פגם חוקי לפי עילות הביקורת המינהלית, כגון חריגה מסמכות, שיקולים פסולים או חריגה קיצונית ממתחם הסבירות.
78 17f3126b-dbc7-49f6-8bdb-15f5800d909a 1 accepted 0.9159 הוספתי את ההבחנה המעוגנת במקור בין ההכרזה לבין תכנית פוגעת ('להבדיל מתכנית פוגעת'), והסרתי את הדוגמה הספציפית בסוגריים לטובת ניסוח כללי יותר. הכרזה על קרקע (כגון הכרזה לשימור קרקע חקלאית) המגבילה בנייה ושימושים אינה מקימה כשלעצמה זכות לפיצוי בעל הזכות במקרקעין בגין הפגיעה בקניינו הנובעת מאותן הגבלות, אף אם הפגיעה בשווי הקרקע משמעותית ביותר. הכרזה על קרקע המגבילה בנייה ושימושים אינה מקימה כשלעצמה, להבדיל מתכנית פוגעת, זכות לפיצוי בעל הזכות במקרקעין בגין הפגיעה בקניינו הנובעת מאותן הגבלות, אף אם הפגיעה בשווי הקרקע משמעותית.
79 5ca099ed-136d-4c59-9a15-e548334a6c11 1 accepted 0.8679 הוסרו הדוגמאות בסוגריים (משקלו המוגבל, חזקת החפות) שאינן עולות מפורשות מהציטוט-התומך המדבר על 'כל המגבלות הכרוכות בכך' באופן כללי; שאר העיקרון נשמר כמעוגן. מוסד תכנון רשאי להביא בחשבון, במסגרת מכלול שיקוליו, את עצם הגשתו של כתב אישום ואת תוכנו כראיה מנהלית, ובלבד שייעשה כן בכפוף למגבלות הכרוכות בשימוש בכתב אישום שטרם הוכרע (משקלו המוגבל, חזקת החפות וכיו"ב). מוסד תכנון רשאי להביא בחשבון, במסגרת מכלול שיקוליו, את עצם הגשתו של כתב אישום ואת תוכנו כראיה מנהלית, בכפוף למגבלות הכרוכות בהסתמכות על כתב אישום שטרם הוכרע.
80 0c1cde3e-2caf-4d05-b684-9e53931111f3 1 drift_rejected 0.7924 drift 0.792 < floor 0.8 אף אם ניתן לפרש את פסק דין "קבוצת הירדן" כך שאינו חל על העיר תל אביב-יפו, יש להחיל את דרך חישוב הפטור מהיטל השבחה המפורטת בו גם על תל אביב-יפו; הלכת קבוצת הירדן אינה מוגבלת גאוגרפית. דרך חישוב הפטור מהיטל השבחה שנקבעה בהלכת קבוצת הירדן אינה מוגבלת גאוגרפית וחלה באופן אחיד על כל רשות מקומית.
81 9d4f9cda-a169-4ac1-9c8b-7dc99fbe486b 1 accepted 0.9304 חודד שהשלכת-הרוחב והתקדים נבחנים לפי מאפייני המבנה הקונקרטי (עולה מהנימוק והציטוט-התומך) ושהאישור אינו בר-הכללה, מבלי להוסיף דין או נסיבות שאינם במקור. טענת ועדה מקומית כי אישור שימוש חורג ממגורים למסחר יעודד בקשות דומות, יביא להשלכות רוחב ולצמצום היצע יחידות הדיור, או יהווה תקדים — אינה מתקבלת מקום שאופי הבינוי של המבנה ייחודי ואינו נפוץ; במצב כזה האישור מוגבל למקרה המסוים ואין בו כדי לפרוץ אל מעבר לנסיבותיו. טענת ועדה מקומית כי אישור שימוש חורג ממגורים למסחר יעודד בקשות דומות, יביא להשלכות רוחב, יצמצם את היצע יחידות הדיור או יהווה תקדים — אינה מתקבלת מקום שאופי הבינוי של המבנה ייחודי ואינו נפוץ; השלכת-הרוחב והתקדים נבחנים לפי מאפייני המבנה הקונקרטי, ובבינוי ייחודי האישור מוגבל לנסיבות המקרה ואינו בר-הכללה.
82 3ca50208-ca74-4631-a2ef-758e97e30b95 1 accepted 0.9304 זוקק וקוצר הניסוח (הסרת כפילות "וועדת הערר" והאיות הכפול); העיקרון נותר מעוגן בציטוט-התומך בדבר היעדר סמכות לערר על חידוש היתר. החלטה בדבר חידוש או הארכת תוקפו של היתר בנייה לפי תקנות התכנון והבנייה (רישוי בנייה), תשע"ו-2016, אינה נמנית עם ההחלטות שעליהן ניתן לערור לוועדת הערר, ולפיכך וועדת הערר נעדרת סמכות לדון בערר המוגש על החלטה כאמור. החלטה בדבר חידוש או הארכת תוקפו של היתר בנייה לפי תקנות התכנון והבנייה (רישוי בנייה), תשע"ו-2016, אינה נמנית עם ההחלטות הניתנות לערר לפני ועדת הערר, ועל כן ועדת הערר נעדרת סמכות לדון בערר המוגש עליה.
83 ca7f25f9-40b7-4f75-928f-16f348f47d82 1 accepted 0.9003 הידוק רגיסטרי בלבד — קוצרו כפילויות ('נקיטה בהליך של', 'אכן') והומר התנאי לניסוח תמציתי, ללא הוספת דין שאינו עולה מהמקור. צורך תכנוני או חברתי חיוני ודחוף עשוי להצדיק נקיטה בהליך של שימוש חורג כפתרון ביניים, מאחר שאישור מהלך תכנוני שלם גוזל זמן ארוך; ואולם תנאי לכך הוא הוכחה כי אכן קיים צורך חיוני ודחוף וכי ההמתנה עד לאישור המהלך התכנוני השלם תגרום נזק. צורך תכנוני או חברתי חיוני ודחוף עשוי להצדיק שימוש חורג כפתרון ביניים, נוכח משך הזמן הארוך הכרוך באישור מהלך תכנוני שלם; ובלבד שהוּכח קיומו של צורך חיוני ודחוף וכי ההמתנה לאישור המהלך התכנוני השלם תגרום נזק.
84 4fb8c982-568b-4179-88a7-a5283f14cadc 1 accepted 0.8708 נוסח מחדש כעיקרון איזון רב-תחולה — התועלת החברתית מול הפגיעה במתנגדים — תוך הוספת תנאי הגבירה העולה מן הנימוק, וללא הוספת דין מעבר למקורות. הרווח החברתי לכלל הציבור עשוי להוות שיקול לאישור שימוש חורג גם מקום שבו השימוש כרוך בפגיעה במתנגדים, כאשר השימוש חיוני לציבור. הרווח החברתי הצומח לכלל הציבור משימוש חורג החיוני לו עשוי להוות שיקול לאישור השימוש, אף כאשר הוא כרוך בפגיעה במתנגדים, ובלבד שהתועלת הציבורית גוברת על הפגיעה.
85 a8b1836f-e0c5-493f-b4bf-8a51aab0450c 1 drift_rejected 0.7808 drift 0.781 < floor 0.8 שטחים ציבוריים סטטוטוריים אינם 'על הנייר' בלבד — הרשות המקומית מחויבת בפיתוחם, ומבני ציבור שנבנו בפועל (בתי ספר, גני ילדים, בתי כנסת, שצ"פים מפותחים) נלקחים בחשבון כחלק מהתשתית הציבורית הקיימת בשכונה לצורך הערכת היתכנות הקלות. הרשות המקומית מחויבת בפיתוח השטחים הציבוריים הסטטוטוריים שבתחומה; משכך, אין לראות שטחים אלה כקיימים 'על הנייר' בלבד מקום שמבני ציבור ושטחים ציבוריים פותחו ונבנו בפועל ומהווים חלק מהתשתית הציבורית הקיימת בשכונה.
86 50313625-9da8-472d-8039-f6e810f27f65 1 accepted 0.9076 ניסוח קומפקטי יותר באמצעות החלפת הניקודיים (":") בפסוקית-זיקה ("שלפיו") ליצירת משפט אחד רציף; התוכן זהה ומעוגן בציטוט-התומך, ללא הוספת דין או סייג. כאשר על המקרקעין קיימת בנייה הנגועה באי-חוקיות, יש להחיל את "מבחן המגרש הריק": השאלה הנשאלת היא האם נכון היה לאשר את הבקשה להיתר אילו לא הייתה קיימת על הקרקע אותה בנייה בלתי-חוקית. כאשר על המקרקעין קיימת בנייה הנגועה באי-חוקיות, יש להחיל את "מבחן המגרש הריק", שלפיו נשאלת השאלה האם נכון היה לאשר את הבקשה להיתר אילו לא הייתה קיימת על הקרקע אותה בנייה בלתי-חוקית.
87 505884b8-feab-4221-a723-f915d745435a 1 abstained no change proposed היטל השבחה מוטל אך ורק על "השבחת-תכנון" — עליית ערך המקרקעין הנובעת באופן ישיר מהחלת הפעולה התכנונית עליהם — ולא על עליית שווי הנובעת מגורמים אחרים. היטל השבחה מוטל אך ורק על "השבחת-תכנון" — עליית ערך המקרקעין הנובעת באופן ישיר מהחלת הפעולה התכנונית עליהם — ולא על עליית שווי הנובעת מגורמים אחרים.
88 c495b9be-4ee8-4585-b028-6854f9ce9f1c 1 accepted 0.9524 הוספתי את אפיון התיקון כ"אקט מתקן שאינו פרסום חדש" — מרכיב העולה מפורשות מהנימוק והציטוט-התומך — וחידדתי את הרגיסטר; הסייגים והמסקנות נותרו מעוגנים במקור. הודעה בדבר תיקון טעות סופר בתכנית אינה מבטלת ואינה גורעת מתוקפה של ההודעה המקורית על אישור התכנית, ואינה מבטלת את תוקף התכנית עצמה; ככל שהיא רק מאזכרת את הפרסום הקודם, אין בה כדי לדחות את המועד הקובע. הודעה על תיקון טעות סופר בתכנית היא אקט מתקן בלבד ואין בה משום פרסום חדש של אישור התכנית; היא אינה מבטלת ואינה גורעת מתוקף ההודעה המקורית על אישור התכנית ואף לא מתוקף התכנית עצמה, וככל שהיא רק מאזכרת את הפרסום הקודם אין בה כדי לדחות את המועד הקובע.
89 2ae64fb2-81b5-41d3-9061-f9744048876c 1 accepted 0.8438 הוסרה הסיפא בדבר תכנית מתאר ארצית שאינה מעוגנת בציטוט; נותר הגרעין המעוגן — כפיפות מתקן התשתית לתב"ע ואי-תחליפיות של מסמך סביבתי-בריאותי. הקמת מתקן תשתית כפופה להוראות התכנית המקומית (התב"ע), ותכנית מתאר ארצית החלה אינה פוטרת מן הצורך בהתאמה להוראות התב"ע מקום שזו נדרשת. הקמת מתקן תשתית כפופה להוראות התכנית המקומית (התב"ע), ואין במסמך סביבתי-בריאותי כדי לפטור מן ההתאמה להוראות התב"ע.
90 1bc5a9bf-b0fb-4cc4-b2b9-d6d32ead2679 1 accepted 0.8543 הוסר אופי הסיכום וצומצם הניסוח למשפט קנוני אחד נקי, תוך שמירה מלאה על העיקרון מהציטוט-התומך (סדר ייחוס הזכויות לפטור תחילה). בעת חישוב היטל ההשבחה בפרויקט תמ"א 38 רואים בשלב הראשון את כל הזכויות כמנוצלות מכוח התמ"א (הפטורות), ורק זכויות עודפות מעבר לכך ייוחסו לתכנון הקיים החייב בהיטל. בחישוב היטל השבחה בפרויקט תמ"א 38, בשלב הראשון רואים את מלוא הזכויות כמנוצלות מכוח התמ"א הפטורה, ורק זכויות עודפות מעבר לכך מיוחסות לתכנון הקיים החייב בהיטל.
91 56ae6e2d-5623-442f-b0fc-897bab0bebe5 1 accepted 0.9055 זוקק וקוצר: הובהר שהעתקת הנטל פועלת ביחסים החוזיים בלבד (כעולה מהנימוק והציטוט) והוסר הסיפא העודפת על 'סטיית ההסכם מהדין' שאינה נדרשת לעיקרון הכללי. זהות החייב בהיטל השבחה נקבעת על פי החוק ואינה ניתנת לשינוי בהסכם בין הצדדים; הסכם המעתיק את נטל התשלום מן הבעלים החייב על פי דין אל צד אחר אינו משפיע על סמכות גורמי הרשות המקומית להטיל את ההיטל על החייב בו מכוח החוק, ומשהוטל החיוב על מי שאינו החייב לפי דין — סטה ההסכם מהוראות הדין. זהות החייב בהיטל השבחה נקבעת על פי דין ואינה ניתנת לשינוי בהסכם בין הצדדים; הסכם המעתיק את נטל התשלום אל צד אחר מחייב ביחסים החוזיים בלבד ואינו גורע מסמכות הרשות להטיל את ההיטל על החייב בו מכוח החוק.
92 00a587be-d0d3-433c-bb0a-0403dd5ce34a 1 accepted 0.9126 ניסוח הודק לרגיסטר קנוני אחיד וסילוק הכפילות הדקדוקית, ללא הוספת דין שאינו עולה מהמקור. פגם פרוצדורלי בהליך תכנוני שהוא תקלה טכנית בלבד ואינו פגם מהותי ניתן להחלת דוקטרינת הבטלות היחסית (דוקטרינת התוצאה היחסית), המאפשרת להימנע מביטול ההליך חרף הפגם. פגם פרוצדורלי בהליך תכנוני שהוא תקלה טכנית בלבד ואינו פגם מהותי, מצדיק החלת דוקטרינת הבטלות היחסית (התוצאה היחסית) ומאפשר להימנע מביטול ההליך חרף הפגם.
93 a9be7842-eaf6-4fca-941d-0d72936dbf70 1 accepted 0.8585 זוקק לליבת העיקרון המעוגנת בציטוט (תנאי 'הדבר מה נוסף' + שלילת ההקניה האוטומטית); הוסר הזנב הטיעוני 'וטענה הפוכה נוגדת את הדין ואת פסיקת בתי המשפט' שאינו עולה מהמקור, וכן ההקשר הספציפי 'בפני ועדת הערר'. הקניית מעמד של 'עורר ציבורי' מותנית בכך שהעורר יצביע על פגם מהותי בשלטון החוק העולה כדי 'דבר מה נוסף'; עצם העלאת טענה לפגיעה בחוקיות בפני ועדת הערר אינה מקנה כשלעצמה מעמד ציבורי, וטענה הפוכה נוגדת את הדין ואת פסיקת בתי המשפט. מעמד של 'עורר ציבורי' מותנה בהצבעה על פגם מהותי בשלטון החוק העולה כדי 'דבר מה נוסף'; עצם העלאת טענה לפגיעה בחוקיות אינה מקנה כשלעצמה מעמד ציבורי.
94 aedf265b-750b-4f74-84ac-cb02d4240126 1 abstained no change proposed בהיעדר תכנית כוללת שהוכנה בהתאם לדרישת תכנית מחוזית, ייעוד הקרקע נקבע על-פי התכנית המקומית החלה עליה, ולא על-פי הייעוד הנקוב בתכנית המחוזית. בהיעדר תכנית כוללת שהוכנה בהתאם לדרישת תכנית מחוזית, ייעוד הקרקע נקבע על-פי התכנית המקומית החלה עליה, ולא על-פי הייעוד הנקוב בתכנית המחוזית.
95 2522e80a-d953-46c9-8d66-067c8d6df1c2 1 drift_rejected 0.7697 drift 0.770 < floor 0.8 אין לקבל ניסיון של בעל דין להבחין בין תקדים החל עליו לבין המקרה הנדון, מקום שההבחנה נשענת על טענה העומדת בסתירה לעמדה שאותו בעל דין עצמו טען בהליך הקודם. בעל דין אינו רשאי להבחין בין תקדים החל עליו לבין עניינו, כאשר ההבחנה נשענת על טענה הסותרת את העמדה שטען אותו בעל דין עצמו בהליך הקודם.
96 2a6fbc99-6c4f-4708-a404-4da36876466c 1 accepted 0.9109 שמרתי את העיקרון המעוגן בציטוט (היררכיה מן הכללי אל המפורט והיתר הנסמך על תכנון מפורט במשבצת) ואת ההפניה הכללית לסעיף 145(ז), אך הסרתי את פירוט תוכן הסעיף ואת תאריך 1.1.96 שאינם עולים מהציטוט-התומך. מערכת התכנון בנויה כהיררכיה של הסדרים ההולכים מן הכללי אל המפורט, ומתן היתר בנייה מחייב קיומה של תכנית מפורטת בדרגת פירוט סבירה לגבי המקרקעין נשוא ההיתר; דרישה זו קיבלה ביטוי סטטוטורי בסעיף 145(ז) לחוק התכנון והבניה, המתנה מתן היתר מכוח תכנית שהופקדה לאחר 1.1.96 באישור תכנית הקובעת הוראות בדבר פירוט ייעודי הקרקע, חלוקה למגרשים, קווי בניין, מספר קומות או גובה ושטחי בנייה מותרים. מערכת התכנון בנויה כהיררכיה של הסדרי תכנון ההולכים מן הכללי אל המפורט ומסתיימים במתן היתר לביצוע עבודות הנסמך על התכנון המפורט במשבצת הקרקע; מכאן שמתן היתר בנייה מחייב קיומה של תכנית מפורטת בדרגת פירוט סבירה לגבי המקרקעין נושא ההיתר, דרישה שקיבלה עיגון סטטוטורי בסעיף 145(ז) לחוק התכנון והבניה.
97 801ca0a5-62da-4af7-9081-412c72dbc678 1 accepted 0.874 חידוד ניסוח בלבד — הובהר שהבכורה של התשריט היא ביחס לפרשנות תקנונית סותרת; שני היסודות מעוגנים בציטוט ובנימוק. אין לפרש את הוראות תקנון התכנית בסתירה לתשריט ולייעודי הקרקע הקבועים בה; התשריט וייעודי הקרקע שנקבעו בו גוברים בקביעת תכליתם של המקרקעין. אין לפרש את הוראות תקנון התכנית בסתירה לתשריט ולייעודי הקרקע הקבועים בה; בקביעת תכליתם של המקרקעין גוברים התשריט וייעודי הקרקע שנקבעו בו על פרשנות תקנונית הסותרת אותם.
98 eb6f7341-2b60-49c5-a14c-ed2000423994 1 accepted 0.9344 הניסוח הודק לרצף לוגי אחד וזוקק לכלל פרשני כללי ('בהיעדר ניסוח מפורש'), תוך שמירה מלאה על העיגון בציטוט-התומך וללא הוספת דין. 'מניעה לפי דין' היא עילה הקבועה בדין ואינה עניין הנתון לשיקול דעתה של הרשות; שיקולים שבשיקול דעת, כגון שיקולי תכנון, אינם שקולים למניעה לפי דין ואינם מקימים אותה. אילו ביקש מתקין התקנות להחריג מקרים שבשיקול דעת היה קובע זאת במפורש. 'מניעה לפי דין' היא עילה הקבועה בדין ואינה נתונה לשיקול דעתה של הרשות; שיקולים שבשיקול דעת, ובכללם שיקולי תכנון, אינם שקולים למניעה לפי דין ואינם מקימים אותה, ובהיעדר ניסוח מפורש של חריג שבשיקול דעת אין להניח שמתקין התקנות התכוון להחריגם.
99 98e8702c-958f-47c0-a483-8acccb26699c 1 accepted 0.9299 סדר-המשפט הומר כך שעיקרון-הסמכות עומד בראש והעיגון הכפול מובא כנימוק נלווה; התוכן זהה לציטוט-התומך ללא תוספת דין. ועדת הערר, הן מכוח סמכותה להיכנס בנעלי הוועדה המקומית והן כמוסד תכנון הניצב בהיררכיה גבוהה יותר מן הוועדה המקומית, מוסמכת להנחות את הוועדה המקומית באשר לאופן הפעלת שיקול דעתה בעת שתידון בפניה בקשה להיתר עתידית. ועדת הערר מוסמכת להנחות את הוועדה המקומית באשר לאופן הפעלת שיקול דעתה בבקשה להיתר עתידית, וזאת הן מכוח סמכותה להיכנס בנעלי הוועדה המקומית והן ממעמדה כמוסד תכנון הניצב בהיררכיה גבוהה ממנה.
100 fd5093f7-780f-441e-b258-f5df28c98b5c 1 accepted 0.944 הניסוח הודק והוסר הכפל ('הניתן לבעל זכויות... נתון לבעל הזכויות'); הליבה והעיגון בציטוט נשמרו ללא הוספת דין או סייג. הפטור מהיטל השבחה הניתן לבעל זכויות במקרקעין בגין דירת מגורים אינו מוגבל בהיקפו לפי שטח המקרקעין, ובהיעדר הגדרה מצמצמת בחוק יש להעדיף את הפרשנות שלפיה הפטור נתון לבעל הזכויות יהא שטח המקרקעין אשר יהא. הפטור מהיטל השבחה בגין דירת מגורים אינו מוגבל בהיקפו לפי שטח המקרקעין, ובהיעדר הוראה מצמצמת בחוק יש להעדיף את הפרשנות שלפיה הפטור נתון לבעל הזכויות במקרקעין יהא שטח המקרקעין אשר יהא.
101 ca990277-7bb5-4924-8769-cf69074fd653 1 accepted 0.8625 נוסף הטעם המצטבר השני (התנהלות הוועדה המקומית כלפי בעלי הזכויות) המופיע במפורש בציטוט-התומך אך הושמט בניסוח הקיים, והוסר פרט-המקרה הספציפי (התייחסות מפורשת למועד) כדי להכליל. שתי תכניות נפרדות העומדות כל אחת בפני עצמה — תכנית מקפיאה ותכנית משחררת — עשויות להיראות כתכנית אחת לצורך בחינת פיצויים לפי סעיף 197, מקום שמתקיים ביניהן קשר תכנוני הדוק ("רצף תכנוני"), כגון כאשר התכנית המקפיאה מתייחסת במפורש לתכנית המשחררת הצפויה ולמועדה, ובכך מלמדת שהיא הייתה מלכתחילה תכנית זמנית שנועדה להקפיא מצב קיים עד לביצוע התכנית המשחררת. שתי תכניות נפרדות — תכנית מקפיאה ותכנית משחררת — עשויות להיחשב כתכנית אחת לצורך בחינת הפגיעה והפיצויים לפי סעיף 197 לחוק התכנון והבניה, מקום שמתקיימים שני טעמים מצטברים ושלובים: זיקה תכנונית הדוקה בין התכניות ("רצף תכנוני"), המלמדת שהתכנית המקפיאה נועדה להקפיא מצב קיים עד לאישור התכנית המשחררת כשלב במהלך תכנוני אחד; והתנהלות הוועדה המקומית ביחסיה עם בעלי הזכויות במקרקעין.

View File

@@ -0,0 +1,81 @@
# עיצוב-מחדש: עקרונות משפטיים (לשעבר "הלכות")
> **מקור-ההחלטה:** chaim, 2026-06-19. נולד תוך תכנון סינתזת-`canonical_statement`, כשהתגלה
> שהקורפוס תפח ל-5,243 "הלכות" (18.8 לפסק, 1,820 מהחלטות הוועדה עצמה) — מודל מושגי שגוי.
> מסמך זה הוא מקור-האמת ליוזמה עד שיוטמע ב-`docs/spec/`.
## 1. הבעיה
מערכת-החילוץ הקיימת תייגה כל פרופוזיציה-משפטית כ"הלכה" וחילצה ~18.8 לכל פסק, ללא תקרה,
ללא הבחנת-מקור, ובאישור-אוטומטי חד-מודלי (confidence ≥0.80). תוצאה: 5,243 רשומות —
מנופחות ומתויגות-שגוי. **ועדת ערר מיישמת דין; היא אינה יוצרת הלכה.** קריאה ל-1,820
פרופוזיציות מהחלטות-הוועדה "הלכות" שגויה משפטית.
## 2. מודל-המושגים החדש
מטרייה: **עקרונות משפטיים**. שני תת-סוגים לפי מקור:
| מקור (`case_law.source_kind`) | מונח | מחייב? |
|---|---|---|
| פס"ד מחוזי/עליון (external, binding) | **הלכה** | תקדים מחייב |
| החלטת ועדת-ערר (`internal_committee`) | **כלל פרשני** | לא-מחייב; פרשנות/כלל-החלה שהוועדה גיבשה |
## 3. אלגוריתם-החילוץ החדש (חל על שני המקורות)
```text
1. 3 מודלים שונים (Claude מקומי + DeepSeek + Gemini) מנתחים לעומק את הפסק;
כל מודל מציע מועמדים, כל מועמד עם ציון 0-1.
2. התאמה סמנטית בין שלושת המודלים → סט-מועמדים מאוחד; לכל מועמד:
votes = כמה מודלים זיהו/אימצו אותו (1-3)
score = ממוצע הציונים של המצביעים בלבד
3. דדופ מול הקורפוס (V41 lookup-before-insert, cosine ≥ HALACHA_CANONICAL_THRESHOLD):
• מוכר → קישור ל-canonical קיים (instance/citation). לא נספר במכסה → משחרר סלוט.
• חדש → מועמד לעיקרון חדש.
4. כלל-אישור על מועמדים חדשים:
votes = 3 → APPROVED מיידי (גם אם score < 0.85)
votes ≥ 2 AND score ≥ 0.85 → APPROVED
votes = 2 AND score < 0.85 → pending_review (שער-יו"ר, G10) [ברירת-מחדל]
votes = 1 → DROP (לא עיקרון אמיתי) [ברירת-מחדל]
5. תקרה: עד 5 עקרונות חדשים לפסק. אם >5 עוברים — בוחרים 5 לפי score יורד. [ברירת-מחדל]
מקושרים-מוכרים (שלב 3) אינם נספרים בתקרה.
```
**ברירות-מחדל הנדסיות (ניתנות-לכיול ב-config):** מקרה-גבול (2 הצבעות, score<0.85) → יו"ר ולא
פח; בחירת 5 כש->5 עוברים → לפי score; הצבעה-יחידה → drop.
## 4. סינון רטרואקטיבי
אותו פאנל-3 + תקרת-5 + כלל-0.85 ירוץ על **5,243 הקיימים**, מקובצים לפי פסק-המקור:
לכל פסק — להפעיל את האלגוריתם, לשמור את הניצולים (≤5), לסמן את השאר `rejected` (הפיך,
גיבוי SQL/CSV ל-`data/audit/`). מודל על מהלך-הניקוי 2026-06-03 (`docs/halacha-strict-rubric.md`)
ועל `halacha_panel_approve.py` הקיים.
## 5. תשתית קיימת לבנות עליה
- **פאנל תלת-מודלי:** `scripts/halacha_panel_approve.py` (Claude מקומי + DeepSeek + Gemini,
KEEP_SYSTEM) — אותם 3 מודלים מ-gold-set (AC1=0.92). מקור-הצבעות.
- **דדופ/קישור V41:** `db.nearest_canonical_halacha` (cosine), lookup-before-insert בחילוץ.
- **ולידטורים:** `services/halacha_quality.py` (non_decision/application/thin/quote/NLI).
- **רובריקה:** `docs/halacha-strict-rubric.md` (6 עילות-חיתוך).
- **שער-מקור:** `db.EXTRACTION_ELIGIBLE_PREDICATE` (db.py:7171) — נקודת-הזרקת תקרת/תיוג.
- **סינתזה:** `services/canonical_synthesis.py` + `backfill_canonical_synthesis.py` (כבר נבנו;
יחולו על הניצולים בשם החדש — פאזה אחרונה).
## 6. פאזות-ביצוע (מוצע)
| # | פאזה | תוכן | תלות |
|---|---|---|---|
| **0** | עצירה | הקפאת ריצת-הסינתזה המלאה (בוצע) | — |
| **A** | מודל-הצבעות משותף | שירות `panel_extraction` — 3 מודלים, התאמה סמנטית, votes+mean-score, כלל-אישור. מקור-יחיד ל-B ו-C (G2) | — |
| **B** | רף להבא | חיבור A ל-`halacha_extractor`: תקרת-5, דדופ-משחרר-סלוט, תיוג הלכה/כלל-פרשני לפי מקור. מחליף auto-approve חד-מודלי | A |
| **C** | סינון רטרואקטיבי | סקריפט-batch מריץ A על 5,243 לפי פסק; ניצולים≤5; השאר rejected (הפיך) | A |
| **D** | שם | "הלכה"→הלכה/כלל-פרשני/עקרונות; UI + תיאורי-כלים + תיעוד. rename-DB מלא = אופציונלי-נפרד | — |
| **E** | סינתזה | `canonical_synthesis` על הניצולים, בשם החדש | C, D |
**סדר-בנייה מומלץ:** A → (B ‖ D) → C → E. A הוא הליבה המשותפת; D (שם) עצמאי ובטוח להקדים.
## 7. Invariants
מקיים: INV-G10/INV-LRN1 (שער-יו"ר על מקרי-גבול), INV-AH (עיגון-מקור בחילוץ), INV-G2
(מודל-הצבעות מקור-יחיד ל-B+C), INV-G9 (audit-trail להצבעות + לסינון), INV-G6 (רענון-embedding).
מודל-הצבעות-היו"ר משתלב ב-active-learning הקיים (`halacha_panel_rounds`, [[project_active_learning_panel]]).

View File

@@ -207,6 +207,48 @@ Dimensions for Data Quality* (2013) · ISO 8000 (Data quality) | סטטוס: ver
(`lessons.py:355, 309`). עקיבוּת-מקור קושרת ל-[X5-audit-provenance.md](X5-audit-provenance.md). (`lessons.py:355, 309`). עקיבוּת-מקור קושרת ל-[X5-audit-provenance.md](X5-audit-provenance.md).
**הפרה ידועה:** **הפרה ידועה:**
### INV-LRN6: סינתזת-עיקרון-קנוני מעוגנת ומגודרת-שער (V41 Phase 4 → G10/INV-AH/G9)
**כלל:** סינתזת ה-`canonical_statement` של עיקרון-הלכה קנוני (מיזוג/זיקוק ניסוחי-המופעים
לניסוח אחד כללי) חייבת לקיים שלושה תנאים: **(א) עיגון** — הניסוח נובע מ-`supporting_quote`
של המופעים בלבד, ללא הוספת דין/סייג/ציטוט-תיק שאינו במקור; חוסר-עיגון → **הימנעות**
(`grounded=false`, נשמר הניסוח הקיים) ולא המצאה ([INV-AH](../anti-hallucination-gate.md), AH-1/2/3).
**(ב) שער-drift** — הניסוח המסונתז מוטמע-מחדש ומושווה (cosine) לניסוח-המקור; מתחת לרצפה
(`HALACHA_CANONICAL_SYNTH_DRIFT_FLOOR`=0.80) הסינתזה **נדחית** (נשמר המקור) — הטמעה
מהוזה/סוטה-נושא לא תדרוס עיקרון תקין בשקט. **(ג) שער-יו"ר** — סינתזה אף פעם אינה מאשרת:
היא מקדמת `review_status` מ-`pending_synthesis` ל-`pending_review` בלבד; ההכרעה הסופית
היא של היו"ר בפאנל ([INV-LRN1](#inv-lrn1-עדכון-ידע-דורש-אישור-יור-ידני--אין-auto-commit-governance-g10)/G10).
כל ניסיון-סינתזה (התקבל / נשמר-מקור / נמנע) **מתועד** (CSV ב-`data/audit/` + log), ובהטמעה
מתעדכן ה-embedding יחד עם הניסוח כדי ש-lookup-before-insert (cosine) לא יסחף ([INV-G6](00-constitution.md#inv-g6-re-index-בכל-שינוי-תוכן)).
**מסלול-יחיד (G2):** כל הקוראים (backfill, כלי-MCP `canonical_synthesize_pending`, דריינר-לילה)
עוברים דרך `services/canonical_synthesis.py::synthesize_canonical` — אין נתיב-סינתזה מקביל.
**מקורות:** Stanford RegLab/Magesh et al. (JELS 2025 — grounding מול הזיה) · Dhuliawala et al.
*Chain-of-Verification* (arXiv:2309.11495, 2023) · RAGAS faithfulness (atomic-claim grounding) | סטטוס: verified
**אכיפה:** `services/canonical_synthesis.py` (עיגון בפרומפט, `_new_citations`, שער-drift);
`db.apply_canonical_synthesis` (סטטוס→pending_review אטומי + רענון-embedding); הפאנל הקנוני
(`/precedents`, PR#300) לאישור-יו"ר; CSV-audit ב-`data/audit/canonical-synthesis-*.csv`.
**הפרה ידועה:** — (חדש)
### INV-LRN7: חילוץ-עקרונות מגודר-פאנל + טרמינולוגיה נכונה (#152 → G2/G10/INV-AH)
**כלל:** חילוץ עקרונות-משפטיים מפסיקה (להבא ורטרואקטיבית) עובר משטר-פאנל אחיד:
**3 מודלים עצמאיים** (Claude מקומי + DeepSeek + Gemini) מנתחים לעומק כל החלטה,
מציעים מועמדים עם ציון, המועמדים מותאמים בין-מודלית (cosine), ולכל אחד `votes`
(# מודלים) ו-`score` (ממוצע-המצביעים). **כלל-אישור:** 3 קולות→אישור · 2 וציון≥0.85→
אישור · 2 ו<0.85→`pending_review` (יו"ר, G10) · ≤1→נדחה. **תקרה:** עד
`HALACHA_PANEL_MAX_NEW`=5 עקרונות חדשים לכל החלטה (לפי ציון); עיקרון מוכר מקושר
ל-canonical קיים (cosine, V41) ואינו נספר בתקרה. **טרמינולוגיה (מהות, לא קוסמטיקה):**
ועדת-ערר **מיישמת** דין ואינה יוצרת הלכה — עיקרון מפס"ד מחוזי/עליון מחייב = **הלכה**,
מהחלטת ועדת-ערר = **כלל פרשני**, מפסיקה משכנעת = **עיקרון**; המטרייה = **עקרונות
משפטיים**. הסיווג נגזר מ-`first_established_in` (source_kind/is_binding), ללא עמודה חדשה.
**מקור-יחיד (G2):** extractor (`_extract_via_panel`), סינון רטרואקטיבי (`cull_principles.py`),
ושני הם דרך `services/panel_extraction` + `panel_judges` — אין נתיב-פאנל מקביל.
**מקורות:** gold-set tri-model consensus (AC1=0.92, [[project_goldset_tri_model_consensus]]) ·
LegalBench (gemini-2.5-flash) · Trust-or-Escalate (ICLR 2025) | סטטוס: verified
**אכיפה:** `services/panel_extraction.py` (panel_extract/panel_keep_score/classify/apply_cap),
`services/panel_judges.py`, `halacha_extractor._extract_via_panel`, `db.store_panel_principles`,
`scripts/cull_principles.py`, `services/principles.py` (תווית). config `HALACHA_PANEL_*`.
החלטת-יו"ר 2026-06-19; מקור-אמת: [`../legal-principles-redesign.md`](../legal-principles-redesign.md).
**הפרה ידועה:** — (חדש)
--- ---
## 4. הג'ובים המתוזמנים (תמיכת-תשתית ללולאה) ## 4. הג'ובים המתוזמנים (תמיכת-תשתית ללולאה)

View File

@@ -162,6 +162,28 @@ HALACHA_AUTO_APPROVE_THRESHOLD = float(
os.environ.get("HALACHA_AUTO_APPROVE_THRESHOLD", "0.80") os.environ.get("HALACHA_AUTO_APPROVE_THRESHOLD", "0.80")
) )
# ── Tri-model panel extraction regime (legal-principles-redesign, #152) ──────
# chaim 2026-06-19: replace single-model auto-approve with a 3-model panel that
# deep-analyzes each decision. 3 models (Claude local + DeepSeek + Gemini) each
# PROPOSE candidate principles with a 0-1 score; candidates are matched across
# models (cosine ≥ MATCH_COSINE) → votes (# distinct models) + score (mean of the
# voters' scores). Approval rule (chaim): 3 votes → approve (even score<floor) ·
# ≥2 votes AND score≥SCORE_FLOOR → approve · 2 votes AND score<floor → chair
# (pending_review, G10) · 1 vote → drop. Cap MAX_NEW genuinely-new principles per
# decision (by score); recognized-existing (V41 cosine link) don't count against
# the cap. Applies to extraction (going forward) AND the retroactive cull (#152).
HALACHA_PANEL_SCORE_FLOOR = float(os.environ.get("HALACHA_PANEL_SCORE_FLOOR", "0.85"))
HALACHA_PANEL_MAX_NEW = int(os.environ.get("HALACHA_PANEL_MAX_NEW", "5"))
# 0.80: legal-principle paraphrases across models land ~0.78-0.82 on voyage-law-2
# (the canonical-synthesis dry-run showed faithful rewrites at 0.78-0.80); too high
# a floor misses genuine cross-model agreement → undercounts votes → over-culls.
# Calibrate against the gold-set in Phase C before the production cull.
HALACHA_PANEL_MATCH_COSINE = float(os.environ.get("HALACHA_PANEL_MATCH_COSINE", "0.80"))
# When on (default), extraction uses the decision-level 3-model panel regime above
# instead of the legacy per-chunk single-model auto-approve. Set false to fall back
# to the legacy path (e.g. if all three judges are unreachable).
HALACHA_PANEL_REGIME_ENABLED = os.environ.get("HALACHA_PANEL_REGIME_ENABLED", "true").lower() == "true"
# Halacha dedup-on-insert — within-precedent semantic cosine ceiling. Before # Halacha dedup-on-insert — within-precedent semantic cosine ceiling. Before
# storing a halacha, store_halachot_for_chunk skips it if its rule-embedding has # storing a halacha, store_halachot_for_chunk skips it if its rule-embedding has
# cosine >= this value against an already-stored halacha of the SAME precedent # cosine >= this value against an already-stored halacha of the SAME precedent
@@ -210,6 +232,20 @@ HALACHA_CONSOLIDATE_EFFORT = os.environ.get("HALACHA_CONSOLIDATE_EFFORT", "high"
HALACHA_CANONICAL_LOOKUP_ENABLED = os.environ.get("HALACHA_CANONICAL_LOOKUP_ENABLED", "true").lower() == "true" HALACHA_CANONICAL_LOOKUP_ENABLED = os.environ.get("HALACHA_CANONICAL_LOOKUP_ENABLED", "true").lower() == "true"
HALACHA_CANONICAL_THRESHOLD = float(os.environ.get("HALACHA_CANONICAL_THRESHOLD", "0.85")) HALACHA_CANONICAL_THRESHOLD = float(os.environ.get("HALACHA_CANONICAL_THRESHOLD", "0.85"))
# V41 canonical synthesis (Phase 4) — a claude_session pass that rewrites each
# canonical's statement (carried over verbatim from the representative halacha at
# backfill) into ONE clean, case-independent legal principle, grounded in the
# instances' supporting quotes (INV-AH), then flips review_status
# pending_synthesis → pending_review for the chair gate (G10). Opus by default —
# substance-bearing rewrite, chair-facing. Runs through the local CLI (zero $-cost,
# but consumes subscription usage windows → throttled via usage_limits).
# Drift guard: the synthesized statement is re-embedded and compared (cosine) to
# the source; below the floor the synthesis is REJECTED (kept as-is, flagged) so a
# hallucinated/topic-drifted rewrite never silently overwrites a sound principle.
HALACHA_CANONICAL_SYNTH_MODEL = os.environ.get("HALACHA_CANONICAL_SYNTH_MODEL", HALACHA_EXTRACT_MODEL)
HALACHA_CANONICAL_SYNTH_EFFORT = os.environ.get("HALACHA_CANONICAL_SYNTH_EFFORT", "high")
HALACHA_CANONICAL_SYNTH_DRIFT_FLOOR = float(os.environ.get("HALACHA_CANONICAL_SYNTH_DRIFT_FLOOR", "0.80"))
# Google Cloud Vision (OCR for scanned PDFs) # Google Cloud Vision (OCR for scanned PDFs)
GOOGLE_CLOUD_VISION_API_KEY = os.environ.get("GOOGLE_CLOUD_VISION_API_KEY", "") GOOGLE_CLOUD_VISION_API_KEY = os.environ.get("GOOGLE_CLOUD_VISION_API_KEY", "")

View File

@@ -465,6 +465,13 @@ async def canonical_halacha_get(canonical_id: str) -> str:
return await plib.canonical_halacha_get(canonical_id) return await plib.canonical_halacha_get(canonical_id)
@mcp.tool()
async def canonical_synthesize_pending(limit: int = 20) -> str:
"""סנתז ניסוח-קנוני לעקרונות הממתינים (pending_synthesis) → pending_review (שער-יו"ר). V41 Phase 4.
מעוגן בציטוטי-המופעים (INV-AH) עם שער-drift. on-demand/burst; המסה הראשונית ב-backfill."""
return await plib.canonical_synthesize_pending(limit)
# Documents # Documents
@mcp.tool() @mcp.tool()
async def document_upload( async def document_upload(

View File

@@ -0,0 +1,220 @@
"""Canonical-halacha synthesis (V41 Phase 4).
The backfill carried each canonical's ``canonical_statement`` over verbatim from
its representative halacha. This pass asks a local ``claude_session`` model to
rewrite that statement into ONE clean, case-independent legal principle — for the
~6 multi-instance canonicals a genuine merge of the N phrasings, for the singleton
majority a faithful generalising polish — then advances ``review_status``
pending_synthesis → pending_review for the chair gate (G10 / INV-LRN1).
Invariants this module upholds:
• INV-AH — the synthesis is GROUNDED in the instances' ``supporting_quote``s.
The model abstains (``grounded=false``) rather than invent law, no
new case citations may appear, and a re-embedding **drift guard**
rejects any rewrite that drifts too far from the source statement.
• G10/INV-LRN1 — never auto-approves; lands at ``pending_review`` for the chair.
• G9 — every outcome (accepted / kept-original / abstained) is logged + returned.
• G2 — single synthesis path; the backfill script, the on-demand MCP tool and
the nightly drain all call :func:`synthesize_canonical` here.
LLM calls go through ``claude_session`` (local ``claude -p`` CLI) only — never the
Anthropic SDK, never from the FastAPI container (see claude_session docstring).
"""
from __future__ import annotations
import logging
import math
import re
from uuid import UUID
from legal_mcp import config
from legal_mcp.services import claude_session, db, embeddings
logger = logging.getLogger(__name__)
# Case-citation shapes (docket numbers) that must NOT be invented by the rewrite:
# "1234/05", "85074-09-24", "8125-09-24". Statute section refs ("סעיף 197") do not
# match and are legitimately part of a principle.
_CITATION_RE = re.compile(r"\d{3,5}[-/]\d{2}(?:[-/]\d{2,4})?")
_SYSTEM = (
"אתה עורך-דין בכיר המנסח עקרונות-הלכה קנוניים לבסיס-ידע משפטי של ועדת ערר "
"לתכנון ובנייה. תפקידך לזקק ניסוח אחד, כללי ומדויק, של עיקרון משפטי — לא לסכם "
"תיק ולא להמציא דין."
)
def _build_prompt(data: dict) -> str:
instances = data.get("instances") or []
blocks: list[str] = []
for i, inst in enumerate(instances, 1):
parts = [f"### מופע {i} (תיק {inst.get('case_number') or ''}, "
f"סוג: {inst.get('instance_type') or ''})"]
if inst.get("rule_statement"):
parts.append(f"ניסוח-העיקרון: {inst['rule_statement']}")
if inst.get("supporting_quote"):
parts.append(f"ציטוט-תומך (מקור-העיגון): \"{inst['supporting_quote']}\"")
if inst.get("reasoning_summary"):
parts.append(f"נימוק: {inst['reasoning_summary']}")
blocks.append("\n".join(parts))
evidence = "\n\n".join(blocks) if blocks else "(אין מופעים)"
multi = len(instances) > 1
task = (
"מזג את כל ניסוחי-המופעים לעיקרון קנוני אחד המשותף לכולם."
if multi else
"נסח מחדש את העיקרון לניסוח קנוני נקי וכללי."
)
return f"""{_SYSTEM}
הניסוח הקנוני הנוכחי (שיש לשפר):
{data.get('canonical_statement') or '(ריק)'}
מקורות-העיגון (מופעי העיקרון בפסיקה):
{evidence}
## המשימה
{task}
## כללים מחייבים (INV-AH — עיגון, ללא הזיה)
1. **עיגון-מקור בלבד.** הניסוח חייב לנבוע מהציטוטים-התומכים שלמעלה. אסור להוסיף דין, חריג, סייג או תנאי שאינו עולה מהמקורות.
2. **ללא ציטוטי-תיקים חדשים.** אל תוסיף מספרי-תיק/פסקי-דין שאינם מופיעים במקורות. הפניה לסעיף-חוק כללי (למשל "סעיף 197 לחוק התכנון והבניה") מותרת אם היא חלק מהעיקרון.
3. **כללי ובלתי-תלוי-תיק.** הסר שמות-צדדים, עובדות-תיק ספציפיות ומספרים קונקרטיים. נסח עיקרון רב-תחולה, לא סיכום של מקרה.
4. **רגיסטר משפטי נקי** בעברית, משפט אחד עד שניים, ללא מילות-פתיחה ("נקבע כי", "בית-המשפט קבע") — רק העיקרון עצמו.
5. **הימנעות עדיפה על המצאה.** אם אינך יכול לזקק עיקרון מעוגן מהמקורות — החזר grounded=false והשאר את הניסוח הקיים.
## פלט — JSON בלבד, ללא markdown וללא הסבר:
{{
"canonical_statement": "<הניסוח הקנוני המזוקק, או הניסוח הקיים אם grounded=false>",
"grounded": true,
"changed": true,
"reason": "<משפט קצר: מה שונה, או מדוע נמנעת>"
}}"""
def _cosine(a: list[float], b: list[float]) -> float:
dot = sum(x * y for x, y in zip(a, b))
na = math.sqrt(sum(x * x for x in a))
nb = math.sqrt(sum(y * y for y in b))
if na == 0 or nb == 0:
return 0.0
return dot / (na * nb)
def _new_citations(text: str, source_text: str) -> list[str]:
"""Docket-number tokens present in the rewrite but absent from the source evidence."""
src = set(_CITATION_RE.findall(source_text))
return [tok for tok in _CITATION_RE.findall(text) if tok not in src]
async def synthesize_canonical(
canonical_id: UUID,
*,
model: str | None = None,
effort: str | None = None,
drift_floor: float | None = None,
) -> dict:
"""Synthesize one canonical's statement. PURE — does not write to the DB.
Returns a proposal dict the caller applies (or not, for dry-run):
{status, canonical_id, accepted, original, proposed, embedding, drift_cosine, reason}
status ∈ {accepted, abstained, drift_rejected, new_citation, no_instances,
llm_error, not_found}. ``accepted`` carries ``proposed`` + ``embedding``
(the rewrite's vector, to commit alongside the statement). Every other status
keeps the original statement.
"""
model = model or config.HALACHA_CANONICAL_SYNTH_MODEL
effort = effort or config.HALACHA_CANONICAL_SYNTH_EFFORT
drift_floor = config.HALACHA_CANONICAL_SYNTH_DRIFT_FLOOR if drift_floor is None else drift_floor
data = await db.fetch_canonical_synthesis_input(canonical_id)
if data is None:
return {"status": "not_found", "canonical_id": str(canonical_id)}
original = data.get("canonical_statement") or ""
instances = data.get("instances") or []
base = {"status": "", "canonical_id": str(canonical_id), "accepted": False,
"original": original, "proposed": original, "embedding": None,
"drift_cosine": None, "reason": ""}
if not instances:
return {**base, "status": "no_instances", "reason": "no linked instances"}
try:
result = await claude_session.query_json(
_build_prompt(data), model=model, effort=effort, tools="",
)
except Exception as e:
logger.warning("synthesize_canonical %s: LLM error: %s", canonical_id, e)
return {**base, "status": "llm_error", "reason": str(e)}
if not isinstance(result, dict) or not result.get("canonical_statement"):
return {**base, "status": "llm_error", "reason": "malformed LLM output"}
if not result.get("grounded", True):
return {**base, "status": "abstained",
"reason": result.get("reason") or "model abstained (not grounded)"}
proposed = str(result["canonical_statement"]).strip()
if not proposed or proposed == original:
return {**base, "status": "abstained", "reason": "no change proposed"}
# AH-2: no invented docket citations. Source = current statement + all evidence.
source_text = original + " " + " ".join(
f"{i.get('rule_statement', '')} {i.get('supporting_quote', '')}" for i in instances
)
invented = _new_citations(proposed, source_text)
if invented:
return {**base, "status": "new_citation", "proposed": proposed,
"reason": f"introduced citations absent from source: {invented}"}
# Drift guard: re-embed the rewrite, compare to the source statement's vector.
new_emb = (await embeddings.embed_texts([proposed]))[0]
src_emb = data.get("embedding")
if not src_emb:
src_emb = (await embeddings.embed_texts([original]))[0]
drift = _cosine(new_emb, src_emb)
if drift < drift_floor:
return {**base, "status": "drift_rejected", "proposed": proposed,
"drift_cosine": round(drift, 4),
"reason": f"drift {drift:.3f} < floor {drift_floor}"}
return {**base, "status": "accepted", "accepted": True, "proposed": proposed,
"embedding": new_emb, "drift_cosine": round(drift, 4),
"reason": result.get("reason") or "synthesized"}
async def synthesize_and_apply(
canonical_id: UUID,
*,
model: str | None = None,
effort: str | None = None,
drift_floor: float | None = None,
) -> dict:
"""Synthesize one canonical and commit the outcome.
On ``accepted`` writes the new statement + its embedding. On any other terminal
outcome (abstained / drift_rejected / new_citation) the ORIGINAL statement is
kept but ``review_status`` still advances to ``pending_review`` — a synthesis was
attempted, so the row leaves the queue (no infinite re-attempt) and reaches the
chair as-is. ``not_found`` / ``no_instances`` / ``llm_error`` are NOT committed
(transient or empty) so they are retried on the next pass.
"""
proposal = await synthesize_canonical(
canonical_id, model=model, effort=effort, drift_floor=drift_floor,
)
status = proposal["status"]
if status in ("not_found", "no_instances", "llm_error"):
return proposal
if proposal["accepted"]:
await db.apply_canonical_synthesis(
canonical_id, proposal["proposed"], embedding=proposal["embedding"],
)
else:
# keep original statement + embedding, just advance the gate
await db.apply_canonical_synthesis(canonical_id, proposal["original"])
return proposal

View File

@@ -14,7 +14,7 @@ import asyncpg
from pgvector.asyncpg import register_vector from pgvector.asyncpg import register_vector
from legal_mcp import config from legal_mcp import config
from legal_mcp.services import court_citation, halacha_quality from legal_mcp.services import court_citation, halacha_quality, principles
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -5408,6 +5408,82 @@ async def store_halachot_for_chunk(
return inserted return inserted
async def store_panel_principles(
case_law_id: UUID, principles: list[dict],
) -> dict:
"""Persist principles selected by the tri-model panel regime (#152, Phase B).
Unlike :func:`store_halachot_for_chunk`, the verdict is ALREADY decided by the
panel — this does NOT recompute auto-approve from confidence. Each principle
carries its own ``review_status`` (approved / pending_review from the panel),
``instance_type`` ('original' = new canonical, 'citation' = link to existing),
and ``canonical_id`` (when a citation). The cap-of-5 + dedup-frees-slot is
applied by the CALLER (the extractor); this is the atomic writer.
Provenance (G9): reviewer = "panel:<voters> v<votes>/s<score>". Returns
{created_new, linked} counts.
"""
pool = await get_pool()
created_new = linked = 0
async with pool.acquire() as conn:
async with conn.transaction():
base = await conn.fetchval(
"SELECT COALESCE(MAX(halacha_index), -1) + 1 FROM halachot "
"WHERE case_law_id = $1", case_law_id,
)
for p in principles:
voters = ",".join(p.get("voters") or [])
reviewer = f"panel:{voters} v{p.get('votes', 0)}/s{p.get('score', 0)}"
approved = p.get("review_status") == "approved"
emb = p.get("embedding")
canonical_id = p.get("canonical_id")
instance_type = p.get("instance_type", "original")
idx = base + created_new + linked
await conn.execute(
"""INSERT INTO halachot
(case_law_id, halacha_index, rule_statement, rule_type,
reasoning_summary, supporting_quote, page_reference,
practice_areas, subject_tags, cites, confidence,
quote_verified, quality_flags, embedding, review_status,
reviewer, reviewed_at, canonical_id, instance_type)
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,
CASE WHEN $17 THEN now() ELSE NULL END,$18,$19)""",
case_law_id, idx, p["rule_statement"],
p.get("rule_type", "interpretive"), p.get("reasoning_summary", ""),
p["supporting_quote"], p.get("page_reference", ""),
p.get("practice_areas", []), p.get("subject_tags", []),
p.get("cites", []), float(p.get("confidence", p.get("score", 0.0))),
p.get("quote_verified", False), p.get("quality_flags", []),
emb, p.get("review_status", "pending_review"), reviewer,
approved, canonical_id, instance_type,
)
if instance_type == "citation" and canonical_id is not None:
await conn.execute(
"UPDATE canonical_halachot SET "
"instance_count = instance_count + 1, updated_at = now() "
"WHERE id = $1", canonical_id,
)
linked += 1
else:
new_canon_id = await conn.fetchval(
"INSERT INTO canonical_halachot "
"(canonical_statement, rule_type, practice_areas, subject_tags, "
" embedding, first_established_in, review_status, instance_count) "
"VALUES ($1,$2,$3,$4,$5,$6,'pending_synthesis',1) RETURNING id",
p.get("rule_statement") or "", p.get("rule_type", "interpretive"),
p.get("practice_areas") or [], p.get("subject_tags") or [],
emb, case_law_id,
)
await conn.execute(
"UPDATE halachot SET canonical_id=$1 WHERE case_law_id=$2 "
"AND halacha_index=$3", new_canon_id, case_law_id, idx,
)
created_new += 1
logger.info("store_panel_principles: case_law=%s%d new, %d linked",
case_law_id, created_new, linked)
return {"created_new": created_new, "linked": linked}
async def list_halachot( async def list_halachot(
case_law_id: UUID | None = None, case_law_id: UUID | None = None,
review_status: str | None = None, review_status: str | None = None,
@@ -6080,7 +6156,8 @@ async def get_canonical_halacha(canonical_id: "UUID") -> "dict | None":
"SELECT ch.id::text, ch.canonical_statement, ch.rule_type, " "SELECT ch.id::text, ch.canonical_statement, ch.rule_type, "
" ch.practice_areas, ch.subject_tags, ch.review_status, " " ch.practice_areas, ch.subject_tags, ch.review_status, "
" ch.instance_count, ch.created_at, ch.updated_at, " " ch.instance_count, ch.created_at, ch.updated_at, "
" cl.case_number AS first_established_case " " cl.case_number AS first_established_case, "
" cl.source_kind, cl.is_binding "
"FROM canonical_halachot ch " "FROM canonical_halachot ch "
"LEFT JOIN case_law cl ON cl.id = ch.first_established_in " "LEFT JOIN case_law cl ON cl.id = ch.first_established_in "
"WHERE ch.id = $1", "WHERE ch.id = $1",
@@ -6096,10 +6173,12 @@ async def get_canonical_halacha(canonical_id: "UUID") -> "dict | None":
"WHERE h.canonical_id = $1 ORDER BY h.instance_type, cl.case_number", "WHERE h.canonical_id = $1 ORDER BY h.instance_type, cl.case_number",
canonical_id, canonical_id,
) )
return { out = dict(row)
**dict(row), # #152: source-derived class + Hebrew label (הלכה / כלל פרשני / עיקרון).
"instances": [dict(i) for i in instances], out["principle_class"] = principles.principle_class(out.get("source_kind"), out.get("is_binding"))
} out["principle_label"] = principles.label_for_class(out["principle_class"])
out["instances"] = [dict(i) for i in instances]
return out
async def list_canonical_halachot( async def list_canonical_halachot(
@@ -6114,24 +6193,33 @@ async def list_canonical_halachot(
params: list = [] params: list = []
idx = 1 idx = 1
if practice_area: if practice_area:
conditions.append(f"${ idx} = ANY(practice_areas)") conditions.append(f"${ idx} = ANY(ch.practice_areas)")
params.append(practice_area) params.append(practice_area)
idx += 1 idx += 1
if review_status: if review_status:
conditions.append(f"review_status = ${idx}") conditions.append(f"ch.review_status = ${idx}")
params.append(review_status) params.append(review_status)
idx += 1 idx += 1
params += [limit, offset] params += [limit, offset]
rows = await pool.fetch( rows = await pool.fetch(
f"SELECT id::text, canonical_statement, rule_type, practice_areas, " f"SELECT ch.id::text, ch.canonical_statement, ch.rule_type, ch.practice_areas, "
f" subject_tags, review_status, instance_count, created_at, updated_at " f" ch.subject_tags, ch.review_status, ch.instance_count, "
f"FROM canonical_halachot " f" ch.created_at, ch.updated_at, cl.source_kind, cl.is_binding "
f"FROM canonical_halachot ch "
f"LEFT JOIN case_law cl ON cl.id = ch.first_established_in "
f"WHERE {' AND '.join(conditions)} " f"WHERE {' AND '.join(conditions)} "
f"ORDER BY instance_count DESC, created_at DESC " f"ORDER BY ch.instance_count DESC, ch.created_at DESC "
f"LIMIT ${idx} OFFSET ${idx + 1}", f"LIMIT ${idx} OFFSET ${idx + 1}",
*params, *params,
) )
return [dict(r) for r in rows] out = []
for r in rows:
d = dict(r)
cls = principles.principle_class(d.pop("source_kind", None), d.pop("is_binding", None))
d["principle_class"] = cls
d["principle_label"] = principles.label_for_class(cls)
out.append(d)
return out
async def update_canonical_statement( async def update_canonical_statement(
@@ -6147,6 +6235,71 @@ async def update_canonical_statement(
return result.split()[-1] != "0" return result.split()[-1] != "0"
async def fetch_canonical_synthesis_input(canonical_id: "UUID") -> "dict | None":
"""Fetch everything the canonical-synthesis pass needs for one principle (V41 Phase 4).
Unlike :func:`get_canonical_halacha` (UI-facing) this returns the canonical's own
``embedding`` (as a python list, for the drift guard) AND each instance's full text
fields (``rule_statement`` + ``supporting_quote`` + ``reasoning_summary``) — the
grounding evidence the LLM rewrites from (INV-AH). Returns None if not found.
"""
pool = await get_pool()
row = await pool.fetchrow(
"SELECT id::text, canonical_statement, rule_type, practice_areas, "
" subject_tags, review_status, instance_count, embedding "
"FROM canonical_halachot WHERE id=$1",
canonical_id,
)
if not row:
return None
instances = await pool.fetch(
"SELECT h.instance_type, h.treatment, h.rule_statement, "
" h.supporting_quote, h.reasoning_summary, "
" cl.case_number, cl.case_name "
"FROM halachot h JOIN case_law cl ON cl.id = h.case_law_id "
"WHERE h.canonical_id=$1 "
"ORDER BY (h.instance_type='original') DESC, cl.case_number",
canonical_id,
)
emb = row["embedding"]
out = dict(row)
out["embedding"] = list(emb) if emb is not None else None
out["instances"] = [dict(i) for i in instances]
return out
async def apply_canonical_synthesis(
canonical_id: "UUID",
canonical_statement: str,
embedding: "list[float] | None" = None,
review_status: str = "pending_review",
) -> bool:
"""Atomically commit a synthesis outcome for one canonical (V41 Phase 4).
Always advances ``review_status`` (default → ``pending_review`` for the chair
gate, G10/INV-LRN1) and writes ``canonical_statement``. ``embedding`` is updated
only when provided (None = leave as-is) so the keep-original path on a
drift-rejected/abstained synthesis doesn't need to re-embed. Returns True if the
row existed.
"""
pool = await get_pool()
if embedding is None:
result = await pool.execute(
"UPDATE canonical_halachot "
"SET canonical_statement=$2, review_status=$3, updated_at=now() "
"WHERE id=$1",
canonical_id, canonical_statement, review_status,
)
else:
result = await pool.execute(
"UPDATE canonical_halachot "
"SET canonical_statement=$2, embedding=$3, review_status=$4, updated_at=now() "
"WHERE id=$1",
canonical_id, canonical_statement, embedding, review_status,
)
return result.split()[-1] != "0"
async def list_canonical_instances(canonical_id: "UUID") -> list[dict]: async def list_canonical_instances(canonical_id: "UUID") -> list[dict]:
"""List all halachot (instances) sharing a canonical_id — used by the UI accordion.""" """List all halachot (instances) sharing a canonical_id — used by the UI accordion."""
pool = await get_pool() pool = await get_pool()

View File

@@ -31,7 +31,7 @@ import asyncpg
from legal_mcp import config from legal_mcp import config
from legal_mcp.config import parse_llm_json from legal_mcp.config import parse_llm_json
from legal_mcp.services import ( from legal_mcp.services import (
claude_session, db, embeddings, halacha_quality, proofreader, claude_session, db, embeddings, halacha_quality, panel_extraction, proofreader,
) )
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -603,6 +603,15 @@ async def extract(case_law_id: UUID | str, force: bool = False,
stop_keepalive = asyncio.Event() stop_keepalive = asyncio.Event()
keepalive_task = asyncio.create_task(_lock_keepalive(lock_conn, stop_keepalive)) keepalive_task = asyncio.create_task(_lock_keepalive(lock_conn, stop_keepalive))
try: try:
if config.HALACHA_PANEL_REGIME_ENABLED:
# #152 Phase B — decision-level 3-model panel (votes+cap+source label).
res = await _extract_via_panel(case_law_id, force=force)
if res is not None:
return res
# panel unavailable (all judges down) → degrade to legacy path so
# extraction still makes progress instead of stalling the queue.
logger.warning("panel regime returned no result for %s"
"falling back to legacy per-chunk extraction", case_law_id)
return await _extract_impl(case_law_id, force=force, effort=effort) return await _extract_impl(case_law_id, force=force, effort=effort)
finally: finally:
# Stop the keepalive and await it BEFORE reusing lock_conn for unlock — # Stop the keepalive and await it BEFORE reusing lock_conn for unlock —
@@ -894,3 +903,122 @@ async def _extract_impl(case_law_id: UUID, force: bool = False,
"preserved_approved": preserved_approved, "preserved_approved": preserved_approved,
"total_chunks": len(chunks), "total_chunks": len(chunks),
} }
# Cap the text sent to each judge — extractable chunks already exclude
# facts/intro/arguments, but a very long decision could still blow a context.
_PANEL_MAX_CHARS = 80_000
# Canonical states a new extraction may dedup-link against (frees a cap slot).
_PANEL_DEDUP_STATES = ("pending_synthesis", "pending_review", "approved", "published")
async def _extract_via_panel(
case_law_id: UUID, force: bool = False, dry_run: bool = False,
) -> dict | None:
"""Decision-level tri-model panel extraction (#152, Phase B).
Replaces the per-chunk single-model auto-approve with: 3 models propose →
cross-model votes + mean-score → chair's approval rule → dedup vs corpus
(link known → frees a slot) → cap of HALACHA_PANEL_MAX_NEW genuinely-new
principles per decision (by score). A principle from a binding higher court
is a הלכה; from the appeals committee a כלל פרשני (labeling via source).
Returns the result dict, or **None** when fewer than 2 judges are reachable
(caller falls back to the legacy path so the queue still drains). ``dry_run``
computes the full plan WITHOUT writing — used for validation/chair preview.
"""
record = await db.get_case_law(case_law_id)
if not record:
return {"status": "not_found", "extracted": 0, "stored": 0}
# Idempotency: panel extraction is decision-level (no per-chunk checkpoints).
# Without force, skip if this decision already has halachot (avoid dup re-run).
if not force and not dry_run:
existing = await db.list_halachot(case_law_id=case_law_id, limit=1)
if existing:
total = len(await db.list_halachot(case_law_id=case_law_id, limit=10_000))
await db.set_case_law_halacha_status(case_law_id, "completed")
return {"status": "completed", "extracted": total, "stored": total,
"resumed": True, "panel": True}
source_kind = record.get("source_kind") or "external_upload"
is_binding = bool(record.get("is_binding"))
full_text = record.get("full_text") or ""
chunks, used_fallback = await _select_extractable_chunks(case_law_id)
if not chunks:
if not dry_run:
await db.set_case_law_halacha_status(case_law_id, "completed")
return {"status": "no_chunks", "extracted": 0, "stored": 0, "panel": True}
preserved = 0
if force and not dry_run:
reset = await db.reset_halacha_extraction(case_law_id)
preserved = reset.get("preserved", 0)
if not dry_run:
await db.set_case_law_halacha_status(case_law_id, "processing")
text = "\n\n".join(c["content"] for c in chunks)[:_PANEL_MAX_CHARS]
clusters = await panel_extraction.panel_extract(
text, source_kind=source_kind, is_binding=is_binding,
)
if not clusters:
# distinguish "judges down" (→ fallback) from "genuinely nothing found".
if sum(panel_extraction.panel_judges.available().values()) < 2:
return None
if not dry_run:
await db.mark_all_chunks_extracted(case_law_id)
await db.set_case_law_halacha_status(case_law_id, "completed")
return {"status": "completed", "extracted": 0, "stored": 0,
"new": 0, "linked": 0, "panel": True, "preserved_approved": preserved}
kept = [c for c in clusters if c["verdict"] in ("approved", "pending_review")]
max_new = config.HALACHA_PANEL_MAX_NEW
new_count = linked = dropped_cap = 0
to_store: list[dict] = []
for c in kept: # strongest first (panel_extract sorts by votes,score)
emb = c.get("embedding")
canonical_id, instance_type = None, "original"
if emb is not None and config.HALACHA_CANONICAL_LOOKUP_ENABLED:
match = await db.nearest_canonical_halacha(
emb, threshold=config.HALACHA_CANONICAL_THRESHOLD,
status_filter=_PANEL_DEDUP_STATES,
)
if match:
canonical_id, instance_type = match[0], "citation"
if instance_type == "original":
if new_count >= max_new: # cap: linked don't count, only new
dropped_cap += 1
continue
new_count += 1
else:
linked += 1
to_store.append({
"rule_statement": c["rule_statement"], "supporting_quote": c["supporting_quote"],
"reasoning_summary": c["reasoning_summary"], "rule_type": c["rule_type"],
"confidence": c["score"], "score": c["score"], "votes": c["votes"],
"voters": c["voters"], "review_status": c["verdict"], "embedding": emb,
"instance_type": instance_type, "canonical_id": canonical_id,
"quote_verified": _verify_quote(c["supporting_quote"], full_text),
})
if dry_run:
return {"status": "dry_run", "panel": True, "source_kind": source_kind,
"candidates": clusters, "to_store": to_store,
"new": new_count, "linked": linked, "dropped_over_cap": dropped_cap}
res = await db.store_panel_principles(case_law_id, to_store)
await db.mark_all_chunks_extracted(case_law_id)
await db.set_case_law_halacha_status(case_law_id, "completed")
total = len(await db.list_halachot(case_law_id=case_law_id, limit=10_000))
logger.info(
"halacha panel: case_law=%s (%s) — %d new + %d linked stored, "
"%d dropped over cap-%d", case_law_id, source_kind,
res["created_new"], res["linked"], dropped_cap, max_new,
)
return {"status": "completed", "extracted": total,
"stored": res["created_new"] + res["linked"], "new": res["created_new"],
"linked": res["linked"], "dropped_over_cap": dropped_cap,
"panel": True, "preserved_approved": preserved}

View File

@@ -0,0 +1,323 @@
"""Tri-model panel extraction regime (legal-principles-redesign, #152).
The shared core (G2) for BOTH the going-forward extractor (Phase B) and the
retroactive cull (Phase C). chaim 2026-06-19:
1. THREE models (Claude local + DeepSeek + Gemini) deep-analyze a decision and
each PROPOSES candidate principles, each with a 0-1 score.
2. Candidates are matched ACROSS models by embedding cosine → a "merged
candidate" carries: votes (# distinct models that proposed it) and score
(mean of the voters' scores).
3. Approval rule:
votes == 3 → approved (even if score < floor)
votes >= 2 AND score >= SCORE_FLOOR → approved
votes == 2 AND score < SCORE_FLOOR → pending_review (chair, G10)
votes <= 1 → rejected (dropped)
4. The CALLER applies the corpus-dedup (V41 link → frees a slot) and the
MAX_NEW cap (top-N approved-new by score). This module is corpus-agnostic
and DB-free so it is unit-testable and reused identically by B and C.
Terminology (#152): a principle from a binding higher court is a הלכה; one from
the appeals committee (internal_committee) is a כלל פרשני (interpretive rule) —
the committee applies law, it does not make binding precedent. The extract prompt
adapts to ``source_kind`` and, for the committee, demands genuine novelty.
"""
from __future__ import annotations
import logging
import math
import httpx
from legal_mcp import config
from legal_mcp.services import embeddings, panel_judges
logger = logging.getLogger(__name__)
_RULE_TYPES = ("holding", "interpretive", "procedural") # citable kinds only
def _extract_system(source_kind: str, is_binding: bool, max_candidates: int) -> str:
if source_kind == "internal_committee":
nature = (
"המקור הוא החלטת ועדת-ערר. ועדת ערר מיישמת דין קיים ואינה יוצרת הלכה מחייבת. "
"חלץ אך ורק כללים פרשניים חדשים לגמרי שהוועדה גיבשה — לא יישום של הלכה ידועה, "
"לא חזרה על דין מוכר, ולא תיאור עובדות. אם אין כלל פרשני חדש אמיתי — החזר []."
)
elif is_binding:
nature = (
"המקור הוא פסק-דין של בית-משפט מחוזי/עליון. חלץ הלכות — כללים משפטיים "
"בני-הכללה והסתמכות שהפסק קובע או מאמץ ומיישם."
)
else:
nature = (
"המקור הוא פסיקה משכנעת (לא-מחייבת). חלץ עקרונות משפטיים בני-הכללה בלבד."
)
return (
"אתה משפטן בכיר בוועדת ערר לתכנון ובנייה, מנתח פסיקה לבסיס-ידע בר-ציטוט. "
f"{nature}\n\n"
"כללי-ברזל:\n"
"• רק עיקרון כללי בר-הכללה והסתמכות — לא החלה תלוית-עובדות/צדדים/סכומים, "
"לא אמרת-אגב (סוגיה שלא הוכרעה), לא חזרה מילולית על הציטוט ללא הפשטה.\n"
"• כל עיקרון חייב עיגון: ציטוט מילולי מהמקור התומך בו (INV-AH).\n"
f"• החזר עד {max_candidates} המועמדים החזקים ביותר בלבד; מוטב מעט ואיכותי.\n\n"
"פלט — JSON array בלבד, ללא markdown:\n"
"[{\n"
' "rule_statement": "<העיקרון, כללי ובלתי-תלוי-תיק>",\n'
' "supporting_quote": "<ציטוט מילולי מהמקור>",\n'
' "reasoning_summary": "<מדוע זה עיקרון בר-הסתמכות>",\n'
' "rule_type": "holding|interpretive|procedural",\n'
' "score": 0.0-1.0\n'
"}]\n"
"אם אין עקרונות ראויים — החזר []."
)
def _coerce_list(reply) -> list[dict]:
"""A judge may return a list, or {"principles":[...]}/{"items":[...]}, or junk."""
if isinstance(reply, list):
items = reply
elif isinstance(reply, dict):
for k in ("principles", "items", "halachot", "results", "candidates"):
if isinstance(reply.get(k), list):
items = reply[k]
break
else:
items = [reply] if reply.get("rule_statement") else []
else:
return []
out = []
for it in items:
if not isinstance(it, dict):
continue
rule = (it.get("rule_statement") or "").strip()
quote = (it.get("supporting_quote") or "").strip()
if not rule or not quote:
continue
rt = (it.get("rule_type") or "interpretive").strip().lower()
try:
score = float(it.get("score", 0.0))
except (TypeError, ValueError):
score = 0.0
out.append({
"rule_statement": rule,
"supporting_quote": quote,
"reasoning_summary": (it.get("reasoning_summary") or "").strip(),
"rule_type": rt if rt in _RULE_TYPES else "interpretive",
"score": max(0.0, min(1.0, score)),
})
return out
def _cosine(a: list[float], b: list[float]) -> float:
dot = sum(x * y for x, y in zip(a, b))
na = math.sqrt(sum(x * x for x in a))
nb = math.sqrt(sum(y * y for y in b))
return 0.0 if na == 0 or nb == 0 else dot / (na * nb)
def classify(votes: int, score: float) -> str:
"""The chair's approval rule → 'approved' | 'pending_review' | 'rejected'."""
floor = config.HALACHA_PANEL_SCORE_FLOOR
if votes >= 3:
return "approved"
if votes == 2:
return "approved" if score >= floor else "pending_review"
return "rejected"
def apply_cap(judged: list[dict], max_new: int | None = None) -> list[dict]:
"""Per-decision cap for the retroactive cull (#152, Phase C).
``judged`` = a decision's principles, each with a panel ``verdict`` + ``score``.
Survivors (approved/pending_review) are ranked by score; those beyond ``max_new``
are downgraded to 'rejected' (over-cap). Already-rejected stay rejected. Returns
a new list with ``final_verdict`` set on each (order preserved). Pure.
"""
max_new = config.HALACHA_PANEL_MAX_NEW if max_new is None else max_new
survivors = [j for j in judged if j.get("verdict") in ("approved", "pending_review")]
survivors.sort(key=lambda j: j.get("score", 0.0), reverse=True)
keep_ids = {id(j) for j in survivors[:max_new]}
out = []
for j in judged:
v = j.get("verdict")
if v in ("approved", "pending_review") and id(j) not in keep_ids:
final = "rejected" # over the cap
else:
final = v
out.append({**j, "final_verdict": final})
return out
def cluster_candidates(
per_model: dict[str, list[dict]], embs: dict[int, list[float]],
) -> list[dict]:
"""Greedy cross-model clustering. ``per_model`` maps judge→its candidate list;
``embs`` maps id(candidate)→embedding. Each cluster merges near-duplicate
proposals: votes = # distinct models present, score = mean of each model's
BEST score in the cluster, representative = highest-scoring member.
Pure (no I/O) given the embeddings — unit-testable.
"""
match = config.HALACHA_PANEL_MATCH_COSINE
clusters: list[dict] = []
# deterministic order: model order, then model-local order
flat: list[tuple[str, dict]] = []
for m in panel_judges.JUDGE_NAMES:
for c in per_model.get(m, []):
flat.append((m, c))
for model, cand in flat:
emb = embs.get(id(cand))
placed = False
if emb is not None:
for cl in clusters:
if cl["_emb"] is not None and _cosine(cl["_emb"], emb) >= match:
cl["members"].append({"model": model, **cand})
prev = cl["per_model_score"].get(model, -1.0)
cl["per_model_score"][model] = max(prev, cand["score"])
if cand["score"] > cl["score_rep"]:
cl["score_rep"] = cand["score"]
cl["rule_statement"] = cand["rule_statement"]
cl["supporting_quote"] = cand["supporting_quote"]
cl["reasoning_summary"] = cand["reasoning_summary"]
cl["rule_type"] = cand["rule_type"]
cl["_emb"] = emb
placed = True
break
if not placed:
clusters.append({
"rule_statement": cand["rule_statement"],
"supporting_quote": cand["supporting_quote"],
"reasoning_summary": cand["reasoning_summary"],
"rule_type": cand["rule_type"],
"members": [{"model": model, **cand}],
"per_model_score": {model: cand["score"]},
"score_rep": cand["score"],
"_emb": emb,
})
out = []
for cl in clusters:
pms = cl["per_model_score"]
votes = len(pms)
score = sum(pms.values()) / votes if votes else 0.0
out.append({
"rule_statement": cl["rule_statement"],
"supporting_quote": cl["supporting_quote"],
"reasoning_summary": cl["reasoning_summary"],
"rule_type": cl["rule_type"],
"votes": votes,
"score": round(score, 4),
"voters": sorted(pms.keys()),
"verdict": classify(votes, score),
"embedding": cl["_emb"],
})
# strongest first
out.sort(key=lambda c: (c["votes"], c["score"]), reverse=True)
return out
def _keep_score_system(source_kind: str, is_binding: bool) -> str:
if source_kind == "internal_committee":
nature = ("המקור הוא החלטת ועדת-ערר (מיישמת דין, אינה יוצרת הלכה). ראוי-לשמירה = "
"כלל פרשני חדש ובר-הכללה שהוועדה גיבשה; לא-ראוי = יישום תלוי-עובדות, "
"חזרה על דין מוכר, אמרת-אגב, או חזרה מילולית על הציטוט.")
else:
nature = ("ראוי-לשמירה = עיקרון משפטי בר-הכללה והסתמכות (הלכה/פרשנות/כלל-פרוצדורלי); "
"לא-ראוי = החלה תלוית-עובדות, אמרת-אגב, או חזרה מילולית על הציטוט.")
return (
"אתה משפטן בכיר בוועדת ערר לתכנון ובנייה. הוכרע אם עיקרון שחולץ מפסיקה ראוי "
f"להישמר כתקדים בר-ציטוט. {nature}\n"
"תן גם ציון-ביטחון 0-1 לכך שזהו עיקרון בר-הסתמכות אמיתי.\n"
'החזר JSON בלבד: {"keep": true/false, "score": 0.0-1.0, "reason": "<משפט קצר>"}. ללא markdown.'
)
async def panel_keep_score(
rule_statement: str,
supporting_quote: str,
reasoning_summary: str = "",
*,
source_kind: str = "external_upload",
is_binding: bool = True,
) -> dict:
"""Run the 3-judge panel on ONE existing principle (Phase C cull, #152).
Each judge votes keep + score; votes = # keepers, score = mean of the keepers'
scores (chaim: "ממוצע המצביעים"), verdict via the shared :func:`classify`.
Returns {votes, score, verdict, voters, per_judge} — per_judge keeps raw
replies for the active-learning round (FU-1). Used by the retroactive cull;
the extractor uses :func:`panel_extract` instead.
"""
import asyncio
system = _keep_score_system(source_kind, is_binding)
user = (f"ניסוח העיקרון:\n{rule_statement}\n\n"
f"היגיון:\n{reasoning_summary}\n\nציטוט תומך:\n{supporting_quote}")
async with httpx.AsyncClient() as client:
c, ds, gm = await asyncio.gather(
panel_judges.judge_claude(system, user, max_tokens=300),
panel_judges.judge_deepseek(client, system, user, max_tokens=300),
panel_judges.judge_gemini(client, system, user, max_tokens=2000),
)
raw = {"claude": c, "deepseek": ds, "gemini": gm}
keepers, scores = [], []
for name, reply in raw.items():
if panel_judges.to_bool(reply, "keep"):
keepers.append(name)
try:
scores.append(max(0.0, min(1.0, float(reply.get("score", 0.0)))))
except (TypeError, ValueError):
scores.append(0.0)
votes = len(keepers)
score = round(sum(scores) / votes, 4) if votes else 0.0
return {"votes": votes, "score": score, "verdict": classify(votes, score),
"voters": sorted(keepers), "per_judge": raw}
async def _run_three(system: str, user: str, max_tokens: int) -> dict[str, object]:
async with httpx.AsyncClient() as client:
import asyncio
c, ds, gm = await asyncio.gather(
panel_judges.judge_claude(system, user, max_tokens=max_tokens),
panel_judges.judge_deepseek(client, system, user, max_tokens=max_tokens),
panel_judges.judge_gemini(client, system, user, max_tokens=max_tokens),
)
return {"claude": c, "deepseek": ds, "gemini": gm}
async def panel_extract(
text: str,
*,
source_kind: str = "external_upload",
is_binding: bool = True,
propose_n: int | None = None,
) -> list[dict]:
"""Run the 3-model panel over a decision's text → merged candidate principles.
Returns clusters (strongest first), each:
{rule_statement, supporting_quote, reasoning_summary, rule_type,
votes, score, voters, verdict, embedding}
Does NOT dedup vs the corpus and does NOT apply the MAX_NEW cap — the caller
(extractor / cull) owns those (they need DB + differ B vs C).
"""
propose_n = propose_n if propose_n is not None else config.HALACHA_PANEL_MAX_NEW + 3
system = _extract_system(source_kind, is_binding, propose_n)
user = f"--- תחילת המקור ---\n{text}\n--- סוף המקור ---"
replies = await _run_three(system, user, max_tokens=8000)
per_model: dict[str, list[dict]] = {}
for name in panel_judges.JUDGE_NAMES:
per_model[name] = _coerce_list(replies.get(name))
if not any(per_model.values()):
logger.warning("panel_extract: all three judges returned no candidates")
return []
# embed every candidate's rule_statement for cross-model matching
flat = [c for m in panel_judges.JUDGE_NAMES for c in per_model[m]]
embs: dict[int, list[float]] = {}
if flat:
vecs = await embeddings.embed_texts([c["rule_statement"] for c in flat])
for c, v in zip(flat, vecs):
embs[id(c)] = list(v)
return cluster_candidates(per_model, embs)

View File

@@ -0,0 +1,114 @@
"""Three independent-lineage LLM judges — the shared primitive (G2).
Extracted from scripts/halacha_panel_approve.py so the panel-extraction regime
(#152) and the existing approval-triage share ONE implementation of the judges
(no parallel HTTP/auth paths). Diversity of lineage is the point — cross-model
agreement is the reliable signal (gold-set AC1=0.92):
• claude — Opus via claude_session (local CLI, zero marginal cost) [Anthropic]
• deepseek — api.deepseek.com (deepseek-chat) [DeepSeek]
• gemini — generativelanguage (gemini-2.5-flash, #1 LegalBench) [Google]
Every judge has the SAME signature ``(system, user) -> dict | None`` and returns
None on ANY failure (missing key, HTTP error, bad JSON) — callers must tolerate a
missing judge (a 2/3 panel is still actionable).
"""
from __future__ import annotations
import json
import os
from pathlib import Path
import httpx
from legal_mcp.services import claude_session
def _env_key(name: str, *files: str) -> str:
for f in files:
p = Path(f).expanduser()
if p.exists():
for line in p.read_text().splitlines():
if line.startswith(name + "="):
return line.split("=", 1)[1].strip()
return os.environ.get(name, "")
DEEPSEEK_KEY = _env_key("DEEPSEEK_API_KEY", "~/.hermes/profiles/deepseek/.env", "~/.env")
# canonical Infisical name is GOOGLE_GEMINI_API_KEY (/external-apis/gemini); accept
# the bare GEMINI_API_KEY too for back-compat.
GEMINI_KEY = _env_key("GOOGLE_GEMINI_API_KEY", "~/.env") or _env_key("GEMINI_API_KEY", "~/.env")
JUDGE_NAMES = ("claude", "deepseek", "gemini")
def available() -> dict[str, bool]:
return {"claude": True, "deepseek": bool(DEEPSEEK_KEY), "gemini": bool(GEMINI_KEY)}
async def judge_claude(system: str, user: str, *, max_tokens: int = 2000) -> dict | list | None:
try:
# tools="" → no tool_use, so a pure text→JSON extraction never trips
# error_max_turns (and wastes no retries on a web-search detour).
return await claude_session.query_json(user, system=system, tools="")
except Exception:
return None
async def judge_deepseek(
client: httpx.AsyncClient, system: str, user: str, *, max_tokens: int = 2000,
) -> dict | list | None:
if not DEEPSEEK_KEY:
return None
try:
r = await client.post(
"https://api.deepseek.com/v1/chat/completions",
headers={"Authorization": f"Bearer {DEEPSEEK_KEY}", "Content-Type": "application/json"},
json={"model": "deepseek-chat", "temperature": 0, "max_tokens": max_tokens,
"response_format": {"type": "json_object"},
"messages": [{"role": "system", "content": system},
{"role": "user", "content": user}]},
timeout=120,
)
r.raise_for_status()
return json.loads(r.json()["choices"][0]["message"]["content"])
except Exception:
return None
async def judge_gemini(
client: httpx.AsyncClient, system: str, user: str, *, max_tokens: int = 8000,
) -> dict | list | None:
if not GEMINI_KEY:
return None
try:
r = await client.post(
f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key={GEMINI_KEY}",
headers={"Content-Type": "application/json"},
json={"system_instruction": {"parts": [{"text": system}]},
"contents": [{"parts": [{"text": user}]}],
# thinkingBudget=0 disables gemini-2.5-flash's "thinking", which
# otherwise eats the output budget on large inputs → empty parts
# → finishReason MAX_TOKENS → the judge silently dropped out.
"generationConfig": {"temperature": 0, "maxOutputTokens": max_tokens,
"responseMimeType": "application/json",
"thinkingConfig": {"thinkingBudget": 0}}},
timeout=120,
)
r.raise_for_status()
parts = (r.json().get("candidates") or [{}])[0].get("content", {}).get("parts")
if not parts:
return None
return json.loads(parts[0]["text"])
except Exception:
return None
def to_bool(d: dict | None, key: str) -> bool | None:
"""Robust bool coercion for a judge JSON field (handles he/en truthy strings)."""
if not isinstance(d, dict) or key not in d:
return None
v = d[key]
if isinstance(v, bool):
return v
return str(v).strip().lower() in ("true", "1", "yes", "כן")

View File

@@ -0,0 +1,45 @@
"""Legal-principles terminology — the single source for what a principle is CALLED (#152).
chaim 2026-06-19: "הלכה" was the wrong umbrella. The corpus holds **עקרונות
משפטיים** (legal principles); the term for one depends on its SOURCE:
• binding higher court (מחוזי/עליון) → "הלכה" (binding precedent)
• appeals committee (internal_committee) → "כלל פרשני" (interpretive rule —
the committee applies law, never makes it)
• non-binding external (persuasive) → "עיקרון" (persuasive principle)
The class is derived from where a principle was FIRST established
(canonical_halachot.first_established_in → case_law.source_kind/is_binding), so no
new column is needed. UI/tools call :func:`label` instead of hardcoding "הלכה".
"""
from __future__ import annotations
UMBRELLA = "עקרונות משפטיים"
CLASS_HALACHA = "halacha"
CLASS_INTERPRETIVE_RULE = "interpretive_rule"
CLASS_PRINCIPLE = "principle"
_LABEL = {
CLASS_HALACHA: "הלכה",
CLASS_INTERPRETIVE_RULE: "כלל פרשני",
CLASS_PRINCIPLE: "עיקרון",
}
def principle_class(source_kind: str | None, is_binding: bool | None) -> str:
"""Map a source to its principle class (stable key, not display text)."""
if source_kind == "internal_committee":
return CLASS_INTERPRETIVE_RULE
if is_binding:
return CLASS_HALACHA
return CLASS_PRINCIPLE
def label(source_kind: str | None, is_binding: bool | None) -> str:
"""Hebrew display term for a principle from this source (#152)."""
return _LABEL[principle_class(source_kind, is_binding)]
def label_for_class(cls: str) -> str:
return _LABEL.get(cls, _LABEL[CLASS_PRINCIPLE])

View File

@@ -21,7 +21,7 @@ from __future__ import annotations
import time import time
from uuid import UUID from uuid import UUID
from legal_mcp.services import db, precedent_library, telemetry from legal_mcp.services import canonical_synthesis, db, precedent_library, telemetry
from legal_mcp.tools.envelope import empty, err as _err, ok as _ok # GAP-48: SSoT envelope from legal_mcp.tools.envelope import empty, err as _err, ok as _ok # GAP-48: SSoT envelope
@@ -407,7 +407,10 @@ async def canonical_halacha_list(
limit: int = 50, limit: int = 50,
offset: int = 0, offset: int = 0,
) -> str: ) -> str:
"""רשימת עקרונות קנוניים (canonical_halachot) — שאילתת נוחות לסוכני-הכתיבה. """רשימת עקרונות משפטיים קנוניים — שאילתת נוחות לסוכני-הכתיבה.
כל פריט כולל principle_label לפי מקורו (#152): 'הלכה' (פס"ד מחוזי/עליון מחייב),
'כלל פרשני' (החלטת ועדת-ערר), או 'עיקרון' (פסיקה משכנעת).
Args: Args:
practice_area: סינון לפי תחום עיסוק (ריק = הכל). practice_area: סינון לפי תחום עיסוק (ריק = הכל).
@@ -439,3 +442,34 @@ async def canonical_halacha_get(canonical_id: str) -> str:
if row is None: if row is None:
return _err("עיקרון קנוני לא נמצא") return _err("עיקרון קנוני לא נמצא")
return _ok(row) return _ok(row)
async def canonical_synthesize_pending(limit: int = 20) -> str:
"""סנתז ניסוח-קנוני לעקרונות הממתינים (review_status='pending_synthesis'). V41 Phase 4.
לכל עיקרון: מודל מקומי (claude_session) מזקק ניסוח אחד, כללי ומעוגן בציטוטי-המופעים
(INV-AH), שער-drift דוחה סטייה גדולה מדי, והסטטוס מתקדם ל-pending_review לשער-היו"ר
(G10). on-demand / burst ידני; המסה הראשונית מטופלת ב-backfill_canonical_synthesis.py.
Args:
limit: מספר מקסימלי לסבב (עד 100). רב-instance מטופלים ראשונים.
"""
pool = await db.get_pool()
rows = await pool.fetch(
"SELECT id::text AS id FROM canonical_halachot "
"WHERE review_status='pending_synthesis' "
"ORDER BY instance_count DESC, created_at LIMIT $1",
min(max(limit, 1), 100),
)
if not rows:
return _ok({"processed": 0, "results": [], "message": "אין עקרונות ממתינים לסינתזה"})
results = []
counts: dict[str, int] = {}
for r in rows:
res = await canonical_synthesis.synthesize_and_apply(UUID(r["id"]))
counts[res["status"]] = counts.get(res["status"], 0) + 1
results.append({
"canonical_id": res["canonical_id"], "status": res["status"],
"drift_cosine": res.get("drift_cosine"), "reason": res.get("reason", ""),
})
return _ok({"processed": len(results), "by_status": counts, "results": results})

View File

@@ -0,0 +1,134 @@
"""Unit tests for canonical_statement synthesis (V41 Phase 4) — INV-LRN6 / INV-AH.
Pure-helper coverage + the grounding/drift/citation gates of synthesize_canonical,
with db / claude_session / embeddings monkeypatched (no DB, no LLM, no Voyage).
"""
from __future__ import annotations
import asyncio
from uuid import uuid4
import pytest
from legal_mcp.services import canonical_synthesis as cs
CID = uuid4()
# ── pure helpers ───────────────────────────────────────────────────
def test_cosine_identity_and_orthogonal():
assert cs._cosine([1.0, 0.0], [1.0, 0.0]) == pytest.approx(1.0)
assert cs._cosine([1.0, 0.0], [0.0, 1.0]) == pytest.approx(0.0)
assert cs._cosine([0.0, 0.0], [1.0, 1.0]) == 0.0 # zero-norm guard
def test_new_citations_flags_invented_docket_only():
src = 'העיקרון מתוך ערר 1234/05 והלכה נוספת'
# statute section is fine; shared docket is fine; new docket flagged
out = 'לפי סעיף 197 לחוק, וכפי שנקבע בערר 1234/05 ובעע"מ 9999/21'
assert cs._new_citations(out, src) == ['9999/21']
assert cs._new_citations('סעיף 197 לחוק התכנון והבניה', src) == []
def _data(*, statement="עיקרון מקורי נקי", instances=None, embedding=None):
return {
"id": str(CID),
"canonical_statement": statement,
"practice_areas": [],
"subject_tags": [],
"review_status": "pending_synthesis",
"instance_count": len(instances or [{}]),
"embedding": embedding,
"instances": instances if instances is not None else [
{"instance_type": "original", "treatment": "mentioned",
"rule_statement": "עיקרון מקורי נקי",
"supporting_quote": "ציטוט תומך מהפסיקה", "reasoning_summary": "",
"case_number": "1234-01-20", "case_name": "פלוני"},
],
}
def _patch(monkeypatch, *, data, llm, emb=None):
async def fake_fetch(_cid):
return data
async def fake_query(*a, **k):
return llm
async def fake_embed(texts, input_type="document"):
# default: proposed embeds identical to a [1,0] source → drift 1.0
return [emb([t]) if emb else [1.0, 0.0] for t in texts]
monkeypatch.setattr(cs.db, "fetch_canonical_synthesis_input", fake_fetch)
monkeypatch.setattr(cs.claude_session, "query_json", fake_query)
monkeypatch.setattr(cs.embeddings, "embed_texts", fake_embed)
def _run(monkeypatch, **kw):
return asyncio.run(cs.synthesize_canonical(CID, **kw))
# ── gate behaviour ─────────────────────────────────────────────────
def test_accepted_when_grounded_and_low_drift(monkeypatch):
_patch(monkeypatch,
data=_data(embedding=[1.0, 0.0]),
llm={"canonical_statement": "עיקרון מזוקק כללי", "grounded": True,
"changed": True, "reason": "זוקק"})
res = _run(monkeypatch)
assert res["status"] == "accepted" and res["accepted"] is True
assert res["proposed"] == "עיקרון מזוקק כללי"
assert res["embedding"] == [1.0, 0.0]
assert res["drift_cosine"] == pytest.approx(1.0)
def test_abstained_when_not_grounded(monkeypatch):
_patch(monkeypatch, data=_data(),
llm={"canonical_statement": "x", "grounded": False, "reason": "אין עיגון"})
res = _run(monkeypatch)
assert res["status"] == "abstained" and res["accepted"] is False
assert res["proposed"] == res["original"] # original kept
def test_abstained_when_no_change(monkeypatch):
_patch(monkeypatch, data=_data(statement="זהה"),
llm={"canonical_statement": "זהה", "grounded": True})
assert _run(monkeypatch)["status"] == "abstained"
def test_drift_rejected_keeps_original(monkeypatch):
# source [1,0], proposed embeds to [0,1] → cosine 0 < floor
_patch(monkeypatch,
data=_data(embedding=[1.0, 0.0]),
llm={"canonical_statement": "עיקרון אחר לגמרי", "grounded": True},
emb=lambda t: [0.0, 1.0])
res = _run(monkeypatch, drift_floor=0.80)
assert res["status"] == "drift_rejected" and res["accepted"] is False
assert res["drift_cosine"] == pytest.approx(0.0)
assert res["proposed"] == "עיקרון אחר לגמרי" # surfaced for audit, not committed
def test_new_citation_rejected(monkeypatch):
_patch(monkeypatch, data=_data(embedding=[1.0, 0.0]),
llm={"canonical_statement": 'עיקרון עם ציטוט חדש עע"מ 8888/22', "grounded": True})
res = _run(monkeypatch)
assert res["status"] == "new_citation" and res["accepted"] is False
def test_no_instances(monkeypatch):
_patch(monkeypatch, data=_data(instances=[]),
llm={"canonical_statement": "x", "grounded": True})
assert _run(monkeypatch)["status"] == "no_instances"
def test_llm_error_on_none(monkeypatch):
_patch(monkeypatch, data=_data(), llm=None)
assert _run(monkeypatch)["status"] == "llm_error"
def test_not_found(monkeypatch):
async def none_fetch(_cid):
return None
monkeypatch.setattr(cs.db, "fetch_canonical_synthesis_input", none_fetch)
assert asyncio.run(cs.synthesize_canonical(CID))["status"] == "not_found"

View File

@@ -0,0 +1,92 @@
"""Phase B selection logic — cap-of-5 + dedup-frees-slot in _extract_via_panel (#152).
Drives the orchestrator in dry_run mode with panel_extract / corpus-dedup / chunk
selection monkeypatched, so the cap and the "linked-existing frees a slot" rule
are verified without LLM/DB.
"""
from __future__ import annotations
import asyncio
from uuid import uuid4
import pytest
from legal_mcp import config
from legal_mcp.services import halacha_extractor as he
CID = uuid4()
def _cluster(rule, verdict, votes=3, score=0.9):
return {"rule_statement": rule, "supporting_quote": f"q:{rule}",
"reasoning_summary": "", "rule_type": "interpretive",
"votes": votes, "score": score, "voters": ["claude", "deepseek", "gemini"][:votes],
"verdict": verdict, "embedding": [1.0, 0.0]}
def _patch_common(monkeypatch, clusters):
async def fake_case(_id):
return {"id": CID, "source_kind": "external_upload", "is_binding": True,
"full_text": " ".join(f"q:{c['rule_statement']}" for c in clusters)}
async def fake_chunks(_id):
return ([{"content": "reasoning text"}], False)
async def fake_panel(text, **kw):
return clusters
async def none_match(emb, threshold=0.85, status_filter=()):
return None # default: nothing known → all new (tests override per-case)
monkeypatch.setattr(he.db, "get_case_law", fake_case)
monkeypatch.setattr(he, "_select_extractable_chunks", fake_chunks)
monkeypatch.setattr(he.panel_extraction, "panel_extract", fake_panel)
monkeypatch.setattr(he.db, "nearest_canonical_halacha", none_match)
def _run(monkeypatch, clusters, nearest_fn=None):
if nearest_fn:
monkeypatch.setattr(he.db, "nearest_canonical_halacha", nearest_fn)
return asyncio.run(he._extract_via_panel(CID, dry_run=True))
def test_drops_rejected_keeps_approved_and_pending(monkeypatch):
clusters = [
_cluster("A", "approved"), _cluster("B", "pending_review", votes=2, score=0.7),
_cluster("C", "rejected", votes=1, score=0.9),
]
_patch_common(monkeypatch, clusters)
res = _run(monkeypatch, clusters)
rules = [p["rule_statement"] for p in res["to_store"]]
assert "A" in rules and "B" in rules and "C" not in rules
def test_cap_limits_new_to_max(monkeypatch):
monkeypatch.setattr(config, "HALACHA_PANEL_MAX_NEW", 3)
clusters = [_cluster(f"R{i}", "approved") for i in range(6)]
_patch_common(monkeypatch, clusters)
async def none_match(emb, threshold=0.85, status_filter=()):
return None # all new
res = _run(monkeypatch, clusters, none_match)
assert res["new"] == 3 and res["dropped_over_cap"] == 3
assert len(res["to_store"]) == 3
def test_linked_existing_does_not_consume_cap(monkeypatch):
monkeypatch.setattr(config, "HALACHA_PANEL_MAX_NEW", 2)
# 5 candidates; the first 3 are "known" (link), last 2 are new
clusters = [_cluster(f"K{i}", "approved") for i in range(3)] + \
[_cluster(f"N{i}", "approved") for i in range(2)]
_patch_common(monkeypatch, clusters)
known = {"K0", "K1", "K2"}
async def nearest(emb, threshold=0.85, status_filter=()):
# called per candidate in order; pop from a queue mirroring clusters
rule = nearest._order.pop(0)
return ("canon", 0.99) if rule in known else None
nearest._order = [c["rule_statement"] for c in clusters]
res = _run(monkeypatch, clusters, nearest)
# 3 linked (free) + 2 new (within cap) → all 5 stored, nothing dropped
assert res["linked"] == 3 and res["new"] == 2 and res["dropped_over_cap"] == 0
assert len(res["to_store"]) == 5

View File

@@ -0,0 +1,135 @@
"""Unit tests for the tri-model panel extraction core (#152, Phase A).
Pure logic only — classify (the chair's approval rule), _coerce_list (judge-reply
normalisation), and cluster_candidates (cross-model matching/voting) with injected
embeddings. No LLM, no Voyage, no DB.
"""
from __future__ import annotations
import pytest
from legal_mcp import config
from legal_mcp.services import panel_extraction as pe
# ── classify — chaim's rule ────────────────────────────────────────
def test_classify_three_votes_approves_regardless_of_score():
assert pe.classify(3, 0.10) == "approved"
assert pe.classify(3, 0.99) == "approved"
def test_classify_two_votes_gated_by_floor():
floor = config.HALACHA_PANEL_SCORE_FLOOR
assert pe.classify(2, floor) == "approved"
assert pe.classify(2, floor + 0.05) == "approved"
assert pe.classify(2, floor - 0.01) == "pending_review"
def test_classify_one_or_zero_votes_rejected():
assert pe.classify(1, 0.99) == "rejected"
assert pe.classify(0, 0.99) == "rejected"
# ── _coerce_list — judge reply normalisation ───────────────────────
def test_coerce_list_accepts_bare_list():
raw = [{"rule_statement": "כלל", "supporting_quote": "ציטוט", "score": 0.9}]
out = pe._coerce_list(raw)
assert len(out) == 1 and out[0]["rule_type"] == "interpretive"
def test_coerce_list_unwraps_dict_wrapper_and_drops_incomplete():
raw = {"principles": [
{"rule_statement": "כלל", "supporting_quote": "ציטוט", "rule_type": "holding", "score": 1.5},
{"rule_statement": "", "supporting_quote": "ציטוט"}, # no rule → drop
{"rule_statement": "כלל2", "supporting_quote": ""}, # no quote → drop
]}
out = pe._coerce_list(raw)
assert len(out) == 1
assert out[0]["rule_type"] == "holding"
assert out[0]["score"] == 1.0 # clamped to [0,1]
def test_coerce_list_bad_rule_type_falls_back():
out = pe._coerce_list([{"rule_statement": "כלל", "supporting_quote": "צ", "rule_type": "obiter", "score": 0.5}])
assert out[0]["rule_type"] == "interpretive"
def test_coerce_list_junk_returns_empty():
assert pe._coerce_list("nonsense") == []
assert pe._coerce_list(None) == []
# ── cluster_candidates — cross-model matching & voting ─────────────
def _c(rule, score):
return {"rule_statement": rule, "supporting_quote": "q", "reasoning_summary": "",
"rule_type": "interpretive", "score": score}
def test_cluster_merges_across_models_counts_votes_and_means_score():
# same principle proposed by all three (identical embedding) → 1 cluster, 3 votes
a, b, c = _c("X", 0.9), _c("X", 0.8), _c("X", 0.7)
per_model = {"claude": [a], "deepseek": [b], "gemini": [c]}
embs = {id(a): [1.0, 0.0], id(b): [1.0, 0.0], id(c): [1.0, 0.0]}
out = pe.cluster_candidates(per_model, embs)
assert len(out) == 1
cl = out[0]
assert cl["votes"] == 3
assert cl["score"] == pytest.approx((0.9 + 0.8 + 0.7) / 3, abs=1e-3)
assert cl["verdict"] == "approved"
assert cl["voters"] == ["claude", "deepseek", "gemini"]
def test_cluster_separates_distinct_principles():
a, b = _c("X", 0.9), _c("Y", 0.9)
per_model = {"claude": [a, b]}
embs = {id(a): [1.0, 0.0], id(b): [0.0, 1.0]} # orthogonal → 2 clusters
out = pe.cluster_candidates(per_model, embs)
assert len(out) == 2
assert all(cl["votes"] == 1 and cl["verdict"] == "rejected" for cl in out)
def test_cluster_same_model_twice_counts_one_vote_keeps_best_score():
# one model proposes two near-dupes; another proposes the same → 2 votes, not 3
a1, a2 = _c("X", 0.6), _c("X", 0.95)
b = _c("X", 0.88)
per_model = {"claude": [a1, a2], "deepseek": [b]}
embs = {id(a1): [1.0, 0.0], id(a2): [1.0, 0.0], id(b): [1.0, 0.0]}
out = pe.cluster_candidates(per_model, embs)
assert len(out) == 1
cl = out[0]
assert cl["votes"] == 2 # claude counts once
# claude's best (0.95) and deepseek (0.88) → mean
assert cl["score"] == pytest.approx((0.95 + 0.88) / 2, abs=1e-3)
assert cl["rule_statement"] == "X"
def test_apply_cap_downgrades_over_cap_survivors_by_score():
judged = [
{"verdict": "approved", "score": 0.9},
{"verdict": "approved", "score": 0.7},
{"verdict": "pending_review", "score": 0.8},
{"verdict": "rejected", "score": 0.95}, # already rejected stays
]
out = pe.apply_cap(judged, max_new=2)
fv = [j["final_verdict"] for j in out]
# top-2 survivors by score = 0.9(approved) + 0.8(pending); 0.7 → over cap → rejected
assert fv == ["approved", "rejected", "pending_review", "rejected"]
def test_apply_cap_keeps_all_when_under_cap():
judged = [{"verdict": "approved", "score": 0.9}, {"verdict": "pending_review", "score": 0.5}]
out = pe.apply_cap(judged, max_new=5)
assert [j["final_verdict"] for j in out] == ["approved", "pending_review"]
def test_cluster_sorted_strongest_first():
a = _c("X", 0.9) # 1 vote
b, c = _c("Y", 0.9), _c("Y", 0.9) # 2 votes
per_model = {"claude": [a, b], "deepseek": [c]}
embs = {id(a): [1.0, 0.0], id(b): [0.0, 1.0], id(c): [0.0, 1.0]}
out = pe.cluster_candidates(per_model, embs)
assert out[0]["rule_statement"] == "Y" and out[0]["votes"] == 2
assert out[1]["rule_statement"] == "X" and out[1]["votes"] == 1

View File

@@ -0,0 +1,27 @@
"""Terminology mapping — הלכה / כלל פרשני / עיקרון by source (#152, Phase D)."""
from __future__ import annotations
from legal_mcp.services import principles as pr
def test_binding_higher_court_is_halacha():
assert pr.label("external_upload", True) == "הלכה"
assert pr.principle_class("external_upload", True) == pr.CLASS_HALACHA
def test_committee_is_interpretive_rule():
# the appeals committee applies law — never makes a הלכה
assert pr.label("internal_committee", True) == "כלל פרשני"
assert pr.label("internal_committee", False) == "כלל פרשני"
assert pr.principle_class("internal_committee", False) == pr.CLASS_INTERPRETIVE_RULE
def test_non_binding_external_is_principle():
assert pr.label("external_upload", False) == "עיקרון"
assert pr.label(None, None) == "עיקרון"
def test_label_for_class_roundtrip():
for sk, binding in [("external_upload", True), ("internal_committee", False), (None, False)]:
cls = pr.principle_class(sk, binding)
assert pr.label_for_class(cls) == pr.label(sk, binding)

View File

@@ -65,6 +65,8 @@
| `halacha_panel_calibrate.py` | python | **כיול + מדידת הפאנל** (Trust-or-Escalate, ICLR 2025). `--source live` (ברירת-מחדל): מריץ את שאלת-ה-KEEP על מדגם-הזהב ומודד מול `is_holding` precision+coverage+**split-rate** לכל מדיניות + false-keep/false-drop (מייבא שופטים מ-`halacha_panel_approve`, **חובה מקומי**). **#133/FU-5** — `--source captured`: **אפס-עלות** (בלי re-vote/LLM) — מצליב סבבים שמורים (FU-1) מול הכרעות-יו"ר (FU-2) דרך `db.panel_rounds_vs_chair` ומדווח split-rate+auto-precision **לכל סבב** (מגמת הלולאה: ככל שהרובריקה משתפרת precision נשמר ו-split יורד); משתף את `analyze_pairs` של FU-4 (מקור-יחיד). שתי המדידות מדווחות **anon-stability** (מבחן-אנונימיזציה #81.7) כמטריקת-בריאות נגד echo-chamber. `--batch`/`--limit`/`--concurrency`. | ידני — לפני חיווט `--apply` (live) / תקופתי — מעקב-לולאה (captured) | | `halacha_panel_calibrate.py` | python | **כיול + מדידת הפאנל** (Trust-or-Escalate, ICLR 2025). `--source live` (ברירת-מחדל): מריץ את שאלת-ה-KEEP על מדגם-הזהב ומודד מול `is_holding` precision+coverage+**split-rate** לכל מדיניות + false-keep/false-drop (מייבא שופטים מ-`halacha_panel_approve`, **חובה מקומי**). **#133/FU-5** — `--source captured`: **אפס-עלות** (בלי re-vote/LLM) — מצליב סבבים שמורים (FU-1) מול הכרעות-יו"ר (FU-2) דרך `db.panel_rounds_vs_chair` ומדווח split-rate+auto-precision **לכל סבב** (מגמת הלולאה: ככל שהרובריקה משתפרת precision נשמר ו-split יורד); משתף את `analyze_pairs` של FU-4 (מקור-יחיד). שתי המדידות מדווחות **anon-stability** (מבחן-אנונימיזציה #81.7) כמטריקת-בריאות נגד echo-chamber. `--batch`/`--limit`/`--concurrency`. | ידני — לפני חיווט `--apply` (live) / תקופתי — מעקב-לולאה (captured) |
| `halacha_rubric_distill.py` | python | **#133/FU-4 — זיקוק-רובריקה PROPOSE-ONLY.** מצליב `halacha_panel_rounds` (FU-1, הצבעות+נימוקים) מול הכרעות-היו"ר (FU-2, seeds ב-`halacha_goldset` batch `chair-live`) דרך `db.panel_rounds_vs_chair` (read-only), מנתח דטרמיניסטית **כשלים שיטתיים** (false-keep/false-drop, פיצולים-שהוכרעו, שיעור-מחלוקת-עם-היו"ר לכל שופט), ומציע `KEEP_SYSTEM` v2 + exemplars מופשטים (claude_session מקומי, אפס עלות) כ**דוח-diff** ל-`data/learning/rubric-proposal-<ts>.md`. **לעולם לא auto-apply** — אימוץ v2 = עריכה אנושית של הקבוע דרך PR (INV-LRN1); exemplars מופשטים בלבד (INV-LRN5); הסיגנל היחיד = הכרעת-יו"ר, לא הצבעות-פאנל (anti-echo). מתחת ל-12 זוגות → "אין מספיק נתונים". `--no-llm` (סטטיסטיקה בלבד) / `--limit N`. **חובה מקומי**. | תקופתי — אחרי שהצטברו הכרעות-יו"ר על מחלוקות-פאנל | | `halacha_rubric_distill.py` | python | **#133/FU-4 — זיקוק-רובריקה PROPOSE-ONLY.** מצליב `halacha_panel_rounds` (FU-1, הצבעות+נימוקים) מול הכרעות-היו"ר (FU-2, seeds ב-`halacha_goldset` batch `chair-live`) דרך `db.panel_rounds_vs_chair` (read-only), מנתח דטרמיניסטית **כשלים שיטתיים** (false-keep/false-drop, פיצולים-שהוכרעו, שיעור-מחלוקת-עם-היו"ר לכל שופט), ומציע `KEEP_SYSTEM` v2 + exemplars מופשטים (claude_session מקומי, אפס עלות) כ**דוח-diff** ל-`data/learning/rubric-proposal-<ts>.md`. **לעולם לא auto-apply** — אימוץ v2 = עריכה אנושית של הקבוע דרך PR (INV-LRN1); exemplars מופשטים בלבד (INV-LRN5); הסיגנל היחיד = הכרעת-יו"ר, לא הצבעות-פאנל (anti-echo). מתחת ל-12 זוגות → "אין מספיק נתונים". `--no-llm` (סטטיסטיקה בלבד) / `--limit N`. **חובה מקומי**. | תקופתי — אחרי שהצטברו הכרעות-יו"ר על מחלוקות-פאנל |
| `backfill_canonical_halachot.py` | python | **V41 — הקמת מודל ההלכות הקנוניות (חד-פעמי + idempotent).** (1) בונה רכיבים-קשורים (connected components) מ-`equivalent_halachot` (transitive closure — union-find). (2) לכל אשכול: בוחר נציג-קנוני (הכי הרבה corroboration → confidence → earliest), יוצר שורת `canonical_halachot`, ומעדכן `canonical_id` + `instance_type` לכל חברי האשכול. (3) לסינגלטונים (ללא קישורי-שוויון): 1:1 canonical. (4) מאכלס `halacha_citation_corroboration.canonical_id` מ-`halachot.canonical_id`. `--dry-run` (ברירת-מחדל, מחשב ומדווח בלבד) / `--apply` (כותב) / `--verbose`. לאחר הרצה: `canonical_statement` = ניסוח-נציג (pending_synthesis); עוקב: `backfill_canonical_synthesis.py` (Phase 4) יסנתז ניסוח-רחב דרך LLM. הרץ: `mcp-server/.venv/bin/python scripts/backfill_canonical_halachot.py --apply`. | **חד-פעמי** (לאחר deploy V41) / idempotent לפי צורך | | `backfill_canonical_halachot.py` | python | **V41 — הקמת מודל ההלכות הקנוניות (חד-פעמי + idempotent).** (1) בונה רכיבים-קשורים (connected components) מ-`equivalent_halachot` (transitive closure — union-find). (2) לכל אשכול: בוחר נציג-קנוני (הכי הרבה corroboration → confidence → earliest), יוצר שורת `canonical_halachot`, ומעדכן `canonical_id` + `instance_type` לכל חברי האשכול. (3) לסינגלטונים (ללא קישורי-שוויון): 1:1 canonical. (4) מאכלס `halacha_citation_corroboration.canonical_id` מ-`halachot.canonical_id`. `--dry-run` (ברירת-מחדל, מחשב ומדווח בלבד) / `--apply` (כותב) / `--verbose`. לאחר הרצה: `canonical_statement` = ניסוח-נציג (pending_synthesis); עוקב: `backfill_canonical_synthesis.py` (Phase 4) יסנתז ניסוח-רחב דרך LLM. הרץ: `mcp-server/.venv/bin/python scripts/backfill_canonical_halachot.py --apply`. | **חד-פעמי** (לאחר deploy V41) / idempotent לפי צורך |
| `cull_principles.py` | python | **#152 Phase C — סינון רטרואקטיבי של קורפוס-העקרונות דרך פאנל-3 (הפיך).** מריץ על כל עיקרון 'original' קיים את אותו משטר שה-extractor משתמש בו להבא (`services/panel_extraction.panel_keep_score`, G2): 3 שופטים (Claude מקומי + DeepSeek + Gemini) מצביעים keep+score → כלל-האישור (3 קולות→שורד · 2 וציון≥0.85→שורד · 2 ו<0.85→יו"ר · ≤1→נדחה) → תקרת `HALACHA_PANEL_MAX_NEW`=5 לכל החלטה לפי ציון (`apply_cap`). נדחה → `halachot.review_status='rejected'` + ה-canonical שלו `rejected` (הפיך, גיבוי-CSV ב-`data/audit/` לפני כל כתיבה). מרוסן ב-`usage_limits` (עוצר-רך בתקרת-שימוש, resumable). `--dry-run` (ברירת-מחדל) / `--apply` / `--sample N` (החלטות אקראיות) / `--limit N` / `--no-throttle` / `--verbose`. **חובה מקומי** (3 שופטים). הרץ: `cd mcp-server && HOME=/home/chaim .venv/bin/python ../scripts/cull_principles.py --apply`. | **חד-פעמי** (סינון ראשוני) + ניתן-לחזרה |
| `backfill_canonical_synthesis.py` | python | **V41 Phase 4 — סינתזת-LLM ל-`canonical_statement` (idempotent + resumable).** עובר על canonicals ב-`review_status='pending_synthesis'` (רב-instance ראשונים) ומזקק לכל אחד ניסוח אחד כללי ומעוגן בציטוטי-המופעים (INV-AH) דרך `services/canonical_synthesis.py` (מסלול-יחיד, G2). שערים: עיגון/הימנעות, **drift-floor** (cosine מול המקור, ברירת-מחדל 0.80 — סטייה גדולה→נשמר המקור), ואיסור ציטוטי-תיק חדשים. בכל מקרה הסטטוס מתקדם ל-`pending_review` לשער-היו"ר (G10/INV-LRN6). מודל Opus (`HALACHA_CANONICAL_SYNTH_MODEL`). מרוסן ע"י `usage_limits` (עוצר-רך בתקרת-שימוש, resumable). `--dry-run` (ברירת-מחדל) / `--apply` / `--sample N` (מדגם אקראי לבדיקה) / `--limit N` / `--no-throttle` / `--verbose`. CSV-audit ל-`data/audit/canonical-synthesis-*.csv`. **חובה מקומי** (claude_session). הרץ: `cd mcp-server && HOME=/home/chaim .venv/bin/python ../scripts/backfill_canonical_synthesis.py --apply`. שוטף: כלי-MCP `canonical_synthesize_pending`. | **חד-פעמי** (המסה הראשונית) + idempotent לחדשים |
| `halacha_batch_reconcile.py` | python | **#82.7** — dedup חוצה-פסקים offline (שמרני, **dry-run בלבד**). dedup-on-insert משווה רק תוך-פסק; כאן סף מחמיר (cosine ≥0.95, `--cosine`) ולא-הרסני: מאתר זוגות הלכות near-duplicate בין פסקים שונים (pgvector `<=>` exact) עם איתות לקסיקלי (Jaccard/Levenshtein) ומדווח ל-CSV ב-`data/audit/` לסקירת היו"ר. לא מדלג/ממזג/מוחק. `--include-pending`. **`--link`** רושם את הזוגות שנמצאו כ-`equivalent_halachot` (parallel authority, #84.2 — **deprecated post-V41** — השתמש ב-`backfill_canonical_halachot.py --apply` במקום). רץ עם venv של mcp-server. | **deprecated** — הוחלף ב-`backfill_canonical_halachot.py` (V41). נשמר לצורכי audit | | `halacha_batch_reconcile.py` | python | **#82.7** — dedup חוצה-פסקים offline (שמרני, **dry-run בלבד**). dedup-on-insert משווה רק תוך-פסק; כאן סף מחמיר (cosine ≥0.95, `--cosine`) ולא-הרסני: מאתר זוגות הלכות near-duplicate בין פסקים שונים (pgvector `<=>` exact) עם איתות לקסיקלי (Jaccard/Levenshtein) ומדווח ל-CSV ב-`data/audit/` לסקירת היו"ר. לא מדלג/ממזג/מוחק. `--include-pending`. **`--link`** רושם את הזוגות שנמצאו כ-`equivalent_halachot` (parallel authority, #84.2 — **deprecated post-V41** — השתמש ב-`backfill_canonical_halachot.py --apply` במקום). רץ עם venv של mcp-server. | **deprecated** — הוחלף ב-`backfill_canonical_halachot.py` (V41). נשמר לצורכי audit |
| `calibrate_halacha_dedup.py` | python | **#82.1** — כיול ספי ה-dedup הלקסיקלי (#82.3) מול gold-set הניקוי. קורא `halacha-cleanup-manifest-*.csv` (זוגות duplicate↔survivor מתויגי-אדם), טוען טקסט-survivor מה-DB, ו-sweep של (jaccard_min × levenshtein_min) עם P/R/F1, מסמן את נקודת-העבודה המוגדרת. אימת ש-(0.55, 0.70) → **precision 1.0** (אפס false-merge), recall 0.30 — מתאים לאיתות-משני שחוסם auto-approve. `--manifest <path>`. רץ עם venv של mcp-server | חד-פעמי — כיול (בוצע 2026-06-06) | | `calibrate_halacha_dedup.py` | python | **#82.1** — כיול ספי ה-dedup הלקסיקלי (#82.3) מול gold-set הניקוי. קורא `halacha-cleanup-manifest-*.csv` (זוגות duplicate↔survivor מתויגי-אדם), טוען טקסט-survivor מה-DB, ו-sweep של (jaccard_min × levenshtein_min) עם P/R/F1, מסמן את נקודת-העבודה המוגדרת. אימת ש-(0.55, 0.70) → **precision 1.0** (אפס false-merge), recall 0.30 — מתאים לאיתות-משני שחוסם auto-approve. `--manifest <path>`. רץ עם venv של mcp-server | חד-פעמי — כיול (בוצע 2026-06-06) |
| `ab_halacha_opus48.py` | python | **A/B לא-הרסני לחילוץ הלכות (Claude)** — מריץ מחדש חילוץ הלכות על פסק-דין בודד דרך מודל/effort נבחרים (`AB_MODEL`/`AB_EFFORT`, ברירת-מחדל `claude-opus-4-8`/`xhigh`) ומשווה לסטטיסטיקות ההלכות הקיימות ב-DB **בלי למחוק/לכתוב כלום**. משכפל את `halacha_extractor.extract()` (אותם פרומפטים, בחירת-צ'אנקים, אימות-ציטוט) ומחליף רק את קריאת ה-LLM ב-`claude -p --model --effort`. מפיק `data/ab_halacha_<case>_<effort>.json`. הרצה: `DOTENV_PATH=/home/chaim/.env DATA_DIR=.../data .venv/bin/python scripts/ab_halacha_opus48.py <case_law_id>`. **ממצא 2026-05-31 (שטיין 1128-08-20):** Opus 4.8@xhigh חילץ 51 מול 124 בייצור (100% quote-verified מול 96%) אך ביטחון מכויל-נמוך יותר (חציון 0.75 מול 0.82) — ולכן **לא** מקטין את תור-האישור-הידני תחת sweep אוטו-אישור conf≥0.78 (26 מול 24). שיפור איכות, לא צמצום-תור. | ידני (החלטת מודל-חילוץ) | | `ab_halacha_opus48.py` | python | **A/B לא-הרסני לחילוץ הלכות (Claude)** — מריץ מחדש חילוץ הלכות על פסק-דין בודד דרך מודל/effort נבחרים (`AB_MODEL`/`AB_EFFORT`, ברירת-מחדל `claude-opus-4-8`/`xhigh`) ומשווה לסטטיסטיקות ההלכות הקיימות ב-DB **בלי למחוק/לכתוב כלום**. משכפל את `halacha_extractor.extract()` (אותם פרומפטים, בחירת-צ'אנקים, אימות-ציטוט) ומחליף רק את קריאת ה-LLM ב-`claude -p --model --effort`. מפיק `data/ab_halacha_<case>_<effort>.json`. הרצה: `DOTENV_PATH=/home/chaim/.env DATA_DIR=.../data .venv/bin/python scripts/ab_halacha_opus48.py <case_law_id>`. **ממצא 2026-05-31 (שטיין 1128-08-20):** Opus 4.8@xhigh חילץ 51 מול 124 בייצור (100% quote-verified מול 96%) אך ביטחון מכויל-נמוך יותר (חציון 0.75 מול 0.82) — ולכן **לא** מקטין את תור-האישור-הידני תחת sweep אוטו-אישור conf≥0.78 (26 מול 24). שיפור איכות, לא צמצום-תור. | ידני (החלטת מודל-חילוץ) |

View File

@@ -0,0 +1,174 @@
#!/usr/bin/env python3
"""Backfill — LLM synthesis of canonical_halachot.canonical_statement (V41 Phase 4).
WHAT THIS DOES
--------------
Walks canonicals in ``review_status='pending_synthesis'`` and, for each, asks a
local ``claude_session`` model (Opus by default) to rewrite the statement carried
over from the representative halacha into ONE clean, case-independent legal
principle — grounded in the instances' supporting quotes (INV-AH). Accepted
rewrites are committed with a fresh embedding; abstained / drift-rejected /
new-citation outcomes keep the original statement. Either way ``review_status``
advances to ``pending_review`` for the chair gate (G10 / INV-LRN1).
All logic lives in services/canonical_synthesis.py (G2) — this script is the
batch driver: ordering, throttling, dry-run reporting and a CSV audit trail.
IDEMPOTENCY / RESUME
--------------------
Operates on ``pending_synthesis`` only; a committed canonical leaves the queue, so
re-running continues where it stopped. Safe to interrupt.
THROTTLING
----------
Each item is one Opus call against chaim's claude.ai subscription. Before every
item the shared usage_limits ceilings are checked; once a window is over its soft
ceiling the run STOPS gracefully (resumable) instead of hammering 429. Disable
with --no-throttle (e.g. small samples).
USAGE
-----
cd ~/legal-ai/mcp-server
.venv/bin/python ../scripts/backfill_canonical_synthesis.py --sample 20 # dry-run, 20 random
.venv/bin/python ../scripts/backfill_canonical_synthesis.py --dry-run --limit 50 # dry-run, first 50 (multi-instance first)
.venv/bin/python ../scripts/backfill_canonical_synthesis.py --apply # full throttled run
.venv/bin/python ../scripts/backfill_canonical_synthesis.py --apply --limit 200
"""
from __future__ import annotations
import argparse
import asyncio
import csv
import os
import random
import sys
from collections import Counter
from datetime import datetime, timezone
from uuid import UUID
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "mcp-server", "src"))
from legal_mcp.services import canonical_synthesis, db # noqa: E402
try: # stdlib-only module, importable from system python too
from legal_mcp.services import usage_limits
except Exception: # pragma: no cover
usage_limits = None
AUDIT_DIR = os.path.join(os.path.dirname(__file__), "..", "data", "audit")
async def _pending(limit: int | None, sample: int | None) -> list[dict]:
"""Pending-synthesis canonicals, multi-instance first (highest value)."""
pool = await db.get_pool()
rows = await pool.fetch(
"SELECT id::text AS id, instance_count, canonical_statement "
"FROM canonical_halachot WHERE review_status='pending_synthesis' "
"ORDER BY instance_count DESC, created_at",
)
items = [dict(r) for r in rows]
if sample and sample < len(items):
items = random.sample(items, sample)
if limit:
items = items[:limit]
return items
def _throttled() -> tuple[bool, str]:
if usage_limits is None:
return False, "usage_limits unavailable"
usage = usage_limits.subscription_usage()
if usage is None:
return False, "usage read failed (proceeding)"
over, _reset, detail = usage_limits.ceiling_status(usage)
return over, detail
def _short(s: str, n: int = 90) -> str:
s = (s or "").replace("\n", " ")
return s if len(s) <= n else s[: n - 1] + ""
async def _run(apply: bool, limit: int | None, sample: int | None,
throttle: bool, verbose: bool) -> int:
items = await _pending(limit, sample)
total = len(items)
mode = "APPLY" if apply else "DRY-RUN"
print(f"[{mode}] {total} canonicals pending_synthesis to process "
f"(throttle={'on' if throttle else 'off'})\n")
if not total:
print("nothing to do.")
return 0
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
os.makedirs(AUDIT_DIR, exist_ok=True)
audit_path = os.path.join(
AUDIT_DIR, f"canonical-synthesis-{'apply' if apply else 'dryrun'}-{stamp}.csv")
counts: Counter[str] = Counter()
stopped = False
with open(audit_path, "w", newline="", encoding="utf-8") as fh:
w = csv.writer(fh)
w.writerow(["canonical_id", "instance_count", "status", "drift_cosine",
"reason", "before", "after"])
for n, it in enumerate(items, 1):
if throttle:
over, detail = _throttled()
if over:
print(f"\n⏸ usage ceiling reached ({detail}) — stopping at "
f"{n - 1}/{total}. Re-run to resume.")
stopped = True
break
cid = UUID(it["id"])
if apply:
res = await canonical_synthesis.synthesize_and_apply(cid)
else:
res = await canonical_synthesis.synthesize_canonical(cid)
counts[res["status"]] += 1
w.writerow([it["id"], it["instance_count"], res["status"],
res.get("drift_cosine"), res.get("reason", ""),
res.get("original", ""), res.get("proposed", "")])
mark = {"accepted": "", "abstained": "·", "drift_rejected": "",
"new_citation": "", "llm_error": "!", "no_instances": "·",
"not_found": "!"}.get(res["status"], "?")
line = (f"[{n}/{total}] {mark} {res['status']:<14} "
f"inst={it['instance_count']} {it['id'][:8]}")
print(line)
if verbose and res["status"] in ("accepted",) or (verbose and res.get("proposed") != res.get("original")):
print(f" before: {_short(res.get('original', ''))}")
print(f" after : {_short(res.get('proposed', ''))} "
f"(drift={res.get('drift_cosine')})")
if res.get("reason"):
print(f" reason: {_short(res['reason'], 110)}")
processed = sum(counts.values())
print(f"\n── summary ({mode}) — {processed}/{total} processed"
f"{' (stopped early)' if stopped else ''} ──")
for status, c in counts.most_common():
print(f" {status:<16} {c}")
print(f"\naudit CSV: {audit_path}")
if not apply:
print("dry-run — nothing written to the DB. Re-run with --apply to commit.")
return 0
def main() -> int:
p = argparse.ArgumentParser(description="LLM synthesis of canonical_statement (V41 Phase 4)")
p.add_argument("--apply", action="store_true", help="commit to the DB (default: dry-run)")
p.add_argument("--dry-run", action="store_true", help="explicit dry-run (default)")
p.add_argument("--limit", type=int, default=None, help="cap items processed")
p.add_argument("--sample", type=int, default=None, help="random sample of N (dry-run inspection)")
p.add_argument("--no-throttle", action="store_true", help="skip usage-ceiling checks")
p.add_argument("--verbose", action="store_true", help="print before/after for changed items")
args = p.parse_args()
return asyncio.run(_run(
apply=args.apply, limit=args.limit, sample=args.sample,
throttle=not args.no_throttle, verbose=args.verbose,
))
if __name__ == "__main__":
raise SystemExit(main())

204
scripts/cull_principles.py Normal file
View File

@@ -0,0 +1,204 @@
#!/usr/bin/env python3
"""Retroactive cull of the legal-principles corpus via the 3-model panel (#152, Phase C).
The corpus grew to ~5,243 principles (18.8/decision) under the old single-model
auto-approve. This re-adjudicates EVERY existing 'original' principle with the
SAME regime the extractor now uses going forward (chaim 2026-06-19):
• 3 judges (Claude local + DeepSeek + Gemini) vote keep + score on each principle.
• Approval rule: 3 votes→survive · 2 & score≥0.85→survive · 2 & <0.85→chair
(pending_review) · ≤1→reject.
• Per DECISION, survivors are capped to HALACHA_PANEL_MAX_NEW (=5) by score; the
rest are rejected (over-cap).
All logic is shared with the extractor via services/panel_extraction (G2). The
cull is REVERSIBLE: a CSV backup of every (id, old_status) is written before any
write, and a rejected principle's canonical is also set 'rejected' (recoverable).
Throttled by usage_limits (stops gracefully at the soft ceiling, resumable).
cd ~/legal-ai/mcp-server
HOME=/home/chaim .venv/bin/python ../scripts/cull_principles.py --sample 5 # dry-run, 5 decisions
HOME=/home/chaim .venv/bin/python ../scripts/cull_principles.py --dry-run # all, dry-run
HOME=/home/chaim .venv/bin/python ../scripts/cull_principles.py --apply # full, throttled
"""
from __future__ import annotations
import argparse
import asyncio
import csv
import os
import random
import sys
from collections import Counter
from datetime import datetime, timezone
from uuid import UUID
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "mcp-server", "src"))
from legal_mcp import config # noqa: E402
from legal_mcp.services import db, panel_extraction as pe # noqa: E402
try:
from legal_mcp.services import usage_limits
except Exception: # pragma: no cover
usage_limits = None
AUDIT_DIR = os.path.join(os.path.dirname(__file__), "..", "data", "audit")
_JUDGE_CONCURRENCY = 4
async def _decisions(limit, sample):
"""case_law ids that have 'original' principles, with source metadata."""
pool = await db.get_pool()
rows = await pool.fetch(
"SELECT cl.id, cl.case_number, cl.source_kind, cl.is_binding, "
" count(*) AS n "
"FROM halachot h JOIN case_law cl ON cl.id = h.case_law_id "
"WHERE h.instance_type = 'original' AND h.review_status <> 'rejected' "
"GROUP BY cl.id, cl.case_number, cl.source_kind, cl.is_binding "
"ORDER BY n DESC",
)
items = [dict(r) for r in rows]
if sample and sample < len(items):
items = random.sample(items, sample)
if limit:
items = items[:limit]
return items
async def _principles(case_law_id):
pool = await db.get_pool()
rows = await pool.fetch(
"SELECT id, rule_statement, supporting_quote, reasoning_summary, "
" canonical_id, review_status "
"FROM halachot WHERE case_law_id = $1 AND instance_type = 'original' "
"AND review_status <> 'rejected' ORDER BY halacha_index",
case_law_id,
)
return [dict(r) for r in rows]
def _throttled():
if usage_limits is None:
return False, "no usage_limits"
u = usage_limits.subscription_usage()
if u is None:
return False, "usage read failed"
over, _r, detail = usage_limits.ceiling_status(u)
return over, detail
async def _judge_decision(dec, sem):
principles = await _principles(dec["id"])
if not principles:
return []
async def one(p):
async with sem:
v = await pe.panel_keep_score(
p["rule_statement"], p["supporting_quote"], p.get("reasoning_summary") or "",
source_kind=dec["source_kind"] or "external_upload",
is_binding=bool(dec["is_binding"]),
)
return {**p, **v}
judged = await asyncio.gather(*[one(p) for p in principles])
return pe.apply_cap(list(judged))
async def _apply_decision(judged, reviewer):
pool = await db.get_pool()
async with pool.acquire() as conn:
async with conn.transaction():
for j in judged:
fv = j["final_verdict"]
if fv == "approved":
await conn.execute(
"UPDATE halachot SET review_status='approved', reviewed_at=now(), "
"reviewer=$2, updated_at=now() WHERE id=$1", j["id"], reviewer)
elif fv == "pending_review":
await conn.execute(
"UPDATE halachot SET review_status='pending_review', reviewer=$2, "
"updated_at=now() WHERE id=$1", j["id"], reviewer)
else: # rejected — also reject its canonical (reversible)
await conn.execute(
"UPDATE halachot SET review_status='rejected', reviewed_at=now(), "
"reviewer=$2, updated_at=now() WHERE id=$1", j["id"], reviewer)
if j.get("canonical_id"):
await conn.execute(
"UPDATE canonical_halachot SET review_status='rejected', "
"updated_at=now() WHERE id=$1", j["canonical_id"])
async def _run(apply, limit, sample, throttle, verbose):
decisions = await _decisions(limit, sample)
mode = "APPLY" if apply else "DRY-RUN"
print(f"[{mode}] {len(decisions)} decisions with principles "
f"(throttle={'on' if throttle else 'off'})\n", flush=True)
if not decisions:
print("nothing to do.")
return 0
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
os.makedirs(AUDIT_DIR, exist_ok=True)
audit = os.path.join(AUDIT_DIR, f"principle-cull-{'apply' if apply else 'dryrun'}-{stamp}.csv")
reviewer = f"cull:panel v{config.HALACHA_PANEL_SCORE_FLOOR} cap{config.HALACHA_PANEL_MAX_NEW}"
sem = asyncio.Semaphore(_JUDGE_CONCURRENCY)
tally = Counter()
n_in = n_out = 0
stopped = False
with open(audit, "w", newline="", encoding="utf-8") as fh:
w = csv.writer(fh)
w.writerow(["case_number", "halacha_id", "old_status", "final_verdict",
"votes", "score", "canonical_id", "rule"])
for k, dec in enumerate(decisions, 1):
if throttle:
over, detail = _throttled()
if over:
print(f"\n⏸ usage ceiling ({detail}) — stopping at {k-1}/{len(decisions)}. "
f"Re-run to resume.", flush=True)
stopped = True
break
judged = await _judge_decision(dec, sem)
survivors = sum(1 for j in judged if j["final_verdict"] in ("approved", "pending_review"))
n_in += len(judged)
n_out += survivors
for j in judged:
tally[j["final_verdict"]] += 1
w.writerow([dec["case_number"], str(j["id"]), j["review_status"],
j["final_verdict"], j["votes"], j["score"],
str(j.get("canonical_id") or ""), (j["rule_statement"] or "")[:160]])
if apply and judged:
await _apply_decision(judged, reviewer)
print(f"[{k}/{len(decisions)}] {dec['case_number']:<16} "
f"{len(judged)}{survivors} survive", flush=True)
if verbose:
for j in judged:
mark = {"approved": "", "pending_review": "→chair", "rejected": ""}[j["final_verdict"]]
print(f" {mark} v={j['votes']} s={j['score']} {(j['rule_statement'] or '')[:80]}")
print(f"\n── {mode} summary{' (stopped early)' if stopped else ''} ──")
print(f" principles judged: {n_in} → survive: {n_out} ({n_in - n_out} rejected)")
for v, c in tally.most_common():
print(f" {v:<16} {c}")
print(f"\naudit CSV: {audit}")
if not apply:
print("dry-run — no DB writes. Re-run with --apply to commit (reversible).")
return 0
def main():
p = argparse.ArgumentParser(description="Retroactive principle cull via 3-model panel (#152)")
p.add_argument("--apply", action="store_true", help="write verdicts (reversible, CSV-backed)")
p.add_argument("--dry-run", action="store_true", help="explicit dry-run (default)")
p.add_argument("--limit", type=int, default=None)
p.add_argument("--sample", type=int, default=None, help="random sample of N decisions")
p.add_argument("--no-throttle", action="store_true")
p.add_argument("--verbose", action="store_true")
a = p.parse_args()
return asyncio.run(_run(a.apply, a.limit, a.sample, not a.no_throttle, a.verbose))
if __name__ == "__main__":
raise SystemExit(main())

View File

@@ -50,24 +50,17 @@ from pathlib import Path
import httpx import httpx
from legal_mcp.services import claude_session, db from legal_mcp.services import db, panel_judges
# Judges are the shared primitive (G2) — #152 lifted them to services/panel_judges.
from legal_mcp.services.panel_judges import (
DEEPSEEK_KEY,
GEMINI_KEY,
judge_claude,
judge_deepseek,
judge_gemini,
)
# ── keys (local files, same pattern as the other local judges) ── _bool = panel_judges.to_bool
def _env_key(name: str, *files: str) -> str:
for f in files:
p = Path(f).expanduser()
if p.exists():
for line in p.read_text().splitlines():
if line.startswith(name + "="):
return line.split("=", 1)[1].strip()
return os.environ.get(name, "")
DEEPSEEK_KEY = _env_key("DEEPSEEK_API_KEY", "~/.hermes/profiles/deepseek/.env", "~/.env")
# canonical Infisical name is GOOGLE_GEMINI_API_KEY (/external-apis/gemini); accept
# the bare GEMINI_API_KEY too for back-compat.
GEMINI_KEY = _env_key("GOOGLE_GEMINI_API_KEY", "~/.env") or _env_key("GEMINI_API_KEY", "~/.env")
# ── the two coarse questions (the reliable axis — NOT the fuzzy sub-type) ── # ── the two coarse questions (the reliable axis — NOT the fuzzy sub-type) ──
@@ -99,62 +92,6 @@ def _nli_user(h: dict) -> str:
return f"כלל:\n{h.get('rule_statement') or ''}\n\nציטוט:\n{h.get('supporting_quote') or ''}" return f"כלל:\n{h.get('rule_statement') or ''}\n\nציטוט:\n{h.get('supporting_quote') or ''}"
# ── three judges, one signature: (system, user) -> dict|None ──
async def judge_claude(system: str, user: str) -> dict | None:
try:
return await claude_session.query_json(user, system=system)
except Exception:
return None
async def judge_deepseek(client: httpx.AsyncClient, system: str, user: str) -> dict | None:
if not DEEPSEEK_KEY:
return None
try:
r = await client.post(
"https://api.deepseek.com/v1/chat/completions",
headers={"Authorization": f"Bearer {DEEPSEEK_KEY}", "Content-Type": "application/json"},
json={"model": "deepseek-chat", "temperature": 0, "max_tokens": 120,
"response_format": {"type": "json_object"},
"messages": [{"role": "system", "content": system},
{"role": "user", "content": user}]},
timeout=90,
)
r.raise_for_status()
return json.loads(r.json()["choices"][0]["message"]["content"])
except Exception:
return None
async def judge_gemini(client: httpx.AsyncClient, system: str, user: str) -> dict | None:
if not GEMINI_KEY:
return None
try:
r = await client.post(
f"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key={GEMINI_KEY}",
headers={"Content-Type": "application/json"},
json={"system_instruction": {"parts": [{"text": system}]},
"contents": [{"parts": [{"text": user}]}],
"generationConfig": {"temperature": 0, "maxOutputTokens": 4000,
"responseMimeType": "application/json"}},
timeout=90,
)
r.raise_for_status()
return json.loads(r.json()["candidates"][0]["content"]["parts"][0]["text"])
except Exception:
return None
def _bool(d: dict | None, key: str) -> bool | None:
if not isinstance(d, dict) or key not in d:
return None
v = d[key]
if isinstance(v, bool):
return v
return str(v).strip().lower() in ("true", "1", "yes", "כן")
async def panel_vote(client, system, user, key) -> dict: async def panel_vote(client, system, user, key) -> dict:
"""Run all three judges; return per-judge bools + the verdict.""" """Run all three judges; return per-judge bools + the verdict."""
c, ds, gm = await asyncio.gather( c, ds, gm = await asyncio.gather(