Files
khadhroony-bot3/ks-lib/CHANGELOG.md
2026-08-12 11:00:59 +02:00

26 KiB
Raw Blame History

CHANGELOG — ks-lib

0.5.3-pre.003

  • fait évoluer MdCoreInstructionReplayInput vers le contrat version 3 afin de transporter le contexte Core nécessaire aux futurs décodeurs : block_time, stack_height, parent CPI et returnData transactionnelle ;
  • renomme le contexte de transaction outer_instructions_json en top_level_instructions_json dans ce nouveau contrat store/replay, sans supprimer les usages historiques du terme outer lorsqu'ils décrivent encore explicitement une sémantique de décodeur existante ;
  • conserve le constructeur historique de replay pour les tests/sources synthétiques et ajoute l'enrichissement with_core_context utilisé par ks-store.

0.5.1-pre.008

  • retire la dépendance ts-rs, les dérivations/attributs TS-RS et les bindings TypeScript générés historiques de ks-lib ;
  • conserve inchangés les contrats Rust de décodage, matérialisation, exécution et modèles : toute exposition TypeScript appartient désormais à un DTO/wrapper de l'application consommatrice.

0.5.1-pre.003

  • migre les 255 identités runtime/persistables effectivement présentes de kb-lib.decoder.*, kb-lib.executor.* et kb-lib.materializer.* vers ks-lib-decoder.*, ks-lib-executor.* et ks-lib-materializer.* ;
  • synchronise les registres actifs et réservés, tracing targets, matrices contractuelles, tests de cohérence et documentation de nomenclature sans modifier les processor_name sémantiques ;
  • corrige l'inventaire de cadrage de 256 à 255 identités uniques : 118 décodeurs, 112 exécuteurs et 25 matérialiseurs.

0.5.1-pre.002

  • renomme physiquement kb-lib en ks-lib et l'identifiant Rust public kb_lib en ks_lib dans les consommateurs et tests d'API externe ;
  • conserve volontairement les identités runtime/persistées kb-lib.* pour 0.5.1-pre.003, afin de séparer le renommage Cargo de la migration de provenance/replay.

0.4.8-pre.015 — réconciliation des matrices Metadata

  • pre.015-delta-fix-001 retire du rustdoc public de linventaire Metaplex la provenance obsolète 0.4.7-pre.005 et décrit désormais la surface comme linventaire audité courant ;
  • ajoute un test dAPI 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 pour 0.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 dinstructions, les inventaires de comptes et les matrices historiques fermées.

