feat: add native Blocodex and material census for alpha23

This commit is contained in:
koka
2026-09-10 19:28:18 +02:00
parent c9d9dab1b5
commit e654d565f6
51 changed files with 4957 additions and 15 deletions
+104
View File
@@ -0,0 +1,104 @@
# Validation alpha.23 — Blocodex et socle méta
Relevé du **10 septembre 2026**, branche `codex/blocodex-natif`.
Cible : Minecraft **26.3-pre-2**, Fabric Loader **0.19.5**, Fabric API
**0.160.0+26.3**, Java **25**, Sanctuary/pack **0.1.0-alpha.23**.
Le [contrat Blocodex](blocodex.md) définit les informations et leur couverture.
## Résultats disponibles
| Vérification | Résultat observé | Preuve locale |
| --- | --- | --- |
| Client natif : widgets, interface et connexion au serveur intégré | **Réussie**, `BUILD SUCCESSFUL in 34s` | `build/blocodex-client-network-tests.log` |
| Compilation et persistance quotidienne des activités | **Réussies**, `BUILD SUCCESSFUL in 9s` | `build/blocodex-meta-compile.log` |
| Persistance de la mémoire personnelle | Smoke réussi dans la passe complète | `build/blocodex-meta-check-build.log`, ligne `Block knowledge smoke passed` |
| GameTests natifs | **24/24 réussis**, dont 16 pour le socle méta | `build/blocodex-meta-check-build.log`, `All 24 required tests passed` |
| Passe complète et assemblage du pack | **Réussis**, `BUILD SUCCESSFUL in 4m 18s` | `build/blocodex-meta-check-build.log` |
Les tests de stockage couvrent les instantanés immuables, les compteurs exacts,
lisolement des UUID ou des journées, les identifiants de mods absents, le JSON
strict et le refus d’écraser silencieusement un fichier invalide. Leur succès
est complété par les tests natifs ci-dessous.
Les neuf tests de connaissance vérifient poses réussies et refusées, variantes
murales, statistiques de minage et jets volontaires, distinction des morts,
regard occulté, inventaire/curseur, états et notifications indépendants,
sauvegarde après déconnexion depuis un thread réseau, et palettes combinables.
Deux tests terrain vérifient pose/remplacement/retrait, exclusion immédiate des
comptages obsolètes, couverture et budget partagé entre lectures, sans charger
de chunk absent. Deux tests stocks vérifient les quatre catégories, un double
coffre ouvert sans double comptage et la conservation du butin non généré.
Trois tests dactivité vérifient les actions natives, les quantités datées,
la séparation des observations et des actions, la relecture après sauvegarde,
les journées absentes et les commandes avec identifiants complets. Le test de
fabrication appelle la complétion vanilla dun item ; il ne joue pas une recette
entière dans l’établi. Les huit tests généraux de génération passent aussi.
## Artefact local vérifié
Le JAR `mods/sanctuary/build/libs/sanctuary-0.1.0-alpha.23.jar` mesure
**1 914 798 octets**. Sa copie dans `build/packwiz/mods/` est identique.
SHA-256 :
```text
740107901c06d1c54838a944d01431e4f134f6989e1900b294cc0c0d210b1d4f
```
Le manifeste embarqué, lentrée client, les classes de recensement et
dhistorique, le tag de palette naturelle et les paramètres des traductions
FR/EN sont vérifiés. Les manifestes du dépôt et du pack assemblé indiquent
`0.1.0-alpha.23`. Le contrôle pack vérifie les versions et empreintes de lindex.
## Protocole client exécuté
Le client de développement commence par une fixture explicite de **260 blocs
en trois fragments**. Les widgets réels vérifient recherche, filtres et
pagination, assemblage atomique, rejet des réponses périmées ou invalides,
et conservation des grands compteurs dans la narration. Deux dimensions de
GUI sont exercées : **854 × 480** et **427 × 240**, avec une aide défilante.
Cette fixture ne prétend pas représenter un inventaire de joueur.
La seconde passe crée un **nouveau monde plat de développement**, graine 1,
en survie, avec les commandes désactivées. Elle utilise la véritable touche
**B**, la connexion Minecraft et les paquets du mod :
1. Préparer côté serveur un bloc dor devant le joueur et trois blocs de diamant
dans son inventaire ; laisser les observations ordinaires du serveur agir.
2. Regarder lor puis ouvrir B : lor est vu sans être possédé ; le diamant est
possédé avec un stock de 3 sans être vu ; l’émeraude reste inconnue.
3. Fermer l’écran, retirer les diamants, puis rouvrir avec B : la possession
passée reste vraie et le stock actuel vaut 0.
4. Fermer le monde et vérifier le fichier de mémoire personnelle sauvegardé.
Les deux diagnostics signalent `passed: true` dans
`mods/sanctuary/build/run/clientGameTest/diagnostics/` :
- `sanctuary-blocodex-client.json` : fixture, widgets et fragments ;
- `sanctuary-blocodex-network-client.json` : états avant/après, touche et paquets
réels, observation du regard et sauvegarde à la fermeture.
Les captures `0005_sanctuary-blocodex-network-carried-three.png` et
`0006_sanctuary-blocodex-network-sticky-possession.png` se trouvent dans le dossier
`screenshots/` du même client. La seconde a été inspectée : le diamant reste
connu et possédé, avec **Inventory: 0**, dans linterface anglaise du test.
## Reproduction et limites
Depuis la racine du dépôt, avec Java 25 et un environnement graphique :
```sh
./gradlew -PsanctuaryClientTests=true :sanctuary:runClientGameTest
./gradlew :sanctuary:materialActivitySmoke
./gradlew check build assemblePack
```
La dernière commande a terminé avec succès. Le scénario client prouve une
connexion intégrée réelle ; il ne constitue pas une validation
réseau à plusieurs clients sur un serveur distant.
Les essais ne constituent pas un profil de performance dun grand serveur.
Les mondes, captures, diagnostics et journaux de test restent dans les dossiers
de développement ignorés. Le scénario réseau vérifie que sa nouvelle sauvegarde
est créée sous `mods/sanctuary/build/run/clientGameTest/saves/`. Aucune instance
Prism ni sauvegarde personnelle na été mise à jour. Aucune publication ni
modification du canal packwiz na été effectuée pour ces essais.