feat(plans): מרשם-תכניות קנוני (V38) + נוסח-ציטוט אחיד דטרמיניסטי לבלוק ט #252
Reference in New Issue
Block a user
Delete Branch "worktree-plans-registry"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
מה ולמה
פרק התכניות בהחלטה = בלוק ט (תכניות חלות /
block-tet). עד היום מידע על תכניות הגיע לבלוק ט משני מקורות חלשים —documents.metadata.references.plans(regex רדוד, ללא תוקף) ו-appraiser_facts(תצלום עובדתי פר-שמאי-פר-תיק). לא היתה ישות קנונית לתכנית-כעצם-עולמי, ולכן אותן תכניות (מי/200, מי/820, 5166, תמ"א 38…) חזרו שוב ושוב והתוקף שלהן נגזר מחדש בכל תיק מתוך השומות — מקור-טעות וחוסר-עקביות; ונוסח-הציטוט בבלוק ט לא הוגדר ונסחף.ה-PR מוסיף:
plans, V38) — רשומה אחת לכל תכנית, שימוש חוזר בין תיקים: זהות + תוקף (פרסום למתן תוקף ברשומות + מס' ילקוט-הפרסומים) + משפט-ייעוד.db.format_plan_citation), מוזרק ל-prompt; תאריך-הפרסום ומספר-הילקוט לעולם לא מנוסחים מחדש ע"י ה-LLM.scripts/backfill_plans_registry.py.הכרעות-יו"ר שעוצבו בתכנון: היקף רזה (זהות+תוקף+ייעוד) · רשומות בלבד (לא עיתונות — התוקף נקבע בילקוט) · נוסח-הקורפוס המלא של דפנה.
Invariants — הצהרה (חובה)
plan_numberמנורמל בכתיבה (_normalize_plan_number, פורמט-בלבד; שומר תמ"א/תב"ע, מסיר "תכנית"); ציטוט/תצוגה ב-display_name/citation_formattedבנפרד.appraiser_factsללא שינוי כ-SSOT לעובדת-שמאי פר-תיק. אין מסלול מקביל.upsert_planidempotent על המפתח הקנוני.source_case_number/source_document_id/model_used).review_status ∈ {pending_review, approved, rejected}כמוhalachot; תוקף משמש בכתיבה רק כשמאושר (plan_review). כלל-מיזוג: תוקף-מאושר לא נדרס — סתירה נרשמת ב-discrepancies(אין בליעה שקטה, §6).צ'קליסט — פרוטוקול כתיבת-קוד
docs/spec/00-constitution.md+ ספ-התחום (02-data-model, 04-analysis-writing, X1) לפני הכתיבהmcp-server/srcשנגעתי בהםdiscrepancies; מועמד-חילוץ פגום מדווח ב-warninggap-audit.md— אין FU/GAP ממופה על תכניות (פיצ'ר חדש)plan_review), ברירת-מחדל--dry-runאימות
הורץ עם
mcp-server/.venv/bin/pythonמול ה-DB המשותף (V38 אדיטיבי + idempotent):_normalize_plan_number(7 מקרים — תמ"א/תב"ע נשמרים, "תכנית" מוסר, gershayim→", רווחים סביב/),_coerce_plan_date(ISO + DD.MM.YYYY + ריקים),format_plan_citation(3 וריאנטים מול נוסח-הקורפוס) — PASS.get_plan_by_number(דרך נרמול) →search_plans→plan_review(approved) → re-upsert עם תוקף-סותר ⇒ המאושר לא נדרס + סתירה נרשמה → cleanup — PASS.extract_plans/plan_get/plan_search/plan_list/plan_upsert/plan_review) רשומים ב-FastMCP — PASS.leak_guard.py(G12) על 5 קבצי mcp-server — PASS · pyflakes undefined-names — NONE ·py_compileעל כל הקבצים — PASS.הערה תפעולית: הכלים החדשים טרם נוספו ל-allowlist של סוכני Paperclip (CEO/researcher) — מסלול-הכתיבה אינו זקוק להם (ה-context-builder קורא מהמרשם אוטומטית);
extract_plans/plan_reviewהם פעולות-יו"ר/CEO ויתווספו ל-allowlist + sync-cross-company כ-follow-up. UI לתור-האישור מגודר-עיצוב (Claude Design) ונדחה לגל נפרד — בינתיים האישור דרךplan_list/plan_review.🤖 Generated with Claude Code