source-verifylisted
Install: claude install-skill ali-demirbas/research
# Source Verify
## Overview
The mandatory checkpoint every evidence record passes through before it can be cited by any finding (constitution rule 6). No source skill verifies its own output — the actor that collects evidence never grades it. This skill's only job: turn `verification_status: pending` into `verified`, `rejected`, or `unreachable`, honestly, one record at a time.
**Layer rule:** this is where network-dependent verification happens (constitution rule 8) — archive liveness checks, re-fetching URLs, confirming a page still says what the record claims. `scripts/validate_run.py` never touches the network; everything network-dependent about "is this evidence real" happens here, once, before the validator ever runs.
## The two checks (constitution rule 6)
Every `pending` record gets both checks, in order. Both must pass for `verified`.
### Check (a) — Mechanical: does the quote exist?
Fetch `source.url`. Search for the `evidence.quote` text, whitespace-normalized (collapse multiple spaces/newlines, ignore leading/trailing whitespace) but otherwise exact — no fuzzy matching, no "close enough."
**Multi-part quotes.** A quote trimmed with `[...]` is split on that marker into parts. Every part must appear at the source, **in the same order**, with no more than ~2000 characters between consecutive parts. Without the order and distance constraints, "exact quote" means something different in every implementation, and a quote could be assembled from fragments scattere