Level data for the game, at three stages of a pipeline. Most of what lands here is transient and git-ignored — only the curated ladders are tracked, because they're the durable, reviewable output.
campaign / gen ──▶ candidate pool ──▶ curate ──▶ ladder ──▶ wire ──▶ game
(search) gen-*.json / (pick) ladder*.json (place src/game/
campaigns/<name>/ (tracked) info + levels.json
pool.json (ignored) résumé) (tracked)
- Search —
level-gen campaign --name <run>(orgen --batch --profile spread) generates and screens millions of boards. Output:campaigns/<name>/pool.json+manifest.json— a resumable top-K pool. Ignored.gen-*.json— a flat candidate pool fromgen --batch. Ignored.report.md— a browsable per-bucket ranking (level-gen rank). Ignored.
- Curate —
level-gen curate --from-campaign <run> --profile initial128picks a teaching-ordered ladder and writesladder128.json(andladder32.jsonfor the shorter profile). Tracked — these are the reproducible, reviewed end product. - Wire —
python3 level-gen/wire_ladder.pymergesladder128.jsonwith the résumé content fromassets/resume.jsonand writessrc/game/levels.json(placing one info tile on the first 16 levels). Tracked.
| Path | Tracked? | Why |
|---|---|---|
ladder32.json |
✅ | Curated short ladder (reproducible end product) |
ladder128.json |
✅ | Curated full ladder (wired into the game) |
gen-*.json |
❌ | Transient candidate pool; reproducible by seed |
campaigns/<name>/ |
❌ | Transient campaign state; resumable by seed |
report.md |
❌ | Generated ranking report |
The ignored artifacts are large and fully reproducible from the seed range, so they
stay out of git. Regenerating a ladder is a deliberate, reviewed step — see
../level-gen/README.md.