DR-132 — Reference items are evidence, not records: no admission gate, and they do not enter form matching
DR-132 — Reference items are evidence, not records: no admission gate, and they do not enter form matching
Section titled “DR-132 — Reference items are evidence, not records: no admission gate, and they do not enter form matching”Context
Section titled “Context”Two questions arrived together in S538 and turn out to have one answer.
First, corpus-reframe-review.html R2 rules that the authoritative gate is knowledge
admission — “Authority is earned at sign-off, not inherited from a folder” — and R2
outranks the spec chain under DR-104. But reference_items has no publication_status
and no promotion step; its only lifecycle column is superseded_by. Either the table is
missing a gate, or R2 does not reach it.
Second, question_match_recompute sources only q_a_pairs (INNER JOIN
record_embeddings on owner_kind='q_a_pair'), while the older
search_for_form_response searched q_a_pairs + reference_items. A ratified spec
line appeared to settle it — specs/id-131-okf-l-records-refactor/PRODUCT.md §I,
BI-29 (RATIFIED 28/06/2026, D2): “Forms matching is re-pointed off content_items
onto typed records: q_a_pairs (primary) + reference_items (optional).” A design pass
therefore proposed a question_matches polymorphic migration to add the missing arm,
citing the unreachable reference_item legs already built into the drafting path
(fetchMatchedContentForDrafting queries reference_items on every draft with ids that
are NOT NULL FK’d to q_a_pairs; draft-stream has a cited_kind: 'reference_item'
branch that can never fire) as evidence of unfinished wiring.
The owner ruled otherwise, and named BI-29’s parenthetical as a clause they did not want and do not know how it entered context. An earlier same-session statement apparently endorsing the reference_items arm was confirmed as a transcription error.
Decision
Section titled “Decision”A reference item is external evidence, not an admitted record. It is citable and attributable, never authoritative on its own. Two consequences:
- No knowledge-admission gate. R2’s sign-off gate governs records — the things
that carry authority.
superseded_byis the whole of a reference item’s lifecycle, and that is correct rather than incomplete. Nothing is missing from the table. - Reference items are not a form-matching corpus. Form matching draws on
q_a_pairsonly.question_match_recomputebeing q_a_pair-only was correct;search_for_form_responsesearching both was the defect, not the fix. BI-29’sreference_items (optional)clause is retired as unwanted, and the unreachable reference_item legs in the drafting path are deleted rather than wired.
Alternatives considered
Section titled “Alternatives considered”- Add the reference_item arm (a
question_matchespolymorphic migration on thecitationsidiom, plusrank_score, plus a stats-RPC rewrite). Rejected by the owner: it builds on a spec clause they never wanted, and it puts external references into a surface that answers on the organisation’s behalf. - Give
reference_itemsapublication_status/ promotion step so R2’s gate applies uniformly. Rejected: it invents an admission ceremony for something whose defining property is that it came from outside and was never authored here. DR-125 also bindsscope_tagto promotion, so a reference item has nothing to attach it to. - Treat the unreachable code as evidence of intent. Rejected — this is the DR-123
trap: built-but-unreachable legs record what someone once planned, never that it was
correct. The codebase’s own discriminator points the other way: when
{131.20}ruled an arm out it deleted it (find_related_items,filter_by_keywords— “DROPPED ENTIRELY”), so an un-deleted arm is not a positive signal.
Evidence basis — read before citing this
Section titled “Evidence basis — read before citing this”This ruling rests on owner recollection, not measurement. No probe was run to test
whether reference items behave as evidence or as records, and no supersession check was
made against BI-29 — a ratified decision — before overturning it. The measured facts on
the record actually point the other way: fetchMatchedContentForDrafting queries
reference_items on every draft, and draft-stream carries a fully-built
cited_kind: 'reference_item' branch. Both are unreachable, and this decision rules them
residue rather than unfinished wiring — on the owner’s authority over their own product,
which is legitimate grounds, but is not the same as evidence.
The trigger was also a transcription artefact: an earlier same-session statement appearing to endorse the reference_items arm originated as the Coordinator’s own framing, echoed back and then validated by a sub-agent as if it were an independent owner claim. That loop closed without an external check at any hop.
So: honour this ruling, and re-open it cheaply if measurement later contradicts it. It is the weakest-evidenced decision in the register at the time of writing, and it is recorded that way deliberately.
Consequences
Section titled “Consequences”- No migration.
question_matcheskeeps itsq_a_pair_id NOT NULLshape. search_for_form_responseretires (zero TS callers) rather than becoming the model.- The drafting path loses its reference_item legs: the
reference_itemsquery infetchMatchedContentForDraftingand draft-stream’scited_kind: 'reference_item'citation branch. Thecitationsenum keepsreference_item— citations from other surfaces are unaffected. - A ratified spec now carries a clause its owner disowns.
id-131 PRODUCT §IBI-29 should be annotated where it sits, so the next reader does not re-derive the arm from it. This is the second S538 instance of a ratified-looking artefact asserting something never ratified, and it sharpens DR-123: a ratified spec is evidence that someone wrote it down, not that the owner agreed to every clause in it. reference/entity-glossary.mdgains the evidence-vs-record distinction so the question stops being re-derived — it was UNDECIDABLE to two independent lanes this session.