# Enums (Shared Contract) This document defines how enums are modeled, placed, and used across the system. Enums are frequently a source of architectural leakage. This contract removes ambiguity. ## 1) Core principle (non-negotiable) Enums represent knowledge. Knowledge must live where it is true. ## 2) Enum categories (strict) There are four and only four valid enum categories: 1. Domain enums 2. Application workflow enums 3. Transport enums (HTTP contracts) 4. UI enums (website-only) ## 3) Domain enums Definition: - business meaning - affects rules or invariants Placement: - `core/**` Rule: - domain enums MUST NOT cross a delivery boundary ## 4) Application workflow enums Definition: - internal workflow coordination - not business truth Placement: - `core/**` Rule: - workflow enums MUST remain internal ## 5) Transport enums Definition: - constrain HTTP contracts Placement: - `apps/api/**` and `apps/website/**` (as transport representations) Rules: - transport enums are copies, not reexports of domain enums - transport enums MUST NOT be used inside Core ## 6) UI enums Definition: - website presentation or interaction state Placement: - `apps/website/**` Rule: - UI enums MUST NOT leak into API or Core ## 7) Final rule If an enum crosses a boundary, it is in the wrong place.