# HANDOFF -- Source Integrity Screen (RAM S2) -- Phase 6 Assembly

**Skill slug:** source-integrity-screen
**Produced by:** kit-builder-max:skill-creator-max (Phase 6)
**Date:** 2026-04-20
**Library placement root:** `ram/skills/source-integrity-screen/`
**Status:** ASSEMBLED -- pending Phase 9 citation-verification gate.

---

## 1. BLOCKING Precondition (carried forward to Phase 9)

**S06 citation verification is unresolved. This HANDOFF propagates the block.**

Four citations inherited from Phase 3 Session S06 (Sadasivan 2024, Liang 2023, Kirchenbauer 2023, Mitchell 2023) were produced from the executing agent's training-corpus recall without live WebFetch. All four carry the `UNVERIFIED` tag at every internal write. Any attempt to render one of these citations in user-facing output before the S06 Citation Verification Queue clears raises the **`s06_citation_unverified`** error class, STOPs the run, and escalates to operator.

**Phase 9 (evaluation harness) cannot sign off RAM until the Queue clears.** Phase 5 system-engineering HANDOFF listed this as Gap #1; Phase 6 preserves the block; Phase 9 must resolve it before release.

Verification procedure: `references/S06_CITATION_VERIFICATION_QUEUE.md` Section 3 (WebFetch path). Cache TTL for cleared verifications: 30 days.

The `s06_citation_unverified` error class is named in SKILL.md Section 5 (Error Classes) and documented in full in `references/S06_CITATION_VERIFICATION_QUEUE.md` Section 4.

## 2. Files Authored

### SKILL.md
Root of the skill directory. Declares scope, file registry, classified knowledge inventory, ambiguity register, six-phase procedure (Intake -> Retraction -> AI-contamination -> Pub-bias -> Aggregate verdict -> Ledger write), error classes, anti-deviation rules, output contract, failure-audit checklist, termination conditions.

### references/RETRACTION_SCREEN_PROTOCOL.md (Tool, ~470 words)
Operational protocol for Phase B. Crossref polite-pool endpoints (`api.crossref.org/works/{doi}?mailto=...`), sweep endpoint, RWDB GitLab CSV mirror clone. Rate limits (10 req/s single-DOI, 3 req/s list, 3 concurrent polite-pool; 5/1/1 public-pool floor). Exponential backoff on HTTP 429 with 3 retries. Cache policy (24h TTL). Coverage gaps (non-English / non-DOI / paper-mill / paywalled-notice / no-webhook). Anti-patterns (unverifiable-as-clean, missing `mailto=`, PubPeer-as-retraction).

### references/AI_CONTAMINATION_TIERS.md (Tool, ~490 words)
Full Tier 0 through Tier 3 decision table. Pre-check gates (300-token floor, English-or-calibrated, translation gate). Detector ensemble (Fast-DetectGPT primary, Binoculars cross-check, watermark probe conditional, metadata corroboration). Signal-independence rules (low perplexity is not a second signal; metadata anomaly is one signal; commercial classifiers not counted). Cross-cutting safeguards (never silently filter; Ledger carries continuous scores; Tier 3 is the only auto-reject). Recalibration authority restricted to Phase 3.

### references/PUB_BIAS_GATE_CRITERIA.md (Tool, ~490 words)
Scope gate decision table (k>=10 AND I^2 < 50% AND matched variant -- all three required). Claim-type table (meta k>=10 / meta k<10 / single primary / scoping / qualitative / single-source). Egger-variant selector (classical for continuous and log-RR; Harbord / Peters / arcsine-Thompson for OR; Debray for survival; skip for SMD). Dissemination Risk Flag three-question screen with scoring grammar (any N or Y-on-Q3 -> elevated; all Y on Q1+Q2 -> baseline; three Unknown -> unverifiable). Ioannidis-2005 qualitative priors for single primary studies. Anti-patterns enumerated.

### references/S06_CITATION_VERIFICATION_QUEUE.md (Doctrine, ~490 words)
The four queued citations with claim-of-record and verification artifacts required. WebFetch procedure (arXiv abs resolve, venue confirm, claim-match). Error class `s06_citation_unverified` defined (STOP run, orchestrator alarm, operator escalation, no degrade-and-continue). Cache TTL 30 days. Operator escalation template. Queue is open-ended -- future S06 expansions add rows, default `UNVERIFIED`.

### templates/INTEGRITY_VERDICT_SCHEMA.md (Template, ~490 words + schema + 3 worked examples)
Per-source YAML schema consumed by Fitness Adjudicator (S7). Field rules for retraction / ai_screen / pub_bias blocks. Non-collapse rule (each screen carries its own state; never aggregate to pass/fail). `auto_block` true only on confirmed retraction or Tier 3. UNVERIFIED-tag wrapping for S06 citations in rationale strings. Three worked examples (clean meta, DOI-less blog, Tier 3 hard block).

## 3. Placement Verification

Every reference and template placed under `ram/skills/source-integrity-screen/` per Phase 5 Library Architecture Section 3.4. No cross-silo paths. No SHARED library usage. Private-RAM per-skill assets only; public-RAM consumption documented (SEARCH_LEDGER_WRITE_CONTRACT.md, SURPRISE_REGISTER_WRITE_CONTRACT.md) but not authored here (Public RAM assets are owned by their producing skills).

