# CHANGELOG — kb-lib ## 0.4.8-pre.007 — exécuteur Solana Program Metadata et structure Metaplex - ajoute `ExMetadataSolanaProgramMetadataExecutor`, les intents typés, les helpers de PDA et les builders wire exacts des neuf instructions stables `0..8` ; - conserve une sélection explicite canonical/non-canonical au lieu de l’inférer de la présence de `ProgramData`, pour couvrir aussi les contrats des loaders antérieurs ; - conserve toutes les opérations courantes comme exécutables, y compris `Write`, `SetAuthority`, `SetData`, `SetImmutable`, `Trim` et `Close`, avec approbation destructive explicite plutôt qu’une suppression de capacité ; - soumet chaque plan préparé au cadre commun `ExSafetyChecker` et impose simulation, signataires autorisés, plafonds et quatre postconditions canoniques ; - ajoute la matrice d’exécution, le test de parité des capacités et le test d’API externe depuis la façade de crate ; - retire l’exécuteur Solana Program Metadata de l’inventaire réservé ; - corrige le total attendu du test d’inventaire des exécuteurs réservés de `104` à `103`, conformément au retrait de `ExMetadataSolanaProgramMetadataExecutor` de cet inventaire ; - confirme que les neuf opérations stables sont courantes et qu’aucune annotation `#[deprecated]` n’est justifiée par les sources officielles actuelles ; - sépare les matérialisations Metaplex Token Metadata dans un sous-module dédié sans modifier les clés ni la sémantique métier des projections déjà livrées, et consigne le constat dans un audit structurel dédié ; - corrige la confusion entre identité runtime `kb-lib.*` et `processorName` persisté : Metaplex utilise désormais `materializer.metadata.metaplex_token_metadata`, Solana Program Metadata `materializer.metadata.solana_program_metadata` et Token-2022 `materializer.metadata.token_2022` ; - porte les schémas de projection Metaplex et Token-2022 à la version `2` pour refléter cette correction de provenance ; - extrait la matérialisation Token-2022 de `metadata/core.rs` vers le composant dédié `metadata/token_2022/` sans modifier la fonction publique ni les clés de sortie ; - confirme que les états `TokenMetadata`, `TokenGroup` et `TokenGroupMember` sont matérialisés, que les metadata pointers appartiennent déjà au matérialiseur d’administration et que les cinq faits d’instructions `spl-token-metadata-interface` restent à fermer en `pre.010` ; - inscrit dans le TODO et le ROADMAP `0.5.x` un audit transversal des règles de complétude decoder/materializer/executor, de la sécurité et des statuts deprecated/replaced. - harmonise les 25 composants de matérialisation autour des paires `MT_*_COMPONENT_NAME` / `MT_*_PROCESSOR_NAME`, avec relation exacte entre identité runtime `kb-lib.materializer.*` et processeur persisté `materializer.*` ; - ajoute la provenance persistée manquante aux sorties `admin`, `compliance.audit`, `fees`, `lifecycle` et `staking`, puis porte leurs contrats à `projectionVersion = 2` ; - remplace les implémentations génériques `core.rs` par des `materializer.rs`, transforme les fichiers parents en façades pures et déplace toutes les familles, surfaces, tables et identités vers les `constants.rs` réexportés jusqu’à la racine de crate ; - rend les 14 matérialisateurs réservés réellement neutres sur les deux traits : famille vide constante, refus legacy, liste d’événements vide et résultat contextuel `Ignored` ; - aligne les routes de logging d’exemple sur `compliance.audit`, `transaction.annotations` et `token.accounts`, et ajoute des audits mécaniques empêchant la réintroduction de noms, constantes ou façades non conformes ; - conserve `MtMetadataMaterializer` comme wrapper de compatibilité du composant canonique `MtSolanaProgramMetadataMaterializer`, sans second `processorName` ni second propriétaire de faits. - corrige les warnings de contrats opérationnels en ajoutant des événements `tracing` réels aux matérialisations `fees`, Metaplex Token Metadata et metadata Token-2022, avec `component_name`, `processor_name`, statut, identité de compte ou d’instruction et nombre de sorties ; - consomme désormais l’identité runtime `MT_METADATA_TOKEN_2022_COMPONENT_NAME` dans l’implémentation state-only au lieu de la limiter aux réexports, et étend les audits pour refuser tout tracing target opérationnel déclaré mais inutilisé ainsi que toute identité de composant absente de son implémentation. ## 0.4.8-pre.006 — matérialisation Solana Program Metadata - active `MtMetadataMaterializer` comme matérialiseur contextualisé de la surface exacte `metadata.solana_program_metadata` ; - matérialise les neuf instructions stables comme faits de mutation committés, sans leur attribuer l’autorité de l’état final ; - matérialise les snapshots `Buffer` et `Metadata` comme états autoritatifs bornés, avec conservation intégrale des données directes et Buffer en base64 et SHA-256 ; - conserve les URL et références `External` comme données on-chain sans fetch distant ni lecture implicite du compte référencé ; - refuse les instructions échouées ou non committées et ignore les programmes, familles ou entrées étrangers ; - ferme une matrice de onze projections : deux états de comptes et neuf faits d’instructions ; - confirme que les neuf instructions stables sont courantes, non dépréciées et non remplacées ; l’ancien nom pré-stable du tag `5` reste une provenance de `Trim` seulement ; - ajoute les helpers publics de matérialisation d’états et le test d’API externe correspondant. - corrige le helper de test de snapshot afin d’utiliser les variantes wire existantes `Encoding::Utf8` et `Format::Json`. - précise que les opérations destructrices, irréversibles ou écrasantes restent exécutables : leur progression vers simulation, signature et envoi doit être gouvernée par le cadre commun `ExSafetyChecker`, et non supprimée du périmètre de l’exécuteur. - validation reçue le 5 août 2026 : `cargo fmt`, `cargo check --workspace`, `cargo clippy --all-targets`, audit workspace et 667 tests unitaires `kb-lib` réussis, avec les tests d’API externes et les doc-tests. ## 0.4.8-pre.005 — instructions Solana Program Metadata - active `DcMetadataSolanaProgramMetadataDecoder` pour les neuf discriminants stables `0..8` ; - décode les arguments, comptes positionnels, signers, flags writable et sources inline ou Buffer avec des bornes explicites ; - conserve les formes runtime actuelles non produites par le SDK, notamment `SetData` sur trois octets et les suffixes ignorés de `SetImmutable`, `Trim` et `Close` ; - distingue comptes restants acceptés par le runtime et longueurs de comptes exactes ; - documente le nom pré-stable `WithdrawExcessLamports` du tag `5` sans créer une entrée historique distincte de `Trim` ; - ajoute la matrice d’instructions, l’audit historique, les tests positifs/négatifs et le test de façade publique ; - retire le décodeur Solana Program Metadata de l’inventaire des décodeurs réservés. - aligne la structure du composant sur les règles du workspace : façade limitée aux sous-modules et réexports, implémentation déplacée dans `decoder.rs`, constantes centralisées dans `constants.rs` et accès internes via `crate::`. - corrige les vecteurs négatifs `Initialize` afin de placer explicitement les valeurs invalides après les 16 octets du seed et de vérifier séparément `Encoding`, `Compression`, `Format` et `DataSource`. - validation reçue le 5 août 2026 : `cargo fmt`, `cargo check --workspace`, `cargo clippy --all-targets`, audit workspace et 660 tests unitaires `kb-lib` réussis, ainsi que les tests d’API externes et la matrice de nomenclature. ## 0.4.8-pre.004 — comptes Solana Program Metadata - ajoute les décodeurs publics bornés des comptes `Buffer` et `Metadata` ainsi que leur sélection par discriminateur ; - valide le propriétaire `ProgM6…`, la borne Solana de 10 MiB et les headers fixes de 96 octets ; - valide les PDA metadata canonical et non-canonical sans inventer de PDA stable pour les Buffers à autorité mutable ou alloués par keypair ; - décode les sources `Direct`, `Url` et `External` sans lecture off-chain ni lecture implicite du compte référencé ; - distingue `data_length` de la capacité allouée restante, compatible avec l’instruction `Extend` ; - ajoute une matrice contractuelle machine-readable, les tests de bornes, de données malformées et de façade publique ; - applique le retour explicite requis par Clippy dans le test de longueur wire du modèle externe. - corrige l’ombre portée de `metadata_program` dans trois tests de comptes afin d’éviter l’inférence récursive `Option<_>` signalée par `E0275`. ## 0.4.8-pre.003 — modèles Solana Program Metadata - ajoute les constantes publiques des layouts fixes `Buffer`, `Metadata`, seed et référence externe ; - ajoute les enums wire fermées, les cinq erreurs custom officielles et les conversions fail-closed ; - ajoute les modèles bornés du seed, des données directes, URL et externes sans résolution off-chain ; - ajoute les sérialisations wire sûres, les représentations JSON stables et les tests de façade publique ; - conserve le décodeur Solana Program Metadata au statut réservé jusqu’aux phases comptes et instructions. ## 0.4.7-pre.016 — clôture documentaire Metaplex - généralise la documentation d’usage de la surface Metaplex ; - reporte explicitement les validations Devnet spécialisées sans dégrader le statut des builders et tests existants. ## 0.4.7-pre.011 — réouverture des validations réseau ### Documentation - réorganisation de `README.md`, `USAGE.md`, `TODO.md` et du changelog selon leur rôle documentaire ; - suppression des tâches Metaplex terminées du TODO ; - maintien des campagnes réseau hors du TODO de `kb-lib`, la surface de builders étant achevée. ## 0.4.7-pre.006 — fermeture de l’exécuteur Metaplex - fermeture des 35 opérations officiellement constructibles : 20 courantes et 15 dépréciées ; - ajout des éditions, use authority, escrow, mint, migrate, use, collect, print et resize ; - conservation des 22 instructions remplacées en decode-only et de Bubblegum comme frontière externe ; - extension des tests unitaires d’intent, builder, capability, PDA et signers. ## 0.4.7-pre.005 — programmable NFTs et délégations - ajout des wrappers officiels `Burn`, `Delegate`, `Revoke`, `Lock`, `Unlock`, `Transfer` et `CloseAccounts` ; - validation des comptes Token Authorization Rules et maintien de la simulation obligatoire. ## 0.4.7-pre.004 — collections, créateurs et autorités - ajout des wrappers courants `Verify` et `Unverify` ; - ajout de `SetCollectionSize` comme opération dépréciée soumise à approbation explicite. ## 0.4.7-pre.003 — fondations de l’exécuteur Metaplex - remplacement de l’exécuteur réservé par une surface typée ; - ajout des builders `Create`, `Update`, `PuffMetadata` et `SetTokenStandard` ; - correction des dépendances Solana modulaires, suppression des opérateurs `?` introduits et ajout des tests de parité ; - classification des opérations courantes, remplacées et obsolètes constructibles. ## 0.4.7-pre.002 — contrat Metaplex fermé - classification exhaustive des 58 discriminants ; - propriété unique des faits metadata, admin, lifecycle et risk/compliance ; - séparation contractuelle avec Token-2022. ## 0.4.6 - alignement de la crate sur la version fonctionnelle bot3 `0.4.6` ; - clôture des tâches de migration applicables et report explicite des évolutions ultérieures dans le TODO. ## 0.1.0-pre.072 - reclassement du TODO selon les blocants avant `0.4.6`, les travaux `0.4.7`, les versions ultérieures et les dépendances conditionnelles. ## 0.1.0-pre.070 - enrichissement de `USAGE.md` avec plusieurs exemples couvrant les familles d’API publiques significatives. ## 0.1.0-pre.069 ### Documentation - ajout de `README.md`, `TODO.md`, `USAGE.md` et du présent changelog selon les normes bot3 ; - suppression de la section `Non publié`, incompatible avec le rôle chronologique du changelog ; - retrait des limitations et travaux futurs du changelog ; - correction de la frontière entre historique, TODO et limites durables d’utilisation ; - réécriture de `TODO.md` sous forme de tâches uniquement ; - correction des exemples de `USAGE.md` afin de ne pas utiliser l’opérateur `?`. ## 0.1.0 ### Migré - consolidation des modèles, décodeurs, exécuteurs et matérialisateurs issus de nombreuses crates bot2 dans une façade unique ; - migration des surfaces Solana Core, SPL Memo, SPL Token, SPL ATA, Token-2022, registre ElGamal et du décodeur Metaplex Token Metadata ; - migration des contrats de replay, de sécurité et de matérialisation. ### Modifié - adoption de Rust 2024, de `#![forbid(unsafe_code)]`, `#![deny(unreachable_pub)]` et des conventions strictes d’exports, d’erreurs et de tracing ; - remplacement des anciennes frontières de crates par des modules privés et des réexports publics contrôlés. ### Validation - tests unitaires des décodeurs, exécuteurs, matérialisateurs et contrats consolidés ; - matrices contractuelles chargées par les tests concernés ; - validations Devnet conservées pour les scénarios explicitement couverts pendant la migration.