# Tombstone — Council #20 dead-code archive (Cluster D — quests/board/roll_tier* + tips/show + cascade predicates)

**Date:** 2026-05-28
**Council artifacts:** `_council/2026-05-28-dead-code-quests-mobs/{BRIEF.md, teammate-notes/*.md, review/SYNTHESIS.md}`
**Verdict shape:** 5-seat parallel pass (balance, performance, race, lore, compliance) — 5/5 ARCHIVE on all 6 Cluster D candidates (Interpretation B: superseded by the live 3-options preview flow). Combined dispatch with Council #21 (Cluster E — mobs/dialog/command_template/*, which resolved 5/5 PRESERVE-AS-PENDING-WIRE; no archive shipped for that cluster).

## What was archived (8 files)

### `cluster-D-quests/board/` (5 mcfunctions)
The dead 5 `roll_tier{2..6}.mcfunction` files are the **pre-refactor single-quest reveal mechanic** for the quest-board interaction. The shipped Forevercraft quest-board uses the **3-options preview flow** instead (player gets 3 distinct random quest IDs as a preview, picks one, the picked ID becomes the active quest).

**Live shipped chain** (preserved for restoration reference):
- `quests/board/accept_tier{1..5}.mcfunction:17` → `function evercraft:quests/preview/open_preview {tier:N,max:M}` (where `max` ∈ {50, 50, 43, 42, 35} matches the pre-archive roll_tier ranges)
- `quests/board/heroic/accept.mcfunction:27` → `function evercraft:quests/preview/open_preview {tier:6,max:30}` (Heroic-tier dispatch)
- `preview/open_preview` → `preview/roll_options` (rolls 3 distinct options via `ec.qp_opt{1,2,3}`)
- `preview/show_options` → renders the 3-option chooser via `card_tier{N}` lookup (which carries bit-identical name+desc strings to the dead roll_tier reveals)
- Player picks → `preview/accept_option:9-14` → `ec.quest_id_N = ec.qp_opt$(num)` (the live writer of `ec.quest_id_N`, NOT the dead `roll_tier{N}` files)
- `preview/accept_option:21-25` → `setup_tier{N}` to commit

The dead `roll_tier{N}` files had no live caller — `setup_tier{N}` and `trigger_handler` route to `preview/open_preview` directly without going through any roll-and-reveal step.

### `cluster-D-quests/tips/` (1 mcfunction)
`tips/show.mcfunction` is a **chained orphan** — only callers were the 5 dead `roll_tier{2..6}` (each ended with `function evercraft:quests/tips/show`). Its 13 tellraw tutorials (gather/hunt/forage/prospect/craft/cook/lore/explore/dungeon/rune/transmute/boss/forage+prospect) were good content; preserved here for re-lift opportunity (see "Salvage queued" below).

### `cascade-predicate-quests/` (2 JSON predicates)
- `has_entered_nether.json` — was used by all 5 dead `roll_tier{2..6}` files to re-roll nether-zone quests for players who hadn't been to the Nether
- `has_entered_end.json` — same shape for End-zone quests

Both predicates had **zero callers outside the dead 5 roll_tier files** (verified by grep). Cascade-dead. Preserved here in case the planned regression fix (D-POST-1, see followups) re-adopts them.

## Pre-archive salvage: dimension-gating table (preserved verbatim)

**WHY THIS MATTERS:** the live `evercraft:quests/preview/roll_options:5-7` does **NOT** filter dimension-restricted quests. Once Cluster D archives, the dimension-gating documentation (which quest IDs require nether/end access) only survives in this tombstone. The live preview flow can today offer "Piglin Skirmish" or "Ghast Tear Run" to a player who has never been to the Nether — they'd see the option but can't complete it.

