173 lines
15 KiB
Markdown
173 lines
15 KiB
Markdown
<!-- file: kb-lib/CHANGELOG.md -->
|
||
<!-- version: 30 -->
|
||
|
||
# CHANGELOG — kb-lib
|
||
|
||
## 0.4.8-pre.008 — matérialiseurs metadata spécialisés
|
||
|
||
- corrige le décodeur Solana Program Metadata pour interpréter les flags `signer` et `writable` du replay comme des privilèges globaux de message : les privilèges requis sont désormais des minima, et les sur-ensembles légitimes dus au fee payer ou à d’autres instructions ne sont plus rejetés ;
|
||
- ajoute une régression couvrant les neuf instructions avec une autorité signer et writable au niveau du message, tout en conservant le refus des privilèges requis manquants ;
|
||
- corrige la déclaration Rust de `MT_METADATA_METAPLEX_TOKEN_METADATA_ACCEPTED_FAMILIES` livrée dans `pre.008-fix-001`.
|
||
- remplace le type ambigu `MtSolanaProgramMetadataMaterializer` par `MtMetadataSolanaProgramMaterializer` et retire le wrapper générique `MtMetadataMaterializer` ;
|
||
- ajoute `MtMetadataMetaplexTokenMetadataMaterializer` et `MtMetadataToken2022Materializer`, chacun avec ses deux contrats, son identité, son tracing target et un ownership instructionnel exact ;
|
||
- conserve séparément les APIs de snapshots Metaplex, Solana Program Metadata et Token-2022, sans confondre fait d’instruction et état autoritatif ;
|
||
- classe les neuf instructions incorporées Token Metadata et Token Group sous la famille `Metadata`, afin qu’elles soient possédées par le matérialiseur metadata spécialisé plutôt que par un composant d’administration générique ;
|
||
- étend les tests de façade publique et les contrats d’inventaire aux trois matérialiseurs metadata spécialisés.
|
||
|
||
## 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 ;
|
||
- prépare la spécialisation complète des matérialiseurs metadata, finalisée en `0.4.8-pre.008` sans wrapper générique ambigu.
|
||
- 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 les opérations de snapshot, puis é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.
|