feat(halachot): Phase 5+6 — canonical panel UI + equivalent_halachot deprecation #300

Merged
chaim merged 2 commits from worktree-canonical-phase56 into main 2026-06-19 05:45:14 +00:00
Owner

סיכום

השלמת Phase 5+6 של מודל ההלכות הקנוניות (V41, אחרי PR #298/#299).

Phase 6 — Deprecation equivalent_halachot (commit 75f40cc)

  • scripts/halacha_batch_reconcile.py --link עכשיו מדפיס שגיאה ויוצא exit-code 1 (V41 קפא את הטבלה; קישורים חדשים אסורים)
  • db.link_equivalent_halachot מוציאה DeprecationWarning (שכבת-הגנה עבור קוד פנימי)

Phase 5 — UI פאנל canonical + אקורדיון instances (commit dd2e12f)

Backend:

  • list_halachot SQL: מוסיף canonical_id, instance_type, canonical_statement, instance_count דרך LEFT JOIN canonical_halachot
  • list_canonical_instances(canonical_id) — פונקציה חדשה ב-db.py לאקורדיון
  • GET /api/canonical-halachot/{canonical_id}/instances — endpoint חדש
  • PATCH /api/halachot/{id}: canonical_statement מתפשט ל-canonical_halachot
  • HalachaUpdateRequest: שדה canonical_statement

Frontend:

  • Halacha type: שדות canonical_id, instance_type, canonical_statement, instance_count
  • HalachaPatch: שדה canonical_statement
  • useCanonicalInstances hook + CanonicalInstance type
  • CanonicalSection component: canonical_statement (קריאה + עריכה) + אקורדיון instances
  • Meta row: badge instance_type (עיקרון מקורי / ציטוט / יישום) + pill "מוזכר ב-N פסיקות"

Invariants

Invariant מצב
G2 (אין מסלולים מקבילים) equivalent_halachot קפוא — Phase 6 אוכף. הנתיב החדש: canonical_id
INV-G10 (שער-יו"ר) עריכת canonical_statement דרך PATCH /halachot/{id} עם reviewer="דפנה" — אותה שמירה כמו rule_statement
INV-IA* CanonicalSection מוסיפה UI בתוך פאנל קיים (לא עמוד חדש); עבר שער Claude Design (card 23)

תוכנית בדיקה

  • Deploy אחרי מיזוג (~2-4 דק') — curl https://legal-ai.nautilus.marcusgroup.org/api/health
  • בפאנל הלכות ממתינות: badge "עיקרון מקורי" / "ציטוט" מופיע
  • "מוזכר ב-N פסיקות" מופיע להלכות עם instance_count > 1
  • אקורדיון instances נפתח ומציג את הפסיקות הנכונות
  • עריכת canonical_statement שומרת בהצלחה (toast + רענון)
  • halacha_batch_reconcile.py --link מחזיר exit-code 1 עם הודעת שגיאה

🤖 Generated with Claude Code

## סיכום השלמת **Phase 5+6** של מודל ההלכות הקנוניות (V41, אחרי PR #298/#299). ### Phase 6 — Deprecation `equivalent_halachot` (commit 75f40cc) - `scripts/halacha_batch_reconcile.py --link` עכשיו מדפיס שגיאה ויוצא exit-code 1 (V41 קפא את הטבלה; קישורים חדשים אסורים) - `db.link_equivalent_halachot` מוציאה `DeprecationWarning` (שכבת-הגנה עבור קוד פנימי) ### Phase 5 — UI פאנל canonical + אקורדיון instances (commit dd2e12f) **Backend:** - `list_halachot` SQL: מוסיף `canonical_id`, `instance_type`, `canonical_statement`, `instance_count` דרך `LEFT JOIN canonical_halachot` - `list_canonical_instances(canonical_id)` — פונקציה חדשה ב-db.py לאקורדיון - `GET /api/canonical-halachot/{canonical_id}/instances` — endpoint חדש - `PATCH /api/halachot/{id}`: `canonical_statement` מתפשט ל-`canonical_halachot` - `HalachaUpdateRequest`: שדה `canonical_statement` **Frontend:** - `Halacha` type: שדות `canonical_id`, `instance_type`, `canonical_statement`, `instance_count` - `HalachaPatch`: שדה `canonical_statement` - `useCanonicalInstances` hook + `CanonicalInstance` type - `CanonicalSection` component: canonical_statement (קריאה + עריכה) + אקורדיון instances - Meta row: badge `instance_type` (עיקרון מקורי / ציטוט / יישום) + pill "מוזכר ב-N פסיקות" ## Invariants | Invariant | מצב | |-----------|-----| | **G2** (אין מסלולים מקבילים) | `equivalent_halachot` קפוא — Phase 6 אוכף. הנתיב החדש: `canonical_id` | | **INV-G10** (שער-יו"ר) | עריכת `canonical_statement` דרך PATCH /halachot/{id} עם reviewer="דפנה" — אותה שמירה כמו rule_statement | | **INV-IA*** | CanonicalSection מוסיפה UI בתוך פאנל קיים (לא עמוד חדש); עבר שער Claude Design (card 23) | ## תוכנית בדיקה - [ ] Deploy אחרי מיזוג (~2-4 דק') — `curl https://legal-ai.nautilus.marcusgroup.org/api/health` - [ ] בפאנל הלכות ממתינות: badge "עיקרון מקורי" / "ציטוט" מופיע - [ ] "מוזכר ב-N פסיקות" מופיע להלכות עם instance_count > 1 - [ ] אקורדיון instances נפתח ומציג את הפסיקות הנכונות - [ ] עריכת canonical_statement שומרת בהצלחה (toast + רענון) - [ ] `halacha_batch_reconcile.py --link` מחזיר exit-code 1 עם הודעת שגיאה 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
chaim added 2 commits 2026-06-19 05:41:59 +00:00
- halacha_batch_reconcile.py --link now exits with error (V41 freezes
  equivalent_halachot; equivalences live in canonical_id instead)
- link_equivalent_halachot emits DeprecationWarning (callers ≥ Python 3.2)
- SCRIPTS.md already marks --link as deprecated; no further doc change needed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(halachot): Phase 5 — canonical panel UI + instances accordion (V41)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 3s
Lint — undefined names / undefined-names (pull_request) Successful in 10s
dd2e12f902
UI changes to halacha-review-panel.tsx:
- instance_type badge (עיקרון מקורי / ציטוט / יישום) in meta row
- "מוזכר ב-N פסיקות" pill when instance_count > 1
- CanonicalSection component: canonical_statement (view + edit), instances accordion

Backend:
- list_halachot SQL: adds canonical_id, instance_type, canonical_statement,
  instance_count via LEFT JOIN canonical_halachot
- list_canonical_instances(canonical_id) → compact rows for accordion
- GET /api/canonical-halachot/{canonical_id}/instances endpoint
- PATCH /api/halachot/{id}: canonical_statement propagates to canonical_halachot
- HalachaUpdateRequest: canonical_statement field
- useCanonicalInstances hook + CanonicalInstance type in precedent-library.ts

INV-G10 (chair gate): only the chair can edit canonical_statement (same
flow as rule_statement — PATCH /api/halachot/{id} with reviewer="דפנה").
G2: canonical data flows through canonical_halachot, not a parallel store.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chaim merged commit db93735ed6 into main 2026-06-19 05:45:14 +00:00
chaim deleted branch worktree-canonical-phase56 2026-06-19 05:45:14 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#300