veza/veza-docs/audit/AUDIT_05_ROADMAP_v1.0.md
senke 0e4117f028 docs: integrate audit roadmap into VEZA_VERSIONS_ROADMAP — v0.12.6.1 DONE, 14 versions added
- Mark v0.12.6.1 (pentest remediation 30/30) as DONE
- Add 14 new versions from audit: v0.12.6.2→v1.0.0-rc1
- Update tracking table with priorities P0→P3
- Update v0.12.6 checkboxes (all findings now resolved)
- Add Phase P7 (Conformité) and Validation phases
- Update AUDIT_05_ROADMAP_v1.0.md to reflect completed remediation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:34:52 +01:00

968 lines
37 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AUDIT_05_ROADMAP_v1.0.md -- Roadmap Exhaustive vers la v1.0
**Date** : 2026-03-11
**Auditeur** : Claude Opus 4.6
---
## 0. PRINCIPES DE CETTE ROADMAP
Cette roadmap remplace la section TODO du `VEZA_VERSIONS_ROADMAP.md` existant. Elle est construite a partir du diagnostic Phase 4 et couvre **tous les ecarts identifies** entre le code actuel et les specifications ORIGIN, organises par priorite.
**Regle cardinale** : Rien ne passe en v1.0 tant que tous les criteres GO/NO-GO ne sont pas satisfaits.
**Ordre de priorite** :
- **P0** : Bloquants securite — sans resolution, aucun deploiement possible
- **P1** : Features manquantes bloquant v1.0 — versions TODO du roadmap + tests ethiques
- **P2** : Conformite — ecarts spec/code qui n'empechent pas le fonctionnement mais violent les ORIGIN
- **P3** : Polish — features partielles et ameliorations d'experience
- **P4** : Nice-to-have — optionnel pour v1.0, peut etre reporte en v1.1+
---
## 1. TABLEAU DE BORD — ETAT AVANT ROADMAP
```
VERSIONS EXISTANTES
DONE : 27 versions (v0.9.1 → v0.12.6.1)
TODO : 3 versions (v0.12.7, v0.12.8, v1.0.0)
ECARTS DIAGNOSTIQUES
P0 Bloquants securite : 3 ecarts (~5j)
P1 Features bloquantes : 7 ecarts (~15j)
P2 Conformite : 8 ecarts (~14j)
P3 Polish : 10 ecarts (~20j)
P4 Nice-to-have : 5 ecarts (~10j)
TOTAL ECARTS : 33
EFFORT TOTAL ESTIME : 50-65 jours-dev
CRITERES NON COCHES DANS VERSIONS DONE
v0.9.1 : 1 (staging deploy)
v0.9.2 : 1 (pentest partiel)
v0.9.5 : 1 (tests pass)
v0.9.8 : 1 (coverage 70%)
v0.10.0 : 2 (perf, staging)
v0.10.1 : 1 (test biais)
v0.10.2 : 1 (test 0-plays)
v0.11.0 : 1 (Lighthouse)
v0.12.6 : 1 (3 HIGH findings)
TOTAL : 10 criteres non coches
```
---
## 2. NOUVELLES VERSIONS — VUE D'ENSEMBLE
| # | Version | Nom | Priorite | Effort | Prerequisite | GO/NO-GO |
|---|---------|-----|----------|--------|--------------|----------|
| 1 | v0.12.6.1 | Correctifs Pentest (30/30 findings) | P0 | 5-8j | v0.12.6 | ✅ DONE 2026-03-12 |
| 2 | v0.12.6.2 | Correctifs Securite Spec | P0 | 1.5j | v0.12.6 | Securite |
| 3 | v0.12.6.3 | Nettoyage Code Fantome | P1 | 1-2j | v0.12.6 | Ethique |
| 4 | v0.12.7 | Internationalisation (i18n) | P1 | 3-4j | v0.12.5 | Qualite |
| 5 | v0.12.8 | Documentation & API Publique | P1 | 3-4j | v0.12.6 | Qualite |
| 6 | v0.12.9 | Tests Ethiques & Coverage CI | P1 | 2-3j | v0.12.6.3 | Ethique+Qualite |
| 7 | v0.13.0 | Conformite Features Partielles | P2 | 5-7j | v0.12.9 | Qualite |
| 8 | v0.13.1 | Conformite Audio & Player | P2 | 4-5j | v0.13.0 | Qualite |
| 9 | v0.13.2 | Consolidation Design System | P2 | 2-3j | v0.13.0 | Qualite |
| 10 | v0.13.3 | Polish Securite Avancee | P3 | 3-4j | v0.13.0 | Securite |
| 11 | v0.13.4 | Polish Audio & Player | P3 | 3-4j | v0.13.1 | — |
| 12 | v0.13.5 | Polish Marketplace & Compliance | P3 | 3-4j | v0.13.0 | Business |
| 13 | v0.14.0 | Validation Runtime & Staging | P0-P1 | 3-5j | v0.13.2 | Stabilite+Perf |
| 14 | v1.0.0-rc1 | Release Candidate 1 | — | 2-3j | Tout | Tout |
| 15 | v1.0.0 | Release Stable | — | 1-2j | v1.0.0-rc1 | Tout |
**Effort total estime : 40-55 jours-dev**
**Duree calendaire estimee (1 dev) : 10-14 semaines**
**Duree calendaire estimee (2 devs) : 6-8 semaines**
---
## 3. DETAIL DES VERSIONS
---
### v0.12.6.1 — Correctifs Pentest (30/30 findings)
**Priorite** : P0 — BLOQUANT SECURITE
**Statut** : ✅ DONE
**Complete le** : 2026-03-12
**Effort** : 3-5 jours
**Prerequisite** : v0.12.6
**GO/NO-GO** : `Securite → Pentest externe valide (0 finding critique/haut ouvert)`
**Contexte** : Le pentest v0.12.6 a identifie 30 findings (2 CRIT, 10 HIGH, 12 MEDIUM, 6 LOW). Tous les 30 ont ete corriges dans 4 commits. La matrice de remediation (REMEDIATION_MATRIX_v0.12.6.md) montre 30/30 corriges.
**Taches**
- [x] **TASK-PFIX-001** : Corriger CRIT-001 — IDOR conversations privees (CVSS 9.1)
- [x] **TASK-PFIX-002** : Corriger CRIT-002 — Metriques de popularite publiques (CVSS 5.3)
- [x] **TASK-PFIX-003** : Corriger les 10 findings HIGH
- [x] **TASK-PFIX-005** : Corriger les 12 findings MEDIUM
- [x] **TASK-PFIX-006** : Corriger les 6 findings LOW
**Criteres d'acceptation**
- [x] Les 2 findings CRITIQUES corriges (IDOR + metriques publiques)
- [x] Les 10 findings HIGH corriges (race conditions, TrustedProxies, RGPD, RTMP, etc.)
- [x] Les 12 findings MEDIUM corriges (CSP, pagination, WebSocket, k-anonymity, etc.)
- [x] Les 6 findings LOW corriges (password policy, Docker pins, dotenv, Elasticsearch, context)
- [x] 0 finding critique ou haut ouvert
---
### v0.12.6.2 — Correctifs Securite Spec
**Priorite** : P0 — BLOQUANT SECURITE
**Effort** : 1.5 jours
**Prerequisite** : v0.12.6
**GO/NO-GO** : `Securite → JWT RS256 en production` + regles ORIGIN
**Contexte** : Deux ecarts de conformite securite identifies entre le code et ORIGIN_SECURITY_FRAMEWORK.md.
**Taches**
- [ ] **TASK-SFIX-001** : Forcer MFA pour roles admin et moderator
- Modifier le middleware auth pour exiger MFA sur les roles `admin` et `moderator`
- Ajouter un ecran de setup MFA obligatoire au premier login admin/moderator
- Ref: ORIGIN_SECURITY_FRAMEWORK.md Regle 5
- Fichiers: `backend/internal/middleware/auth_middleware.go`, `backend/internal/auth/mfa_enforcement.go`
- [ ] **TASK-SFIX-002** : Aligner refresh token TTL sur la spec (30j → 7j)
- Modifier la configuration JWT pour fixer le refresh token TTL a 7 jours
- Invalider les refresh tokens existants avec TTL > 7j (migration)
- Ref: ORIGIN_SECURITY_FRAMEWORK.md Regle 4
- Fichiers: `backend/internal/auth/jwt_service.go`, `backend/configs/`
- [ ] **TASK-SFIX-003** : Tests de validation securite spec
- Test: MFA est requis pour tout endpoint admin/moderator
- Test: refresh token expire apres 7 jours exactement
- Test: access token expire apres 15 minutes
**Criteres d'acceptation**
- [ ] Connexion admin sans MFA → redirige vers setup MFA obligatoire
- [ ] Connexion moderator sans MFA → redirige vers setup MFA obligatoire
- [ ] `jwt_service.go` : refresh token TTL = 7 jours (604800 secondes)
- [ ] Tests unitaires passent pour les 2 correctifs
**Risques**
- Impact sur les admins existants qui n'ont pas encore configure MFA
- Migration des tokens existants a gerer proprement
---
### v0.12.6.3 — Nettoyage Code Fantome
**Priorite** : P1
**Effort** : 1-2 jours
**Prerequisite** : v0.12.6
**GO/NO-GO** : `Ethique → Aucune donnee comportementale`, `Ethique → Audit UX anti-dark-patterns`
**Contexte** : Le diagnostic a identifie 9 modules "fantomes" — du code present dans le repo mais non specifie dans les ORIGIN. Certains (`contest`, `voting_system`, `production_challenge`) pourraient constituer de la gamification interdite. `playback_abtest_service.go` pose un probleme ethique potentiel.
**Taches**
- [ ] **TASK-GHOST-001** : Auditer les modules fantomes
- Verifier si `contest/`, `sound_design_contest/`, `production_challenge/`, `voting_system/` sont actifs (routes enregistrees? appeles quelque part?)
- Si actifs et gamification → desactiver/supprimer
- Si inactifs → supprimer le code mort
- Fichiers: `backend/internal/api/contest/`, `backend/internal/api/sound_design_contest/`, `backend/internal/api/production_challenge/`, `backend/internal/api/voting_system/`
- [ ] **TASK-GHOST-002** : Evaluer et traiter `playback_abtest_service.go`
- Verifier si le A/B testing audio est actif
- S'il manipule l'experience utilisateur sans consentement → supprimer
- S'il est desactive → supprimer le code mort
- Ref: ORIGIN_UI_UX_SYSTEM.md §13 anti-dark-patterns
- [ ] **TASK-GHOST-003** : Traiter les modules non-spec utiles
- `listing/handler.go` et `offer/handler.go` : determiner si lies au marketplace (F226-F275)
- `graphql/handler.go` : ORIGIN ne specifie que REST → documenter ou supprimer
- `grpc/handler.go` : spec dans ORIGIN section 9 → conserver, documenter
- [ ] **TASK-GHOST-004** : Verifier absence de code mort residuel
- Confirmer 0 traces AI/ML, blockchain, gamification apres nettoyage
- grep final sur les termes interdits
**Criteres d'acceptation**
- [ ] Aucun module de gamification actif dans le code
- [ ] `playback_abtest_service.go` traite (supprime ou desactive avec documentation)
- [ ] Code mort fantome supprime ou documente
- [ ] grep confirme 0 traces des categories ethiquement exclues
**Risques**
- Certains modules fantomes pourraient etre utilises par des routes actives → regression possible
---
### v0.12.7 — Internationalisation (i18n)
**Priorite** : P1 — BLOQUE v1.0
**Effort** : 3-4 jours
**Prerequisite** : v0.12.5
**GO/NO-GO** : `Qualite → CI/CD verte`
**Contexte** : Version TODO existante dans le roadmap. L'internationalisation n'est pas implementee. Le spec exige FR/EN/ES minimum.
**Taches**
- [ ] **TASK-I18N-001** : Infrastructure i18n frontend
- Installer et configurer `react-i18next` ou `next-intl`
- Creer la structure de fichiers de traduction `locales/{fr,en,es}/`
- Configurer le detection de langue (navigator, cookie, URL param)
- Fichiers: `apps/web/src/i18n/`, `apps/web/src/locales/`
- [ ] **TASK-I18N-002** : Extraction des chaines
- Parcourir tous les composants React et extraire les chaines hardcodees
- Remplacer par des appels `t('key')` ou equivalent
- Generer les fichiers de traduction FR (source), EN, ES
- [ ] **TASK-I18N-003** : Commutateur de langue
- Composant UI de selection de langue (dropdown header)
- Persistence du choix (localStorage / cookie)
- Commutation sans rechargement de page (reactif)
- [ ] **TASK-I18N-004** : i18n backend (messages d'erreur)
- Internationaliser les messages d'erreur API (`Accept-Language` header)
- Messages de validation, emails transactionnels
- Fichiers: `backend/internal/i18n/`, `backend/pkg/apierror/`
- [ ] **TASK-I18N-005** : Tests i18n
- Test: toutes les cles de traduction existent dans les 3 langues
- Test: commutation de langue fonctionne sans rechargement
- Test: fallback vers EN si cle manquante
**Criteres d'acceptation**
- [ ] Interface 100% traduite en FR/EN/ES
- [ ] Commutation de langue sans rechargement
- [ ] Messages d'erreur API internationalises
- [ ] 0 chaine hardcodee dans les composants React
**Risques**
- Volume de chaines a extraire potentiellement important (~1900 fichiers TSX)
- Traductions ES a faire (ou placeholders acceptables pour v1.0)
---
### v0.12.8 — Documentation & API Publique
**Priorite** : P1 — BLOQUE v1.0
**Effort** : 3-4 jours
**Prerequisite** : v0.12.6
**GO/NO-GO** : `Qualite → CI/CD verte`
**Contexte** : Version TODO existante. Module 24 Developpeurs & API (F586-F600) est tres partiel. ORIGIN exige une documentation API publique navigable.
**Taches**
- [ ] **TASK-APIDOC-001** : Generation OpenAPI / Swagger
- Annoter les handlers Go existants avec des commentaires Swagger (swag/swaggo)
- Generer `swagger.json` / `openapi.yaml`
- Servir Swagger UI sur `/api/docs`
- Fichiers: `backend/cmd/`, `backend/internal/handlers/`, routes
- [ ] **TASK-APIDOC-002** : Gestion des cles API developpeurs
- CRUD de cles API pour developpeurs tiers
- Modele: `api_keys` (id, user_id, key_hash, name, scopes, rate_limit, created_at, expires_at)
- Middleware de validation de cle API
- Fichiers: `backend/internal/models/api_key.go`, `backend/internal/handlers/api_key_handler.go`
- [ ] **TASK-APIDOC-003** : Rate limiting API publique
- Rate limits specifiques par cle API (configurable)
- Headers `X-RateLimit-*` sur les reponses
- Ref: ORIGIN_API_SPECIFICATION.md §rate limits
- [ ] **TASK-APIDOC-004** : Page portail developpeurs frontend
- Page de gestion des cles API
- Documentation interactive embeddee (Swagger UI)
- Fichiers: `apps/web/src/pages/developers/`
- [ ] **TASK-APIDOC-005** : Tests API publique
- Test: Swagger UI accessible et a jour
- Test: cle API valide → acces OK, cle invalide → 401
- Test: rate limiting par cle API fonctionne
**Criteres d'acceptation**
- [ ] Documentation API navigable en ligne (`/api/docs`)
- [ ] Un developpeur externe peut creer une cle et consommer l'API
- [ ] Rate limiting par cle API fonctionnel
- [ ] OpenAPI spec generee automatiquement a jour
**Risques**
- Annotation Swagger de ~70+ route files = effort significatif
- Scope de "API publique" a definir (quels endpoints exposer?)
---
### v0.12.9 — Tests Ethiques & Coverage CI
**Priorite** : P1
**Effort** : 2-3 jours
**Prerequisite** : v0.12.6.3
**GO/NO-GO** : `Ethique → Algorithme de decouverte auditable`, `Qualite → Coverage tests >= 70%`
**Contexte** : Les tests de biais ethiques exiges par les specs sont absents. La coverage n'est ni mesuree ni enforcee en CI.
**Taches**
- [ ] **TASK-ETH-001** : Test de biais artistes emergents (v0.10.1 non coche)
- Ecrire un test qui verifie que la decouverte ne defavorise pas les artistes avec 0 ou peu de contenus
- Le feed/decouverte doit inclure des artistes emergents proportionnellement
- Ref: ORIGIN_FEATURES_REGISTRY.md, criteres ethiques
- Fichiers: `backend/internal/service/discovery_service_test.go`
- [ ] **TASK-ETH-002** : Test recherche artiste 0 plays (v0.10.2 non coche)
- Ecrire un test qui verifie qu'un artiste avec 0 plays apparait dans les resultats de recherche par nom
- La recherche ne doit pas filtrer/penaliser par popularite
- Fichiers: `backend/internal/service/search_service_test.go`
- [ ] **TASK-ETH-003** : Documenter l'algorithme de decouverte
- Ecrire un document expliquant le fonctionnement de la decouverte
- Confirmer: chronologique + tags/genres declaratifs, JAMAIS de classement par popularite
- Fichier: `veza-docs/DISCOVERY_ALGORITHM.md`
- [ ] **TASK-COV-001** : Configurer coverage CI
- Ajouter `go test -coverprofile` dans le workflow CI
- Ajouter quality gate: coverage >= 70% sur nouveau code
- Publier le rapport coverage (badge, artefact)
- Fichiers: `.github/workflows/ci.yml`
- [ ] **TASK-COV-002** : Augmenter coverage Rust
- Ajouter des tests unitaires au stream server Rust (actuellement 25 fichiers)
- Cible: au moins 50% de coverage Rust
- Configurer `cargo tarpaulin` en CI
- [ ] **TASK-COV-003** : Rapport coverage global
- Agreger Go + Rust + Frontend dans un rapport unique
- Quality gate globale >= 70%
**Criteres d'acceptation**
- [ ] Test de biais artistes emergents PASSE
- [ ] Test recherche artiste 0 plays PASSE
- [ ] Algorithme de decouverte documente
- [ ] Coverage mesuree et enforcee en CI (>= 70% Go, >= 50% Rust)
- [ ] Badge coverage visible dans le repo
**Risques**
- La coverage Rust peut etre difficile a monter rapidement (de ~40% a 50%)
- Les tests de biais peuvent reveler des problemes dans la logique de decouverte
---
### v0.13.0 — Conformite Features Partielles
**Priorite** : P2
**Effort** : 5-7 jours
**Prerequisite** : v0.12.9
**GO/NO-GO** : `Qualite → 0 linting error`
**Contexte** : ~83 features sont marquees PARTIEL dans le diagnostic. Cette version cible les features partielles les plus impactantes pour la conformite.
**Taches**
- [ ] **TASK-CONF-001** : Completer 2FA SMS (F020)
- Implementer l'envoi de codes SMS via un provider (Twilio ou equivalent)
- Frontend: ecran de saisie du code SMS
- Ref: ORIGIN_FEATURES_REGISTRY.md F020
- Fichiers: `backend/internal/auth/sms_service.go`, `apps/web/src/pages/auth/`
- [ ] **TASK-CONF-002** : Implementer CAPTCHA anti-bot (F029)
- Integrer hCaptcha ou Turnstile (pas Google reCAPTCHA pour la vie privee)
- Proteger: registration, login, password reset, contact forms
- Ref: ORIGIN_FEATURES_REGISTRY.md F029
- Fichiers: `apps/web/src/components/captcha/`, `backend/internal/middleware/captcha_middleware.go`
- [ ] **TASK-CONF-003** : Completer les features auth partielles
- F010: tester logout all devices completement
- F013: verifier password history (empecher reutilisation)
- F014: ajouter validation force password cote backend
- F018: completer notification changement password
- F021: tester 2FA backup codes completement
- F024: implementer notification connexion inhabituelle
- F026: completer historique connexions avec details
- [ ] **TASK-CONF-004** : Completer les features fichiers partielles
- F075: verifier integration ClamAV complete
- F080: evaluer watermarking (si requis pour v1.0)
- [ ] **TASK-CONF-005** : Resoudre la double structure handlers
- Migrer les handlers restants de `internal/handlers/` vers `internal/core/*/handler.go`
- Ou documenter la coexistence et nettoyer les doublons
- Ref: diagnostic §5.1
- [ ] **TASK-CONF-006** : Nettoyer TODO/FIXME frontend
- Traiter les 43 TODO/FIXME identifies dans le frontend
- Resoudre ou convertir en issues trackees
- Cible: < 10 TODO/FIXME restants
**Criteres d'acceptation**
- [ ] F020 2FA SMS fonctionnel de bout en bout
- [ ] F029 CAPTCHA actif sur registration et login
- [ ] Features auth partielles completees (F010, F013, F014, F018, F021, F024, F026)
- [ ] Structure handlers unifiee ou nettoyee
- [ ] TODO/FIXME < 10
**Risques**
- Integration SMS provider necessite un compte et des couts
- Migration handlers peut causer des regressions si routes mal recablees
---
### v0.13.1 — Conformite Audio & Player
**Priorite** : P2
**Effort** : 4-5 jours
**Prerequisite** : v0.13.0
**GO/NO-GO** : `Qualite`
**Contexte** : Plusieurs features du module 4 (Streaming Audio, F106-F150) sont partielles ou absentes.
**Taches**
- [ ] **TASK-AUDIO-001** : Gapless playback (F116)
- Implementer la lecture sans interruption entre deux tracks
- Utiliser Web Audio API pour le pre-buffering du track suivant
- Fichiers: `apps/web/src/components/player/`, stream server
- [ ] **TASK-AUDIO-002** : Crossfade (F117) si absent
- Verifier l'etat actuel du crossfade
- Implementer le fondu enchaine configurable (1-12s)
- [ ] **TASK-AUDIO-003** : Normalisation audio (F118) si absent
- Normalisation du volume entre tracks (ReplayGain ou equivalent)
- Cote serveur (Rust) ou cote client (Web Audio API)
- [ ] **TASK-AUDIO-004** : Completer les features player partielles
- Verifier F106-F115 (play, pause, seek, volume, queue, shuffle, repeat, progress, waveform)
- Completer les tests pour chaque feature player
**Criteres d'acceptation**
- [ ] Gapless playback fonctionne entre deux tracks consecutifs
- [ ] Crossfade configurable
- [ ] Pas de saut de volume entre tracks
- [ ] Toutes les features player core testees
**Risques**
- Gapless playback complexe sur mobile/PWA (limitations navigateur)
- Performance Web Audio API a valider
---
### v0.13.2 — Consolidation Design System
**Priorite** : P2
**Effort** : 2-3 jours
**Prerequisite** : v0.13.0
**GO/NO-GO** : `Qualite → 0 linting error`
**Contexte** : Le package `packages/design-system/` est quasi vide (1 fichier). Les composants SUMI sont dans `apps/web/src/components/ui/`. Cela cree de la duplication et empeche la reutilisation entre apps.
**Taches**
- [ ] **TASK-DS-001** : Migrer les composants SUMI vers le design system
- Deplacer les composants UI de base de `apps/web/src/components/ui/` vers `packages/design-system/src/`
- Exporter proprement depuis `packages/design-system/`
- Mettre a jour les imports dans `apps/web/`
- [ ] **TASK-DS-002** : Design tokens
- Extraire les tokens (couleurs, typo, spacing, shadows, radius) dans le package
- S'assurer que dark mode et light mode utilisent les memes tokens
- Ref: ORIGIN_UI_UX_SYSTEM.md §design tokens
- [ ] **TASK-DS-003** : Documentation Storybook
- Verifier que les stories existantes couvrent les composants principaux
- Ajouter les stories manquantes pour les composants migres
**Criteres d'acceptation**
- [ ] `packages/design-system/` contient les composants UI de base
- [ ] Design tokens centralises et utilises par toutes les apps
- [ ] Stories a jour pour les composants principaux
**Risques**
- Nombre de composants a migrer potentiellement important
- Risque de casser les imports dans l'app web
---
### v0.13.3 — Polish Securite Avancee
**Priorite** : P3
**Effort** : 3-4 jours
**Prerequisite** : v0.13.0
**GO/NO-GO** : Partiel (`Securite`)
**Taches**
- [ ] **TASK-SECADV-001** : Passkeys/WebAuthn (F022)
- Implementer l'enregistrement et l'authentification par passkeys
- Utiliser la Web Authentication API
- Backend: `backend/internal/auth/webauthn_service.go`
- Frontend: `apps/web/src/pages/auth/passkeys/`
- [ ] **TASK-SECADV-002** : Password configurable policy (F015)
- Politique de mot de passe configurable par l'admin
- Longueur min, complexite, expiration
- [ ] **TASK-SECADV-003** : Geolocalisation connexions (F025)
- Detection IP pays via MaxMind GeoIP ou equivalent
- Notification si connexion depuis un nouveau pays
- Affichage dans l'historique des sessions
- [ ] **TASK-SECADV-004** : Password expiration (F016) optionnel
- Politique d'expiration configurable
- Notification avant expiration
**Criteres d'acceptation**
- [ ] WebAuthn fonctionnel (enregistrement + login)
- [ ] Geolocalisation des connexions affichee
- [ ] Politique de mot de passe configurable
**Risques**
- WebAuthn complexe a implementer correctement
- GeoIP necessite une base de donnees (licence MaxMind)
---
### v0.13.4 — Polish Audio & Player
**Priorite** : P3
**Effort** : 3-4 jours
**Prerequisite** : v0.13.1
**GO/NO-GO** :
**Taches**
- [ ] **TASK-APLSH-001** : Picture-in-picture (F121)
- Implementer le mode picture-in-picture pour le player
- Utiliser l'API Picture-in-Picture du navigateur
- [ ] **TASK-APLSH-002** : Chromecast support (F124) optionnel v1.0
- Integrer le SDK Cast
- Streaming vers Chromecast
- [ ] **TASK-APLSH-003** : AirPlay support (F125) optionnel v1.0
- Streaming vers appareils AirPlay
- [ ] **TASK-APLSH-004** : Spectrogram/Equalizer visualiseurs
- Visualisation audio temps reel (Web Audio API AnalyserNode)
- Equalizer graphique basique
**Criteres d'acceptation**
- [ ] Picture-in-picture fonctionne sur les navigateurs supportes
- [ ] Au moins un visualiseur audio basique
**Risques**
- Chromecast/AirPlay dependent des SDKs proprietaires
- Peut etre reporte en v1.1 sans bloquer le GO/NO-GO
---
### v0.13.5 — Polish Marketplace & Compliance
**Priorite** : P3
**Effort** : 3-4 jours
**Prerequisite** : v0.13.0
**GO/NO-GO** : `Business → Flux de paiement teste E2E`
**Taches**
- [ ] **TASK-MKT-001** : KYC vendeurs (F055)
- Verification d'identite pour les vendeurs marketplace
- Integration avec un service KYC (Stripe Identity ou equivalent)
- Fichiers: `backend/internal/service/kyc_service.go`
- [ ] **TASK-MKT-002** : Validation E2E flux de paiement
- Test complet: creation produit achat paiement download
- Test avec Hyperswitch en mode test
- Documenter le flux
- [ ] **TASK-MKT-003** : Validation E2E flux de payout createur
- Test complet: ventes accumulees seuil $50 payout automatique
- Documenter le flux
- [ ] **TASK-MKT-004** : Page support accessible
- Page de contact / helpdesk
- Au minimum: formulaire de contact email
- Ref: GO/NO-GO `Business → Support accessible`
**Criteres d'acceptation**
- [ ] KYC vendeurs fonctionnel
- [ ] Flux paiement teste E2E
- [ ] Flux payout teste E2E
- [ ] Page support accessible
**Risques**
- KYC necessite un provider externe avec des couts
- Tests E2E paiement necessitent un environnement Hyperswitch fonctionnel
---
### v0.14.0 — Validation Runtime & Staging
**Priorite** : P0-P1
**Effort** : 3-5 jours
**Prerequisite** : v0.13.2
**GO/NO-GO** : `Stabilite`, `Performance`
**Contexte** : De nombreux criteres GO/NO-GO ne peuvent etre valides que sur un environnement live (staging). Cette version est dediee aux validations runtime.
**Taches**
- [ ] **TASK-STAG-001** : Deploiement staging
- Deployer l'ensemble de la stack sur un environnement staging
- Verifier que tous les services demarrent correctement
- Ref: critere non coche v0.9.1
- [ ] **TASK-STAG-002** : Validation performances
- Executer les tests k6 existants
- Mesurer: p95 API < 100ms, p99 < 200ms
- Mesurer: audio stream start < 500ms
- Mesurer: search results < 500ms
- [ ] **TASK-STAG-003** : Validation Lighthouse
- Executer Lighthouse sur les pages principales
- Cibles: Performance >= 85, Accessibility >= 90, PWA >= 90
- Ref: critere non coche v0.11.0
- [ ] **TASK-STAG-004** : Validation stabilite
- Monitorer pendant 48h minimum
- Verifier: taux erreur 5xx < 0.1%
- Verifier: aucun crash/restart non planifie
- [ ] **TASK-STAG-005** : Validation RGPD
- Tester export de donnees utilisateur de bout en bout
- Tester suppression de compte de bout en bout
- Verifier anonymisation effective
- [ ] **TASK-STAG-006** : Validation bundle size
- Verifier: bundle JS initial < 200KB gzip
- Documenter le resultat
**Criteres d'acceptation**
- [ ] Staging deploye et fonctionnel
- [ ] p95 API < 100ms
- [ ] Lighthouse Performance >= 85, Accessibility >= 90
- [ ] Taux erreur 5xx < 0.1% sur 48h
- [ ] RGPD export + suppression fonctionnels
- [ ] Bundle < 200KB gzip
**Risques**
- Infrastructure staging peut ne pas etre disponible
- Les metriques runtime peuvent reveler des problemes non detectes en dev
---
### v1.0.0-rc1 — Release Candidate 1
**Priorite** :
**Effort** : 2-3 jours
**Prerequisite** : Toutes les versions precedentes
**GO/NO-GO** : Validation finale de tous les criteres
**Taches**
- [ ] **TASK-RC-001** : Checklist GO/NO-GO complete
- Parcourir chaque critere GO/NO-GO et cocher
- Documenter les preuves pour chaque critere
- Fichier: `veza-docs/GO_NO_GO_CHECKLIST.md`
- [ ] **TASK-RC-002** : Audit final anti-dark-patterns
- Parcours complet de l'UI
- Verifier: 0 FOMO, 0 gamification, 0 metriques publiques, 0 friction desinscription
- Documenter le resultat
- [ ] **TASK-RC-003** : Politique de confidentialite
- Verifier que la politique de confidentialite est a jour
- Conforme RGPD
- Ref: GO/NO-GO Ethique
- [ ] **TASK-RC-004** : Documentation decouverte
- Verifier que le document `DISCOVERY_ALGORITHM.md` est complet et auditable
- Ref: GO/NO-GO Ethique Algorithme de decouverte documente
- [ ] **TASK-RC-005** : Freeze du code
- Branche `release/v1.0.0` creee
- Seuls les bugfixes critiques acceptes
- CI/CD verte depuis 2 semaines minimum
- [ ] **TASK-RC-006** : Re-pentest final (optionnel)
- Si les correctifs pentest sont significatifs, un re-scan peut etre necessaire
**Criteres d'acceptation**
- [ ] 100% des criteres GO/NO-GO coches
- [ ] Branche release creee
- [ ] CI/CD verte
**Risques**
- Des criteres GO/NO-GO peuvent echouer retour a la version correspondante
---
### v1.0.0 — Release Stable
**Priorite** :
**Effort** : 1-2 jours
**Prerequisite** : v1.0.0-rc1 validee
**Taches**
- [ ] **TASK-REL-001** : Tag v1.0.0
- `git tag -a v1.0.0 -m "Version 1.0.0 : Release Stable"`
- [ ] **TASK-REL-002** : Release notes
- Changelog complet depuis v0.9.1
- Features highlights
- Fichier: `CHANGELOG.md`
- [ ] **TASK-REL-003** : Deploiement production
- Pipeline CI/CD production
- Validation post-deploiement
**Criteres d'acceptation**
- [ ] Tag v1.0.0 cree
- [ ] Release notes publiees
- [ ] Deploiement production reussi
---
## 4. MAPPING GO/NO-GO ↔ VERSIONS
Chaque critere GO/NO-GO est couvert par au moins une version de cette roadmap.
### Securite
| Critere | Version(s) | Statut actuel |
|---------|-----------|---------------|
| JWT RS256 en production | v0.9.1 (DONE) | Implemente |
| Aucun secret dans le repo git | v0.9.1 (DONE) | Implemente |
| Pentest valide (0 CRIT/HIGH ouvert) | v0.12.6.1 (DONE) | 30/30 findings corriges (0 ouvert) |
| RGPD export + suppression | v0.10.8 (DONE) + **v0.14.0** | Code OK, validation runtime requise |
### Stabilite
| Critere | Version(s) | Statut actuel |
|---------|-----------|---------------|
| Uptime >= 99.9% (30j) | **v0.14.0** | ❌ Non mesure |
| Taux erreur 5xx < 0.1% | **v0.14.0** | Non mesure |
| Aucun incident P0 non resolu | **v0.14.0** | A verifier |
### Performance
| Critere | Version(s) | Statut actuel |
|---------|-----------|---------------|
| p95 API < 100ms | v0.12.4 (DONE) + **v0.14.0** | Optimise, non mesure runtime |
| Lighthouse Performance >= 85 | v0.12.5 (DONE) + **v0.14.0** | ⚠️ PWA OK, non mesure |
| Lighthouse Accessibility >= 90 | v0.12.5 (DONE) + **v0.14.0** | ⚠️ WCAG AA OK, non mesure |
| Lighthouse PWA >= 90 | v0.12.5 (DONE) + **v0.14.0** | ⚠️ PWA OK, non mesure |
### Qualite
| Critere | Version(s) | Statut actuel |
|---------|-----------|---------------|
| Coverage >= 70% (Go + Rust) | **v0.12.9** | ❌ Non mesuree |
| 0 linting error | v0.9.4 (DONE) + **v0.13.0** | ⚠️ CI lint OK, 43 TODO frontend |
| CI/CD verte 2 semaines | **v1.0.0-rc1** | ❌ A valider |
### Ethique
| Critere | Version(s) | Statut actuel |
|---------|-----------|---------------|
| Audit UX anti-dark-patterns | **v0.12.6.3** + **v1.0.0-rc1** | ⚠️ Code clean, audit formel non fait |
| Aucune donnee comportementale revendue | **v0.12.6.3** | ✅ Pas de code de revente |
| Algorithme decouverte documente | **v0.12.9** | ❌ Non documente |
| Politique confidentialite RGPD | **v1.0.0-rc1** | ❌ A verifier/creer |
### Business
| Critere | Version(s) | Statut actuel |
|---------|-----------|---------------|
| Flux paiement teste E2E | v0.12.0 (DONE) + **v0.13.5** | ⚠️ Code OK, test E2E formel requis |
| Flux payout createur teste | v0.12.0 (DONE) + **v0.13.5** | ⚠️ Code OK, test E2E formel requis |
| Support accessible | **v0.13.5** | ❌ Non implemente |
---
## 5. CRITERES NON COCHES DES VERSIONS DONE — RESOLUTION
Les 10 criteres non coches dans les versions DONE sont resolus par cette roadmap :
| Version DONE | Critere non coche | Resolution |
|--------------|-------------------|------------|
| v0.9.1 | Deploiement staging | **v0.14.0** TASK-STAG-001 |
| v0.9.2 | Pentest partiel | v0.12.6.1 (DONE) — pentest revalide |
| v0.9.5 | Tests pass | Verifier en CI, **v0.12.9** coverage |
| v0.9.8 | Coverage 70% | **v0.12.9** TASK-COV-001 |
| v0.10.0 | Perf metrics staging | **v0.14.0** TASK-STAG-002 |
| v0.10.1 | Test biais emergents | **v0.12.9** TASK-ETH-001 |
| v0.10.2 | Test 0-plays search | **v0.12.9** TASK-ETH-002 |
| v0.11.0 | Lighthouse scores | **v0.14.0** TASK-STAG-003 |
| v0.12.6 | 2 CRIT + 10 HIGH findings | v0.12.6.1 (DONE) — 30/30 corriges |
Tous les 10 criteres sont couverts.
---
## 6. DIAGRAMME GANTT SIMPLIFIE
```
Semaine S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
-------- -------- -------- -------- -------- -------- -------- -------- -------- --------
P0 SECURITE
v0.12.6.1 [=====]
v0.12.6.2 [===]
P1 BLOQUANTS
v0.12.6.3 [====]
v0.12.7 [========]
v0.12.8 [========]
v0.12.9 [======]
P2 CONFORMITE
v0.13.0 [============]
v0.13.1 [==========]
v0.13.2 [======]
P3 POLISH
v0.13.3 [========]
v0.13.4 [========]
v0.13.5 [========]
P0-P1 VALIDATION
v0.14.0 [==========]
RELEASE
v1.0.0-rc1 [======]
v1.0.0 [====]
JALONS ^M1 ^M2 ^M3 ^M4 ^M5 ^v1.0
Secu OK i18n+API done Features done Polish done RC RELEASE
```
**Jalons cles** :
- **M1 (fin S2)** : Securite P0 resolue — 0 finding critique/haut, MFA admin, token TTL 7j
- **M2 (fin S4)** : Versions TODO existantes completees (i18n + API docs) + tests ethiques + coverage CI
- **M3 (fin S6)** : Conformite features completee — ecarts spec/code P2 resolus
- **M4 (fin S8)** : Polish termine — securite avancee, audio, marketplace
- **M5 (fin S9)** : Staging valide, metriques runtime OK, RC1 prete
- **v1.0 (fin S10)** : Release stable
---
## 7. CHEMINS CRITIQUES
### Chemin critique principal (bloque v1.0)
```
v0.12.6.1 (pentest) → v0.12.6.2 (MFA/TTL) → v0.12.6.3 (fantomes)
v0.12.7 (i18n) ──────────────────────────────→ v0.12.9 (ethique/coverage)
v0.12.8 (API docs) ─────────────────────────→ ↓
v0.13.0 (conformite)
v0.13.2 (design system)
v0.14.0 (staging/runtime)
v1.0.0-rc1 → v1.0.0
```
### Parallelisation possible
```
PARALLELE A (securite) PARALLELE B (features)
v0.12.6.1 v0.12.7 (i18n)
v0.12.6.2 v0.12.8 (API docs)
v0.12.6.3
\ /
→ v0.12.9 (ethique) ←
v0.13.0 (conformite)
/ \
v0.13.1 (audio) v0.13.2 (design)
v0.13.4 (polish) v0.13.3 (sec adv)
v0.13.5 (marketplace)
\ /
→ v0.14.0 (staging) ←
v1.0.0-rc1
v1.0.0
```
Avec 2 developpeurs, le chemin critique passe de ~10 semaines a ~6-7 semaines grace a la parallelisation des branches securite et features.
---
## 8. FEATURES REPORTEES POST-v1.0
Les features suivantes sont classees P4 et ne bloquent pas la v1.0. Elles seront implementees en v1.1+ :
| Feature | Ref | Effort | Justification report |
|---------|-----|--------|---------------------|
| Chromecast (F124) | Module 4 | 2-3j | SDK proprietaire, complexe |
| AirPlay (F125) | Module 4 | 2-3j | SDK proprietaire, complexe |
| IP whitelisting (F027) | Module 1 | 1j | Feature entreprise, pas consumer |
| Watermarking (F080) | Module 3 | 2j | Nice-to-have, pas bloquant |
| Spectrogram visualiseur | Module 4 | 3j | Cosmetique |
| Equalizer graphique | Module 4 | 2j | Cosmetique |
| Password expiration (F016) | Module 1 | 1j | Optionnel securite |
| Module 9 Gestion Materiel complet | F306-F330 | 5-10j | Scope P3, partiellement implemente |
| Module 17 Collaboration complete | F481-F490 | 5j | Partiellement implemente, avance |
**Total reporte** : ~25-35 jours-dev en v1.1+
---
## 9. ESTIMATION GLOBALE
### Effort par priorite
| Priorite | Versions | Effort total |
|----------|----------|-------------|
| P0 | ~~v0.12.6.1~~ (DONE), v0.12.6.2 | 1.5j restant |
| P1 | v0.12.6.3, v0.12.7, v0.12.8, v0.12.9 | 9.5-13j |
| P2 | v0.13.0, v0.13.1, v0.13.2 | 11-15j |
| P3 | v0.13.3, v0.13.4, v0.13.5 | 9-12j |
| Validation | v0.14.0 | 3-5j |
| Release | v1.0.0-rc1, v1.0.0 | 3-5j |
| **TOTAL** | **15 versions** | **42-59.5j** |
### Scenarios
| Scenario | Equipe | Duree | Date estimee v1.0 |
|----------|--------|-------|--------------------|
| Optimiste | 2 devs | 6 semaines | 2026-04-22 |
| Realiste | 1 dev | 10 semaines | 2026-05-20 |
| Pessimiste | 1 dev + imprevu | 14 semaines | 2026-06-17 |
### Facteurs de risque
| Risque | Impact | Probabilite | Mitigation |
|--------|--------|-------------|------------|
| Findings pentest necessitent refactoring majeur | +2-5j | Moyenne | Identifier tot, isoler les changements |
| Coverage Rust difficile a monter | +2-3j | Haute | Prioriser les tests critiques |
| Infrastructure staging non disponible | +1-2 semaines | Moyenne | Utiliser docker-compose comme staging minimal |
| Traductions ES incompletes | +1-2j | Basse | Accepter placeholders EN pour v1.0 |
| Tests E2E paiement echouent | +2-3j | Moyenne | Tester en mode sandbox Hyperswitch |
| WebAuthn trop complexe pour le calendrier | 0 (report v1.1) | Haute | Declasser en P4 si necessaire |
---
## 10. RECOMMANDATIONS
### Recommandation 1 : Commencer par P0 immediatement
Les 3 findings HIGH du pentest bloquent tout. Il faut les corriger avant toute autre chose. En parallele, un second developpeur peut attaquer v0.12.7 (i18n).
### Recommandation 2 : Ne pas sous-estimer v0.14.0
La validation runtime (staging) est le goulot d'etranglement. Beaucoup de criteres GO/NO-GO ne seront verifiables qu'a ce stade. Preparer l'infrastructure staging le plus tot possible.
### Recommandation 3 : Etre pret a reporter des features P3
Si le calendrier se tend, les features P3 (WebAuthn, Chromecast/AirPlay, spectrogram, KYC) peuvent etre reportees en v1.1 sans affecter la validite du GO/NO-GO.
### Recommandation 4 : Automatiser les validations
Integrer les checks Lighthouse, coverage, et anti-dark-patterns dans la CI pour detecter les regressions automatiquement plutot qu'en validation finale.
### Recommandation 5 : Clarifier le statut des features fantomes
Les modules `contest`, `voting_system`, `production_challenge` doivent etre evalues immediatement. S'ils constituent de la gamification, leur presence est un risque ethique meme s'ils sont desactives.
---
*Fin de la roadmap Phase 5*