A citation can be present and unsupported

K81R stopped rewarding answers merely for linking sources and began checking whether each cited passage actually entitled the adjacent claim.

K81R's answer said Z29C retried delivery three times and cited a passage containing the words “three attempts.”

The passage described an idempotent status query, not delivery attempts.

The citation existed. The source was real. The passage had been present in the model context. A basic citation checker marked the answer grounded.

The link did not support the claim.

I split citation validity from claim support and discovered that most of the difficult evaluation lived in the gap.

A valid reference answered only structural questions

K81R could verify deterministically that:

  • The citation identifier existed.
  • It belonged to the selected evidence-set revision.
  • The source revision existed and was accessible.
  • The cited span fell within the supplied evidence unit.
  • The rendered link opened the exact source location.
  • The answer had not invented or altered the identifier.

These checks mattered. They prevented fabricated sources, broken links, and citations to material the model had not received.

They did not answer whether the passage supported the sentence.

I named the first group citation integrity. Claim support became a separate stage with separate labels and failure records.

The claim needed a bounded shape

Free-form paragraphs made support hard to evaluate. One sentence could contain several claims joined by a conjunction:

Z29C retries idempotent adapters three times and sends uncertain deliveries to manual review.

One passage could support the retry count, another the uncertainty state, and neither the phrase “manual review.” A paragraph-level citation list hid the mismatch.

Generation produced claim objects with one primary proposition and qualifiers:

subject: Z29C adapters with idempotency support
predicate: allow another attempt
condition: after a known failed request
quantity: according to the adapter policy
time: current decision revision

The rendered prose could combine claims stylistically only after each retained its own evidence links. A reviewer could expand the claim structure without reading a machine syntax by default.

Atomic claims made support inspectable without requiring unnaturally short public prose.

Support depended on qualifiers

Topic similarity made the bad citation look reasonable. Both source and claim discussed retries. The source's conditions differed.

I evaluated support across:

  • Entity identity and version.
  • Action or relationship.
  • Negation.
  • Conditions and exceptions.
  • Quantity and units.
  • Time and authority status.
  • Modality: must, may, should, considered, or completed.
  • Scope: one adapter, a class, or all workflows.

A passage supporting “may retry” did not support “retries automatically.” A historical proposal did not support current behavior. A source saying a project considered a feature did not support that it shipped.

Claim verification became a discipline of preserving qualifiers.

Mention was not support

I introduced four evidence relationships:

  • Supports: the passage, under its source context, entitles the claim.
  • Contradicts: the passage provides evidence against it.
  • Contextualizes: it helps interpretation but cannot establish the claim alone.
  • Mentions: it shares entities or vocabulary without bearing on truth.

A fifth label, insufficient, captured cases where the relationship could not be decided from the passage and context.

The retry passage mentioning three status-query attempts was contextual to recovery behavior and did not support three delivery attempts.

These labels improved evaluation reports more than a binary citation-present score.

Support could require several passages

The claim “Z29C does not automatically retry adapter X after a timeout” required at least:

  • The current policy for adapters without idempotency or status lookup.
  • Adapter X's capability contract.
  • The timeout state definition.

No one passage stated the joined conclusion.

I allowed evidence graphs. Claim support linked multiple units with explicit roles such as policy, entity classification, and term definition. Answerability verified that required relationships were present before generation.

The UI displayed the chain instead of placing three undifferentiated citation numbers after a sentence.

Multi-source support made inference visible. It did not pretend the final composition was directly quoted from one source.

Contradictory evidence stayed attached

The archive included a superseded three-retry note. Authority metadata resolved it for current-policy questions, but the contradiction remained historically relevant.

A verified claim could list supporting current evidence and contradictory superseded evidence with the supersession relationship. For two active conflicting sources, verification did not choose silently. The answer became a conflict report or refusal.

This prevented a clean citation list from hiding that the corpus contained competing claims.

Support evaluation asked not only “Can I find a source for this?” but “What available evidence says otherwise, and why does it not govern?”

One document said, “Automatic retry is allowed.” Its enclosing heading was “Rejected alternatives.” A chunk-level verifier saw support. The authored structure contradicted that interpretation.

Claim checks received heading lineage, document status, surrounding paragraph, list or table structure, and relationship metadata. Exact support spans remained visible, but their context envelope informed interpretation.

I added adversarial fixtures where identical sentences appeared under “Current decision,” “Previous behavior,” “Proposal,” and “Do not implement.”

Retrieval structure was therefore part of citation semantics, not merely a way to improve recall.

