# ✅ Vérification humaine — `dev-verif-8` (résolution des points "à confirmer")

**Branche :** `dev-verif-8` (depuis `dev`, après merge des lots 1→7)
**Lot :** Décisions post-audit + correctifs vérifiables sans navigateur
**Date :** 2026-06-01

## Décisions appliquées

| # | Sujet | Décision | Fait |
|---|---|---|---|
| 1 | Email security.txt | `captain@elevaseo.com` | ✅ |
| 2 | Contraste texte orange | `text-orange-600` → `text-orange-700` (texte only) | ✅ 71 occ. / 34 fichiers |
| 3 | Footer headings | h3 → h2 (corrige saut h1→h3) | ✅ |
| 4 | form-errors a11y | aria-invalid + aria-describedby + role=alert | ✅ |
| 5 | Breadcrumbs landings | visible + BreadcrumbList JSON-LD (10 pages) | ✅ |
| — | CSP | **rester Report-Only** (ta QA navigateur avant bascule) | inchangé |

## Changements (fichiers)

- `app/api/wellknown/security/route.ts` — `Contact: mailto:captain@elevaseo.com`.
- **34 fichiers** sous `app/` + `components/` — `text-orange-600` → `text-orange-700` (remplacement mécanique ; `bg-`/`border-orange-600` et `outline-orange-600` **non touchés**).
- `components/footer.tsx` — les 2 `<h3>` de colonnes → `<h2>`.
- `components/contact/contact-form.tsx` — par champ (name, company, email, message) : `aria-invalid` + `aria-describedby` + message d'erreur `id` + `role="alert"` ; toasts succès/erreur : `role` + `aria-live`.
- `components/services/landing-breadcrumb.tsx` — **nouveau** composant partagé (fil visible + JSON-LD).
- `components/services/index.ts` — export du composant.
- **10 landings** (`secteurs/*` ×4, `solutions/*` ×3, `expertise/*` ×3) — `<LandingBreadcrumb>` ajouté (Accueil > Section > Page ; "Section" non liée car pas de page index).

## Points "à confirmer" RÉSOLUS par investigation (aucune action)

- **color-scheme "light"** : correct, pas de dark mode (pas de next-themes, `dark:` = CVA inerte, vars CSS light/dark identiques).
- **canonical** : déjà large (tous les templates majeurs le posent) + header `Link: canonical` (middleware). Helper centralisé non nécessaire.
- **heading /contact** : le form n'a qu'un h1 ; les h3 venaient du footer → corrigés (h2).
- **breadcrumb monté** : utilisé dans `blog-layout` + outils ; l'edit contraste (dev-verif-5) s'applique.

## Preuves (build prod local :3001)

```
/.well-known/security.txt → Contact: mailto:captain@elevaseo.com  ✓
home HTML : 'Liens utiles' en <h2>  ✓ ; aucun text-orange-600  ✓
/secteurs/industrie/ : <nav aria-label="breadcrumb"> + BreadcrumbList JSON-LD + Accueil>Secteurs>Industrie  ✓
pnpm build : exit 0
```
(form-errors a11y : conditionnel à une soumission en erreur → validé par build + revue de code ; `curl` deny-listé → vérifs via `python3 urllib`.)

## ⚠️ À confirmer / vérifier visuellement

- [ ] **Position des breadcrumbs landings** : rendus **au-dessus du hero** (`max-w-6xl px-6 pt-6`). Vérifier le rendu visuel ; déplacer sous le hero si préféré.
- [ ] **Contraste orange** : 71 remplacements mécaniques ; quelques cas texte-sur-fond-sombre/large seront légèrement sur-assombris (inoffensif). Spot-check visuel.
- [ ] **form-errors** : soumettre le formulaire vide → vérifier annonce lecteur d'écran + `aria-invalid`.
- [ ] **Email security.txt** : `captain@elevaseo.com` — confirmer que la boîte reçoit/redirige.

## Reste (chantiers, hors lot)

- CSP bascule enforce (après ta QA console navigateur).
- **Core Web Vitals / perf** (`dev-verif-9`) : LCP, CLS outil, critical-CSS, self-host police, cache-control.
- Vidéo hero reduced-motion (non retenue), data-tables MDX, favicon SVG, breadcrumbs visibles sur d'autres types de pages.

## Décision

- [ ] **Lot validé** → mergeable dans `dev`.
- [ ] Corrections demandées :

> _Notes du vérificateur :_
