# Constructibility: grounded or declared

Part of the ONE validator (`data/validate.rs` — boot,
the lock tests, CI's `validate_data` bin, and the game's `--check-data`
door all run the same pass). **"Raw" is now
DEFINED: a good some building type innately produces.** Every good must
be one of:

1. **raw** — in at least one building's `produces` list;
2. **grounded craftable** — has a recipe whose inputs all RECURSIVELY
 ground out in raws (the DAG is walked; a `Class` input grounds if at
 least one material of the class grounds);
3. **declared** — `acquisition: Some(...)` names a non-crafting source
 (future loot/quest goods; none needs it today). The
 narrate-or-declare pattern: nothing is unconstructible by accident.

Also enforced: NO recipe cycles (A needs B needs A fails the walk), and
ORPHAN goods are flagged (nothing produces it, no recipe yields it,
nothing consumes or uses it as a tool). All failures are loud, with
file and reason. Tool BOOTSTRAP is explicitly allowed — smith's tools
are made with smith's tools, because tool use is not a recipe input;
worldgen seeds the first kit.
