WORLDWEAVER 1.3.1 — QUATRIÈME PASSE, 08/10/2026

Avant correction : 16 cas défaillants reproduits sur 1.3.0, répartis dans
les six familles ci-dessous. Preuves dans test-results/pass4-baseline.
20 scénarios FourthAuditTest et 2 tests GUI de rapport couvrent corrections
et contrôles : comportement sélectionné invalide toujours refusé, Unicode
distinct accepté, quota NBT et fichiers tronqués toujours refusés.

CORRECTIONS
1. Mémoire NBT : un fichier valide de 40 Mo (environ 38,15 Mio) causait OutOfMemoryError sous
   128 Mio, brut comme gzip. Le tampon décompressé, sa copie et les tableaux
   NBT coexistaient. Décodage progressif désormais : pas de double copie du
   document entier. Les flux gzip sont explicitement fermés ; quotas conservés
   (64 Mio décompressés, profondeur 100, 200000 tags, tableaux <=1000000).
   Les tableaux d'octets tronqués sont refusés explicitement après lecture.
2. Portabilité Unicode : la simple mise en minuscules ne détectait pas σ/ς,
   I/ı et S/ſ, susceptibles d'être des alias sous Windows. Le registre des
   préfixes utilise une clé majuscule indépendante de la langue. Politique
   volontairement conservatrice : certains noms distincts sur Linux sont
   refusés pour éviter une archive ambiguë sur Windows.
3. CLI : rapport, projet et ZIP pouvaient partager une destination ou être
   imbriqués ; un premier fichier était créé avant l'erreur. Toutes les sorties
   sont maintenant prévalidées ensemble avant écriture : destinations hors
   sources, distinctes, non imbriquées, absentes. Commande sans destination
   d'export et sans inspect/dry-run refusée avant rapport/projet. Cela ne rend
   pas plusieurs publications atomiques face à une panne ou une modification
   concurrente des destinations après cette vérification.
4. Choix de joueurs : l'inventaire de base remplacé était validé malgré son
   exclusion, et une source Ender était rejetée pour son inventaire inutilisé.
   Les parties réellement sélectionnées sont désormais validées, puis le
   résultat complet. Un coffre remplacé n'est plus transféré provisoirement
   depuis le donneur d'inventaire. Versions, quotas, empreintes et champs
   sélectionnés invalides restent contrôlés. Un NBT binaire illisible reste
   refusé : il ne s'agit pas d'un réparateur universel de profils.
5. Projets : une première source pouvait changer après son empreinte pendant
   le calcul d'une autre. Vérification finale de toutes les sources avant la
   publication, nettoyage du temporaire si l'une d'elles a changé.
6. Interface : annuler un rapport JSON déclenchait une boîte d'erreur.
   État « Rapport annulé », nettoyage et restitution des boutons désormais,
   avec indication visuelle du traitement en cours. Succès également testé.

VALIDATIONS SUR LA VERSION CORRIGÉE
Windows / Zulu 26 : 259 scénarios de moteur/CLI exécutés individuellement,
69 assertions historiques dans une exécution, charge dans une exécution,
16 scénarios GUI et 4 asynchrones : 281 exécutions, zéro échec.
FourthAuditTest est exécuté sous -Xmx128m, y compris gros fichiers NBT et quota.
16 processus du JAR réellement distribué : tous réussis.
Lanceur Windows avec Java inclus : aide, export et choix Ender séparé réussis.
Rapport du lanceur relu avec un parseur JSON indépendant : réussi.
11 contrôles de l'interface multi-source avec capture actualisée : réussis.
Bytecode Java 17 ; JAR sans classes de test.
Debian 12 réel / Temurin 25.0.4.1 : 261 exécutions, zéro échec, dont les
20 nouveaux cas sous 128 Mio. 16 processus du JAR final : tous réussis.
L'empreinte SHA-256 du JAR testé sur Debian est identique au fichier livré :
16b4b941968890cfbe1fc2949c1fd213e39a0e9df5159a0ca867109e628be4e3.
Résultats : test-results/results.json, debian-1.3.1.tsv,
packaged-1.3.1.txt et debian-packaged-1.3.1.txt.
Aucun serveur Minecraft ou paquet système modifié sur le VPS.

LIMITES
Les fichiers de régions sont synthétiques ; aucun serveur Minecraft réel lancé.
La lecture progressive réduit les copies, mais les objets NBT restent en mémoire.
Les plafonds de complexité ne garantissent pas qu'un document arbitraire tienne
dans toute taille de mémoire Java. Prévoir assez de RAM pour les gros profils.
Pas de conversion entre versions, Bedrock, RAR/7z, réparation de chunks,
remappage de cartes ou fusion de plugins. Les limites des audits antérieurs
restent applicables, notamment la vérification limitée de l'index ZIP64.
Arrêter les serveurs et tester le résultat sur une copie réelle demeure requis.
