WORLDWEAVER 1.2 — AUDIT DU 8 OCTOBRE 2026

Résultat : les défauts reproduits ont été corrigés ; les campagnes ci-dessous
ont réussi. L'application conserve son interface sombre et le nombre variable
de sources. Les sauvegardes d'origine sont uniquement lues.

PÉRIMÈTRE ET MÉTHODE
Relecture des six fichiers de production : WorldWeaver.java, MergeEngine.java,
Nbt.java, SafetyIO.java, WorldLayout.java, PlanFiles.java ; CLI, Swing, codec,
détection des dispositions, choix, copie, extraction, publication, annulation,
projets et scripts de construction/lancement. Les sources de tests sont séparées
des classes de production. Construction Java 17, exécution Windows avec Zulu
OpenJDK 26.0.2.1 ; le runtime portable Windows est celui de la livraison précédente.

Avant correction, douze probes sur le code 1.1 : dix échecs reproduits, deux
contrôles déjà réussis. Après correction, nouvelle campagne par scénario et
vérification du produit emballé. Les fixtures sont générées localement ; leurs
régions contiennent des marqueurs de test, pas de vrais chunks Minecraft.

DIX DÉFAUTS REPRODUITS SUR LA VERSION ANTÉRIEURE
1. Élevé : un profil NBT corrompu pouvait être copié en mode profil complet.
   Correction : validation structurelle de tous les profils retenus avant export.
2. Moyen : absence d'Overworld dans un plan => NullPointerException.
   Correction : diagnostic explicite avant création de dossiers ou d'archive.
3. Moyen : nom final CON autorisé, inutilisable sous Windows.
   Correction : validation des noms réservés et de tous les segments portables.
4. Moyen : ZIP avec segment terminé par un point accepté.
   Correction : refus des segments ambigus entre Windows et Linux.
5. Moyen : antislashs dans un ZIP acceptés avec interprétations différentes.
   Correction : chemins ZIP uniformes avec slash uniquement.
6. Moyen : l'encodeur acceptait une liste NBT de tags hétérogènes.
   Correction : validation des types, nulls, TAG_End et structures avant écriture.
7. Faible : réécriture NBT modifiait les bits de certaines valeurs NaN.
   Correction : écriture des bits bruts float/double, préservant les tags inconnus.
8. Moyen : progression répétée à chaque bloc, accumulation d'événements Swing.
   Correction : valeurs strictement croissantes, au plus 101 notifications.
9. Moyen : erreur d'un observateur après publication présentée comme export raté.
   Correction : fichier publié conservé ; erreur de notification isolée.
10. Moyen : annulation déjà demandée créait quand même le dossier de destination.
    Correction : vérification d'annulation et prévalidation avant les effets.

AUTRES CORRECTIONS ET RENFORCEMENTS
- Budget NBT partagé : 64 Mio décompressés/écrits, 200 000 tags, profondeur 100,
  tableaux <= un million d'éléments. Refus des bombes larges, cycles et longueurs
  invalides ; prévalidation de l'écriture sans compression supplémentaire.
- Contrôle des champs Inventory, EnderItems, equipment, SelectedItemSlot et
  DataVersion. Transfert ciblé refusé si les versions explicites des deux profils
  diffèrent ; profil complet inchangé possible pour laisser Minecraft le convertir.
- Refus des organisations hybrides, dimensions imbriquées ambiguës et profils
  non réguliers. Conservation d'un End moderne contenant seulement ses données.
- Index des statistiques/progrès par UUID normalisé : fichiers UUID en majuscules
  associés correctement. Refus des doublons d'identité par casse.
- Empreintes SHA-256 des .dat par défaut ; option pour tous les fichiers.
  Détection d'ajout/suppression et changement d'identité des fichiers ; contrôle
  avant/après lecture. Liens symboliques, jonctions et fichiers spéciaux refusés.
- Plan figé pendant l'export ; collision de noms Windows refusée. Préparation
  des choix/générateurs/profils avant création de l'archive temporaire.
- Publication sans écrasement par lien physique ; repli en création exclusive.
  Un fichier arrivé à la destination pendant l'export est préservé.
- Inventaires générés progressivement, sans garder tous les NBT encodés en mémoire.
  Cache des métadonnées de dimensions, des noms et des disponibilités de sources.
- Éditeur de sélection Swing corrigé pour les lignes triées ; blocage des actions
  pendant un traitement, gestion sûre des valeurs invalides et chemins racines.
- Annulation de l'analyse et des projets ; journal borné à 200 000 caractères.
- Arguments CLI mieux contrôlés : valeur absente, répétition, dépassement entier,
  modes incompatibles. Options explicites prioritaires sur un projet chargé.
- Configuration appliquée de manière transactionnelle : aucun demi-changement.
- Construction dans un dossier neuf, JAR sans tests ni anciennes classes.

