# L4 — Layout tableur **Binôme :** `dev-layout` / `test-layout` **Zones :** `domain/layout` (déjà amorcé en L0), `application/layout`, `frontend/features/layout` **Dépendances amont :** L0, L1, L3 (cellules ↔ terminaux). ## Objectif Grille redimensionnable type tableur : N colonnes par ligne / M lignes par colonne indépendantes, **fusion de cellules**, persistance. ## Périmètre (DEV) - Compléter la logique de layout pure du domaine (si reliquats post-L0). - Use case `MutateLayout` (split/merge/resize/move) + persistance `.ideai/layout.json`. - UI : grille redimensionnable (drag des séparateurs), création/suppression de cellules, fusion, mapping cellule → terminal. ## Périmètre (TEST) - Domaine : opérations pures exhaustives (déjà couvertes L0, étendre cas combinés). - Application : `MutateLayout` persiste et publie `LayoutChanged`. - Front : logique de calcul des tailles de cellules (Vitest, pure) ; interactions de split/merge (RTL + mock). ## Definition of Done - `cargo test` (layout) + `vitest` verts ; manipulation visuelle de la grille fonctionnelle.