# Professions and buildings (ours)

- **`professions/`** mirrors the CANONICAL engine set
 (`crates/engine/src/professions.rs`: professions are graph
 data) — twelve files, same abilities, wage seeds (`wage_hours`,
 /0387 §6; only the waged four, in hours of the day:
 harbormaster 3, fixer 2, guildmaster 4, watch captain 4), and
 display names ("Harbormaster", "Watch Captain"). Each adds two
 slice-two facts: the trade `tool` as a good id (the
 PRACTICES key: fisher's tackle, brewer's supplies, baker's cook's
 utensils, tanner's and smith's kits; the desk-and-title professions
 carry none), and `proficiencies` — 2-3 background skills, THE 0066-a
 GENERATION SOURCE: a career is where a soul's skill set comes from
 (fisher → Survival + Athletics; watch captain → Perception +
 Intimidation + Athletics, the career-guard exemplar;
 innkeeper → Insight + Persuasion). The picks are ours, noted per
 file.
- **`buildings/`** holds building TYPES for worldgen to instantiate —
 never instances. `produces` is the PRODUCES relationship as
 data (rate = units per worked hour, before the work
 multiplier; raw extraction names no trade tool). `stations` closes
 the recipe-station references. `build_cost` is the construction
 composition — derives a building's maximum integrity from it
 (Σ qty × weight × class integrity_per_lb × material integrity_factor),
 and building repair re-consumes a damage-proportional fraction of it.
 Lumber camp and pasture have no canonical profession — open-access
 labor until the trades exist.

### Geography grounds the buildings

**Terrain tags** are open ids like material classes, resolving against
`tables/terrain_tags.ron` — the vocabulary today:
`coastal`, `river`, `arable`, `hills`, `mountains`, `forest`,
`ore_deposit`. Each building type states where it can exist via
`requires` — a CONJUNCTION (all tags must be present; `[]` = anywhere).
The map as landed: dock [coastal]; fields [arable]; pasture [arable];
mine [ore_deposit]; lumber_camp [forest]; tannery [river]; everything
else [] — judgment noted per file. Or-semantics (a river-port dock,
hill pasture) is a named seam: no speculative `requires_any` until a
consumer needs it.

- **Settlements/regions will carry terrain tags as worldgen data** —
 the engine consumes them in the worldgen slices; this contract
 defines the data, not the consumer. Building placement validity
 DERIVES from settlement terrain, and production profiles thereby
 derive from geography instead of being authored — the
 two-town divergence generalized: towns differ because their ground
 does, not because someone wrote two economies.
- **Deposits**: the `ore_deposit` tag is where the material
 rarity/region hints from the materials work ground out — a region's
 deposits determine which ores its mines can produce (the mine type
 lists mithral_ore; worldgen instantiates that row only where the
 region says so). Region-side data arrives later; the seam is named
 now.
- **Constructibility footnote**: "raw" ultimately means
 geography-PERMITTED production. A good producible only by buildings
 whose terrain no known region provides is a WARNING tier, not an
 error — regions are data-incomplete until worldgen wiring, so the
 validator warns on geography-gated raws rather than failing them.
