# PLAN — Fichier maître d'implémentation du projet HORIZON

> **Rôle de ce fichier.** C'est le point d'entrée unique. Un agent d'implémentation
> (Claude Code) lit ce fichier, applique le **PROTOCOLE D'EXÉCUTION** ci-dessous, puis
> enchaîne les tâches **T00 → T17 dans l'ordre, sans s'arrêter**, jusqu'à la mise en
> production. Chaque tâche est décrite dans son propre fichier `implementation/TNN-*.md`.
> La cible fonctionnelle et visuelle est le pack de conception de ce dépôt
> (`../01-wireframes`, `../02-design-system`, `../03-prototype`, `../04-documentation`) :
> le résultat déployé doit être **identique, sans aucun écart** (pixel perfect sur
> l'écran « Simulateur épargne », CA-08).

---

## PROTOCOLE D'EXÉCUTION (à respecter pour CHAQUE tâche, sans exception)

1. **Charger le contexte** : lire ce PLAN, `README.md` (git flow, conventions, qualité),
   et le fichier de la tâche courante `TNN-*.md`. Charger les secrets via
   `secrets.json` (copié depuis `secrets.example.json`, voir README §Secrets).
2. **Créer la branche de tâche** depuis `develop` :
   `git switch develop && git pull && git switch -c <type>/TNN-<résumé-court>`.
   Types : `feat`, `fix`, `chore`, `test`, `docs`, `ci`.
3. **Réaliser** les étapes du fichier de tâche, dans l'ordre. Ne jamais élargir le
   périmètre de la tâche. En cas d'ambiguïté : appliquer la décision par défaut
   documentée dans `../04-documentation/hypotheses.dc.html` et la consigner.
4. **Contrôles qualité** (bloquants) : exécuter localement l'ensemble des portes de
   qualité listées dans le fichier de tâche ET les portes globales du README
   (lint, typage strict, tests, RLS, sécurité, budgets). Tout rouge = corriger avant
   de continuer, jamais contourner un test.
5. **Auto-audit** : vérifier la **Définition de terminé (DoD)** de la tâche, point par
   point. Comparer le rendu au pack de conception de référence.
6. **Clôturer** : `commit` conventionnel → `push` → ouvrir une **Merge Request** vers
   `develop` → CI verte + revue → **merge** → **supprimer la branche de tâche**
   (locale et distante). Aucune branche temporaire ne survit à sa MR.
7. **Passer à la tâche suivante** immédiatement (retour à l'étape 2), jusqu'à T17.
8. **Jalons** : après T14 (front déployé sur recette) et après T17 (production),
   produire un rapport d'audit (checklist CA-01 à CA-12) dans `docs/audits/`.

> **Non-stop.** Ne pas attendre de validation humaine entre deux tâches, sauf blocage
> réel (secret manquant, décision métier absente non couverte par une décision par
> défaut). Dans ce cas : consigner le blocage dans `docs/journal.md`, appliquer la
> décision par défaut si elle existe, et continuer.

---

## GIT FLOW (rappel — détail dans README.md)

- **Deux branches permanentes** : `main` (production, protégée, déploiement sur étiquette)
  et `develop` (intégration continue → recette).
- **Branches temporaires** : une par tâche, courte, supprimée après merge.
- **Cycle immuable** : brancher depuis `develop` → travailler → MR → merge → supprimer
  la branche → rebrancher pour la tâche suivante. Le dépôt reste propre en permanence.

---

## SÉQUENCE DES TÂCHES (ordre non négociable)

La CI/CD est mise en place **en premier** (T01), avant toute ligne de produit.

| # | Fichier | Objet | Lots corpus |
|---|---------|-------|-------------|
| T00 | `T00-prerequis-secrets.md` | Comptes, secrets, profils de connexion, environnements | J | 
| T01 | `T01-depot-git-cicd.md` | Dépôt, groupe GitLab, git flow, **pipeline CI/CD complet** | L-01, C-04 |
| T02 | `T02-supabase-schema-seed.md` | Migration 0001 (schéma) + seed de démonstration | L-03 |
| T03 | `T03-supabase-rls.md` | Migration 0002 (RLS intégrale) + suite de tests de cloisonnement | L-04 |
| T04 | `T04-supabase-audit.md` | Migration 0003 (audit par déclencheurs) | L-05 |
| T05 | `T05-supabase-storage-s3.md` | Bucket privé « rapports », S3, URL signées | EF-071 |
| T06 | `T06-auth-roles-sessions.md` | Authentification, TOTP, sessions 30 min, rôles | L-06 |
| T07 | `T07-design-system.md` | Tokens `--hz-*`, 12 composants Hz*, états | L-07, L-08 |
| T08 | `T08-coeur-calcul.md` | Moteur de projection pur, cas B-01 à B-06, 90 %+ | L-09 |
| T09 | `T09-fonctions-edge.md` | simuler, echeance-transition, export-pdf, generer-occurrences | L-10, L-17, L-22, L-23 |
| T10 | `T10-ecran-simulateur.md` | Écran de référence pixel perfect + tests visuels | L-11 à L-19 |
| T11 | `T11-modules-peripheriques.md` | Tableau de bord, Clients, Portefeuilles, Documents, Conformité, Paramètres | L-24 à L-30 |
| T12 | `T12-recherche-notifications.md` | Recherche globale, notifications temps réel | L-20, L-21 |
| T13 | `T13-accessibilite-formats.md` | RGAA 4 AA, clavier, formats français | L-31 |
| T14 | `T14-front-cloudflare.md` | Build SPA, déploiement Cloudflare Pages, en-têtes, secrets | D-11 |
| T15 | `T15-tests-recette.md` | e2e, visuel, charge k6, VABF contradictoire | L-32, L-35 |
| T16 | `T16-observabilite-run.md` | Sentry, SLO, alertes, runbooks, PITR | L-34, L-38 |
| T17 | `T17-mise-en-production.md` | Étiquette, fumée, ouverture progressive, VSR | L-37 |

**Critère de fin global** : les 12 critères d'acceptation CA-01 à CA-12
(`../04-documentation/vision-perimetre.dc.html`) sont démontrés et tracés ; l'application
déployée est identique au pack de conception, sans écart.
