# Mars Arena case — provenance (BUILD-B · 2026-08-04)

## Screens

| Screen | Source file | What changed | Anonymisation |
|--------|-------------|--------------|---------------|
| Scored leaderboard | `LEGIONFARM-3.0/public/mars-arena/index.html` + `lf3-assets/js/mars-arena/leaderboard.js` + `lf3-assets/css/pages/mars-arena.css` | Removed Tailwind + Google Fonts CDNs; inlined utility CSS for offline; SVG mark instead of missing `Logo_LF.png`; added Seed (12) / Catalog (1,062) loaders; default load tries repaired catalog then falls back to seed | Submitter fields set to synthetic catalog labels |
| Candidate inspector modal | same HTML (`#entry-modal`) | Unchanged behaviour | same |
| 1,062-record catalog wire-up | `ab7-rebuild/research/mars-portal/mars-cave-catalog.repaired.json` | Mapped records → leaderboard entry schema in `data/mars-cave-catalog.json` / `app/lf3-assets/data/mars-cave-catalog.json` | Public scientific fields kept; parameters filled with deterministic heuristics from priority/type so `WEIGHTS` still run |

## Catalog index honesty

`lf3-assets/data/mars-arena/mars-cave-catalog-index.json` reports `count: 1062` but every `entries[]` object has null `id` / `type_code` / zeroed lat-lon. It was **not** used as row data. The count is cited separately from the repaired catalog that actually loads.

## Volumes

| Metric | Value | Source |
|--------|------:|--------|
| seed_entries | 12 | `mars-arena-seed.json` → `entries` |
| catalog_index_entries (count field) | 1062 | `mars-cave-catalog-index.json` → `count` (entries unusable) |
| repaired_catalog_records | 1062 | `mars-cave-catalog.repaired.json` → `records` |
| catalog_sample_records | 100 | `mars-cave-catalog-sample.json` |

## Score weights (real)

From `leaderboard.js`: `safety 0.4`, `location 0.3`, `logistics 0.2`, `science 0.1`.

## Not invented

- Working Gemini / LangChain chat (HTML labels it a placeholder)
- Orbital 3D globe product
- Claiming the null-shell index file loads as 1,062 interactive rows without the repaired transform
