# Mars case page — provenance

**Lane:** BUILD-MARS · **Built:** 2026-08-04 · **Output root:** `06_cases/mars/` only.

## What came from where

| Page surface | Source | Transform |
|---|---|---|
| Claim rows (text, class, scores, CCS, band, speaker, quote, video, ts, topics) | `05_graph/claims/MARS.jsonl` (72 lines) | Pass-through via `build.py`; YouTube deep-link computed as `t=<seconds>s` from `ts` |
| Band / class counts in the verdict header | Same claims file | Counted in `build.py` over all 72 claims |
| Theme span 52 / 136 | `05_graph/reports/MARS.md` §1.1 | Copied as a sourced figure; not re-scanned in this lane |
| Canonical episode denominator **136** | `CONTRACT.md` / report | Hard-coded constant in `build.py` (`CANONICAL_EPISODES = 136`). Never 172 uploads. |
| Seven adjudicated threads | `05_graph/factcheck/MARS_EXTERNAL.md` | Structured into JSON in `build.py` (`THREADS`); wording is from the fact-check, not paraphrased into new claims |
| Document ledger (40 records; 25 retrieved / 15 not) | `05_graph/factcheck/MARS_DOCUMENTS.json` | Split on `retrieved`; unretrieved rows get a dashed tag and never a live “open” pretence when URL is empty |
| Session ≠ Mars distinction | Fact-check Thread 5 + report §4 + document `DOC-MARS-0001` | Single plain statement; ladder rows for governed claim ids get a violet rail |
| Untold story + absence proofs | `05_graph/reports/MARS.md` §4 | Commands and results copied as shown in the report |
| Subject display names | `05_graph/nodes/MARS.json` | Id → name lookup only |
| Claim → document links | Intersection of claim `corroborating_sources` / `contradicted_by` URLs (and identifier fragments) with the document registry | Best-effort; missing match renders “no primary document” |

## What was left out

1. **`C-MARS-0067`** (Jorjani Nordic-phenotype framing) — present in the claims file with `"publishable": false`. The lane report asks that it not reach a public surface without political-history context. Omitted from the ladder; counted in the header’s “72 extracted” and named in the ladder count line.
2. **Edges / full node dossiers / pattern signatures** — not assigned to this page. Nodes are used only for subject labels.
3. **Third-party photographs** — none. Decorative Mars disc is inline SVG. NASA/ESA URLs appear only as ledger links.
4. **Re-running the corpus scan** — theme span and absence-proof results are reported from the Mars lane’s method log, not re-executed here (this lane is a consumer of `05_graph/`).
5. **Invented identifiers** — none. If a document was not retrieved, the page says so.

## Brandenburg handling

The Thread 1 panel keeps two facts on the page at once: (a) Brandenburg is a credentialed plasma physicist with real publications and patents, and the Martian xenon-129 anomaly is a factual isotope observation; (b) the artificial nuclear-war / destroyed-civilisation conclusion is adjudicated `refuted`. Flattening either side would misrepresent the fact-check.

## Reproducibility

```bash
cd 06_cases/mars
python3 build.py          # writes data/mars.json and data/mars.embed.js
# open index.html via any static server (or file:// — embed script loads without fetch)
```

`index.html` loads `data/mars.embed.js` first (`window.MARS_DATA`). No CDN, no npm, no build step required to *view* the page after `build.py` has been run once.

## Publication gate (CONTRACT §6)

- No private personal data beyond what guests said on the channel.
- Every visible claim carries class + `video + ts` citation.
- No third-party copyrighted stills.
- Contested / thin / unsupported bands are colour-coded and never flattened.
- Page language reports evidence state; it does not imply host endorsement.
