# Entity Catalog — Полный реестр сущностей ECS

> Файл: `/layerplan/spec/entity-catalog.md`  
> Версия: 1.0 · 30.07.2026  
> Назначение: единственный source of truth для всех Entity+Component в simulation core (L0). Каждая строка — контракт.

---

## Ресурсы (12 базовых)

| ID | Тип | Категория | Добыча | Потребление | Комментарий |
|----|-----|-----------|--------|-------------|-------------|
| `coal` | сырьё | энергия | шахта | фабрики, электростанции | Базовое топливо эпохи 1 |
| `iron` | сырьё | металл | шахта | фабрика стали | Fe₂O₃ → Fe |
| `copper` | сырьё | металл | шахта | электроника | Проводники |
| `aluminum` | сырьё | металл | шахта + электролиз | транспорт, стройка | Требует много энергии |
| `silicon` | сырьё | полупроводник | шахта | микрочипы | Песок → Si |
| `lithium` | сырьё | батареи | шахта | аккумуляторы | LiFePO₄ |
| `water` | сырьё | жизнеобеспечение | насосная | города, фермы, охлаждение | Критично для Атакамы |
| `food` | продукт | жизнеобеспечение | ферма | города | Базовое потребление |
| `steel` | продукт | стройка | фабрика (coal+iron) | заводы, пути, мосты | Ключевой продукт эпохи 1 |
| `electronics` | продукт | high-tech | фабрика (copper+silicon+lithium) | роботы, поезда, ИИ | Ключевой продукт эпохи 3 |
| `energy` | продукт | универсальный | солнечная/ТЭЦ/термояд | всё | Потребляется всем |
| `goods` | продукт | конечный | фабрика (steel+electronics+energy) | города | Финальный продукт |

---

## Сущности (Entity Types)

### 🚂 Vehicle (транспорт)

| Component | Тип | Описание | Параметры по умолчанию |
|-----------|-----|----------|------------------------|
| `Position` | (int,int)+float | Тайл + смещение 0–1 | (0,0), 0.0 |
| `Speed` | base, current, modifiers[] | Скорость в тайлах/тик | base=1.0 |
| `CargoHold` | capacity, contents{} | Вместимость и груз | capacity=100 |
| `Health` | durability, breakdown_ticks | Износ 1→0, тиков до ремонта | durability=1.0 |
| `Route` | path[], node_idx, status | Маршрут и состояние | status="moving" |
| `Fuel` | type, amount, consumption | Топливо | type="coal" |

**Типы транспорта:** steam_train, diesel_train, electric_train, truck, ship, drone, hyperloop

### ⛏️ Industry (производство)

| Component | Тип | Описание |
|-----------|-----|----------|
| `Production` | type, input{}, output{}, stored{} | Производственная функция |
| `Position` | (int,int)+float | Расположение |
| `Health` | durability, breakdown_ticks | Износ оборудования |

**Типы индустрий:**
- `coal_mine` — output: coal=5/tick
- `iron_mine` — output: iron=3/tick
- `copper_mine` — output: copper=2/tick
- `aluminum_smelter` — input: energy=10, output: aluminum=3/tick
- `silicon_plant` — input: energy=5, output: silicon=4/tick
- `lithium_mine` — output: lithium=1/tick
- `water_pump` — output: water=20/tick
- `farm` — input: water=5, output: food=8/tick
- `steel_mill` — input: coal=3, iron=2, output: steel=4/tick
- `electronics_fab` — input: copper=2, silicon=2, lithium=1, energy=5, output: electronics=2/tick
- `goods_factory` — input: steel=2, electronics=1, energy=3, output: goods=3/tick
- `power_plant` — input: coal=10, output: energy=50/tick (или solar: energy=30/tick, fusion: energy=500/tick)
- `recycling_plant` — input: goods=5, energy=20, output: steel=2, electronics=1, copper=1 (R_model!)

### 🏙️ Town (потребитель)

| Component | Тип | Описание |
|-----------|-----|----------|
| `Population` | count, growth_rate | Население и прирост |
| `Demand` | dict[Resource→float] | Потребление за тик |
| `Satisfaction` | value 0–1 | Довольство города |
| `Position` | (int,int)+float | Расположение |
| `Governance` | type, policies[] | Тип управления регионом |

**Governance types:** free_market, state_regulated, open_ecosystem, post_scarcity

### 🤖 Robot (автономный агент)

| Component | Тип | Описание |
|-----------|-----|----------|
| `Position` | (int,int)+float | Расположение |
| `Task` | type, target_id, progress | Текущая задача |
| `Health` | durability, breakdown_ticks | MTBF модель |
| `Capability` | build, repair, mine, transport | Что умеет робот |

### 🏗️ Infrastructure (инфраструктура)

| Component | Тип | Описание |
|-----------|-----|----------|
| `Connection` | from_node, to_node, type | Ребро графа |
| `Capacity` | max_vehicles, current | Пропускная способность |
| `Signal` | type, state | Семафор (L2) |
| `Health` | durability | Износ путей |

**Типы инфраструктуры:** road, rail, station, bridge, tunnel, power_line, pipeline

---

## Системы (L0 → порядок исполнения)

| # | System | Обрабатывает компоненты | Слой |
|---|--------|------------------------|------|
| 01 | InputSystem | внешние команды → WorldState | L0 |
| 02 | MovementSystem | Position+Speed+Route → перемещение | L0 |
| 03 | CargoSystem | CargoHold+Station → загрузка/разгрузка | L0 |
| 04 | ProductionSystem | Production → добыча/производство | L0 |
| 05 | EconomySystem | EconomyReport → цены, R, A(t) | L1 |
| 06 | MaintenanceSystem | Health → износ/поломки | L0 |
| 07 | PopulationSystem | Population+Demand+Satisfaction → рост | L0 |
| 08 | StabilitySystem | Satisfaction+Gini+Unemployment → stability | L1 |
| 09 | EventSystem | Automation/Policies/Disasters → события | L1 |
| 10 | SnapshotSystem | всё → WorldSnapshot | L0 |

---

## Конфигурация (config.json)

```json
{
  "seed": 42,
  "map": { "width": 128, "height": 96 },
  "r_efficiency": 0.85,
  "t_cycle_months": 3,
  "mtbf_hours": 5000,
  "k_repair": 3,
  "inflation_rate": 0.002,
  "tech_era": "steam",
  "governance": "free_market",
  "distribution_mode": "market",
  "difficulty": "normal"
}
```
