feat(goldset): interactive gold-set tagging page (#81.7/#81.8) #101

Merged
chaim merged 1 commits from worktree-goldset-tagging-ui into main 2026-06-06 21:52:41 +00:00
Owner

מה ולמה

מחליף את עריכת-ה-CSV בדף-תיוג באפליקציה — היו"ר/דפנה מתייגים את gold-set איכות-החילוץ בלחיצות, ורואים precision/recall של הוולידטורים בזמן-אמת.

  • Schema (V29): halacha_goldset — batch מרובד מתויג-אנושית (is_holding/correct_type/quote_complete, NULL עד תיוג).
  • db.py: goldset_create_sample (round-robin מרובד לפי פסק×סוג, idempotent), goldset_list (פריטים + תוכן ההלכה + תווי-המכונה), goldset_tag (חלקי — שדה בכל פעם לתיוג-מקלדת), goldset_score (פורט של ה-P/R/F1 מהסקריפט — כל ולידטור נמדד כגלאי "לא-הלכה" מול התיוג; קלט #81.8).
  • API: GET /api/goldset · POST /api/goldset/sample · GET /api/goldset/score · PATCH /api/goldset/{id}.
  • web-ui: lib/api/goldset.ts; goldset-panel.tsx — כרטיס-לכל-פריט, keyboard-first (J/K ניווט, H/N הלכה, C/X ציטוט), מד-התקדמות, טוגל הסתר-מתויגים, וטבלת-ציון חיה הניתנת להרחבה; app/goldset/page.tsx + קישור-ניווט "מדגם-זהב" תחת ידע ולמידה.

הגנה מתודולוגית מפורשת ב-UI ובתיעוד: התיוג הוא אמת-מידה אנושית, ללא תיוג-AI מקדים (הטיה מעגלית). אוכלס batch של 150 פריטים מרובד.

Invariants — הצהרה

  • נוגע / מקיים: G1 (eval-set ממודל במקור בטבלה ייעודית); G2 (משתמש באותם ולידטורים של halacha_quality שהמחלץ מריץ — אין לוגיקת-ניקוד מקבילה).

אימות

  • backend: create/list/tag/score מול ה-DB החי; tsc --noEmit exit 0; py_compile ok.
  • build מקומי של Turbopack נחסם ע"י symlink ה-worktree — CI בונה ב-checkout נקי.

🤖 Generated with Claude Code

## מה ולמה מחליף את עריכת-ה-CSV בדף-תיוג באפליקציה — היו"ר/דפנה מתייגים את gold-set איכות-החילוץ בלחיצות, ורואים precision/recall של הוולידטורים בזמן-אמת. - **Schema (V29):** `halacha_goldset` — batch מרובד מתויג-אנושית (`is_holding`/`correct_type`/`quote_complete`, NULL עד תיוג). - **db.py:** `goldset_create_sample` (round-robin מרובד לפי פסק×סוג, idempotent), `goldset_list` (פריטים + תוכן ההלכה + תווי-המכונה), `goldset_tag` (חלקי — שדה בכל פעם לתיוג-מקלדת), `goldset_score` (פורט של ה-P/R/F1 מהסקריפט — כל ולידטור נמדד כגלאי "לא-הלכה" מול התיוג; קלט #81.8). - **API:** GET /api/goldset · POST /api/goldset/sample · GET /api/goldset/score · PATCH /api/goldset/{id}. - **web-ui:** `lib/api/goldset.ts`; `goldset-panel.tsx` — כרטיס-לכל-פריט, keyboard-first (J/K ניווט, H/N הלכה, C/X ציטוט), מד-התקדמות, טוגל הסתר-מתויגים, וטבלת-ציון חיה הניתנת להרחבה; `app/goldset/page.tsx` + קישור-ניווט **"מדגם-זהב"** תחת ידע ולמידה. **הגנה מתודולוגית** מפורשת ב-UI ובתיעוד: התיוג הוא אמת-מידה אנושית, **ללא** תיוג-AI מקדים (הטיה מעגלית). אוכלס batch של 150 פריטים מרובד. ## Invariants — הצהרה - **נוגע / מקיים:** G1 (eval-set ממודל במקור בטבלה ייעודית); G2 (משתמש ב**אותם** ולידטורים של `halacha_quality` שהמחלץ מריץ — אין לוגיקת-ניקוד מקבילה). ## אימות - backend: create/list/tag/score מול ה-DB החי; `tsc --noEmit` exit 0; `py_compile` ok. - build מקומי של Turbopack נחסם ע"י symlink ה-worktree — CI בונה ב-checkout נקי. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-06 21:52:33 +00:00
Replaces the CSV-edit workflow with an in-app tagging page so the chair/Dafna
can label the extraction-quality gold-set by clicking, and see validator
precision/recall live.

Schema (V29): halacha_goldset — a stratified, human-tagged evaluation batch
(is_holding / correct_type / quote_complete, NULL until tagged).

db.py:
- goldset_create_sample (stratified round-robin over case×rule_type, idempotent),
- goldset_list (items + halacha content + the machine's own labels),
- goldset_tag (partial — one field at a time for keyboard tagging),
- goldset_score (ports the script's P/R/F1: each validator scored as a
  not-a-holding detector against the human tags — the #81.8 input).

API: GET /api/goldset, POST /api/goldset/sample, GET /api/goldset/score,
PATCH /api/goldset/{id}.

web-ui:
- lib/api/goldset.ts (hooks),
- components/goldset/goldset-panel.tsx — card-per-item, keyboard-first
  (J/K nav, H/N holding, C/X quote), progress bar, hide-tagged toggle, and a
  collapsible live score table,
- app/goldset/page.tsx + nav link "מדגם-זהב" under ידע ולמידה.

Methodology guard kept explicit in UI + docstrings: tags are HUMAN ground truth,
no AI pre-fill (circular bias). Populated a 150-item stratified batch.

Verified: backend create/list/tag/score against the live DB; tsc --noEmit 0;
py_compile ok. (Local Turbopack build blocked by worktree symlink — CI builds clean.)

Invariants: G1 (eval set modeled at source in its own table); G2 (reuses the same
halacha_quality validators the extractor runs — no parallel scoring logic).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 1a1757f29d into main 2026-06-06 21:52:41 +00:00
chaim deleted branch worktree-goldset-tagging-ui 2026-06-06 21:52:41 +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#101