# Media Module — Codex (per FVW v8 §22)

**Module ID:** `oscar.media`
**Status:** Constitutional (per §38 + latent doctrine, locally ratified).

---

## C1 — Behaviour Inventory
- `app/src/media/MediaView.tsx` (capture/list/detail view)
- `app/src/data/models/Media.ts` (typed model)
- IDB store: `media` (added in C2)
- Repository: `mediaRepo`

## C2 — State Machine
Per artefact type; see model file.

## C3 — Side Effect List
- IDB writes via `mediaRepo`
- DOM updates in MediaView

## C4 — Input Validation Contract
- Required fields per model

## C5 — Failure Modes
- IDB quota exceeded → caught, reported

## C6 — User Simulation List
1. Open /media → see list
2. Create artefact → appears
3. Filter → list updates
4. Switch project → list updates

## C7 — Reproducibility Test
Deterministic.

## C8 — Shape Matrix (per §30)
| Surface | Modes | Chips | States |
|---|---|---|---|
| Media view | view, create | filter, add, delete | (per artefact) |

## C9 — State Shape Inventory
### C9.1 localStorage
None (per-artefact state only)
### C9.2 In-memory
- `mediaView` local state (form, filter)
### C9.3 IDB
- `media` store (added in C2, DB_VERSION 3 → 4)

---

## END OF MEDIA CODEX