I tried using a model to classify claim-passage support. It caught obvious mismatches and sometimes accepted topical similarity or missed a subtle negation.

I did not present its result as proof. The verifier returned a label, rationale, cited source spans, model and prompt revision, and uncertainty. Deterministic checks ran first. Consequential claims required human review or a rule encoded outside generation.

The verifier was evaluated on annotated support, contradiction, context, mention, and insufficient cases. Its false-support rate mattered more than aggregate agreement because false support would turn a decorative citation into an assurance.

A model checking another model still needed a product boundary.

Human labels needed evidence too

My own support judgments could be wrong or overbroad. Each annotation recorded the reviewer, date, source revision, claim, label, and brief rationale. Disagreements remained visible.

For hard cases I decomposed the claim further or marked it insufficient rather than forcing consensus. The evaluation set included adjudicated and contested subsets so score changes were not hidden behind uncertain labels.

The personal archive had one primary reviewer, which limited independence. I documented that constraint instead of treating manual annotation as unquestionable ground truth.

Review improved accountability without becoming infallibility.

Amounts, counts, durations, percentages, and versions were common sources of subtle citation error.

Where structure allowed, ingestion extracted typed values with units and source spans. Claim objects represented the value and unit. A deterministic checker compared them before semantic support review.

The system distinguished:

  • Three attempts versus three retries.
  • Nine minutes of availability impact versus six hours of investigation.
  • Version 2 of a contract versus revision 2 of a document.
  • A maximum versus an observed value.

Typed comparison caught mismatches that shared all surrounding vocabulary.

Extraction errors remained possible, so the rendered source stayed authoritative.

Temporal claims needed currentness rules

Z29C uses” implied current behavior. “Z29C used in the first prototype” implied history. The same source could support one and contradict the other.

Claim metadata included temporal intent. Support checking used document effective status, source date, supersession relationships, and project phase. A current-tense claim needed current authority or an explicit inference from current implementation evidence.

I avoided a generic recency heuristic. An older incident record remained authoritative for what happened then. A newer retrospective could explain it but not replace the event evidence.

Time became a relationship between claim and source, not a ranking boost.

K81R has no automatic retry” could not be supported by a passage merely failing to mention retry. Absence from one document was not evidence of absence from the system.

Negative claims required a source intended to define the complete capability or a bounded scope:

  • The current adapter contract explicitly forbids retry.
  • The command registry contains no handler under a pinned release manifest.
  • The reviewed corpus contains no current decision authorizing retry.

The wording reflected the evidence boundary. “No current decision in corpus revision 31 authorizes automatic retry” was supportable; “automatic retry is impossible everywhere” was not.

Useful precision often made the claim narrower.

A function body could show a retry loop and still be unused, test-only, or behind an inactive feature.

Code evidence carried repository revision, path, symbol, build role, and where available, registration or call relationships. A code passage supported “this function contains three attempts.” It did not alone support “the running workflow uses three attempts.”

Release manifests and workflow registries supplied the additional evidence for deployed behavior in the personal lab environment. Tests demonstrated scenarios but did not prove every runtime path.

The citation UI labelled code, test, decision, and observed evidence distinctly.

Link placement affected interpretation

A citation at the end of a long paragraph appeared to support every sentence. I placed evidence links beside the claim unit and rendered grouped prose without losing that association.

On narrow screens and with assistive technology, claim and sources remained adjacent in reading order. Citation numbers had accessible labels naming source and relationship. Opening evidence preserved return focus and the claim context.

Unsupported or review-required claims used visible state, not color alone. A link was never styled as validated merely because it existed.

Citation design participated in epistemic accuracy.

I wrote cases where:

  • A real source discussed the topic but not the claim.
  • A source supported only half a compound sentence.
  • A newer source superseded the cited one.
  • A table value used different units.
  • A heading reversed the apparent sentence meaning.
  • A restricted source supplied the fact while a public neighbor received the citation.
  • Several sources collectively supported a claim but none alone did.

Metrics reported citation integrity, support precision, contradiction detection, coverage, and useful insufficiency. A high citation rate without support precision was a failure.

The original retry answer became the first laundering fixture: a genuine passage made an invented policy look sourced.

For a draft brainstorming task, K81R could retain an inference if it was clearly labelled and not presented as corpus fact. For a reference answer, unsupported factual claims were removed or caused refusal.

The task contract determined allowed claim types:

  • Direct source summary.
  • Multi-source synthesis.
  • Explicit inference.
  • Proposal or hypothesis.
  • General background outside the corpus.

