24 KiB
24 KiB
CHANGELOG — kb-lib
0.4.8-pre.015 — réconciliation des matrices Metadata
pre.015-delta-fix-001retire du rustdoc public de l’inventaire Metaplex la provenance obsolète0.4.7-pre.005et décrit désormais la surface comme l’inventaire audité courant ;- ajoute un test d’API externe qui parcourt les 35 opérations Metaplex depuis les seuls exports crate-root, vérifie les 15 opérations explicitement deprecated et refuse un Program ID étranger ;
- retire du TODO les validations réseau complémentaires Metaplex déjà closes en
pre.013, sans supprimer le réaudit transversal prévu pour0.5.x; - le delta initial réconcilie les métadonnées de progression de la matrice contractuelle Metaplex Token Metadata avec la surface réellement clôturée en
pre.013; - conserve intactes les 58 lignes du contrat d’instructions, les inventaires de comptes et les matrices historiques fermées.
0.4.8-pre.013 — exactitude des builders Metaplex courants
pre.013-delta-fix-033aligne la validation du décodeurUpdatesur les privilèges runtime globaux : l’authority doit signer et les comptes mutables doivent rester writable, mais un même wallet utilisé comme authority et fee payer peut apparaître writable à la position authority lors du replay Core ; le testmodern_update_variants_accept_transaction_privilege_supersetscouvre cette forme sans augmenter le nombre total de tests.pre.013-delta-fix-032corrige le contrat des comptes optionnels terminaux des instructions escrow historiquesCreateEscrowAccountetTransferOutOfEscrow: lorsqueauthority=None, aucun placeholder Metaplex n’est ajouté en fin de liste, conformément aux builders officiels et au handler qui déduit la présence de l’autorité à partir du nombre de comptes ; les comptes optionnels positionnels des instructions courantes conservent leurs placeholders. Le test de builder existant couvre désormais les formes escrow sans authority et avec authority explicite.pre.013-delta-fix-029aligne le décodeur courantUsesur les privilèges minimaux du buildermpl-token-metadata 5.1.1: l’autorité et le payer doivent signer, Metadata doit être writable, et les comptes optionnels réellement présents (delegate_record,token,edition) restent writable ; les privilèges globaux supplémentaires hérités du fee payer ne provoquent plus de faux rejet.pre.013-delta-fix-027normalise la projection JSON canonique des comptesTokenRecord:delegateetlocked_transfersont désormais exposés en chaînes base58, comme les champs typés du snapshot, au lieu de dépendre de la représentation Serde interne desolana_pubkey::Pubkey; la régression existante verrouille explicitement ces deux projections etdelegate_role.pre.013-delta-fix-026corrige le replay des opérations pNFTDelegate/RevokeetLock/Unlocksur la frontière des privilèges globaux de transaction : le décodeur vérifie désormais uniquement les minima signer/writable réellement requis au lieu de rejeter les sur-ensembles hérités lorsqu’un même compte occupe aussi le rôle de fee payer ;- conserve l’exigence writable des comptes optionnels réellement mutés (
delegate_record,token_record,token) lorsqu’ils ne sont pas le placeholder positionnel du programme Token Metadata ; - ajoute une régression reproduisant
Delegate/Revokeavec l’autorité également fee payer etLock/Unlockavec le token owner également fee payer, sans relâcher les refus de signer/writable obligatoires manquants. pre.013-delta-fix-025corrige la lecture stateful des Master Edition pNFT compactes : les deux octets finaux de l’allocation 20 octets sont des champs sémantiques Metaplex (fee flag, puisTokenStandard) et ne sont plus traités comme du padding nul ;- conserve une validation fermée : les octets réservés intermédiaires doivent rester nuls, le fee flag est borné à
0/1, et le trailer Master Edition n’accepte queNonFungible(0)ouProgrammableNonFungible(4); - ajoute une régression reproduisant une Master Edition V2 compacte
supply=0,max_supply=0avec trailer pNFT, ainsi que les refus d’un fee flag, d’un token standard ou d’un octet réservé invalides. pre.013-delta-fix-022corrige la régressionmodern_print_accepts_transaction_privilege_supersets: unedition_token_recordréellement fourni reste writable conformément au builderPrintcourant ; le test continue d'exercer les privilèges globaux supplémentaires sans retirer un minimum obligatoire ;- aucun assouplissement du décodeur
Printn'est introduit par ce correctif. pre.013-delta-fix-021corrige le décodage des comptesEditionréellement alloués par le programme courant :Edition::LENdécrit 41 octets sérialisés, tandis que les allocations Metaplex connues sont 42 octets en forme compacte et 241 octets en forme historique ;- accepte uniquement la sérialisation exacte ou ces allocations connues avec padding nul, refuse les longueurs/paddings inconnus et verrouille aussi les allocations connues de Master Edition après l’élargissement de la borne nécessaire aux anciennes Edition ;
- ajoute une régression couvrant Edition compacte/historique, Master Edition compacte/historique, longueur inconnue et padding non nul.
pre.013-delta-fix-018corrigeVerify/Unverifysur la même frontière de privilèges globaux déjà rencontrée pourCreate/Mint: l'autorité peut être writable dans le message parce qu'elle est aussi fee payer, sans que l'AccountMeta Metaplex exige ce privilège ; le décodeur vérifie désormais uniquement les minima signer/writable réellement requis ;- aligne
Unverifysur les 7 positions du wrapper courantmpl-token-metadata 5.1.1au lieu d'exiger artificiellement 8 comptes, et ajoute une régression couvrantVerifyetUnverifylorsque l'autorité fee payer hérite du privilège writable global ; pre.013-delta-fix-009corrige le décodeur des opérations courantesCreateetMintpour interpréter les flags signer/writable comme des privilèges globaux de transaction : seuls les privilèges requis constituent désormais des minima, sans rejeter les sur-ensembles légitimes dus au fee payer ou à un même wallet présent sous plusieurs rôles ;- accepte explicitement
Create.mint_as_signer = falsepour un mint préexistant et ne force plusupdate_authority_as_signer = true, conformément aux booléens exposés par le SDK courant ; - conserve l’exigence writable pour un master edition/token record réellement fourni, tout en distinguant ces comptes des placeholders Metaplex positionnels ;
- ajoute deux régressions couvrant le
Createà mint préexistant et leMintoù token owner, authority et payer héritent de privilèges transactionnels supérieurs. pre.013-delta-fix-004ferme l’audit des comptes positionnels réellement optionnels du SDK courant pourCreateEscrowAccount,TransferOutOfEscrow,Mint,Migrate,Use,PrintetResize;- expose ces optionalités dans les intents publics et encode une absence avec le placeholder readonly du programme Metaplex, conformément au contrat Kinobi déjà attendu par le décodeur et la matrice ;
- conserve explicitement requis les comptes système/programmes qui ne sont que defaultables par le builder mais restent présents dans la struct d’instruction courante ;
- ajoute des régressions sur les positions optionnelles de
Mint,Migrate,Use,PrintetResize, ainsi que sur l’autorité optionnelle d’escrow ; - intègre les deux
returnajoutés lors de la validation locale defix-003dans les closures de génération de pubkeys de test, afin que l’archive reproduise l’état Clippy réellement validé ; - migre
PrintetResizedepuis les account metas figées de l’IDL historique vers les builders officielsmpl-token-metadata 5.1.1; - rétablit le contrat signer courant de
Print:edition_mint,edition_mint_authority,payeretmaster_token_account_ownersont désormais déclarés signataires conformément au SDK officiel ; - rétablit le contrat signer courant de
Resize:payerest writable + signer, tandis que l’autorité fournie reste signer ; - ajoute des régressions directes sur l’ordre, le discriminator et les flags signer/writable de ces deux opérations avant toute campagne Devnet associée.
0.4.8-pre.011 — complétude Token-2022 Token Metadata
- ajoute les intents et builders exacts
UpdateTokenMetadataAuthorityetEmitTokenMetadata; - encode l’autorité nullable via le contrat officiel et borne les plages
Emità 1 024 octets ; - conserve le
returnDatade simulation et expose le parseur strict de la valeurTokenMetadata; - corrige le feature-gating TS-RS du
serde_json::Valueexposé par le résultat de simulation afin que le deriveTSet la régénération des bindings utilisentJsonValue; - refuse les plages
Emitouvertes avecstartsansend, dont la taille ne peut pas être bornée avant simulation ; - aligne le test de parité de la matrice d’exécution sur les cinq opérations de
spl-token-metadata-interface, en rattachant égalementUpdateAuthorityetEmità l’entréetoken_metadata; - extrait le mapping capacités → familles de matrice dans un helper testé directement, afin de rendre explicite et vérifiable le rattachement de
update_token_metadata_authorityetemit_token_metadataàtoken_metadata; - ajoute les régressions de clôture couvrant l’autorité nullable
None, la formeEmitcomplète sans plage et la plage maximale exactement égale à 1 024 octets. - corrige dans
pre.011-fix-006les deux attentes de nommage de ces régressions afin de vérifier les codes d’opération canoniquesspl.token_2022.update_token_metadata_authorityetspl.token_2022.emit_token_metadata.
0.4.8-pre.008 — matérialiseurs metadata spécialisés
- corrige le décodeur Solana Program Metadata pour interpréter les flags
signeretwritabledu 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_FAMILIESlivrée danspre.008-fix-001. - remplace le type ambigu
MtSolanaProgramMetadataMaterializerparMtMetadataSolanaProgramMaterializeret retire le wrapper génériqueMtMetadataMaterializer; - ajoute
MtMetadataMetaplexTokenMetadataMaterializeretMtMetadataToken2022Materializer, 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 stables0..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,TrimetClose, avec approbation destructive explicite plutôt qu’une suppression de capacité ; - soumet chaque plan préparé au cadre commun
ExSafetyCheckeret 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 deExMetadataSolanaProgramMetadataExecutorde 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.*etprocessorNamepersisté : Metaplex utilise désormaismaterializer.metadata.metaplex_token_metadata, Solana Program Metadatamaterializer.metadata.solana_program_metadataet Token-2022materializer.metadata.token_2022; - porte les schémas de projection Metaplex et Token-2022 à la version
2pour refléter cette correction de provenance ; - extrait la matérialisation Token-2022 de
metadata/core.rsvers le composant dédiémetadata/token_2022/sans modifier la fonction publique ni les clés de sortie ; - confirme que les états
TokenMetadata,TokenGroupetTokenGroupMembersont matérialisés, que les metadata pointers appartiennent déjà au matérialiseur d’administration et que les cinq faits d’instructionsspl-token-metadata-interfacerestent à fermer enpre.010; - inscrit dans le TODO et le ROADMAP
0.5.xun 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é runtimekb-lib.materializer.*et processeur persistématerializer.*; - ajoute la provenance persistée manquante aux sorties
admin,compliance.audit,fees,lifecycleetstaking, puis porte leurs contrats àprojectionVersion = 2; - remplace les implémentations génériques
core.rspar desmaterializer.rs, transforme les fichiers parents en façades pures et déplace toutes les familles, surfaces, tables et identités vers lesconstants.rsré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.annotationsettoken.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.008sans wrapper générique ambigu. - corrige les warnings de contrats opérationnels en ajoutant des événements
tracingréels aux matérialisationsfees, Metaplex Token Metadata et metadata Token-2022, aveccomponent_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_NAMEdans 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
MtMetadataMaterializercomme matérialiseur contextualisé de la surface exactemetadata.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
BufferetMetadatacomme é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
Externalcomme 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
5reste une provenance deTrimseulement ; - 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::Utf8etFormat::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 unitaireskb-libréussis, avec les tests d’API externes et les doc-tests.
0.4.8-pre.005 — instructions Solana Program Metadata
- active
DcMetadataSolanaProgramMetadataDecoderpour les neuf discriminants stables0..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
SetDatasur trois octets et les suffixes ignorés deSetImmutable,TrimetClose; - distingue comptes restants acceptés par le runtime et longueurs de comptes exactes ;
- documente le nom pré-stable
WithdrawExcessLamportsdu tag5sans créer une entrée historique distincte deTrim; - 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 dansconstants.rset accès internes viacrate::. - corrige les vecteurs négatifs
Initializeafin de placer explicitement les valeurs invalides après les 16 octets du seed et de vérifier séparémentEncoding,Compression,FormatetDataSource. - validation reçue le 5 août 2026 :
cargo fmt,cargo check --workspace,cargo clippy --all-targets, audit workspace et 660 tests unitaireskb-libré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
BufferetMetadataainsi 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,UrletExternalsans lecture off-chain ni lecture implicite du compte référencé ; - distingue
data_lengthde la capacité allouée restante, compatible avec l’instructionExtend; - 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_programdans trois tests de comptes afin d’éviter l’inférence récursiveOption<_>signalée parE0275.
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.mdet 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,TransferetCloseAccounts; - 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
VerifyetUnverify; - ajout de
SetCollectionSizecomme 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,PuffMetadataetSetTokenStandard; - 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 travaux0.4.7, les versions ultérieures et les dépendances conditionnelles.
0.1.0-pre.070
- enrichissement de
USAGE.mdavec plusieurs exemples couvrant les familles d’API publiques significatives.
0.1.0-pre.069
Documentation
- ajout de
README.md,TODO.md,USAGE.mdet 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.mdsous forme de tâches uniquement ; - correction des exemples de
USAGE.mdafin 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.