## 4. Zero-Overlap Posture

This skill reads:
- Own private references and templates (under this directory).
- Public RAM `SEARCH_LEDGER_WRITE_CONTRACT.md` (ledger grammar, authored by Phase 5).
- Public RAM `SURPRISE_REGISTER_WRITE_CONTRACT.md` (register grammar; S2 is NOT a writer but reads to recognize bounds).

This skill writes:
- RAM Search Ledger (via S4's publisher handle, per Phase 5 CROSS_CUTTING_ARTIFACTS.md Section 2).
- Integrity Verdict objects to Fitness Adjudicator (S7) via run-local pipeline.

This skill does NOT:
- Read or write any `evaluator/` path.
- Write to the Surprise Register (writers are S3, S5, S7, S8).
- Compute fitness (that is S7).
- Render user-facing output (that is S4).

Cross-silo read/write count: 0. Consistent with Phase 5 ZERO_OVERLAP_VERIFICATION.md invariants.

## 5. Smoke Test (walkthrough)

Three-source mock batch run through the authored references:

- **Source A (DOI, peer-reviewed meta, k=14, I^2=30%, English, 4K tokens):**
  - Intake ok. Retraction: RWDB cache hit -> clean. AI screen: all detectors below threshold, metadata corroborated -> clean-tier0. Pub-bias: scope gate passes; classical Egger variant; small_study_effect=absent; dissemination_risk=baseline. `auto_block=false`. Ledger entries written for each phase. VERDICT: PASS.
- **Source B (DOI-less blog, 212 tokens, English):**
  - Intake ok (has full-text). Retraction: unverifiable, note=no-doi. AI screen: skipped-short-text (below 300-token floor). Pub-bias: not-applicable (single-source). `auto_block=false`. Ledger records the skips. VERDICT: passes with three limitations surfaced -- Fitness Adjudicator weights accordingly.
- **Source C (claimed DOI resolves to non-existent venue, 5K tokens, two statistical detectors trigger):**
  - Intake ok. Retraction: Crossref-api lookup returns no record; status unverifiable, note="DOI does not resolve." AI screen: Fast-DetectGPT + Binoculars both triggered (two independent signals) AND metadata fully fabricated -> Tier 3 hard block. Pub-bias: not-applicable. `auto_block=true`. Ledger entries written. VERDICT: hard-blocked; logged for pattern analysis.

Smoke-test verdict: PASS. No S06 citation was quoted in any user-facing rationale during the walkthrough; rationale strings describe tier-triggering facts (detector scores, metadata checks) without invoking the queued references. The walkthrough exercises every branch (clean, multi-limitation-pass, hard-block) and every state (clean-tier0, flagged-tier1 implicit, quarantined-tier2 implicit, blocked-tier3, skipped-short-text, unverifiable retraction).

## 6. Downstream Consumers

- **Fitness Adjudicator (S7)** -- consumes Integrity Verdict object per `templates/INTEGRITY_VERDICT_SCHEMA.md`. Applies claim-type-profile weighting; non-collapse rule preserved.
- **Multi-Method Orchestrator (S3)** -- reads Ledger for saturation signals and writes to Surprise Register on anomaly detection surfaced via S2's flags.
- **Warrant & Saturation Governor (S6)** -- reads Ledger for deferral counts to decide whether to re-attempt before stopping.
- **Epistemic Output Layer (S4)** -- renders Ledger at run close. BLOCKS on any S06 citation still tagged `UNVERIFIED` in a rationale slated for user-facing render.

## 7. Open Items (propagated to Phase 9)

| # | Item | Severity | Resolution path |
|---|---|---|---|
| 1 | S06 Citation Verification Queue -- four citations still `UNVERIFIED` | **BLOCKING for Phase 9** | WebFetch procedure in `references/S06_CITATION_VERIFICATION_QUEUE.md` Section 3 |
| 2 | Language-calibrated AI-detector thresholds -- none loaded | Medium | Phase 9 calibration against non-English corpora |
| 3 | Paper-mill retraction-latency baseline -- quantified range needed | Low | Phase 9 telemetry over first 30 days of operation |

Item #1 is the only BLOCKING item. Items #2 and #3 are graceful-degradation paths already handled (skip-with-flag, baseline cache TTL).

## 8. Re-Entry Triggers

This skill's assembly must be revisited if any of the following fires:

- Phase 9 telemetry shows the 300-token floor triggers too frequently on short-but-valid sources -> adjust in `references/AI_CONTAMINATION_TIERS.md` Section 2.
- Crossref polite-pool quotas change (next documented change window after December 2025) -> update `references/RETRACTION_SCREEN_PROTOCOL.md` Section 3.
- A new detector family publishes with materially better FPR against non-native English (resolving the Liang 2023 harm pattern) -> Phase 3 re-research, then threshold update here.
- Any S06 citation fails verification after the Queue had previously cleared it -> restore `UNVERIFIED` tag; re-emit any rendered outputs that quoted it.

---

**End of HANDOFF.**
