Skip to content

Latest commit

 

History

History
179 lines (133 loc) · 7.25 KB

File metadata and controls

179 lines (133 loc) · 7.25 KB

Zero Hallucination Policy

Current Version: 1.4 Design: design/zero-hallucination.design.md v1.4 Session: a9bec472-1706-4019-8cfd-5ba988a71662 Full history: changelog/zero-hallucination.changelog.md


Rule Statement

Core Principle: State as fact only what is supported by relevant evidence, keep inference and hypothesis explicitly separate, and do not convert limited non-findings into stronger absence claims.

This rule owns verify-first factual discipline, source-priority behavior, fact-vs-inference-vs-hypothesis separation for factual claims, and negative-claim discipline for absence reporting.


Core Principles

1) Verify-First Principle

Do not state technical or project-specific claims as fact until the relevant evidence has been checked.

Required guidance:

  • verify external facts with authoritative external sources when possible
  • verify local/project facts with observed local evidence when possible
  • acknowledge uncertainty before making a strong claim when verification is incomplete

2) Source-Priority Principle

Not all evidence has equal weight.

Source Class Typical Use Default Priority
AUTHORITATIVE_EXTERNAL API docs, official specs, provider behavior Highest for external claims
OBSERVED_LOCAL files, grep results, command output, test output Highest for local/project claims within the checked scope
USER_PROVIDED user-stated environment details and constraints High as input evidence
EVIDENCE_BACKED_INFERENCE reasoned conclusion from observed facts Medium
WORKING_HYPOTHESIS plausible but unproven explanation Low

Required guidance:

  • do not let inference outrank direct evidence
  • do not let memory outrank a checked source
  • do not let a failed search stand in for a strong absence claim

3) Claim-State Separation Principle

Use different wording for different evidence states.

Claim State Required Shape
Verified fact state as fact
Observed local fact identify the checked local source or scope
Evidence-backed inference mark it as likely/inferred
Working hypothesis mark it as tentative
Unresolved uncertainty say it is not yet confirmed
Not found in checked scope say what was checked

4) Negative-Claim Discipline Principle

Absence claims need their own burden of proof.

Required guidance:

  • use "not found in checked scope" when the search boundary matters
  • use stronger absence wording only when authoritative or sufficiently exhaustive evidence supports it
  • do not say something does not exist merely because it was not found in one limited search path
  • do not say the user is mistaken just because supporting evidence was not found; contradiction requires contrary evidence

5) Uncertainty-Honesty Principle

If the evidence is incomplete or conflicting, say so directly.

Required guidance:

  • expose what is known
  • expose what is inferred
  • expose what remains unknown
  • avoid filling gaps with invented specifics

Verification Trigger Model

Treat claims as verification-required when any trigger appears:

Trigger Typical Signal Required Action
Specific technical claim API endpoint, parameter, version, command flag, config syntax verify with authoritative or relevant direct evidence before stating as fact
Project-specific reference file path, symbol, environment variable, config key verify with project tools before reference
Cross-file impact claim "updated all references", "fully synchronized", "no drift" verify affected artifacts before claiming completion
Negative claim "does not exist", "is absent", "there is no X" check whether the evidence supports scoped non-finding or stronger absence
Uncertainty detected confidence is incomplete or sources conflict mark uncertainty explicitly before final claim

Verification status labels:

  • Verified
  • ⚠️ Unverified
  • Not Found In Checked Scope

Negative-Evidence and Absence Semantics

Required distinction

Not found in checked scope is weaker than does not exist.

Preferred wording

  • "I checked A, B, and C and did not find X there."
  • "According to the official schema, that key is not supported in this version."

Avoid

  • "X does not exist" when only one partial scope was checked
  • "You are mistaken" when the only evidence is a limited non-finding
  • treating git untracked/new/dirty status as semantic authority for whether a file is governed, irrelevant, or disposable

Response Examples

Verified external fact

According to the official documentation, the supported key is `DATABASE_URL`.

Observed local fact

In the checked `.env` file, `PORT=3001`.

Evidence-backed inference

Based on the checked config and the startup error, the likely issue is a missing database variable.

Working hypothesis

One possibility is a stale cache layer, but I have not verified that yet.

Scoped non-finding

I checked `backend/.env`, `backend/config.js`, and `docker-compose.yml` and did not find `DATABASE_URL` there.

Git-state only local observation

I checked git working state and saw the file is untracked, but that is only a local observation; I still need to check the governed repo surfaces before I can classify what the file means.

Anti-Patterns to Avoid

Anti-Pattern Why It Hurts Better Behavior
fabricated technical detail creates false facts verify first
inference stated as fact overstates certainty mark it as inference
hypothesis stated as cause creates false confidence keep it tentative
scoped non-finding treated as absence exaggerates the evidence say what was checked
git-state signal phrased as file disposability promotes weak local evidence into a destructive conclusion keep git state scoped and check governed surfaces first
lack of evidence treated as contradiction turns uncertainty into verdict gather contrary evidence or remain unresolved

Quality Metrics

Metric Target
Verification rate for technical claims High
Fact vs inference vs hypothesis separation High
Unsupported absence claims 0 critical cases
Unsupported contradiction from non-finding alone 0 critical cases
Uncertainty acknowledgment 100% when evidence is incomplete

Integration

Related rules: