# Fact-Reviewer Fasit Fixture

The Del 4 production round (Security Champions, Maskinrommet, 2026-05-29) as the
gold standard for the `fact-reviewer` agent. The in-session `fact-checker`
(Step 5) ran on a still-moving draft. A **late Security Champions pivot** — a new
argument anchor — arrived **after** that Step 5 sweep, so the pivot's premise was
**never fact-checked**. The pivot then went through the in-session persona sweep
(Step 6) and reached the frozen, publish-ready version with an unverified premise
intact. KTG's cold re-reading caught a misattribution, a quote-precision error, a
postulated number with no provenance, a "settled standard" that actually varies,
and a secondary source trusted for a precise figure — six points in all. Those six
points are the fasit below: a correct `fact-reviewer` run on the frozen/pivoted Del
4 should surface **comparable verdicts**, mapped to the four checks with consistent
risk verdicts and the pivot-risk flag.

This file is a *fasit*, not a test harness. The structural lint lives in
`agents/__tests__/fact-reviewer-fixture.test.mjs`. Whether the agent's live
verdicts actually reproduce these is `[GATE]`/`[OPERATØR]` — it is **not**
self-certified here.

> **The jury judges; the writer writes.** Every expected output below is
> **direction, not rewritten copy.** A correct agent run hands back a verdict + a
> source (or "none found") + a fix-as-direction (source it / hedge it / cut it) —
> **never** edited prose.

> **Why this gate exists.** Fact-checking was **post-hoc relative to the pivot** in
> Del 4: the in-session Step 5 sweep ran *before* the Security Champions pivot was
> added, so the pivot premise never met it. A **cold re-verification on the
> frozen/pivoted version** closes that gap — it re-checks every claim with equal
> suspicion, with no knowledge of which passages were pivot-fresh, and so catches
> exactly the premise Step 5 missed.

---

## The axis and the four checks (the agent judges on exactly these)

The single axis is **faktisk-korrekthet** — factual correctness, re-verified COLD
on the frozen/pivoted version. It is checked through four lenses:

- **F1 — Verifiserbare påstander** (verifiable claims): every checkable assertion
  (numbers, dates, named examples, attributions, causal claims) searched against
  primary/credible sources; opinions and predictions skipped.
- **F2 — Sitat-presisjon** (quote precision): any quotation must match the source
  verbatim — wording, attribution, and who said it. «Vi» vs «Vi i Nav» is a
  precision failure even when the gist is right.
- **F3 — Tall-attribusjon** (number attribution): every figure must trace to a
  named source; a postulated number with no provenance is 🟡/🔴. Here provenance is
  VERIFIED (distinct from `editorial-reviewer`'s P3, which only flags the absence
  of a source/hedge without searching).
- **F4 — Kilde-kvalitet** (source quality): primary over secondary; a source
  supporting "around a third" does not verify "exactly 37 %"; post-cutoff claims
  must be web-searched.

## Context isolation — cold reader (the agent's cardinal rule)

The agent runs in a **cold context**: its only input is this prompt, the frozen
draft, and the writing contract. Any pivot narrative, changelog, omission list, or
"what the author intended" is **context pollution** — the agent states it is
ignoring it and judges only the text. That independence (no main-session
**framing-bias**) is the whole reason a defect that survived the in-session gates
can still be caught here.

**Pivot-premise risk (the design feature).** Because the agent does **not** know
which passages were added in a late pivot, it re-checks **every** claim with equal
suspicion — a claim's age in the draft buys it no trust. A claim that looks freshly
bolted on (new anchor, new section topic, a 2025/2026 figure) is surfaced in a
**pivot-risk** subsection. A pivot-risk claim that fails verification is the
headline catch: the pivot premise that never met Step 5.

## Risk sort and gate (every claim carries exactly one verdict)

- 🔴 **høy risiko** (high risk) → **BLOCK** — contradicted by evidence, or a precise
  claim with no usable source.
- 🟡 **uverifisert** (unverified) → **REWORK** — cannot be confirmed / weak sources;
  asserted as fact must be hedged, sourced, or cut.
- 🟢 **verifisert** (verified) → keep — confirmed by a primary/credible source
  matching the claim.

The agent recommends PASS / REWORK / BLOCK; the operator (`[OPERATØR]`) holds the
gate. Each case block below carries exactly one verdict emoji in its **Verdict**
field; the surrounding prose deliberately avoids the emoji so the structural lint
can read a single unambiguous verdict per case.

---

## The six Del 4 worked cases (fasit)

Each case states the point, the check it belongs to (F1–F4), the verdict, whether
it is a pivot-risk claim, and the direction a correct cold run returns.

### Case 1 — pivot-premissen aldri faktasjekket (pivot premise never met Step 5) — PIVOT-RISK

