Verify oneartifact(text written by AI: summary, ADR/glossary, spec, completion report) is faithful to thesourceit is based on (conversation, or confirmed spec/tickets). The main line checksrequirement deviation(intent level) andtext drift(detail level); the secondary lineflags factual risk(flags only, does not gather evidence). Boundary: faithfully restating a factual error from the source in the artifact does not count as deviation, but it must be pointed out via a factual risk flag.
Applicable boundary: only checkstext-to-textfidelity. Use /factcheck to check factual truth, use code-review to check code implementation—these two types are not done here.
Determine source and artifact
- User provided artifact text: follow what the user gave; if two passages are pasted, first ask clearly which passage is the source and which is the artifact.
- No parameters: artifact = the most recent summary/document/report given by AI, source = the several rounds of conversation it is based on; if unsure, ask first.
- Without a source, a fidelity check cannot be done: say so directly and ask the user to supply the source; you may fall back to checking the artifact's internal consistency, but state that this does not count as a fidelity check.
Main line one: requirement deviation (intent level)
- Build arequirement ledger: extract the requirements, goals, constraints, priorities and decisions expressed by the user from the source, each with original-text evidence attached.
- Check the artifact item by item for five types:loss(in the ledger, absent from the artifact);distortion(degree/scope/conditions changed);mixing in(requirements not in the source, especially AI suggestions written as user requirements);misattribution(AI's words written as the user's, rounds placed wrongly);flattening(unresolved/contested written as unanimous or settled).
- Completion criterion: every requirement in the ledger has alanding pointin the artifact (location or "not present"), and every requirement in the artifact can be traced back to the source; only when both sides are fully checked is it done.
Main line two: text drift (detail level)
- Compare the artifact sentence by sentence against the source: numbers, dates, versions, names, quotations, commitments, qualifiers (possible/try to/temporarily), order, conditions.
- Four key types:numeric drift(numbers/precision/range changed);lost qualifiers(possible/temporarily/partially deleted into definitive statements);reversed causality(order changes altered causality);fabricated additions(details/examples/conclusions not in the source; when the artifact is internally contradictory, at least one side is drift).
- Completion criterion: every sentence added or rewritten in the artifact can be traced back to the source or is flagged as drift; anything that cannot be traced back must be flagged.
Differences become conclusions
Each difference has a three-part set; if any part is missing, it does not count as fully checked:location(which source sentence ↔ which artifact sentence),type(requirement deviation/text drift and which subtype),severity(blocking: would lead to acting wrongly; important: affects conclusions or key information; minor: wording distorted without consequence). Report only after everything is fully checked.
Side track: factual risk flagging (flag only, no evidence gathering)
- Pick out from the artifactfalsifiable claims: version numbers, prices, dates/timelines, command or API behavior, data statistics, compatibility, external events; opinions, preferences, decisions, and plans do not count.
- For each item, only flag, do not judge, and do not open external sources: consistent with the source -> "faithful, truth not verified"; inconsistent with the source -> already handled in text drift; clearly suspicious (contrary to common sense, self-contradictory, also vague in the source) -> call it out by name.
- When there are no falsifiable claims, state plainly: "This artifact has no factual claims, so there is no factual-level risk."
- Flagging stops here; truth determination is left to /factcheck.
Report
Normal conversation, do not fill in blanks item by item. Start with one overall judgment (faithful or not, adoptable or not); rank differences by severity, explain location, what differs, and the original source text for blocking/important ones, and group minor ones together briefly; one sentence on factual risk (a few items worth /factcheck or clearly none); if changes are needed, give the minimal correction suggestions. Stop and wait for user confirmation.
Scenario focus
- After grill-with-docs (ADR/glossary vs conversation): preventflattening、(to be verified) loss of markers, and AI recommendations being written as user decisions.
- After to-spec (spec vs conversation): preventmixing in(AI assumptions written as requirements).
- After implement (completion report vs spec): preventloss/distortion(claimed completion vs actual coverage). Verification of the code implementation itself belongs to code-review; here only textual artifacts are checked; when descriptions do not match the code, mark it, but do not expand into code review.
Division of labor with /factcheck
- Here, only speak to the source: whatever the source says is what it is, do not judge right or wrong; factual risk is only flagged, not determined, and no evidence is gathered.
- Determining truth (gathering evidence, providing proof) is /factcheck's job; use it to verify flagged items one by one.
- /factcheck only recognizes external facts; it does not care whether the artifact is consistent with the source.