Skip to content

case-law

Case law retrieval, reporting and citation standards for OKF matters. Use whenever the user asks for case law, precedent, authority, "what does the law say", summarising a judgment, finding a case, or citing a case in correspondence/pleadings/advice. Mandates the big red structural warning (judgments narrate positions A/B then decide; issue-by-issue judgments contain MULTIPLE decisions) and requires a confirmed paragraph number + context for every case law result before it may be relied on. Dense source documents (expert reports, FRAEW, adjudications) are mapped via tools/dense_doc_map.py first so pinpoints resolve to sections/pages. Never fabricate pinpoints — unverified citations are flagged. Self-learning: appends lessons to learnings.md.

Source: .opencode/skills/case-law/SKILL.md — site rebuilt 2026-09-05.


Case Law — Retrieval, Reporting & Citation Standards

When to run

  • User asks for case law, precedent, authority, or "what does the law say".
  • User asks to summarise a judgment, find a case, or compare positions.
  • A case is cited in advice, correspondence, or pleadings — verify it here before it is used.

Core rule: the big red warning

Every single time a case law result is returned — summary, citation, or comparison — lead with this warning verbatim (or its equivalent bolded block):

⚠️ CASE LAW WARNING

A judgment is a narrative, not a headline. It states position A, then position B, then the DECISION — and in issue-by-issue judgments it makes a separate decision on every issue. A one-line summary of a case is almost always wrong, because it is usually the position of one side, not the holding. Only the actual decision (ratio per issue) is authority. Everything else — arguments, descriptions of the parties' positions, commentary on other cases — is narrative. This result is not usable until you have confirmed the paragraph number and context of each point (below).

Never return a case law result without this warning being visible.

Mandatory confirmation: paragraph + context

Before any case law point may be relied on (or included in a summary as authoritative):

  1. Paragraph number (pinpoint) — the exact para(s) of the judgment. E.g. para 45, [45], paras 45–47.
  2. Context — what the para actually says: is it the court stating the position A, position B, the decision, or counsel's argument?
  3. Who decided — which judge/court/panel; which decision stage (e.g. Inner House, single judge at first instance).
  4. Which issue — for issue-by-issue judgments, which issue the para belongs to.
  5. Ratio or obiter — is the point necessary to the decision (ratio) or said in passing (obiter)?

If any of these cannot be confirmed from the source, say so explicitly and mark the citation [UNVERIFIED: no pinpoint confirmed] — never invent a paragraph number. A case with an unconfirmed pinpoint may be mentioned as background, never cited as authority.

Verify the PROPOSITION, not just the pinpoint. A correct paragraph number can carry a wrong proposition. Read the holding paras (the decision section) verbatim and check: (1) is the passage a HOLDING, a recorded submission, or counsel's argument? — recorded submissions quoted verbatim in judgments are not holdings (Johnston v IC [13] = IC's submission, holding at [27]; YSL [2024] EWHC 391 (KB) 85 = strike-out ground, holding at [234]/[238]; Camden LBC v BW [44] = counsel's submission, and the point was rejected at [70]–[71]); (2) what did the case actually DECIDE — appellate outcome, which limbs succeeded and which failed (AB v BTP [90]–[94]: damages upheld but the accuracy limb failed on appeal); (3) does the attribution survive (O'Hara: "equipped himself with sufficient information" is Lord Hope's, not Lord Steyn's). Lesson log 2026-08-12.