- **Check:** F1 (verifiable claim — the pivot's anchor assertion) · **Verdict:** 🔴
- **Pivot-risk:** YES — this is the late Security Champions pivot, added *after* the
  Step 5 fact-check; its premise was never verified in-session.
- **Fasit / direction:** The Security Champions pivot rests on a premise asserted as
  established fact, but no primary source confirms it as stated. Because the pivot
  arrived after Step 5, the in-session sweep never touched it. The cold re-check
  — applying equal suspicion to a claim it does not know is pivot-fresh — searches
  primary sources, finds none that confirm the premise as worded, and returns high
  risk. **This is the exact catch the gate exists for:** the cold pass on the frozen
  version surfaces the pivot premise that Step 5 missed. Direction: source the
  premise to a primary record or recast it as a hedged hypothesis; do not assert.
  The agent returns the verdict + "none found", not a rewritten premise.

### Case 2 — feilattribusjon (misattribution) — editor caught on cold read

- **Check:** F1 (attribution) + F2 (who said it) · **Verdict:** 🔴
- **Pivot-risk:** no.
- **Fasit / direction:** A statement is attributed to the wrong source/originator —
  the named party is not who said or published it. Contradicted by the primary
  record, so high risk (a contradicted claim is 🔴 regardless of partial score).
  Direction: correct the attribution to the verified originator, or cut the
  attribution; the agent names the contradicting source, never invents one.

### Case 3 — sitat-presisjon «Vi» vs «Vi i Nav» (quote precision) — editor caught

- **Check:** F2 (quote precision) · **Verdict:** 🟡
- **Pivot-risk:** no.
- **Fasit / direction:** A quotation's gist is right but the wording/attribution is
  not verbatim: the source said «Vi i Nav», the draft renders «Vi». Changing who the
  «vi» refers to is a precision failure even though the meaning is close. The source
  exists, so this is unverified-as-worded rather than contradicted. Direction: match
  the source verbatim — restore «Vi i Nav» — or mark it as a paraphrase, not a
  quote. The agent flags the precision gap; it does not supply the corrected line.

### Case 4 — postulert tall uten proveniens (postulated number, no provenance)

- **Check:** F3 (number attribution) · **Verdict:** 🟡
- **Pivot-risk:** plausible — a figure of this kind often arrives with a late anchor;
  surface it in the pivot-risk subsection if it reads freshly bolted on.
- **Fasit / direction:** A specific figure is stated as fact with **no named
  source**. Distinct from `editorial-reviewer`'s P3, which would only flag the
  *absence* of a source/hedge: here the agent **searches for the provenance**, finds
  none that supports the exact figure, and returns unverified. Direction: trace it to
  a named source or hedge it ("anslagsvis"); else cut. The agent never invents a
  provenance to promote it to verified.

### Case 5 — «Security Champions» som settet standard (a settled standard that varies)

- **Check:** F1 (claim) + source-scope · **Verdict:** 🔴
- **Pivot-risk:** YES — part of the same Security Champions pivot.
- **Fasit / direction:** The "Security Champions" practice is presented as a settled,
  universal standard, but in reality it is a practice that **varies per
  organization** — implementations, scope, and definitions differ. A local
  convention dressed as a universal standard is a source-scope failure; asserting it
  as settled with no source that supports the universal framing is high risk.
  Direction: scope the claim to where it actually holds ("varies; in some orgs…") or
  source the universal framing to a standard that does establish it. The agent flags
  the over-broad scope; it does not rewrite the passage.

### Case 6 — sekundærkilde brukt for et presist tall (secondary source for a precise figure)

- **Check:** F4 (source quality) + F3 (number) · **Verdict:** 🟡
- **Pivot-risk:** no.
- **Fasit / direction:** A precise figure is backed only by a **secondary source**
  that summarizes the number — the primary record supports a *directional* claim
  ("around a third"), not the precise figure ("37 %") the draft asserts. A source
  supporting "around a third" does not verify "exactly 37 %". Direction: trace to the
  primary source and confirm the exact figure, soften the draft to the directional
  claim the secondary source actually supports, or hedge. The agent records the
  secondary source found and the precision gap, not a corrected number.

---

## Expected aggregate (what a correct cold run looks like)

- **Total verdicts surfaced:** 6 (within a reasonable verification-log cap; no 🔴
  silently dropped).
- **By check:** F1 = 3 (Cases 1, 2, 5) · F2 = 2 (Cases 2, 3) · F3 = 2 (Cases 4, 6) ·
  F4 = 1 (Case 6). (Cases overlap checks; the headline check is listed first.)
- **By risk verdict:** 🔴 høy risiko = 3 (Cases 1, 2, 5 → BLOCK) · 🟡 uverifisert = 3
  (Cases 3, 4, 6 → REWORK) · 🟢 verifisert = 0 among the flagged points (the rest of
  the draft's claims verify clean and are not listed here).
- **Pivot-risk:** Cases 1 and 5 are the Security Champions pivot; Case 4 is a
  plausible pivot-risk. **Case 1 is the headline catch** — the pivot premise that
  was never fact-checked in-session, caught only because the cold pass re-checks
  every claim with equal suspicion.

A run that reproduces ~these six verdicts, on ~these checks, with ~these risk
levels — and that surfaces the Security Champions pivot premise as a pivot-risk 🔴
— is **comparable** to KTG's actual cold re-reading. Exact wording is the editor's;
the agent returns **direction, not rewritten copy**.

## Calibration boundary

Whether the agent's live verdicts truly match this fasit is judged by the operator
(`[OPERATØR]`), not self-certified here. This fixture is the calibration target, the
same way `fact-checker-cases.md`, `editorial-reviewer-cases.md`, and
`persona-reviewer-cases.md` are fasits for their agents.

> **Live-run note.** A live cold run on the frozen Del 4 requires (a) a Claude Code
> session reload — a freshly added agent is not invokable until the plugin agent set
> is rebuilt at session start — and (b) the agent run in a genuinely cold context
> (no drafting-session history, no pivot narrative) with read access to the frozen
> draft and web search. Until both hold, this fixture is the gold-standard of record.
