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

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

---

## C1 — Behaviour Inventory
- `app/src/voice/VoiceView.tsx` (capture/list/detail view)
- `app/src/data/models/Voice.ts` (typed model)
- IDB store: `voice` (added in C2)
- Repository: `voiceRepo`

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

## C3 — Side Effect List
- IDB writes via `voiceRepo`
- DOM updates in VoiceView

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

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

## C6 — User Simulation List
1. Open /voice → 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 |
|---|---|---|---|
| Voice view | view, create | filter, add, delete | (per artefact) |

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

---

## END OF VOICE CODEX