VALIDATION EXÉCUTÉE
176 scénarios AuditTest : un processus Java indépendant par scénario, tous PASS.
69 vérifications MergeEngineTest : toutes PASS, dont fusion de dix sources,
dispositions classique/moderne/Paper, sources exclusives et originaux inchangés.
14 scénarios GUI : douze scénarios indépendants + deux opérations asynchrones,
tous PASS. Édition triée, sources absentes, dépôt multiple, doublons, état occupé,
invalidation, retrait, renumérotation, journal, projet et annulation d'analyse.
11 vérifications supplémentaires de l'interface à quatre sources : toutes PASS.
Capture visuelle apercu.png inspectée : contrôles visibles, style sombre conservé.
Charge : 2 000 profils supplémentaires, champ de mod de 24 000 caractères,
2001 profils différés, export réussi sous -Xmx128m, 15,28 secondes sur la passe
finale. Mesure locale indicative (cache/disque), pas une garantie de débit.
12 processus du JAR distribué : aide, absence d'écran (2), erreurs (1), inspect,
dry-run, sauvegarde/rechargement de projet avec ordre inversé, export, refus
d'écrasement, sélections invalides, anciennes options A/B, SHA-256 : tous PASS.
Construction build.ps1 exécutée et réussie ; JAR compatible bytecode Java 17.
Lanceur Windows avec runtime intégré : aide et export de quatre mondes exécutés,
code 0 ; contenu des dimensions et inventaires sélectionnés vérifié.
Syntaxe des trois scripts shell vérifiée localement ; aucune exécution Debian.
Les résultats individuels sont dans test-results, plus TESTS.txt.

FONDATIONS D'ÉVOLUTION DÉJÀ OPÉRATIONNELLES
WorldLayout : distinction explicite des répertoires classiques et modernes.
SafetyIO : politique de chemins, empreintes, annulation et publication réutilisables.
MergeEngine.prepare / Export : étape de validation indépendante de l'écriture.
Entry.Generated : production différée des contenus générés pour limiter la mémoire.
PlanFiles : projets UTF-8 versionnés (schéma v1), SHA-256 du contenu des sources,
réassociation après déplacement/changement d'ordre, validation transactionnelle.
CLI --dry-run, --verify, --load-plan, --save-plan ; boutons Vérifier l'export,
Sauver un projet et Charger un projet effectivement utilisables.
Suites indépendantes et scripts de tests pour accompagner les évolutions.

PROCHAINES ÉVOLUTIONS À DÉVELOPPER
Priorité 1 : validation sur sauvegardes réelles et CI Linux/Windows avec Java 17,
serveur démarré dans une copie de test ; matrices vanilla/Paper/mods documentées.
Priorité 2 : aperçu détaillé des tailles, conflits et changements de position ;
adaptateurs de dispositions supplémentaires avec fixtures versionnées.
Priorité 3 : remappage des cartes, nécessitant aussi parcours des inventaires
de coffres et entités ; tests de références avant d'activer cette fonction.
Priorité 4 : fusion de régions/chunks et règles de conflit ; elle exige un lecteur
Anvil, des tests de coordonnées/entities/poi et une politique explicite.
Priorité 5 : adaptateurs de plugins et migration contrôlée de versions.
Ces cinq étapes sont une feuille de route, pas des fonctionnalités annoncées.

LIMITES DE L'AUDIT ET RISQUES RÉSIDUELS
Aucune campagne finie ne couvre toutes les situations imaginables. Pas de serveur
Minecraft réel lancé, pas de véritable machine Debian, ni vraie sauvegarde 26.1.
Les régions sont copiées sans décoder chaque chunk : leur corruption interne
n'est pas diagnostiquée. Versions sources identiques requises ; pas de conversion.
Cartes non remappées, plugins/économie non fusionnés, dimensions copiées entières.
Position conservée potentiellement dangereuse après remplacement d'une dimension.
Le mode normal peut manquer une modification de région avec taille/date/identité
identiques ; utiliser SHA-256 et arrêter les serveurs. Les ZIP sont fusionnés depuis
leur copie extraite, pas en suivant une archive originale modifiée après analyse.
SHA-256 et projets relisent les sources : coût disque supplémentaire. Nombre de
mondes sans limite fixe, mais index des fichiers/joueurs en mémoire et limites NBT.
Nettoyage de gros dossiers temporaires à la fermeture peut ralentir l'interface.
Systèmes réseau, quotas réels/disque plein, permissions particulières, antivirus,
liens/jonctions adversariaux et coupures brutales non exhaustivement simulés.
La politique de liens est auditée ; le test Windows n'a pas créé toutes les sortes
de reparse points. Destination et sources doivent rester sous contrôle de l'utilisateur.
Le repli sans liens physiques publie par copie : pas de garantie d'atomicité de
visibilité, mais absence d'écrasement par CREATE_NEW. Une coupure peut laisser un
fichier incomplet ; toujours attendre le succès avant de récupérer l'archive.
Projet v1 : sources au contenu identique refusées ; anciens choix numérotés restent
disponibles. Enregistrement d'un projet dans un dossier existant seulement.
Les anciens paquets 1.1 sont conservés ; utiliser les archives nommées 1.2.
