# Map — Codex (per FVW v8 §22 + §43)

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

## C1 — Behaviour Inventory
- `app/src/map/MapView.tsx` (SVG renderer, no Leaflet dep — Sovereign SPA mode)
- `app/src/data/models/MapLayer.ts`

## C2 — State Machine
drawing: idle → placing points → saving → done

## C3 — Side Effect List
- IDB write to map_layers (DB v7)

## C4 — Input Validation Contract
- At least 1 point required to save
- Geometry type matches count

## C5 — Failure Modes
- No project → save disabled

## C6 — User Simulation List
1. Open /map → see layers
2. Pick mode (point/line/polygon)
3. Click on canvas → points accumulate
4. Save → layer added

## C7 — Reproducibility Test
Deterministic.

## C8 — Shape Matrix
| Surface | Modes | Chips | States |
|---|---|---|---|
| Map canvas | point, line, polygon | save, clear | drawing, idle |

## C9 — State Shape Inventory
### C9.1 localStorage
None
### C9.2 In-memory
- currentPath: coords (drawing in progress)
### C9.3 IDB
- map_layers store (DB v7)

---

## END OF MAP CODEX
