# REPRODUCE — US SLED Contact Directory

Every number in this delivery can be reproduced from scratch.

## Prerequisites
- Node.js >= 18 (uses built-in `fetch`; no npm dependencies).
- Network access to `https://educationdata.urban.org` (public, key-free).

## 1. Re-collect the dataset from the public source
```
cd delivery-package/us-sled-contact-directory
node src/collect.mjs            # latest year (2023); or: node src/collect.mjs --year 2023
```
This re-fetches all 50 states + DC and rewrites `dataset/` + `evidence/`.
Expected console summary: `19453 organizations across 51 jurisdictions`,
`phone coverage: 100%`. (Counts can change if NCES republishes the year.)

## 2. Verify (deterministic, offline)
```
node verify.mjs
```
Expected: `[verify] PASS: 17/17 checks (100%)` and a regenerated
`verification-report.json` + `verification-report.md`.

## 3. Re-run the Proof Layer
```
cd ../..
node tools/forge-proof.mjs --outcome delivery-package/us-sled-contact-directory --verify "node verify.mjs" --report verification-report.json
```

## 4. Self-test the checksums
```
node tools/forge-proof-verify.mjs --outcome delivery-package/us-sled-contact-directory
```

## Spot-check a single record against the live source
Pick any record's `sourceUrl` (e.g. `.../directory/2023/?fips=2` for Alaska) and
open it; the `lea_name`, `phone`, and address fields match the delivered row for
that `leaid`. Raw responses for Alaska and DC are also saved verbatim under
`evidence/raw-sample-AK.json` and `evidence/raw-sample-DC.json`.
