deepseek-biber-witness
Register lock for witness statements and precognitions tuned for DeepSeek V4 Pro - first-person past-tense narrative, high D2, zero argument. Use when drafting or rewriting a witness statement, precognition, statement of evidence, affidavit narrative, signed factual statement, or turning client notes into sworn narrative. Pairs with deepseek-biber-fact and deepseek-biber-argument (never mix the three registers) and bieber-scale (scoring).
Source: .opencode/skills/deepseek-biber-witness/SKILL.md — site rebuilt 2026-09-05.
deepseek-biber-witness - witness statement register (DeepSeek V4 Pro)¶
Biber profile: the narrative register. High D2 (past-tense storytelling, public verbs, perfect aspect, third-person reference), D1 pulled up from pleading level by first-person pronouns and the copula, negative D3 (time/place anchoring), near-zero D4 (the passage persuades nothing), elevated D6 (reported speech that-clauses). The passage speaks AS the witness, first person, about events, past tense; it never argues, evaluates or concludes.
CALIBRATION STATUS - BANDS PROVISIONAL¶
Bands below are theory-derived, NOT yet calibrated. Until real exemplars have been scored (plan: 10-15 anonymised witness statements -> run bieber_scorer.py -> baseline = observed centre, band = centre +/- 1 sd), treat the per-sentence gate as ADVISORY and record observed scores for the calibration pass. Remove this banner when the table is replaced with empirical values.
Judicial authority - the register is the law, not a style¶
The constraints this skill enforces (first person, past tense, own words, no argument, no opinion, no rhetoric) are what the courts require. Verified pinpoints; treat the register block below as implementing these rules:
- The own-words rule (affidavits): Court of Session Practice Note No 1 of 2018 (LP Sutherland), "Affidavits in family actions", para 12: the drafter "must not frame the affidavit in language that the witness would not use. The court is likely to attach little weight to such an affidavit"; the statement must be in the witness's own words "even where this results in the use of confused or intemperate language". Paras 13-14: first person, matters within the witness's own knowledge, hearsay attributed. Paras 32-34: affidavits must not be shown to other witnesses before lodging.
- Lawyer-drafted statements are discounted: Luminar Lava Ignite Ltd v Mama Group plc [2010] CSIH 01 (LP Hamilton), postscript [70]: "There was always a danger that the text of the written statement would be far removed from the words which the witness would use unprompted"; at [72] endorses Watson v Student Loans Co Ltd [2005] CSOH 134 (Lord Hardie) - showing witnesses each other's affidavits is coaching and impairs the evidence.
- Memory doctrine adopted in Scotland: Henderson v Benarty Medical Practice [2022] CSOH 28 (Lady Wise) [48]-[50]: Lord Pearce in Onassis v Vergottis [1968] 1 Lloyd's Rep 431 at 431 ("memory becomes fainter and imagination more active"); Gestmin SGPS SA v Credit Suisse [2013] EWHC 3560 (Comm) (Leggatt J) [16]-[22] adopted via Prescott v University of St Andrews [2016] CSOH 3 at [42] (Lord Pentland), Johnstone v Grampian Health Board [2019] CSOH 90 at [127] and Sheard v Tri Do [2021] EWHC 2166 (QB); at [50]: consistency with contemporaneous documents, not demeanour.
- Gestmin caveat (must be cited with it): Kogan v Martin [2019] EWCA Civ 1645 (Leggatt LJ) [88]-[89]: Gestmin is "not to be taken as laying down any general principle for the assessment of evidence"; its observations "were expressly addressed to commercial cases"; where sworn evidence is disbelieved the court must say why. See also HHJ Gore QC in CBX v North West Anglia NHS Trust [2019] 7 WLUK 57 and Males LJ in Simetra Global Assets Ltd v Ikon Finance Ltd [2019] EWCA Civ 1413 [48]-[49].
- English own-words and anti-argument rules: President of the Family Division (McFarlane P), Memorandum: Witness Statements (12 November 2021), paras 1-2, 6-7, 12, 14: "Too many witness statements are prepared in breach of proper professional standards"; para 6: the statement "must be expressed in the first person using the witness's own words" (PD 22A para 4.1); para 7: must not quote documents at length, argue the case, set out a narrative derived from the documents, express opinions or use rhetoric; para 12: any attempt to alter or influence recollection is "serious professional misconduct"; para 14: memory per CPR PD 57AC App para 1.3 (fluid, malleable, vulnerable to alteration).
- Over-elaboration attracts costs sanctions: Business and Property Courts Witness Evidence Working Group Report (December 2019): statements "frequently stray far beyond any evidence the witness would in fact give if asked proper questions in chief" and cover comment and "spin"; egregious cases should be singled out for judicial criticism and costs sanctions (now CPR PD 57AC).
Unverified (not on the National Archives; do NOT cite): Denault v Denault [2015] EWHC 1722 (Fam); Mega Upload Ltd v BBC; Mubarak v Mubarik [2006] EWHC 1260 (Fam) - no own-words passage found; Re Polly Peck (No 2) [1998] (pre-2003 coverage); Sheard v Tri Do (citation known only via Henderson [49]).
Target profile (pybiber raw scores - provisional)¶
D1 is calibrated to Biber (1988) scale (R2=0.96). D2-D6 use raw pybiber scores; direction is reliable, magnitude is relative.
| Dimension | Target band (provisional) | Baseline (provisional) | Reference (Fact) | Reference (Argument) | Key features |
|---|---|---|---|---|---|
| D1 | -260 to -140 | -200 | -365 | -188 | nouns, prepositions, first person, copula |
| D2 | +20 to +100 | +55 | -80 | -62 | past & pluperfect, perfect aspect, public verbs, 3rd person |
| D3 | -60 to -10 | -35 | +13 | +4 | time adverbials, place adverbials, adverbs |
| D4 | -70 to -10 | -40 | -52 | +6 | zero modals, zero suasive verbs |
| D5 | -70 to -20 | -45 | -62 | -46 | agentless passives, conjuncts |
| D6 | +10 to +50 | +30 | -11 | +12 | that-clauses, that-deletion, demonstratives |
Per-sentence gate: any sentence outside its dimension band is a critic flag. Bands are intentionally wide - if a paragraph falls anywhere within, it passes. Only sentences outside the band are flagged for correction. Signature check: D2 must be POSITIVE in the body (the narrative dimension is what separates a witness statement from a condescendence).
7-Stage Execution Workflow (canonical)¶
When drafting or rewriting a witness statement, execute all 7 stages in order. Stages are stage-gated: no stage starts until the previous one reports. The multi-agent workflow below is the engine inside Stages 3-4.
- Stage 1: Micro-Granular OKF Event Parsing - Parse the source material (client notes, chronology, emails) into an event tree: every event, date, time, party, document and figure as a discrete node with its source (own knowledge / told by X / document). This is the event inventory - the SKELETON. Nothing may be added or dropped after Stage 1.
- Stage 2: Event Integrity Matrix - One row per event: event, date, parties, documents, figures, knowledge basis (direct/hearsay/document), register assignment (FACT-NARRATIVE only; anything argumentative is flagged for hand-off to deepseek-biber-argument), [UNVERIFIED] flags for anything the source does not support. The matrix is the lock: Structure decisions happen HERE, before any prose (structure changes ARE meaning changes - order implies priority).
- Stage 3: Core Evidentiary Deep-Dive - For every matrix row, the evidentiary mechanics: sequence anchoring (pluperfect where order matters), document frame for letters/emails (date, sender, recipient, content), perception verbs for observed events, time/place adverbial on at least every second sentence, hearsay attribution for everything not directly observed ("I was told that...", never as knowledge).
- Stage 4: Register Mechanics & Sanctioned Substitutions - Two registers, one skeleton:
- Witness register (this skill): first person, past tense, public verbs, zero modals (reported-speech "would" excepted), zero evaluation.
- Plain English variant (cutts-plain-english, for intelligibility): short sentences, plain verbs. Sanctioned swaps only - words, never bones: telephoned->phoned, attended->went, observed->saw, said->told. The statement of truth is a FENCE: quoted verbatim, exempt from register, never redrafted. If a swap changes an obligation, condition, figure, party, SCOPE WORD (only/solely/other than), PROHIBITION (must not/may not) or CONNECTOR (when/until/before) - meaning_check's interference categories - it is NOT sanctioned: back to Stage 2. Sentence splits are sanctioned only across neither a negation, a conditional, nor a temporal link.
- Stage 5: Recursive Gap Audit - Ten witness gaps, checked every draft: (1) introduction with age/role/residence; (2) own-words rule - no lawyer's polished voice (Court of Session PN 1/2018 para 12); (3) hearsay attributed, source named; (4) dates/figures consistent with the document production; (5) event order intact; (6) memory caveats per Henderson/Gestmin - nothing asserted beyond the record; (7) zero argument leak (D4 > 0 fails); (8) zero evaluation/inference; (9) statement-of-truth formula verbatim; (10) signature/date blocks present.
- Stage 6: Compliance Mapping - Every paragraph mapped to the rule it must satisfy: PN 1/2018 paras 12-14, 32-34 (own words, first person, hearsay, no coaching); Luminar Lava [2010] CSIH 01 [70] + Watson v Student Loans [2005] CSOH 134 (lawyer-drafted discount); Henderson v Benarty [2022] CSOH 28 [48]-[50] with Gestmin [16]-[22] and the Kogan [88]-[89] caveat; PD 57AC + BPC Working Group Report (anti-rhetoric); CPR PD 22A para 4.1. Unverified citations never appear in the map.
- Stage 7: Deliverables Master Schedule - The output set, always produced as a table: the statement (register version), the plain-English version where intelligibility is required, the meaning_check report (skeleton preserved between versions - tools/meaning_check.py), both scorecard reports (bieber_scorer.py / plain_score.py), the [REGISTER: human] residual list, and the observed medians logged as calibration data for this skill's provisional bands.
Multi-agent workflow¶
All sub-agents use DeepSeek V4 Pro for dimensional reasoning and register execution. Roles are split to avoid conflicting priorities within a single agent.
- Planner (DeepSeek V4 Pro) - before any drafting, produces a
paragraph-by-paragraph dimensional schema. Frame selection, feature
activation, and risk thresholds: consult
../bieber-scale/reference/crosswalk.mdbefore assigning frames. - Target D1-D6 per paragraph (see Target profile above)
- Required feature rates: nouns 250-380/1000w, prepositions 120+/1000w, past or pluperfect on every finite verb (statement-of-truth formula excepted), a time or place adverbial on at least every second sentence, one or more public or perception verbs per paragraph
- Sentence frames per paragraph - select from: Experience frame: [I] [past activity verb] [object] [time/place elaboration]. "On 14 March 2024 I attended a site meeting at the development." Perception frame: [I] [past perception verb - saw, observed, heard] [direct object] [elaboration]. "I observed damp staining on the ceiling of the entrance hall." Report frame: [party] [past public verb - told, said, confirmed] [that or zero] [reported content]. "Mr Reid told me that the roof had been inspected the previous week." Document frame: [On date] [I] [received/sent] [document] [party] [elaboration]. "By letter dated 5 April 2024 I notified the defender of the defects." Sequence frame: [After/Before/When clause] [event]. "After the water ingress was reported, I arranged for photographs to be taken." Statement of truth: a quoted legal formula - fence it verbatim, exempt from register, never redrafted.
- Banned per paragraph (max 5 items): modals, suasive verbs, present tense (formula excepted), evaluation, inference or legal conclusion.
- Register assignment: FACT-NARRATIVE ONLY. Paragraphs that argue a proposition are flagged for hand-off to deepseek-biber-argument - a witness statement never argues.
-
Paragraph budget: no paragraph exceeds 500 words - a cap, not a target; context determines size and most paragraphs are shorter. An episode may be developed across several paragraphs, each keeping the register. Chunk = paragraph: chunk boundaries at paragraph ends, register block re-asserted at each paragraph head.
-
Structural Drafter (DeepSeek V4 Pro) - receives the Planner's schema plus the register block. Fills content into the specified sentence frames in <=500-word chunks. Re-asserts the register block per chunk. Does not self-check during generation. Priority: dimensional targets.
-
Critic (DeepSeek V4 Pro) - runs
bieber_scorer.pyon the output, returns per-sentence D1-D6 scores. For every sentence outside its target band, provides: the original sentence, the corrected sentence, and the dimensional reason (citing../bieber-scale/reference/crosswalk.md). Checks register purity - argument leak into a witness statement is a failure - and VOICE: a sentence with no first-person subject and no named party is impersonal, which fails the genre even when it scores in band. Never regenerates the passage. -
Gatekeeper (DeepSeek V4 Pro) - receives the Critic's correction list. For each proposed correction, checks predicted effect on ALL 6 dimensions using the crosswalk's per-frame risk table. Rejects any correction that fixes one dimension while pushing another out of band. Approves only Pareto-improving edits. Returns approved corrections to the Drafter. Unapproved corrections flagged for Rewrite Drafter - structural tradeoffs.
-
Surgical Drafter (DeepSeek V4 Pro) - applies ONLY Gatekeeper-approved corrections. Never touches an in-band sentence. Output: original -> corrected only. Returns un-applicable corrections to Gatekeeper.
-
Rewrite Drafter (DeepSeek V4 Pro) - receives paragraphs that failed the structural threshold (>=50% of sentences fail the same dimension) or corrections rejected by the Gatekeeper. The Rewrite Drafter must RESTRUCTURE before rewriting: the task is not word-swapping. The paragraph is decomposed into its component propositions, then reassembled using the Planner's assigned sentence frames - entirely new sentence architecture, zero surface editing.
Restructure protocol (<=500 words per chunk):
1. Extract every proposition, fact, date, party name, quote, figure and
evidentiary point from the failing paragraph as a flat numbered list.
2. Reassign each item to a Planner frame (Experience, Perception, Report,
Document, Sequence) based on the event type.
3. Rebuild from the numbered list using only the assigned frames - do not
reference the original sentence structure. The original is a content
inventory, not a template.
4. Reprompt at 500 words: re-supply the Planner schema, the frame
assignments, the register block, the numbered proposition inventory,
the last rebuilt paragraph as anchoring context, and the paragraph
position in the overall document structure.
5. No proposition may be added, removed, or altered in legal effect.
Duplicate propositions across paragraphs may be omitted - the Rewrite
Drafter is permitted to cut repetition. Every omitted proposition must
be listed at the end of the redraft as [OMITTED: proposition X -
duplicate of paragraph Y] so the human can verify no substance was
lost.
6. If a proposition cannot be framed without changing its substance or
the witness's voice, it is returned to the list flagged
[REGISTER: human]. The Rewrite Drafter must fail honestly rather
than fabricate.
The rebuilt paragraph is scored by the Critic as a new Pass.
-
Loop: max 3 Critic passes per paragraph. Stop when all sentences pass all dimensions, or when no Gatekeeper-approved corrections remain. Flag remaining failures
[REGISTER: human]. -
Sub-Editor (DeepSeek V4 Pro) - operates in two passes:
7a. Heading & Structure Check - assumes the witness skeleton unless
instructed otherwise:
INTRODUCTION / FACTUAL ACCOUNT / ISSUE SECTIONS / STATEMENT OF TRUTH
For each block, the Sub-Editor asks (does not dictate):
- "This block narrates events - should it carry a FACTUAL ACCOUNT heading?"
- "This block argues a proposition - should it be handed off to the
argument register instead of being drafted?"
- "This heading says FACTUAL ACCOUNT but the scorer detects argument
register (D4>0) - does the heading match the content?"
The four-part skeleton is a default - override only if the Planner or user
has specified a different structure.
7b. Seven Defect Checks - surface polish the dimensional scorer is blind to: redundancy, nominalization overreach, missing prepositions, false formality, pronoun-wrapped genitives, plus witness-specific checks: the witness's age/role/introduction sentence present, and the statement of truth formula present verbatim at the end. Does not restructure sentences or alter register. The output is the final deliverable.
DeepSeek V4 Pro adaptation notes¶
- Judicialization is the main drift. When re-registering rough notes into the witness register, DeepSeek slides into impersonal judgment prose (third-person compressed, agentless passives, no "I"). Counter with quotas: every paragraph must contain at least one first-person subject AND at least one public or perception verb. DeepSeek responds to quotas more reliably than to qualitative nudges.
- Pluperfect is the sequence instrument. "had been inspected", "had not been informed" carry narrative order; without perfect aspect the story flattens and D2 loses its positive signature.
- The statement of truth is a fence, not a sentence. DeepSeek will try to "improve" it. It is a quoted legal formula: verbatim, exempt from register, present tense and private verb allowed inside the fence.
- Short sentences are high-risk because a single positive-feature token (a first-person pronoun, a copula) lacks noun/preposition density to offset it: sentences below 10 words require zero positive-style hits beyond the permitted first person.
- Suppress internal reasoning from the visible output: demand the drafted text and self-check table only - no chain-of-thought, no rationale.
- Register drift sets in at ~300-500 words of continuous generation with measurable decay beyond ~800-1000 words. Chunk and re-assert.
The register block (paste verbatim into the system/user prompt)¶
You are a register editor. You write in the register of a witness statement
- first-person factual narrative given as evidence, the register of sworn
statements, precognitions and statements of evidence.
THE DIMENSION (Biber D1 - Involved vs Informational Production)
The witness register trades a little informational depth for VOICE: first
person pronouns and the copula are heavy D1 positives, and the evidence form
requires them. They are absorbed by saturation of the negative column - nouns
at 250-380/1000w and prepositions at 120+/1000w - so the passage lands in the
band -260 to -140, noticeably more involved than a condescendence but far
from conversation.
POSITIVE PULL - permitted in this register (rationed, not eliminated):
+ first/second... no second person - FIRST person only: I, me, my, we, our
(the witness and those testifying jointly)
+ copula (was, were, is) - acceptable where a verbal form would strain
+ analytic negation (did not, had not) - natural in narrative
+ present tense ONLY inside the fenced statement-of-truth formula
+ that-deletion in reported speech ("he told me the roof was inspected")
POSITIVE PULL - ELIMINATE:
modals (must, may, might, should, would, will)
suasive verbs (require, permit, entitle, compel)
private verbs of opinion (think, believe, opine - the formula excepted;
memory verbs remember/recall are permitted but rare)
evaluation (clearly, obviously, wrongly, unreasonably, in my opinion)
inference and legal conclusion (this shows, consequently the defender is
liable)
adverbs as evaluation; hedges; second person (the witness never addresses)
NEGATIVE PULL - MAXIMIZE:
-0.799 NOUNS - target 250-380/1000w
-0.540 PREPOSITIONS - target 120+/1000w (on, at, in, by, under, of)
-0.575 mean word length - precise concrete nouns, not jargon
-0.474 attributive adjectives ("the entrance hall", "the damp staining")
-0.083 past tense and pluperfect - EVERY finite verb in the body
THE OTHER DIMENSIONS
D2 is the signature of this register and must be POSITIVE:
- past tense and pluperfect on every finite verb (formula excepted)
- perfect aspect where sequence matters: "the works had been completed",
"no one had informed me"
- public verbs reporting speech: told, said, confirmed, stated, reported
- third-person pronouns and party names for everyone except the witness
- synthetic negation: "No one from the defender told me that the works had
stopped" (not "anyone did not")
D3 negative: every event carries a time or place adverbial - dates, times,
rooms, sites. The witness is anchored in the world.
D4 near-zero: no modals, no suasion, no conditionals of obligation.
D6 positive: reported speech via that-clauses ("he told me that...") -
the witness's knowledge is a record of what was said and seen.
THE REGISTER
The witness speaks of events in the past, in order, with time and place on
every event, and reports what others said with public verbs. The witness
states what happened and what was said and seen - never what it means.
Exemplar:
"1. I am a director of the pursuer company. On 14 March 2024 I attended a
site meeting at the development at 10 am. Mr Reid, the site manager, told me
that the roof had been inspected the previous week. I observed damp staining
on the ceiling of the entrance hall and took photographs, which I sent to
the pursuer's agents the same day. No one from the defender informed me that
the works had stopped."
<text to adapt>
After the text, provide a Register self-check table: constraint, PASS/FAIL,
first failing token. Revise any FAIL to PASS before finalizing.
Matched-pair few-shot bank (in-profile by construction)¶
When few-shotting register, show a matched pair, not the target alone. Until
the witness bank exists, use ../bieber-scale/references/uksc_matched_pairs.jsonl
(596 pairs; a 48-run A/B on qwen2.5:7b judged by |D1 - (-213)|: matched-pair
2-shot beat target-only 2-shot 7-1) with confidence: OK pairs ONLY - but
judgment prose is non-narrative, so prefer building the witness bank during
calibration: real anonymised witness statements as output, informal notes
as input, stored at references/witness_matched_pairs.jsonl.
Scan every rewrite for case AND statutory patterns (sections, articles, clauses, schedules, "Act YYYY") and check each hit against the source verbatim - a case-name scan alone misses statutes (38/48 rewrites carried non-source legal references in the A/B re-run).
Drift control¶
Register constraints decay after ~300-500 words of continuous generation.
- Chunk = one paragraph: no paragraph exceeds 500 words (a cap, not a target - context determines size). An episode may run across several paragraphs. Re-assert the register block at the head of every paragraph.
- Fence quoted/extracted material (letters, emails, the statement-of-truth formula) in clearly marked blocks so its register is not imitated.
- Self-check each chunk against the feature list before moving on.
Rewrite mode (turning rough notes into sworn narrative)¶
Same multi-agent workflow as drafting, with added meaning fidelity:
- Draft agent - receives the preservation preamble below plus the register block. Rewrites the input in <=500-word chunks. Re-asserts the register block per chunk.
- Critic agent - runs
bieber_scorer.pyon each chunk, flags every sentence outside its target band. Additionally, for every rewritten sentence, confirms semantic equivalence: same facts, dates, figures, party names, quotes, and event order as the source - and that the witness's voice survives (no fact silently re-attributed). Output format per sentence:(original, rewritten, dimensional reason, semantic: PASS/FAIL). - Draft agent - applies corrections. Any sentence where semantic
equivalence cannot be maintained while hitting the register target is
flagged
[REGISTER: human decision]- never silently altered. - Loop terminates when all sentences pass both dimensional AND semantic checks, or after 3 passes.
Preservation preamble for the draft agent:
You are a register editor. Rewrite the following into the witness statement
register below. You must preserve exactly: every fact, date, figure, party
name, document reference and quotation; the order of events; and the first
person voice of the witness. Add no facts; remove none; draw no inference;
state no legal conclusion. Where the source did not observe something
directly, report it as hearing ("I was told that..."), never as knowledge.
Self-check list (per chunk)¶
- Every finite verb in the body is past tense or pluperfect - the statement-of-truth formula excepted and fenced.
- First-person subject and/or named party in every sentence - no impersonal compression, no anonymous passives as subjects.
- Perfect aspect used where event sequence matters; public/perception verbs carry the reported speech.
- Time or place adverbial on at least every second sentence.
- Zero modals, zero suasive verbs, zero evaluation, zero inference or legal conclusion - argument belongs to deepseek-biber-argument.
- Statement of truth formula quoted verbatim at the end.
Closing register loop (recursive check-and-correct)¶
After the full text is assembled, run a bounded loop - max 3 passes:
- Score the assembled text with the calibrated scorer:
python .opencode/skills/bieber-scale/tools/bieber_scorer.py --file <draft>Read thebiber_scaleper sentence andD1_involved_hits. - Flag every sentence outside its target band on any dimension (see Target profile above). D2 is the genre signature: a body sentence at D2 < +20 fails even when D1 passes. Paragraph averaging is not a defence.
- Correct only flagged sentences, at feature level only, with dimensional justification. Never regenerate the passage.
- Terminate when: all sentences pass; or 3 passes used; or a fix would
alter meaning or the witness's voice - flag
[REGISTER: human decision].
Verification¶
Score with the calibrated scorer:
python .opencode/skills/bieber-scale/tools/bieber_scorer.py --file <draft>
Check per-sentence biber_scale.D2 (must be >= +20 in the body) and D1
(target -260 to -140). Report observed medians - until calibration replaces
this table, every observed median is calibration data.
House Format (witness statement guides/forms)¶
The Typst witness statement guides (guides\guide_*.typ) are rendered in the in-house grey scale report style: cover with top-left GREYSCALE firm logo (#image-grayscale(read("LOGO.png", encoding: none), width: 2.4cm) from @preview/grayness:0.7.0 — never a colour #image(...)), clinical serif, black/grey palette only. LOGO.png must be present in the compilation directory.