diff --git a/mcp-server/src/legal_mcp/services/db.py b/mcp-server/src/legal_mcp/services/db.py index 5964f78..45669fe 100644 --- a/mcp-server/src/legal_mcp/services/db.py +++ b/mcp-server/src/legal_mcp/services/db.py @@ -4534,7 +4534,16 @@ async def update_case_law(case_law_id: UUID, **fields) -> dict | None: params.append(v) sql = f"UPDATE case_law SET {', '.join(set_parts)} WHERE id = $1 RETURNING *" row = await pool.fetchrow(sql, *params) - return _row_to_case_law(row) if row else None + if row is None: + return None + # `searchable` is a DERIVED completeness flag (INV-DM1). It is computed at + # ingest end and after the Gemini metadata extractor — but internal-committee + # decisions skip Gemini, so when their summary/tags/metadata are filled later + # (manual edit, deterministic enrichment) the flag would otherwise go stale + # and the row stays invisible to RAG. Recompute at this write so the derived + # value never drifts from the content (G1: normalize at the source). + await recompute_searchable(case_law_id) + return await get_case_law(case_law_id) async def set_case_law_extraction_status(case_law_id: UUID, status: str) -> None: