The "אימות פסיקה" tab reloaded its data on every tab revisit and the first
load took 1.5–3s. Two independent causes, two fixes:
Frontend (web-ui/src/lib/api/citation-verification.ts):
- staleTime 10s → 5min and refetchOnMount: false. Radix Tabs unmounts inactive
TabsContent, so switching back used to trigger a full rebuild once the 10s
window elapsed. Verify mutations still invalidate the query, so edits pull
fresh data.
Backend (mcp-server/.../case_citation_verification.py):
- The per-argument loop ran a Voyage embed + vector search + batched authority
query sequentially (N args × ~300ms waterfall). Extracted to _fetch() and
fanned out with asyncio.gather — order preserved, n_verified counter and
per-argument seen-sets unchanged. First load ~5× faster on multi-argument cases.
Pure read/assembly — no new parallel path (G2), no silent error swallowing
(search/radar still log warnings). Invariants: INV-DIG1/INV-AH unaffected
(still read-only, never cites).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Frontend half of the citation-verification panel (backend in #323), as the agreed
third tab in /compose — matching the approved X17 mockup 24-citation-verification:
- lib/api/citation-verification.ts: hand-written types + useCitationVerification
query + useVerifyCitation mutation (POST verify, invalidates the view).
- components/compose/citation-verification-panel.tsx: per legal argument →
supporting corpus precedents with the cited_by authority chips (אומץ ×N /
אובחן ×N), the exact supporting_quote, ✓ מאמת / ✗ לא רלוונטי verify actions, a
per-citation chair-note field, and the per-issue 📡 radar (unlinked digests,
pointer-only). Summary strip + INV-AH/INV-DIG1 reminders.
- compose page: third tab "אימות פסיקה" alongside עורך הבלוקים / עמדות וטענות.
No api:types regen needed (endpoints return assembled dicts; types hand-written
per the lib/api convention). tsc + eslint clean.
Invariants: INV-AH (writer cites only verified), INV-DIG1 (digest never cited),
G2 (consumes the one backend view). Visual matches the gate-approved mockup.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>