| REM-002 | CRIT-002 | CRITICAL | `marketplace/payout.go:175-195` | Déplacer `GetSellerBalance` DANS la transaction avec `SELECT FOR UPDATE` (`clause.Locking{Strength: "UPDATE"}`) avant validation du montant. | 2h |
| REM-003 | CRIT-003 | CRITICAL | `marketplace/service.go:1136-1189` | Wrapper lecture + validation + refund dans une seule transaction avec `SELECT FOR UPDATE` sur l'order. Vérifier `order.Status != "refunded"` atomiquement. | 2h |
| REM-004 | CRIT-004 | CRITICAL | `analytics/handler.go:727-777` | Ajouter vérification `track.CreatorID == userID` avant de retourner les analytics. Retourner 403 sinon. | 30min |
| REM-005 | CRIT-005 | CRITICAL | `handlers/marketplace.go:285-290` | Remplacer `filepath.Join(previewDir, file.Filename)` par `filepath.Join(previewDir, filepath.Base(file.Filename))` ou générer un UUID. | 15min |
| REM-006 | HIGH-001 | HIGH | `handlers/common.go:601-610` | Remplacer `c.GetHeader("X-Forwarded-For")` par `c.ClientIP()` + configurer `SetTrustedProxies()` | 1h |
| REM-007 | HIGH-002 | HIGH | `user_service.go:75`, `social_service.go:321`, `types/stats.go:31`, `social/models.go:32` | Supprimer `followers_count`/`following_count` de `PublicUserResponse` et `SuggestionUser`. Ajouter `json:"-"` sur `LikeCount` du modèle `Post`. | 2h |
| REM-008 | HIGH-003 | HIGH | `api/user/handler.go:75-95`, `api/user/service.go:188-267` | Filtrer les champs autorisés par rôle dans `UpdateMe()`. Seuls les admins peuvent modifier `role`, `is_verified`, `is_active`. | 1h |
| REM-009 | HIGH-004 | HIGH | `handlers/live_stream_callback.go:26-84` | Implémenter HMAC-SHA256 avec timestamp + body dans la signature RTMP callback. | 2h |
| REM-010 | HIGH-005 | HIGH | `auth/service.go:653-707` | Combiner validate + rotate du refresh token dans une seule transaction DB atomique. | 2h |
| REM-011 | HIGH-006 | HIGH | `marketplace/service.go:464, 764-787` | Effectuer validation et incrémentation `used_count` du promo code dans la même transaction avec `SELECT FOR UPDATE`. | 1h |
| REM-012 | HIGH-007 | HIGH | `veza-stream-server/src/auth/token_validator.rs:100-138` | Ajouter un nonce ou stocker les tokens consommés dans Redis avec TTL pour empêcher le replay. | 3h |
| REM-013 | HIGH-008 | HIGH | `handlers/account_deletion_handler.go:75-135` | Ajouter nettoyage GDPR pour orders (buyer), licenses, seller payouts, seller balance, seller transfers. Anonymiser plutôt que supprimer. | 3h |
| REM-014 | HIGH-009 | HIGH | `marketplace/service.go:610-676` | Dans `ProcessPaymentWebhook()`, comparer `order.TotalAmount` avec le montant reçu du webhook avant traitement. | 1h |
| REM-015 | HIGH-010 | HIGH | `subscription/service.go:237-251` | Déplacer la vérification du trial gratuit (`previousTrialCount`) dans la transaction avec `SELECT FOR UPDATE` sur le user. | 1h |
| REM-016 | MEDIUM-001 | MEDIUM | `auth/service.go:156, :986` | Remplacer `bcrypt.DefaultCost` par `bcryptCost` (12) importé depuis `password_service.go` ou une constante partagée. | 30min |
| REM-017 | MEDIUM-002 | MEDIUM | `sast.yml`, `security-scan.yml`, `cd.yml`, `stream-ci.yml`, `container-scan.yml`, `staging-validation.yml` | Épingler les 12+ GitHub Actions par SHA. Configurer Dependabot pour les mises à jour. | 2h |
| REM-018 | MEDIUM-003 | MEDIUM | `.env.production:40` | Renommer en `.env.local` ou `.env.development`. Mettre les valeurs HTTPS par défaut. Ajouter validation au startup. | 1h |
| REM-019 | MEDIUM-004 | MEDIUM | `docker-compose.yml:296` | Supprimer `mc anonymous set download`. Configurer des politiques MinIO par bucket avec accès authenticated uniquement. | 30min |
| REM-020 | MEDIUM-005 | MEDIUM | `api/user/handler.go`, `core/admin/handler.go`, ~15 handlers | Ajouter `max(limit, 100)` sur tous les endpoints paginés. Créer un helper `SanitizePagination()`. | 2h |
| REM-021 | MEDIUM-006 | MEDIUM | `handlers/marketplace.go:270-289` | Ajouter vérification `file.Size` avant sauvegarde dans le handler marketplace upload. | 15min |
| REM-022 | MEDIUM-007 | MEDIUM | `infra/nginx-rtmp/nginx.conf:46` | Remplacer `Access-Control-Allow-Origin: *` par la whitelist de domaines autorisés. | 15min |
| REM-023 | MEDIUM-008 | MEDIUM | `docker-compose.yml:35-56` | Ajouter `--requirepass ${REDIS_PASSWORD}` même en développement. | 15min |
| REM-024 | MEDIUM-009 | MEDIUM | `apps/web/nginx.production.conf:11-14` | Ajouter `Strict-Transport-Security` header dans la config nginx production frontend. | 15min |
| REM-025 | MEDIUM-010 | MEDIUM | `playback_websocket_handler.go:138-152` | Ajouter `conn.SetReadLimit(maxMessageSize)` pour limiter la taille des messages WebSocket. | 15min |
| REM-026 | MEDIUM-011 | MEDIUM | `marketplace/service.go:806-840` | Vérifier `license.ExpiresAt` avant de servir le téléchargement. Retourner 403 si expirée. | 30min |
| REM-027 | MEDIUM-012 | MEDIUM | `cmd/api/main.go:8` | Conditionner `import _ "net/http/pprof"` derrière un build tag `//go:build debug` ou un flag d'environnement. | 30min |
| REM-032 | LOW-005 | LOW | `veza-backend-api/Dockerfile:28`, `veza-stream-server/Dockerfile:29` | Remplacer `:latest` par des tags de version spécifiques dans les Dockerfiles dev. | 15min |
| REM-033 | LOW-006 | LOW | `docker-compose.yml:171` | Remplacer le JWT_SECRET hardcodé par une variable d'environnement obligatoire, même en dev. | 15min |
| REM-034 | INFO-001 | INFO | `veza_back_api_db/` | Ajouter au `.gitignore`, purger de l'historique git avec BFG. | 1h |
| REM-035 | INFO-002 | INFO | `cmd/tools/hash_gen/main.go:11`, `cmd/tools/create_test_user/main.go:54,72` | Aligner sur `bcryptCost = 12`. | 15min |
| REM-036 | INFO-003 | INFO | `services/jwt_service.go` | Ajouter `kid` header dans les JWT et support multi-clés pour faciliter la rotation. | 3h |