The interface separated them. An inference listed its premises and review state. General background could not borrow citations from archive evidence.

This preserved creative usefulness without laundering speculation into documentation.

Verification results were versioned

Changing a verifier model, prompt, deterministic rule, or source parser could change support labels.

Each result recorded verifier configuration, evidence-set revision, claim revision, source revision, and time. Rerunning produced a new result. A previously accepted document did not silently acquire a different status.

Evaluation compared verifier generations before activation. Existing answer records showed the checks performed at their acceptance time and whether a newer review was available.

Provenance applied to the verification system too.

When a reviewer marked a citation unsupported, the correction linked the claim, source, rationale, and missing evidence. It did not immediately retrain or alter ranking.

I reviewed corrections for recurring categories and added representative cases to the regression set. Product changes could target parsing, retrieval, answerability, prompt structure, or interface depending on the failure.

The original answer remained immutable. A corrected answer used a new evidence and answer revision.

Fixing one paragraph became an opportunity to improve the stage that had permitted it.

The final K81R page distinguished:

  • Citation is valid and source is inspectable.
  • Passage supports the claim.
  • Support requires several linked sources.
  • Contradictory evidence exists but is superseded or out of scope.
  • Claim is an explicit inference.
  • Claim lacks adequate support.

Most readers did not need every diagnostic by default. The state and direct evidence path remained available.

The first prototype had treated a citation as an ornament proving the answer had sources. The redesigned system treated it as one edge in a claim-evidence graph whose meaning still needed evaluation.

A citation can be present and unsupported. Trust begins after the link works.

Evidence must still meet the claim.

Support is the harder promise.

Only then can the source, claim, qualifiers, authority, and review actually meet.

Summaries inherited every source boundary

Summarizing a document sounded simpler than answering across documents. It still created support problems when the summary generalized an example, omitted a warning, or turned a proposal into an adopted decision.

I treated each summary sentence as a claim against one source revision. Coverage checks identified high-consequence sections—decision, limitations, exceptions, and status—that should not disappear simply because other paragraphs dominated token count. The summary could be intentionally selective only when its task said so.

A citation to the whole document did not excuse a sentence that reversed one section. Single-source generation still needed claim support.

Quoted text was never reconstructed from model output. The generator selected an allowed source span; the application rendered the exact characters from the immutable source revision and enforced excerpt limits.

Normalization for search did not change quoted punctuation or whitespace silently. Ellipses and bracketed clarifications were explicit transformations with their own display. A quote could not span unrelated source nodes merely because the generated sentence joined them.

This removed one high-confidence failure mode: quotation marks around a fluent paraphrase.

A source saying “the renderer may retry after a known local failure” became “workers may retry failures.” The paraphrase dropped component and failure-type constraints while preserving the general idea.

Support evaluation compared entity, modality, and condition between source and claim. A broader paraphrase required additional evidence or narrower wording. The UI could show the source beside the generated sentence during review and highlight lost qualifiers.

Good prose often compresses. The system needed to distinguish compression from expansion.

Evidence quality was not source popularity

Several retrospective posts repeated the same retry lesson. A naive verifier counted three supporting sources and considered the claim strong. All three derived from the same Z29C decision.

K81R tracked derived-from, quotes, and implements relationships. The claim view could show three attestations and one underlying authority rather than presenting independence. A primary decision and an execution receipt played different evidentiary roles.

Source count never became confidence. Lineage explained whether multiple passages added independent support or repeated one origin.

Two adjacent claims could each have support while the sentence connecting them did not.

Search lagged. Therefore the delivery was duplicated.

One source established lag and another duplication. Neither established causation. I represented causal, comparative, and temporal links as claims too. The generator could not hide them in connective language.

Evaluation included because, therefore, despite, after, and more than traps. These small words often carried the most consequential unsupported inference.

The cited source view initially opened the current document revision even when the answer referenced an older one. The highlighted sentence looked similar and could differ in its exception.

Citation URLs and loaders included immutable revision identity. If access allowed, the page showed that exact revision, its status, and a link to the current one. Missing historical content produced an explicit unavailable-source state rather than redirecting silently.

Support is evaluated against the cited revision. The interface had to preserve that same object.

Claim acceptance recorded scope

A reviewer could accept a claim for one draft without declaring it universally verified. Acceptance stored answer revision, task, evidence set, support review, intended destination, and any expiry or source-freshness condition.

If the claim entered a maintained K81R note, that document became a new source revision with its own authority. It did not inherit eternal truth from the answer record.

This kept review decisions bounded and prevented one green check from becoming reusable evidence without context.