feat(graph): daily-digest (יומון) discovery layer (corpus graph PR E) #132

Merged
chaim merged 1 commits from worktree-graph-digests into main 2026-06-07 21:31:29 +00:00
Owner

רעיון של חיים — להכניס את היומונים שמורידים ("כל יום") לגרף. כל יומון covers את הפסיקה שהוא מנתח: פסיקת-קורפוס כשיש לנו (16), או נקודת-gap מסונתזת מ-underlying_citation כשאין (269). כך שכבת-היומונים היא גם אות-גילוי: היא מראה שהפיד היומי מכסה בעיקר פסיקות שעדיין לא בקורפוס.

Backend (read-only, G2):

  • "digest" ל-VALID_NODE_TYPES (כבוי כברירת-מחדל).
  • _digest_nodes_and_edges(): dig:<id> מ-digests שהושלמו, קשת coverscl:precedent (linked בתצוגה) או → gap:<underlying_citation> (מסונתז, dedup מול שכבת-ה-gap — in-degree אמיתי מנצח). נושא concept_tag (תווית), headline_holding (note), ערכאה/תאריך.
  • _add_digests() עם dedup. מחובר לשתי פונקציות הבנייה. GraphNode += note, digest_id. מגודר ב-node_types (אין שינוי app.py). אומת: 16 covers→precedent, 269 covers→gap.

Frontend:

  • toggle "יומונים (כל יום)" (כבוי).
  • graph-canvas: יומון = נקודה טורקיז (r=4); קשתות covers טורקיז.
  • graph-node-panel: ענף יומון — concept + holding + ערכאה/תאריך + קישור ל-/digests.

build+lint עוברים. Invariants: G2 · UI2. api:types אחרי deploy.

🤖 Generated with Claude Code

רעיון של חיים — להכניס את היומונים שמורידים ("כל יום") לגרף. כל יומון **`covers`** את הפסיקה שהוא מנתח: פסיקת-קורפוס כשיש לנו (16), או **נקודת-gap מסונתזת** מ-`underlying_citation` כשאין (269). כך שכבת-היומונים היא גם **אות-גילוי**: היא מראה שהפיד היומי מכסה בעיקר פסיקות **שעדיין לא בקורפוס**. **Backend (read-only, G2):** - `"digest"` ל-`VALID_NODE_TYPES` (כבוי כברירת-מחדל). - `_digest_nodes_and_edges()`: `dig:<id>` מ-digests שהושלמו, קשת `covers` → `cl:precedent` (linked בתצוגה) או → `gap:<underlying_citation>` (מסונתז, dedup מול שכבת-ה-gap — in-degree אמיתי מנצח). נושא concept_tag (תווית), headline_holding (note), ערכאה/תאריך. - `_add_digests()` עם dedup. מחובר לשתי פונקציות הבנייה. `GraphNode` += note, digest_id. מגודר ב-node_types (אין שינוי app.py). **אומת: 16 covers→precedent, 269 covers→gap.** **Frontend:** - toggle "יומונים (כל יום)" (כבוי). - `graph-canvas`: יומון = נקודה **טורקיז** (r=4); קשתות `covers` טורקיז. - `graph-node-panel`: ענף יומון — concept + holding + ערכאה/תאריך + קישור ל-`/digests`. build+lint עוברים. Invariants: G2 · UI2. `api:types` אחרי deploy. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-07 21:31:24 +00:00
Chaim's idea: surface the downloaded "כל יום" digests in the graph. Each digest
COVERS the ruling it analyses — a corpus precedent when we have it (16), or a
synthesized gap node from its underlying_citation when we don't (269). So the
digest layer doubles as a discovery signal: it makes visible that the daily
feed overwhelmingly covers rulings NOT yet in the corpus.

Backend (web/graph_api.py — read-only, G2):
- "digest" added to VALID_NODE_TYPES (off by default).
- _digest_nodes_and_edges(): dig:<id> nodes from completed digests, `covers`
  edge → cl:precedent (linked_case_law_id in view) or → gap:<underlying_citation>
  (synthesized, deduped against the gap layer — real in-degree wins). Carries
  concept_tag (label), headline_holding (note), underlying_court/date.
- _add_digests() appends the layer with gap dedup. Wired into both build
  functions. GraphNode += note, digest_id. Gated via node_types (no app.py
  change). Validated: 16 covers→precedent, 269 covers→gap.

Frontend:
- graph.ts: GraphNodeType += "digest"; GraphEdgeType += "covers"; node fields.
- graph-filter-panel: toggle "יומונים (כל יום)" (off by default).
- graph-canvas: digest = teal node (r=4); `covers` edges teal.
- graph-node-panel: digest branch — concept + holding + court/date + link to
  /digests.

web-ui build + lint pass. Invariants: G2 (SELECT-only), UI2. api:types post-deploy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 2c75666d26 into main 2026-06-07 21:31:29 +00:00
chaim deleted branch worktree-graph-digests 2026-06-07 21:31:29 +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#132