0.4.8-pre.013 — exactitude des builders Metaplex courants

  • pre.013-delta-fix-033 aligne la validation du décodeur Update sur les privilèges runtime globaux : lauthority 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 test modern_update_variants_accept_transaction_privilege_supersets couvre cette forme sans augmenter le nombre total de tests.
  • pre.013-delta-fix-032 corrige le contrat des comptes optionnels terminaux des instructions escrow historiques CreateEscrowAccount et TransferOutOfEscrow : lorsque authority=None, aucun placeholder Metaplex nest ajouté en fin de liste, conformément aux builders officiels et au handler qui déduit la présence de lautorité à 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-029 aligne le décodeur courant Use sur les privilèges minimaux du builder mpl-token-metadata 5.1.1 : lautorité 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-027 normalise la projection JSON canonique des comptes TokenRecord : delegate et locked_transfer sont 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 de solana_pubkey::Pubkey ; la régression existante verrouille explicitement ces deux projections et delegate_role.
  • pre.013-delta-fix-026 corrige le replay des opérations pNFT Delegate/Revoke et Lock/Unlock sur 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 lorsquun même compte occupe aussi le rôle de fee payer ;
  • conserve lexigence writable des comptes optionnels réellement mutés (delegate_record, token_record, token) lorsquils ne sont pas le placeholder positionnel du programme Token Metadata ;
  • ajoute une régression reproduisant Delegate/Revoke avec lautorité également fee payer et Lock/Unlock avec le token owner également fee payer, sans relâcher les refus de signer/writable obligatoires manquants.
  • pre.013-delta-fix-025 corrige la lecture stateful des Master Edition pNFT compactes : les deux octets finaux de lallocation 20 octets sont des champs sémantiques Metaplex (fee flag, puis TokenStandard) 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 naccepte que NonFungible(0) ou ProgrammableNonFungible(4) ;
  • ajoute une régression reproduisant une Master Edition V2 compacte supply=0,max_supply=0 avec trailer pNFT, ainsi que les refus dun fee flag, dun token standard ou dun octet réservé invalides.
  • pre.013-delta-fix-022 corrige la régression modern_print_accepts_transaction_privilege_supersets : un edition_token_record réellement fourni reste writable conformément au builder Print courant ; le test continue d'exercer les privilèges globaux supplémentaires sans retirer un minimum obligatoire ;
  • aucun assouplissement du décodeur Print n'est introduit par ce correctif.
  • pre.013-delta-fix-021 corrige le décodage des comptes Edition réellement alloués par le programme courant : Edition::LEN dé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-018 corrige Verify/Unverify sur la même frontière de privilèges globaux déjà rencontrée pour Create/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 Unverify sur les 7 positions du wrapper courant mpl-token-metadata 5.1.1 au lieu d'exiger artificiellement 8 comptes, et ajoute une régression couvrant Verify et Unverify lorsque l'autorité fee payer hérite du privilège writable global ;
  • pre.013-delta-fix-009 corrige le décodeur des opérations courantes Create et Mint pour 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 = false pour un mint préexistant et ne force plus update_authority_as_signer = true, conformément aux booléens exposés par le SDK courant ;
  • conserve lexigence 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 le Mint où token owner, authority et payer héritent de privilèges transactionnels supérieurs.
  • pre.013-delta-fix-004 ferme laudit des comptes positionnels réellement optionnels du SDK courant pour CreateEscrowAccount, TransferOutOfEscrow, Mint, Migrate, Use, Print et Resize ;
  • 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 dinstruction courante ;
  • ajoute des régressions sur les positions optionnelles de Mint, Migrate, Use, Print et Resize, ainsi que sur lautorité optionnelle descrow ;
  • intègre les deux return ajoutés lors de la validation locale de fix-003 dans les closures de génération de pubkeys de test, afin que larchive reproduise létat Clippy réellement validé ;
  • migre Print et Resize depuis les account metas figées de lIDL historique vers les builders officiels mpl-token-metadata 5.1.1 ;
  • rétablit le contrat signer courant de Print : edition_mint, edition_mint_authority, payer et master_token_account_owner sont désormais déclarés signataires conformément au SDK officiel ;
  • rétablit le contrat signer courant de Resize : payer est writable + signer, tandis que lautorité fournie reste signer ;
  • ajoute des régressions directes sur lordre, 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 UpdateTokenMetadataAuthority et EmitTokenMetadata ;
  • encode lautorité nullable via le contrat officiel et borne les plages Emit à 1 024 octets ;
  • conserve le returnData de simulation et expose le parseur strict de la valeur TokenMetadata ;
  • corrige le feature-gating TS-RS du serde_json::Value exposé par le résultat de simulation afin que le derive TS et la régénération des bindings utilisent JsonValue ;
  • refuse les plages Emit ouvertes avec start sans end, dont la taille ne peut pas être bornée avant simulation ;
  • aligne le test de parité de la matrice dexécution sur les cinq opérations de spl-token-metadata-interface, en rattachant également UpdateAuthority et Emit à lentrée token_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_authority et emit_token_metadata à token_metadata ;
  • ajoute les régressions de clôture couvrant lautorité nullable None, la forme Emit complète sans plage et la plage maximale exactement égale à 1 024 octets.
  • corrige dans pre.011-fix-006 les deux attentes de nommage de ces régressions afin de vérifier les codes dopération canoniques spl.token_2022.update_token_metadata_authority et spl.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 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 à dautres 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 dinstruction et état autoritatif ;
  • classe les neuf instructions incorporées Token Metadata et Token Group sous la famille Metadata, afin quelles soient possédées par le matérialiseur metadata spécialisé plutôt que par un composant dadministration générique ;
  • étend les tests de façade publique et les contrats dinventaire 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 linfé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 quune 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 dexécution, le test de parité des capacités et le test dAPI externe depuis la façade de crate ;
  • retire lexécuteur Solana Program Metadata de linventaire réservé ;
  • corrige le total attendu du test dinventaire 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 quaucune annotation #[deprecated] nest 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 dadministration et que les cinq faits dinstructions 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 dexemple 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 dinstruction et nombre de sorties ;
  • consomme désormais lidentité 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 lautorité 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 dinstructions ;
  • confirme que les neuf instructions stables sont courantes, non dépréciées et non remplacées ; lancien nom pré-stable du tag 5 reste une provenance de Trim seulement ;
  • ajoute les helpers publics de matérialisation détats et le test dAPI externe correspondant.
  • corrige le helper de test de snapshot afin dutiliser 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 lexécuteur.
  • validation reçue le 5 août 2026 : cargo fmt, cargo check --workspace, cargo clippy --all-targets, audit workspace et 667 tests unitaires ks-lib réussis, avec les tests dAPI 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 dinstructions, laudit historique, les tests positifs/négatifs et le test de façade publique ;
  • retire le décodeur Solana Program Metadata de linventaire 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 ks-lib réussis, ainsi que les tests dAPI 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 linstruction 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 lombre portée de metadata_program dans trois tests de comptes afin déviter linfé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é jusquaux phases comptes et instructions.

0.4.7-pre.016 — clôture documentaire Metaplex

  • généralise la documentation dusage 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 ks-lib, la surface de builders étant achevée.

0.4.7-pre.006 — fermeture de lexé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 dintent, 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 lexécuteur Metaplex

  • remplacement de lexé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 dAPI 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 dutilisation ;
  • réécriture de TODO.md sous forme de tâches uniquement ;
  • correction des exemples de USAGE.md afin de ne pas utiliser lopé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 dexports, derreurs 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.