0.5.1-pre.002

This commit is contained in:
2026-08-09 19:34:08 +02:00
parent 816eee59a9
commit 6a680767ae
767 changed files with 12257 additions and 12195 deletions

230
ks-lib/CHANGELOG.md Normal file
View File

@@ -0,0 +1,230 @@
<!-- file: ks-lib/CHANGELOG.md -->
<!-- version: 51 -->
# CHANGELOG — ks-lib
## `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.