Retrieval protocol

  1. Check the OKF corpora first — before going to the web, search the structured case-law corpora in 01_Text/ (paragraph-per-line text with [n] pinpoint markers preserved):
  2. TCC_Contract_Corpus/01_Text/ — EWHC Technology & Construction Court judgments (2003–2026; ~1,664). Query via graphify query "<question>" from the corpus root (graph in TCC_Contract_Corpus/graphify-out/), or grep 01_Text/ directly for a case name.
  3. GDPR_Accuracy_Corpus/01_Text/ — data-protection/defamation/accuracy judgments (graph in GDPR_Accuracy_Corpus/graphify-out/).
  4. Research_Notes/SSDT_Full_Catalog/01_Text/ — SSDT disciplinary determinations (graph in its graphify-out/).
  5. Research_Notes/*.md — verified case notes (e.g. Scandalous_Averments, Dunlop_KC_Speech_Restriction) with pinpoints already confirmed. Corpus text is the same standard as a PDF text layer: pinpoints read from [n] markers, quoted verbatim. A result found in a corpus still needs the mandatory warning + pinpoint confirmation before it may be cited.

  6. Identify the proposition the user actually needs (the legal issue), not the case name.

  7. Retrieve the full judgment text (or authoritative headnote + full text). Secondary sources (blogs, digests) are for leads only — authority comes from the report itself.
  8. Read the judgment's structure first: does it decide ONE issue or MANY?
  9. Single-issue judgments: find the holding para(s) near the end (Lord X's "For these reasons I would ..." / "In my opinion ...").
  10. Issue-by-issue judgments: the court decides every issue in turn — list EVERY decision, not just the headline. Missing one is a material error.
  11. For each decision captured: record (a) issue, (b) the two positions as stated (position A, position B), (c) the decision, (d) pinpoint paras, (e) the reasoning paras that carry it.
  12. If the judgment narrates positions A/B before deciding, say which paras are narrative vs holding — this is the confusion the warning exists to prevent.
  13. Map dense sources first — if the authority or the document it discusses is dense (expert report, FRAEW, adjudication decision, long advice with a ToC), run tools/dense_doc_map.py (okf-ocr skill) BEFORE capturing holdings: python <okf-ocr>/tools/dense_doc_map.py "<file.pdf>"<base>_V1_OCR_index.md (verified section tree) + <base>_V1_OCR_map.md. Cite into the document as map:§4.6 p44-46 (document section + page), and confirm each pinpoint against the verbatim text before it may be cited as authority — same rule as paragraph numbers in judgments.

Reporting format (every case returned)

Return large verbatim chunks — never a bare pinpoint or a single paraphrased sentence. For each holding, quote the pinpoint paragraph plus the paragraph before and the paragraph after (the chunk [N-1] [N] [N+1], or the whole surrounding passage where the reasoning runs long). Context lives in the run-up, not in the one sentence you want:

CASE: [Name] v [Name] [Year] [Court]
ISSUES DECIDED: [1] ...; [2] ...; [3] ...
HOLDING(S) — per issue (pinpoint + chunk required):
  1. [Issue] — decided [for whom / which proposition] — [Name J] at [para] — [ratio/obiter]
     CHUNK: [[N-1]] ...verbatim... [[N]] ...verbatim... [[N+1]] ...verbatim...
  2. ...
POSITIONS STATED IN JUDGMENT (NOT holdings): A = ...; B = ... (paras X–Y)
UNVERIFIED: [anything not pinpoint-confirmed]
  • The chunk is quoted verbatim from the judgment (verbatim-ocr standards apply: no silent edits, no elision without [...]).
  • If a holding's reasoning spans several paragraphs, quote the whole span — the before/after rule is the minimum, not the ceiling.
  • If you cannot supply the chunk (source not to hand), that point is [UNVERIFIED: context chunk unavailable] — lead with the warning, never fake a chunk.

Special cases

  • Issue-by-issue with multiple decisions: the most dangerous type. Enumerate ALL decisions explicitly. The user's instruction: a case "normally narrates A position, B position and then decision... sometimes it's issue by issue with lots of decisions" — handle both.
  • Overturned/reversed/approved on appeal: state the appellate history with pinpoint if known; mark the status of each holding.
  • Conflicting cases: never paper over conflict; present both holdings with pinpoints and note which court is binding on the current forum.
  • Numbered paragraphs missing (older reports, unreported): give the page + at a minimum the section heading, and mark [UNVERIFIED: no para numbering].

Self-learning

learnings.md sits next to this SKILL.md — read before retrieving, append new dated lessons after (case structures that misled, pinpoint-finding patterns, sources that lack paras).

Example

User: "What does the law say about X?" — reply starts with the big red warning, then per-case reports each with pinned holdings, positions stated vs holdings distinguished, and any unverified elements flagged. No case may be cited in advice without the format above.