feat(halacha): over-extraction consolidation — fold facets via claude_session (#81.5) #55

Merged
chaim merged 1 commits from feat/halacha-consolidation into main 2026-06-03 16:27:13 +00:00
Owner

#81.5 — בקרת over-extraction (fold facets)

אחרי שפסק מסיים חילוץ, מעבר claude_session מאחד facets של אותה שאלה משפטית (מתחת לסף ה-dedup של #82 — פער הגרנולריות שפר 14↔4 / 403-17→89) לכלל קנוני אחד; השאר מסומנים rejected (הפיך: מחוץ לקורפוס הפעיל ולתור, אך ניתן לשחזור). fold-only — לעולם לא מאחד שאלות משפטיות שונות, לעולם לא ממציא.

  • מנוע: claude_session-as-judge (CLI מקומי, אפס עלות), effort high. מעבר אחד לכל פסק ב-_extract_impl אחרי שכל ה-chunks הסתיימו (ה-prompt מאחד בתוך chunk; זה תופס בין chunks).
  • עוגנים טהורים ומבדקי-יחידה: CONSOLIDATE_SYSTEM, build_consolidation_prompt, parse_fold_groups (fail-safe → [] על כל צורה פגומה; מוריד קבוצות <2; coerce/dedup אינדקסים).
  • _consolidate_precedent בוחר קנוני לכל קבוצה (approved>pending, ביטחון, quote_verified, אורך) ודוחה את השאר דרך update_halachot_batch (#84). לעולם לא דוחה קנוני. fail-open על כל שגיאה (אין CLI / parse fail → 0 folds).
  • config: HALACHA_CONSOLIDATE_ENABLED/MODEL/EFFORT.

אומת

  • מערך 176 passed (10 חדשים).
  • אינטגרציה מול dev DB: קבוצת 2-facets → 1 קנוני + 1 rejected (מתויג), כללים נבדלים לא נגעו, שגיאת claude → 0 folds (fail-open).

(הקורפוס הקיים כבר אוחד ידנית בניקוי; #81.5 הוא לחילוצים עתידיים.)

🤖 Generated with Claude Code

## #81.5 — בקרת over-extraction (fold facets) אחרי שפסק מסיים חילוץ, מעבר claude_session מאחד **facets של אותה שאלה משפטית** (מתחת לסף ה-dedup של #82 — פער הגרנולריות שפר 14↔4 / 403-17→89) לכלל קנוני אחד; השאר מסומנים `rejected` (**הפיך**: מחוץ לקורפוס הפעיל ולתור, אך ניתן לשחזור). **fold-only** — לעולם לא מאחד שאלות משפטיות שונות, לעולם לא ממציא. - **מנוע: claude_session-as-judge** (CLI מקומי, אפס עלות), effort `high`. מעבר אחד לכל פסק ב-`_extract_impl` אחרי שכל ה-chunks הסתיימו (ה-prompt מאחד בתוך chunk; זה תופס בין chunks). - עוגנים **טהורים ומבדקי-יחידה**: `CONSOLIDATE_SYSTEM`, `build_consolidation_prompt`, `parse_fold_groups` (**fail-safe** → [] על כל צורה פגומה; מוריד קבוצות <2; coerce/dedup אינדקסים). - `_consolidate_precedent` בוחר קנוני לכל קבוצה (approved>pending, ביטחון, quote_verified, אורך) ודוחה את השאר דרך `update_halachot_batch` (#84). לעולם לא דוחה קנוני. **fail-open** על כל שגיאה (אין CLI / parse fail → 0 folds). - config: `HALACHA_CONSOLIDATE_ENABLED/MODEL/EFFORT`. ## אומת - מערך **176 passed** (10 חדשים). - אינטגרציה מול dev DB: קבוצת 2-facets → 1 קנוני + 1 rejected (מתויג), כללים נבדלים לא נגעו, שגיאת claude → 0 folds (fail-open). (הקורפוס הקיים כבר אוחד ידנית בניקוי; #81.5 הוא לחילוצים עתידיים.) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-03 16:27:06 +00:00
After a precedent finishes extracting, a claude_session pass folds facets of the
SAME legal question (below #82's dedup cosine — the שפר 14-vs-4 / 403-17→89
granularity gap) into one canonical; the rest are marked 'rejected' (reversible:
out of the active corpus AND the review queue, but recoverable). FOLD-ONLY —
never merges distinct legal questions, never invents.

- Engine: claude_session-as-judge (local CLI, zero cost), 'high' effort — folding
  needs careful judgment. One pass per precedent, runs in _extract_impl once all
  chunks are done (the prompt dedups within a chunk; this catches across chunks).
- Pure, unit-tested helpers in halacha_quality: CONSOLIDATE_SYSTEM,
  build_consolidation_prompt, parse_fold_groups (fails SAFE → [] on any malformed
  shape; drops <2-member groups; coerces/dedups indices).
- halacha_extractor._consolidate_precedent picks the canonical per group
  (approved>pending, higher confidence, quote_verified, longer) and rejects the
  rest via the existing update_halachot_batch (#84). Never rejects a canonical.
  Fails OPEN on any error (no CLI / parse fail → 0 folds, data untouched).
- config: HALACHA_CONSOLIDATE_ENABLED/MODEL/EFFORT.

Verified: suite 176 passed (10 new); integration vs dev DB — a 2-facet group
folds to 1 canonical + 1 rejected (tagged), distinct rules untouched, claude
error → 0 folds (fail-open).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit d47a633fcf into main 2026-06-03 16:27:13 +00:00
chaim deleted branch feat/halacha-consolidation 2026-06-03 16:27:13 +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#55