# /client — Godot 4.7 game client

GDScript. **Holds ALL game state and ALL game rules** (charter §2, §4). The AI never mutates state; the client validates and applies everything.

**Open:** Godot 4.7, import this folder as the project (`project.godot`).

## Responsibilities

- All state: stats, HP/MP, inventory, quest flags, Luck, disposition/approval (§8, §9)
- All rules: deterministic combat, Luck branch-selection, move validation (§6, §7, §10)
- The **canon log** — compact structured fact list, code-maintained, injected into every call (§11)
- Talks to `/api` over HTTP. **No API key, ever.** Knows one base URL + role endpoints (§4)
- Degrades to authored fallback text (from [`/content/fallback`](../content/fallback)) when the API is down (§13)

## Key rule — never do this (charter §2)

If an AI response directly sets a variable that persists, stop. Parse → validate → apply or discard.

See [`docs/`](docs/) for scene structure, input model, and combat wiring.
