- 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>
11 KiB
11 KiB
AUDIT_02_SPECIFICATIONS.md -- Synthese des Exigences ORIGIN
Date : 2026-03-11 Auditeur : Claude Opus 4.6
1. FEATURES REGISTRY (ORIGIN_FEATURES_REGISTRY.md)
1.1 Vue d'ensemble
- Total features specifiees : ~560 (apres suppression des 40 features ethiquement exclues)
- Features supprimees : F456-F470 (AI/ML), F491-F500 (Blockchain/Web3), F536-F550 (Gamification)
- IDs non reattribues : Les numeros supprimes restent vacants
1.2 Modules et features par module
| Module | Range | Features | Priorite |
|---|---|---|---|
| 1. Auth & Securite | F001-F030 | 30 | P0-P1 |
| 2. Profils & Utilisateurs | F031-F065 | 35 | P0-P2 |
| 3. Gestion de Fichiers | F066-F105 | 40 | P0-P2 |
| 4. Streaming Audio | F106-F150 | 45 | P0-P2 |
| 5. Chat & Messagerie | F151-F185 | 35 | P1-P2 |
| 6. Social & Communaute | F186-F225 | 40 | P1-P2 |
| 7. Marketplace | F226-F275 | 50 | P1-P2 |
| 8. Formation & Education | F276-F305 | 30 | P2-P3 |
| 9. Gestion de Materiel | F306-F330 | 25 | P3 |
| 10. Cloud & Stockage | F331-F350 | 20 | P2-P3 |
| 11. Recherche & Decouverte | F351-F380 | 30 | P1-P2 |
| 12. Analytics & Statistiques | F381-F410 | 30 | P1-P2 |
| 13. Administration | F411-F435 | 25 | P1-P2 |
| 14. UI/UX | F436-F455 | 20 | P2 |
| SUPPRIME | |||
| 16. Livestreaming | F471-F480 | 10 | P2 |
| 17. Collaboration Temps Reel | F481-F490 | 10 | P2-P3 |
| SUPPRIME | |||
| 19. Integrations Externes | F501-F520 | 20 | P2-P3 |
| 20. Applications Natives (-> PWA) | F521-F535 | 15 | P2 |
| SUPPRIME | |||
| 22. Notifications | F551-F570 | 20 | P1-P2 |
| 23. Securite Avancee | F571-F585 | 15 | P0-P1 |
| 24. Developpeurs & API | F586-F600 | 15 | P2-P3 |
2. API SPECIFICATION (ORIGIN_API_SPECIFICATION.md)
2.1 Principes obligatoires
- URLs:
/api/v{version}/{resource}(plural nouns, snake_case fields) - Responses: JSON, dates ISO 8601, IDs UUID v4
- Pagination: cursor-based par defaut, offset-based pour pages fixes
- Rate limiting: headers
X-RateLimit-*obligatoires,Retry-Aftersur 429 - Erreurs: format standardise
{"error": {"code": 1000-9999, "message": ..., "details": [...]}} - Auth: JWT Bearer, OAuth 2.0 (Google, GitHub, Discord, Spotify)
- Roles RBAC: user, creator, premium, moderator, admin
2.2 Endpoints specifies (extrait des sections 7.x)
| Groupe | Endpoints | Examples |
|---|---|---|
| Auth | 8 | register, login, logout, refresh, forgot-password, reset-password, verify-email, me |
| Users | 6+ | GET/PATCH /{id}, GET /{id}/tracks, followers, following, follow/unfollow |
| Tracks | 10+ | CRUD, upload, stream, waveform, likes, comments, tags |
| Playlists | 8+ | CRUD, tracks, collaborate, share, export |
| Chat | 6+ | rooms, messages, reactions, mentions, search, attachments |
| Marketplace | 10+ | products, orders, checkout, downloads, reviews, promo codes |
| Search | 3+ | unified, suggestions, autocomplete |
| Feed | 2+ | feed, suggestions |
| Discover | 3+ | genre, tag, trending |
| Analytics | 5+ | dashboard, heatmap, comparison, export, audience |
| Admin | 5+ | metrics, users, content, payments, announcements |
| Notifications | 3+ | list, preferences, mark-read |
| Live | 4+ | start, stop, callbacks, list |
| Subscriptions | 4+ | plans, subscribe, cancel, invoices |
| GDPR | 3+ | export, delete account, anonymize |
2.3 Rate limits specifies
| Type | Limite | Fenetre |
|---|---|---|
| Authentication | 10 req | 1 min |
| Read (GET) | 1,000 req | 1 h |
| Write (POST/PUT/PATCH) | 100 req | 1 h |
| Upload | 10 | 1 h |
| Search | 500 | 1 h |
| Streaming | 10,000 plays | 1 jour |
| Export | 3 req | 1 jour |
3. SECURITY FRAMEWORK (ORIGIN_SECURITY_FRAMEWORK.md)
3.1 Exigences critiques
| Exigence | Ref | Criticite |
|---|---|---|
| Passwords hashes avec Argon2id ou bcrypt (cost >= 12) | Regle 1 | P0 |
| TLS 1.3 minimum sur toutes les communications | Regle 2 | P0 |
| Donnees sensibles chiffrees au repos (AES-256) | Regle 3 | P0 |
| JWT access token: 15 min, refresh: 7 jours | Regle 4 | P0 |
| MFA obligatoire pour admin et moderator | Regle 5 | P0 |
| Rate limiting sur tous les endpoints publics | Regle 6 | P0 |
| Input validation cote serveur obligatoire | Regle 7 | P0 |
| Audit logs immutables pour actions sensibles | Regle 8 | P0 |
| Security headers obligatoires (CSP, HSTS, X-Frame-Options) | Regle 9 | P0 |
| Secrets JAMAIS dans le code | Regle 10 | P0 |
3.2 Findings audit (VEZA-SEC-001/002)
- VEZA-SEC-001 : Secret JWT par defaut en dur dans config_rust.rs (P0) -> Corrige v0.9.1
- VEZA-SEC-002 : Desalignement issuer/audience JWT Go/Rust (P0) -> Corrige v0.9.1
3.3 Pentest v0.12.6 findings
- 2 CRITIQUES, 10 HAUTS, 12 MOYENS, 6 BAS, 5 INFO
- Statut: 2 CRITIQUES corriges, 3 HAUTS restants a corriger
4. BUSINESS LOGIC (ORIGIN_BUSINESS_LOGIC.md)
4.1 Regles financieres
| Regle | Valeur |
|---|---|
| Commission Creator | 15% |
| Commission Premium | 10% |
| Payout auto | >= $50 (hebdomadaire) |
| Payout manuel | >= $100 |
| Remboursement | 30 jours max (14 jours standard) |
| Prix en centimes | Obligatoire |
4.2 Plans d'abonnement
| Plan | Prix | Storage | Upload | Commission |
|---|---|---|---|---|
| Free | $0/mois | 1 GB | 5 tracks/mois | N/A |
| Creator | $9.99/mois | 50 GB | Illimite | 15% |
| Premium | $19.99/mois | 200 GB | Illimite | 10% |
4.3 Regles de moderation
- 3 strikes = suspension automatique
- Decision finale toujours humaine
- Categories: spam, contenu offensant, violation droits, fake, other
- Detection deterministe uniquement (pas de ML)
4.4 Notifications ethiques
- Push desactivees par defaut (sauf DMs et follows)
- Pas de "X likes" ou gamification dans les notifications
- Quiet hours configurables
- Desactivation marketing en un clic
5. PERFORMANCE TARGETS (ORIGIN_PERFORMANCE_TARGETS.md)
5.1 SLOs
| Metrique | Cible | Stretch |
|---|---|---|
| API p95 | < 100ms | < 50ms |
| API p99 | < 200ms | < 100ms |
| DB query p95 | < 10ms | < 5ms |
| FCP | < 1.5s | < 1s |
| TTI | < 3.5s | < 2s |
| Audio stream start | < 500ms | < 300ms |
| Search results | < 500ms | < 200ms |
| Uptime | 99.9% | 99.99% |
5.2 Lighthouse Scores
| Categorie | Cible |
|---|---|
| Performance | >= 90 |
| Accessibility | >= 95 |
| Best Practices | >= 90 |
| SEO | >= 90 |
5.3 Budgets
| Metrique | Limite |
|---|---|
| Bundle JS initial | < 200KB gzip |
| N+1 queries | Interdites |
| Memory leaks | Zero tolerance |
| Rebuffering audio | < 0.5% |
| Concurrent users | 100K (cible prod) |
| Throughput | 10K req/s |
6. TESTING STRATEGY (ORIGIN_TESTING_STRATEGY.md)
6.1 Coverage cibles
| Type | Coverage | Temps max |
|---|---|---|
| Unit tests | >= 80% lignes | < 2 min |
| Integration tests | >= 70% endpoints | < 5 min |
| E2E tests | >= 50% flows critiques | < 10 min |
| Performance tests | 100% endpoints critiques | < 15 min |
| Security tests | 100% OWASP Top 10 | < 20 min |
| Load tests | 100% scenarios prod | 30-60 min |
6.2 Coverage par stack (trajectoire)
| Stack | Actuel (estim.) | Phase 3.5 | Phase 4R | Phase 5R |
|---|---|---|---|---|
| Frontend | ~50% | 70% | 75% | 80% |
| Backend Go | Non mesure | 70% | 80% | 80% |
| Backend Rust | Non mesure | 60% | 70% | 75% |
7. UI/UX SYSTEM (ORIGIN_UI_UX_SYSTEM.md)
7.1 Design system SUMI
- 200+ composants specifies
- Design tokens (couleurs, typo, spacing, shadows, radius)
- Dark mode obligatoire
- Mobile-first design
- 4px base spacing grid
7.2 Anti-dark-patterns (S13)
Interdits: FOMO, notifications push manipulatrices, friction a la desinscription, metriques de popularite publiques, streaks/XP/leaderboards, confirmshaming, bait-and-switch, roach motels, trick questions, disguised ads, hidden costs
7.3 Accessibilite
- WCAG AA minimum sur toute la plateforme
- WCAG AAA pour fonctions critiques (navigation, lecture audio, upload, inscription)
- Keyboard navigation complete
- Screen reader support (ARIA labels)
- Contrast >= 4.5:1 (normal text), >= 3:1 (large text)
8. CODE STANDARDS (ORIGIN_CODE_STANDARDS.md)
8.1 Conventions obligatoires
| Convention | Description |
|---|---|
| Formatters obligatoires | gofmt, rustfmt, Prettier |
| Linters obligatoires | golangci-lint, clippy, ESLint |
| Tests obligatoires | Coverage >= 80% nouveau code |
| Context propagation | Toute fonction I/O: ctx en premier param |
| Error format API | {"error": {"code": ..., "message": ..., "context": ...}} |
| Pagination | {"data": [...], "pagination": {...}} |
| Logging JSON | level, time, msg, request_id, user_id |
| Goroutines | Mecanisme de terminaison obligatoire |
| Fonctions | Max 50 lignes, complexite cyclomatique < 10 |
| Code mort | Suppression immediate interdite |
| Magic numbers | Interdits (utiliser constantes) |
9. QUALITY METRICS (ORIGIN_QUALITY_METRICS.md)
9.1 Dettes techniques identifiees (DT-001 a DT-017)
| ID | Description | Priorite |
|---|---|---|
| DT-007 | .nvmrc manquant |
Corrige |
| DT-008 | rust-toolchain.toml manquant |
Corrige |
| DT-013 | TypeScript strict mode | Corrige |
| DT-001 a DT-017 | Voir detail dans ORIGIN | Variable |
10. ERROR PATTERNS (ORIGIN_ERROR_PATTERNS.md)
10.1 Patterns identifies (31 total)
| Categorie | Patterns | Priorite |
|---|---|---|
| Backend Go | 10 | P0-P1 |
| Frontend TypeScript | 8 | P0-P2 |
| Tests | 6 | P1-P2 |
| Configuration | 3 | P0-P1 |
| Lint/Format | 4 | P2 |
Key patterns:
- PAT-001: Import cycles (circular dependencies)
- PAT-002: Type mismatches (string vs *string)
- PAT-024: JWT mismatch between Go and Rust
- PAT-025: Context propagation missing
- PAT-026: Goroutine leaks
- PAT-027: Inconsistent pagination
- PAT-028: Non-standard error handling
11. GO/NO-GO v1.0 CRITERIA
Securite
- JWT RS256 en production
- Aucun secret dans le repo git
- Pentest valide (0 finding critique/haut ouvert)
- RGPD: export et suppression fonctionnels
Stabilite
- Uptime >= 99.9% (30 derniers jours)
- Taux d'erreur 5xx < 0.1%
- Aucun incident P0 non resolu
Performance
- p95 API < 100ms
- Lighthouse Performance >= 85
- Lighthouse Accessibility >= 90
- Lighthouse PWA >= 90
Qualite
- Coverage tests >= 70% (Go + Rust)
- 0 linting error
- CI/CD verte depuis 2 semaines
Ethique
- Audit UX anti-dark-patterns valide
- Aucune donnee comportementale revendue
- Algorithme de decouverte documente et auditable
- Politique de confidentialite conforme RGPD
Business
- Flux de paiement teste E2E en production
- Flux de payout createur teste
- Support accessible
Fin de la synthese des specifications Phase 2