DOCUMENT : audit_v3.txt USAGE : fournir ce fichier à l’IA avec la documentation finale Seedmover v1.0. OBJET : audit structuré, complet et robuste incluant : JSONL, Season Packs, Upgrades, Cross-seed partiel, Groupes de contenu, MD5, Vue canonique, machine à états A/B/C. ===================================================================== SECTION 1 — Cohérence globale ===================================================================== 1. Le document explique-t-il clairement : - pourquoi Seedmover existe ? - ce qui est déplacé, où, quand, et pourquoi ? - les contraintes (cross-seed, qBittorrent, Sonarr/Radarr, NFS, hardlinks) ? 2. Le périmètre fonctionnel est-il verrouillé ? 3. Les dépendances techniques (Docker, OMV, Synology, UID/GID, montages) sont-elles listées ? ===================================================================== SECTION 2 — Pipeline complet ===================================================================== 1. Téléchargement qBittorrent → src “réel” 2. Import Sonarr/Radarr → dst Plex “réel” 3. Mapping JSONL append-only 4. Construction du miroir local 5. Machine à états Seedmover (A/B/C) 6. Bascule du save_path dans qBittorrent 7. Gestion long terme : - seed global, - compactage JSONL, - auto-correction, - cross-seed. Pour chaque étape : - entrées définies ? - sorties définies ? - invariants ? - échecs possibles ? - impacts sur les torrents multi-fichiers ? ===================================================================== SECTION 3 — Mapping JSONL ===================================================================== 1. Format strict : - {client, hash, src, dst, ts} - interdiction totale du fallback basename - hash obligatoire - src réel obligatoire (fail-fast si absent) 2. JSONL lisible, parsable, résistant : - lignes autonomes, - échappement correct, - gestion JSON corrompu. 3. Maintenance : - rotation, - compactage, - vue canonique (dernière occurrence gagnante), - purge des lignes obsolètes (Upgrades). 4. Traduction Docker → Seedmover : - chemins montés documentés, - ou table de translation obligatoire. ===================================================================== SECTION 4 — Cohérence des chemins ===================================================================== 1. Vues distinctes : - Docker Sonarr, - Docker Radarr, - qBittorrent OMV, - Seedmover. 2. Alignement ou translation : - règles explicites, - exemples fournis. 3. Impacts : - création de miroir, - save_path, - validations avant migration. ===================================================================== SECTION 5 — Machine à états A/B/C ===================================================================== 1. A = Nouveau torrent / mapping incomplet 2. B = Miroir construit / seed actif 3. C = Bascule save_path → Synology Chaque transition doit être définie : - critères d’entrée, - critères de sortie, - règles fail-safe, - validations obligatoires : - exist, - stat, - tailles identiques, - cohérence JSONL. ===================================================================== SECTION 6 — Cas particuliers V3 (étendus) ===================================================================== ==================== 6A — Multi-fichiers / Season Packs ==================== 1. Un torrent peut contenir N fichiers. 2. Un même InfoHash génère plusieurs lignes JSONL (une par épisode). 3. Seedmover regroupe ces lignes par hash → “vue torrent”. 4. Un torrent n’est “complet” que si 100% des fichiers attendus sont présents et cohérents. 5. Une bascule partielle est interdite. ==================== 6B — Upgrades / fichiers fantômes ==================== 1. Détection des upgrades (dst existant vs dst supprimé). 2. Ignorer les anciennes entrées (vue canonique). 3. Reconstituer l'état final après upgrades successifs. 4. Compactage supprimant les cadavres logiques. ==================== 6C — Cross-Seed Complet ==================== 1. Plusieurs torrents peuvent partager EXACTEMENT les mêmes fichiers. 2. Les décisions de migration doivent être prises AU NIVEAU “contenu”. 3. Seedmover doit : - détecter les torrents partageant un contenu (MD5), - agréger seed/time global, - migrer uniquement quand le cluster est mûr. ==================== 6D — Cross-Seed Partiel (cas fractal critique) ==================== Cas : - Torrent “Saison 2” = 10 fichiers. - L’utilisateur possède 4 épisodes Groupe GA, 3 Groupe GB, 3 téléchargés. Règles : 1. Modèle par fichier : - chaque fichier appartient à un groupe de contenu (MD5), - un torrent est un sac de fichiers hétérogènes. 2. Migration décidée par groupe, jamais par torrent. 3. Tant qu’un fichier F est utilisé par un torrent, Seedmover ne le déplace pas. 4. Reconstitution : JSONL → vue torrent → vue fichier → groupe → agrégation cross-seed. ===================================================================== SECTION 7 — Vue canonique + MD5 ===================================================================== 1. Base MD5 nécessaire pour : - détecter contenus identiques, - détecter cross-seed, - reconstruire mappings manquants, - vérifier cohérence réelle. 2. Groupe de contenu = ensemble des fichiers partageant le même contenu réel. 3. Graphe torrent → fichiers → groupes documenté. ===================================================================== SECTION 8 — Robustesse long terme ===================================================================== 1. Renames, 2. Upgrades, 3. Seasons partielles, 4. Torrents incomplets, 5. Rattrapage via MD5, 6. Cohérence avant save_path, 7. Prévention migration dangereuse, 8. Cross-seed documenté, 9. Compactage régulier, 10. Auto-réparation guidée. ===================================================================== SECTION 9 — Manques à détecter ===================================================================== - hash manquant - absence logique multi-fichiers - absence cross-seed complet/partiel - absence regroupement par contenu - absence MD5 - absence vue canonique - absence compactage - absence translation Docker→Seedmover - absence validations avant migration - absence stratégie d’erreur ===================================================================== SECTION 10 — Synthèse finale ===================================================================== L’IA doit produire : 1. Manques, 2. Ambiguïtés, 3. Contradictions, 4. Risques, 5. Recommandations, 6. Points robustes, 7. Checklist pré-DEV, 8. Carte dépendances : mapping → vue hash → vue fichier → groupe → cross-seed → états. ===================================================================== FIN DU DOCUMENT =====================================================================