Sloth-ninja clears out JessicaOSS's US case-law layer

The proposed first step toward a UK-focused research stack was subtraction: remove the US CourtListener service cleanly, while preserving room for future sources.

integrationknowledge-management

Sloth-ninja's closed proposal would have removed JessicaOSS's CourtListener integration, a US case-law search service, across the product: research access, citation display, account settings, and the supporting stored data.

The important design choice was not to rip out the whole research framework. The proposal retained the connection point where future UK research sources could be added, while eliminating a feature that no longer fit the migration direction. It also aimed to keep historic conversations usable: older case-law blocks would simply be omitted rather than preventing a chat from opening.

The work did not land, so this is a useful signal of direction rather than a live product change.

So what Legal teams assessing JessicaOSS's UK trajectory should watch this fork: it shows a deliberate effort to replace inherited US research assumptions without breaking existing records.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

3 commits from Sloth-ninja/JessicaOSS, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
e1fea922 Excise CourtListener (US case law) integration sloth-ninja 2026-07-07 ↗ GitHub
commit body
Clean removal per docs/MIGRATION_SPEC.md §2 - code, LLM tools, prompts,
UI, DB surface, env vars, and docs. The legal-research seam
(buildSystemPrompt(includeResearchTools) / researchTools) is kept empty
for the Companies House and legislation.gov.uk integrations (WS1/WS2).

Backend: delete courtlistener client, tool definitions, /case-law route;
strip 5 tool branches + ~1k lines of turn-state/citation helpers from
chatTools.ts; remove the OpenAI citation-reminder suffix; drop the
'courtlistener' key provider and the legal_research_us setting from
settings/profile routes.

Frontend: delete CaseLawPanel, the orphan courts script, and the
/account/features page (only content was the US toggle; per decision the
UK sources ship without a toggle); remove CL SSE handlers, event types,
case-citation annotations, case tabs, and rendering blocks. Old chats
containing persisted US events still render - unknown event types are
skipped at render time (MIGRATION_SPEC §6 decision 6).

Database: authorised migration 20260706_remove_courtlistener.sql (drops
both index tables, deletes stored CL tokens, tightens the provider
CHECK, drops legal_research_us) + matching schema.sql edits.

Also: posttool hook now runs prettier only when a project defines a
prettier config (repo has none; auto-formatting upstream files would
violate minimal-diff), and docs/BUILD_LOG.md introduced - every PR
appends a scope/verification entry (now in the definition of done).

Verification: zero courtlistener/legal_research_us references left in
source (except the intentional unknown-event skip-guard); tsc clean in
both projects; frontend lint 35 errors vs 41 baseline; backend boots and
serves /health; next build passes with public env vars; evals:smoke 3/3
against the live legislation.gov.uk API.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
c67faa97 Eval runner: load operator env files at startup sloth-ninja 2026-07-07 ↗ GitHub
commit body
npm run evals previously saw only shell-exported variables; the operator
keeps keys in repo-root .env.local. Loader reads .env.local / .env /
backend/.env (in that order, existing environment always wins), so keys
work from any of the documented locations. Values stay in the process
environment; nothing is printed or persisted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ff4b47be Activate Companies House golden case with real verified data sloth-ninja 2026-07-08 ↗ GitHub
commit body
ARIA GRACE LAW CIC (13927967) - the pilot firm - verified against the
live Companies House API; stable fields (number, name, incorporation
date, SIC, jurisdiction) baked as assertions. Tagged smoke so the Stop
hook exercises real CH connectivity; skips cleanly where the key is
unset (keyless CI until the secret is added).

Full suite now: 4 pass, 1 pending (judged case awaits workflow fixtures).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-1247.md from inside the repo you want the changes in.

⬇ Download capture-thread-1247.md