Wires a new case-deletion path across the three layers that needed it:
- db.delete_case(case_id) — single SQL DELETE; documents, chunks, and
qa_results cascade via existing schema FKs, audit_log nullifies.
- cases_tools.case_delete(case_number, remove_files=False) — MCP tool
wrapper. File tree on disk is kept by default (audit trail); pass
remove_files=True for a hard delete.
- DELETE /api/cases?case_number=... — FastAPI endpoint taking the case
number as a QUERY param rather than a path segment. Case numbers
like "1000/0426" can't be passed through a path parameter because
FastAPI routing decodes %2F before matching, so a query param is
the only shape that works for historical data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>