← ClaudeAtlas

source-verifylisted

Use when evidence records exist with verification_status pending and need to be checked before synthesis — either because the user asks to "verify these sources", "check if this quote actually supports the claim", "audit this evidence", or because the orchestrator has just finished a collection pass and is handing off to verification before synthesis. This is the mandatory station between any source skill and the synthesizer — no source skill's evidence reaches findings.jsonl without passing through here first. Do NOT use this to collect new evidence (that's the individual source skills) or to compute finding status (that's the deterministic validator, scripts/validate_run.py — this skill only resolves evidence-level verification_status).
ali-demirbas/research · ★ 0 · Code & Development · score 70
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