Peregrine · Content Audit

Question-Bank Audit

July 20, 2026 · All three shipped banks + pipeline mirrors · Deterministic checker + 22 parallel audit agents, every critical claim hand-verified

439items audited (3 banks)
0wrong answer keys — every item solved independently
20items fixed (13 rendering breaks · 6 ambiguous keys · 1 whitespace)
~99fidelity findings documented, deferred for product call
Your reported bug was real and systemic. Thirteen wager items carried the exact NOUN + BLANK duplication class you spotted — the passage kept the anchor word (or a trailing phrase) that every choice also supplies. All are fixed and the content lint tests are green.

What was fixed

Fixed · Word duplicated before the blank — 9 wager items

…the conductor asked the string section to play _____ the tremolo passage…
choices: play, · play; · play ✓ · play:

grammarboundary-punctintrusive-002/003/004, grammarboundary-splice-001…006. The duplicated word was deleted from each passage; every keyed rendering re-verified.

Fixed · Phrase duplicated after the blank — 4 comparison items

…wingspan is considerably greater than _____ nearly every other seabird, letting the bird lock its joints…
keyed choice: that of nearly every other seabird

grammar-boundary-w-comparison-001…004. Single-word checks miss this variant — the agent layer caught it.

Fixed · Ambiguous keys — 6 items where two answers were defensible

ItemProblemSurgical fix
genq-001“a guide who speaks ______ preferred language” — his or her was grammatical via antecedent a guidePassage recast (“tours conducted in ______”) so only visitors can be the antecedent; designed trap preserved
genq-009“Among the artifacts … ______ a brass compass whose needle still swings” — is as defensible as keyed wasPast-time anchor added (“When divers catalogued the wreck … last spring … still swung”)
…verb-tense-004bears (enduring-property present) defensible beside keyed borebearsbearing (unambiguously wrong)
…true-but-wrong-004Distractor B restated the passage verbatim under a loose inference stemStem narrowed to the outcome of the resistance; choices recast as “It …” sentences
…detail-truewrong-002Two distractors (bright sign, jar pyramid) also supported “attract attention”Stem narrowed to “actively engages families as they pass”
W-reading-004Distractor D was directly established by the passageReplaced with an unsupported claim (jars made by local potters)

Plus one practice item whose four answerOptions carried trailing spaces (doubled-space render) — trimmed.

Documented, deliberately deferred

Plain statement of what's deferred: a real fidelity gap in stem style, untouched because it means rewriting ~100 stems, the lineup cons' reasoning text is coupled to current wording, underlining needs a data-format decision, and house-voice vs. verbatim-SAT phrasing is your call.

Full item-by-item detail: docs/reviews/2026-07-20-question-bank-audit.md

What to test

Decision needed

(a) Accept current stem voice as Peregrine house style and close the backlog · (b) commission a stem-modernization pass (mechanical “passage→text” scripted; incomplete-sentence stems agent-rewritten with lineup reasoning updated in lockstep) · (c) modernize only new content via the generator prompts.

Changes are uncommitted: 5 JSON files, 61 lines (bundled banks + pipeline mirrors). Note: six Swift files in the checkout were modified by a concurrent session — use path-scoped staging when committing.