| Tier | Re-rolled if no nether access (quest IDs) | Re-rolled if no end access (quest IDs) | % of pool gated |
|---|---|---|---|
| T2 (50 quests) | 29=Piglin Skirmish, 30=Magma Cube Burst, 38=Hoglin Hunter, 42=Nether Brick Supply, 43=Blaze Powder, 49=Ghast Tear Run (6 total) | 44=Chorus Fruit Picker (1) | 14% |
| T3 (43 quests) | 9=Blaze Hunter, 10=Ancient Debris, 22=Wither Skeleton Hunter, 40=Piglin Brute Bounty (4) | 23=Shulker Boxing, 43=End Rod Collector (2) | 14% |
| T4 (42 quests) | 1=Wither Skeleton Skulls, 3=Netherite Scrap, 9=Piglin Brute Bounty, 35=Netherite Smith, 40=Ancient Debris Stash (5) | 2=Shulker Shells (1) | 14% |
| T5 (35 quests) | 3=Bastion Plunder, 7=Nether Star Fragment, 8=Fortress Conqueror, 19=Nether Boss Hunter, 24=Netherite Arsenal, 30=Nether Star Hunt (6) | 2=End City Raid, 4=Dragon's Breath, 29=Shulker Shell Hoard, 33=Dragon Breath Cache (4) | **29%** |
| T6 (30 quests) | 1=Wither Slayer, 5=Master Builder, 9=Nether Domination (3) | 2=Dragon Slayer, 10=The Void Walker (2) | 17% |

**Original gating syntax** (preserved from the dead files for fix reference):
```mcfunction
execute if score @s ec.quest_id_N matches <K> unless predicate evercraft:quests/has_entered_nether run return run function evercraft:quests/board/roll_tier<N>
```

## Pre-archive salvage: quest-type taxonomy (preserved verbatim)

From `tips/show.mcfunction:1-3`:
> 1=gather 2=hunt 3=forage 4=prospect 5=craft 6=cook 7=lore 8=explore 9=dungeon 10=rune 11=transmute 12=boss 13=forage+prospect

The 13 tutorials covered:
- **Gather** (`#qtype 1`) — inventory-based; any source counts
- **Hunt** (`#qtype 2`) — kill mobs AFTER accepting (acceptance timestamp matters)
- **Forage** (`#qtype 3`) — find glowing Forage Bushes; need iron axe/hoe; right-click; **NOT vanilla berry bushes**
- **Prospect** (`#qtype 4`) — find glowing Ore Nodes deep underground; need iron pickaxe; right-click; **NOT vanilla ores**
- **Craft** (`#qtype 5`) — inventory-based; crafting table/furnace/workstation
- **Cook** (`#qtype 6`) — visit village Cooking Stations; **vanilla furnace cooking does NOT count**
- **Lore** (`#qtype 7`) — discover Lore Fragments via structures/chests/locations
- **Explore** (`#qtype 8`) — physically enter the structure; completes on arrival
- **Dungeon** (`#qtype 9`) — find dungeon entrances; complete all 5 waves
- **Rune** (`#qtype 10`) — forge at a Glyphforge with materials
- **Transmute** (`#qtype 11`) — Transmutation Table converts items into new forms
- **Boss** (`#qtype 12`) — defeat World Bosses (extremely dangerous)
- **Forage + Prospect combined** (`#qtype 13`) — both Forage Bushes AND Ore Nodes count

This taxonomy is now lift-target for `BIG_BRAIN/30-systems/quests.md` (D-POST-2) and/or `codex/hub/help/topics/quest_types` (future codex help feature).

## Followups queued (in `BIG_BRAIN/10-pending.md` under Wiring Audit #20+#21 — Followups)

- **D-POST-1 (P1 gameplay regression):** wire dimension gating into `preview/roll_options` — the live preview today offers un-completable quests
- **D-POST-2 (P2 salvage):** lift the 13-entry quest-type taxonomy + tutorials into `BIG_BRAIN/30-systems/quests.md` (and optionally a codex help page)
- **NC18-XB.2 / DA-11 (audit-tool):** extend `scripts/audit_dead_code.py` to walk JSON-side caller graphs forward, AND to recognize `command_template:"function evercraft:..."` strings inside `data modify storage` writes as caller-graph edges

## Restoration

To revive: copy back from this archive subtree to the matching path under `data/evercraft/function/` (or `predicate/`). Note: if you bring back `roll_tier{N}.mcfunction`, you'll also need to either (a) wire them in via a fresh `quests/board/trigger_handler` or `accept_tier{N}` dispatch, OR (b) integrate the dimension-gating into the new live `preview/roll_options` flow without the dead files. The gating tables above are the canonical reference for what each tier needs.
