# Settings Module — Recipe (per FVW v8 §11.1)

**Module ID:** `oscar.settings`
**Module version:** 0.2.0
**Status:** Constitutional (per §01 mandatory artefacts)

---

## A. Product Description

**What this module is:** LLM provider selection + brain download + theme + replay

**UI structure:** See C8 Shape Matrix in codex.

**States:** Module-specific.

**Pedagogical section (P1):** This module is part of Oscar's sovereign runtime.

---

## B. Structural Contract

### B.0 Reconstruction Mode Declaration (per §33, §33.5)

- **Mode:** Sovereign SPA Mode (per DO-001)
- **Target runtime:** React 18 + TypeScript + Vite
- **Module file extension:** .tsx + .ts
- **State management:** React hooks
- **Theme tokens:** CSS custom properties

### B.1 Inputs/Outputs

Module-specific. See codex.md C1 for full inventory.

### B.2 Interface Contract (R5)

Module-specific.

### B.3 Module Boundaries

Module OWNS: files in `app/src/settings/`

Module does NOT own: other modules' directories.

Module may import from:
- self (`./`, `../`)
- React, react-router-dom (per `package.json`)
- npm packages (Vite-compatible)

Module must NOT import from:
- Any FVS / `@fvs/*` package (sovereignty)
- Any Mantine package (Sovereign SPA Mode)

### B.4 Swap Test Instructions (R6)

To swap this module for an alternative implementation:
1. Satisfy the same codex.md contract (C1-C9)
2. Pass the same App-VP tests

### B.5 Portability Contract (P4)

Per §34 engine-agnostic truth: this Recipe Book describes behaviour without committing to React.

---

## C. Reconstruction Notes

### C.1 Evidence (source-line citations)

See `pact/extraction/runtime-inventory.md` for runtime inventory.

### C.2 Coverage Matrix Entries

See `pact/recipes/settings/coverage-matrix.md`.

### C.3 Visual Anchors

Module-specific.

### C.4 Behavioural Anchors

Module-specific.

---

## END OF RECIPE.MD
