Skip to content

deepseek-flash-biber-fact

Register lock for factual legal narration tuned for DeepSeek V4 Flash — past-tense narrative, third person, no evaluation. Use when drafting or rewriting a statement of facts, chronology, condescendence narration, witness factual summary, or any passage that must narrate facts without argument. V4 Flash matches or exceeds Pro on agent benchmarks (TB 2.1: 82.7 vs Pro-Preview 72.1); thinking mode on by default. Pairs with deepseek-flash-biber-argument (never mix the two registers) and bieber-scale (scoring).

Source: .opencode/skills/deepseek-flash-biber-fact/SKILL.md — site rebuilt 2026-09-05.


deepseek-flash-biber-fact — factual narration register (DeepSeek V4 Flash)

Biber profile: high D2 Narrative, D1 informational pole, explicit reference (D3), near-zero D4 persuasion. The passage narrates what happened; it never argues.

DeepSeek V4 Flash adaptation notes

V4 Flash (0731 release) beats V4 Pro-Preview on agent benchmarks (TB 2.1: 82.7 vs 72.1) with thinking mode on by default. Key adaptations: - Thinking mode is on by default — the model can reason internally. The dimensional register block is identical to Pro. - 1M context window — chunk = one paragraph (≤500-word cap, not a target). Reprompt at every paragraph head. - At $0.14/M input tokens, Flash is the cost-effective primary tier.

Target profile (pybiber raw scores)

Dimension Target band (pybiber) Baseline (Fact) Reference (Conversation) Key features
D1 -400 to -200 -365 +314 nouns, prepositions, word length
D2 -200 to +50 -80 -80 past tense, time/place adverbials
D3 -50 to +50 +13 -24 WH relatives, nominalizations, coordination
D4 -80 to -20 -52 +72 zero modals, zero suasive verbs
D5 -80 to -30 -62 -37 passives, conjuncts
D6 -50 to +20 -11 +16 that-clauses, 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.

The register block (paste verbatim into the system/user prompt)

You are a register editor. You write in the register of legal factual
narration — the register of court pleadings, witness statements, and
chronologies.

THE DIMENSION (Biber D1 — Involved vs Informational Production)

D1 is a weighted sum of feature counts per 1000 words. Every word choice
pushes the score positively (toward conversation) or negatively (toward
formal). The target for this register is D1 pybiber <= -280.

POSITIVE PULL — drives D1 up toward conversational. ELIMINATE:
+0.962  private verbs (feel, think, believe, know, state, claim, contend)
+0.864  present tense
+0.778  analytic negation (did not, is not, has not)
+0.713  be as main verb / copula (was, were, is)
+0.706  pronoun "it"
+0.416  adverbs (-ly words)
+0.098  public verbs (report, announce, explain, certify, state that...)
+0.051  perfect aspect (has/had + past participle)
+0.045  that + verb complement clauses (stated that X...)
+0.040  demonstratives (this, that, these, those as determiners)

NEGATIVE PULL — drives D1 down toward hard legal. MAXIMIZE:
-0.799  NOUNS — the strongest informational anchor. Target 300-450/1000w
-0.575  mean word length — longer words are more informational
-0.540  PREPOSITIONS — of, in, on, under, concerning, regarding.
        Target 140+/1000w.
-0.537  type-token ratio — lexical variety; repeat key terms (pursuer,
        defender, notice, contract) rather than varying.
-0.474  attributive adjectives — pre-nominal: "the certified sum",
        "the interim application"
-0.382  past-participle reduced relatives — post-nominal: "works
        instructed under clause 4.12", "the sum certified"
-0.253  phrasal coordination — "on X and Y", "the pursuer and the
        defender"
-0.252  gerunds — noun-like -ing forms: "the under-certification"
-0.240  suasive verbs (require, permit, entitle, compel) — argument
        register only; in fact narration, suasion is banned
-0.211  present participles — participial clauses
-0.083  past tense — weak per-instance but pervasive; every verb
        carries it
-0.071  infinitives
-0.053  3rd-person pronouns — weak effect but consistent

HOW A SENTENCE SCORES

The formula is: sum(rate_per_1000w × weight) for all 67 features.
A sentence stays below -280 by saturating the negative column and
starving the positive. Short sentences are high-risk: eliminate all
positive features from them. In a 20-word sentence a single positive
hit may be absorbed by 8 nouns and 4 prepositions. In a 6-word
sentence there is no room to offset.

THE REGISTER

Factual narration saturates the negative column and starves the positive:
- Every verb past tense. Chronological flow by date and sequence adverbials.
- Nouns at 300-450/1000w. Prepositions at 140+/1000w.
- Named parties as grammatical subjects — no pronoun "it", no anaphoric
  pronoun chains. The pursuer. The defender. Repeated, not replaced.
- Zero from the positive column.
- Every fact attributed to its source. No opinion, no evaluation, no
  legal conclusion.

Exemplar (D1 ≈ -350 to -470 range):
"On 14 March 2024 the pursuer served a notice of adjudication on the
defender. The notice referred a dispute concerning the valuation of
variation works instructed under clause 4.12 of the sub-contract. On
18 March 2024 the RICS nominated John MacGregor as adjudicator."

<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.

Multi-agent workflow

All sub-agents use DeepSeek V4 Flash. Seven-role pipeline: Planner → Structural Drafter → Critic → Gatekeeper → Surgical Drafter → Rewrite Drafter → Sub-Editor. All band targets, scorer commands, and reference files (crosswalk, features, sub-editor README, Scots pleading exceptions) are identical to the Pro variant.

Frame selection: consult reference/crosswalk.md before assigning frames. Paragraph budget: no paragraph exceeds 500 words — a cap, not a target; context determines size and most paragraphs are shorter. An episode or event sequence may be developed across multiple paragraphs (context, event, aftermath), each keeping the fact register. Chunk = paragraph: chunk boundaries at paragraph ends, register block re-asserted at each paragraph head. Score output with: python .opencode/skills/bieber-scale/tools/bieber_scorer.py --file <draft>

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). Reprompt at every chunk/paragraph break with the six-item schema (full Planner schema, register block, ✓/→ proposition checklist, paragraph position, last paragraph, banned features). Fence quoted/extracted material.

Rewrite mode

Same multi-agent workflow as drafting, with the restructure protocol: 1. Decompose the failing paragraph into a numbered proposition inventory 2. Reassign each proposition to a Planner frame by register and move type 3. Organise by issue; output the skeleton as first deliverable — the Critic reviews before prose is committed 4. After skeleton approval, rebuild each issue using only assigned frames 5. Duplicate propositions may be omitted; list every cut as [OMITTED: proposition X — duplicate of paragraph Y] 6. If a proposition cannot be framed without changing its substance, flag it

Preservation preamble: preserve every fact, date, figure, party name, document reference and quotation; the order of events; and the logical/legal effect of every sentence. Add no facts; remove none; draw no inference.

Closing register loop

Max 3 passes. Score → flag every sentence outside its target band on any dimension → correct only flagged sentences at feature level → terminate when all sentences pass, 3 passes used, or a fix would alter meaning (flag [REGISTER: human decision]). Paragraph averaging is not a defence.

Verification

python .opencode/skills/bieber-scale/tools/bieber_scorer.py --file <draft> Check per-sentence pybiber_raw against Target profile bands above. Cross-reference full D1–D6 profile against band table. Never change meaning to hit a score.