Skip to content

Personal mode silently resolves contradictory sources by overwrite — preserve both claims as contested #380

Description

@0xquinto

Problem

In local-wiki (personal) mode, when two credible sources make incompatible claims about the same fact, the synthesis guidance currently resolves the conflict by overwrite:

  • The update discipline says to update entries in place ("Prefer replacing one stale sentence over adding new paragraphs"; "Update existing theme, open-question, and commitment entries instead of repeating the same detail on multiple source pages").
  • The only contradiction-aware mechanism is /open-questions.md, where "contradictory evidence" is a listed trigger — but that records that a question exists, not what the competing claims are. The canonical page keeps exactly one version of the fact, and nothing says which claim survives, so in practice the most recently ingested source wins.

The existing "prefer current source evidence" rule is the right arbiter when docs conflict with code or git history — including personal mode's configured local repositories, where code is ground truth. But personal-mode knowledge sources are also people, posts, and documents that legitimately disagree with each other, and for those source-vs-source conflicts there is no arbiter: silent overwrite makes the wiki assert a disputed claim as source-backed and discards the losing claim's provenance entirely.

Example: a project contributor's post says a rewrite took 6 days; the company's launch post says eleven. Both are first-party, both have incentives, neither is authoritative over the other, and neither is stale. Today the wiki keeps whichever was ingested last.

Proposal

Extend the local-wiki synthesis discipline (localWikiSynthesisInstruction in src/agent/prompt.ts):

  1. A fifth confidence label, contested: incompatible claims from credible sources that current evidence does not settle.
  2. A "Contested knowledge discipline" block: when no ground truth settles the conflict and neither source is clearly stale, record both claims — each with source and date — in a ## Contested section on the canonical page, and label the disputed fact contested wherever it appears (including /themes.md Confidence cells). Never present either claim as confirmed/source-backed while the conflict is open.
  3. Interaction with /open-questions.md: the Contested entry is the record of the conflict; an open question is added only when the conflict would impair future assistance, and links to the Contested entry instead of restating it. The existing "contradictory evidence" trigger is amended to point here, so the prompt gives one route, not two.
  4. Resolution rule: only on new evidence or a shown-stale source, never recency alone — and the entry collapses to a one-line record (resolution date, deciding evidence, superseded claim + source) so the losing claim's provenance survives resolution too.

Scope: local-wiki mode only (localWikiSynthesisInstruction is empty in repository mode). Docs-vs-code conflicts keep resolving by current source evidence in both modes, unchanged.

Cost: the block adds roughly 300 tokens (~4%) to the local-wiki system prompt. Happy to compress further if that's a concern.

We run this convention ("Contested sections: both claims, sources, dates — never a silent overwrite") in a private agent-maintained knowledge vault of ~400 pages across 13 wikis; it has repeatedly saved us from confidently-wrong pages when sources disagreed (the 6-vs-11-days example is a real case from our vault).

I have a tightly-scoped PR ready (prompt guidance + tests, format/lint/test green) and will open it if this direction sounds right.

Drafted with an AI agent; reviewed and submitted by me.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions