v0.4.8-pre.011

This commit is contained in:
2026-08-07 07:14:49 +02:00
parent 3167297283
commit dcc1d382d9
38 changed files with 1358 additions and 129 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/README.md -->
<!-- version: 22 -->
<!-- version: 23 -->
# Documentation active de Khadhroony Bot3
@@ -100,6 +100,7 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
- [`validation/WEBSOCKET_MAINNET_RESEARCH_VALIDATION_REPORT.md`](validation/WEBSOCKET_MAINNET_RESEARCH_VALIDATION_REPORT.md) ;
- [`validation/MAINNET_RESEARCH_BACKFILL_VALIDATION_SCENARIO.md`](validation/MAINNET_RESEARCH_BACKFILL_VALIDATION_SCENARIO.md) ;
- [`validation/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_MAINNET_REPLAY_REPORT.md`](validation/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_MAINNET_REPLAY_REPORT.md) ;
- [`validation/V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md`](validation/V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md) — preuve de deux campagnes Devnet complètes couvrant les neuf opérations Solana Program Metadata ;
## Audits actifs
@@ -109,7 +110,8 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
- [`Audit 0.4.8-pre.007 — conventions et structure de tous les matérialisateurs`](audits/V0_4_8_PRE_007_MATERIALIZER_CONVENTION_AUDIT.md) ;
- [`Audit 0.4.8-pre.008 — pipeline Solana Program Metadata`](audits/V0_4_8_PRE_008_METADATA_SOLANA_PROGRAM_PIPELINE_AUDIT.md).
- [`Correctif 0.4.8-pre.008 — replay historique Solana Program Metadata`](audits/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_HISTORICAL_REPLAY_FIX.md) ;
- [`Audit 0.4.8-pre.009 — scénarios Devnet Solana Program Metadata`](audits/V0_4_8_PRE_009_METADATA_SOLANA_PROGRAM_DEVNET_SCENARIOS_AUDIT.md).
- [`Audit 0.4.8-pre.009 — scénarios Devnet Solana Program Metadata`](audits/V0_4_8_PRE_009_METADATA_SOLANA_PROGRAM_DEVNET_SCENARIOS_AUDIT.md) ;
- [`Audit 0.4.8-pre.011 — complétude Token-2022 Token Metadata`](audits/V0_4_8_PRE_011_TOKEN_2022_METADATA_COMPLETENESS_AUDIT.md).
## Plans de version actifs
@@ -118,3 +120,4 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
## Prompt de reprise
- [`Prompt actif 0.4.8`](../prompts/028_v0_4_8_spl_token_metadata_and_offchain_decision.md).

View File

@@ -0,0 +1,62 @@
<!-- file: docs/audits/V0_4_8_PRE_011_TOKEN_2022_METADATA_COMPLETENESS_AUDIT.md -->
<!-- version: 7 -->
# Audit `0.4.8-pre.011` — complétude Token-2022 Token Metadata
## Portée
Cette prerelease ferme les écarts dexécution synthétique des cinq instructions `spl-token-metadata-interface` implémentées par Token-2022. Elle ne crée aucun Program ID metadata autonome et ne lance aucune campagne Devnet, réservée à `pre.012`.
## Résultat fonctionnel
| Instruction | Wire | Intent | Builder | Retour/stateful | Matérialisation |
|-------------------|-----:|-------:|--------:|------------------------:|---------------------------------------:|
| `Initialize` | oui | oui | oui | snapshot TLV | instruction + snapshot |
| `UpdateField` | oui | oui | oui | snapshot TLV | instruction + snapshot |
| `RemoveKey` | oui | oui | oui | snapshot TLV | instruction + snapshot |
| `UpdateAuthority` | oui | oui | oui | postcondition authority | instruction + snapshot |
| `Emit` | oui | oui | oui | `returnData` borné | fait dinstruction, sans faux snapshot |
Les cinq opérations sont présentes dans les intents, les builders et les capacités de lexécuteur. `UpdateAuthority` encode lautorité nullable avec le type officiel. `Emit` accepte la forme complète sans plage ou une plage explicite dau plus 1 024 octets, refuse `start > end`, les plages trop grandes et `start` sans `end`, puis conserve le `returnData` JSON-RPC sans dépendre des logs.
Un retour complet est décodé avec consommation exacte du format `TokenMetadata`. Un retour partiel conserve seulement les octets et ne prétend pas représenter un état complet. La postcondition dautorité lit le snapshot TLV autoritatif et couvre une nouvelle autorité ou sa suppression.
## Ownership des matérialisateurs
- `MtMetadataToken2022Materializer` possède les neuf faits instructionnels Token Metadata et Token Group ;
- les snapshots `TokenMetadata`, `TokenGroup` et `TokenGroupMember` restent distincts sous `metadata/token_2022/` ;
- `InitializeMetadataPointer` et `UpdateMetadataPointer` restent possédés par le matérialiseur dadministration ;
- aucun fait nest dupliqué entre le matérialiseur metadata spécialisé et le matérialiseur dadministration.
## Correctifs de la livraison
- `pre.011-fix-001` active `serde-json-impl` pour le derive TS-RS de `serde_json::Value` et refuse la plage `Emit` ouverte avec `start` sans `end` ;
- `pre.011-fix-002` remplace le variant inexistant `ExApiExecutionBlockhashKind::Recent` par le variant canonique `Latest` dans la fixture `kb-pipeline` ;
- `pre.011-fix-003` est remplacé et ne doit pas être appliqué comme base finale ;
- `pre.011-fix-004` rattache `update_token_metadata_authority` et `emit_token_metadata` à la famille `token_metadata` par un helper testé directement ;
- `pre.011-fix-005` clôt les documents et ajoute les régressions directes couvrant `new_authority = None`, `Emit` sans plage et la plage maximale exactement égale à 1 024 octets.
- `pre.011-fix-006` corrige uniquement les deux assertions de `operation_code` introduites par `fix-005` : les plans utilisent la hiérarchie canonique `spl.token_2022.*`, pas les noms courts des opérations.
## Validation locale observée le 6 août 2026
Avant `fix-005`, létat fonctionnel final de `fix-004` a réussi :
```text
cargo fmt --all réussi
cargo clippy --all-targets réussi
cargo check --workspace réussi
python3 scripts/audit_rust_workspace_rules.py propre
cargo test -p kb-lib 693 unitaires + 8 intégration, 0 échec
cargo test -p kb-onchain-transport 118 tests, 0 échec
cargo test -p kb-pipeline 105 unitaires + 1 API externe, 0 échec
cargo test -p kb-pipeline-demo-scenarios 62 + 1 CLI + 1 API externe, 0 échec
cargo test --workspace 1 285 tests, 0 échec, doc-tests propres
```
Le `cargo clean` préalable a supprimé les artefacts obsolètes qui empêchaient Cargo de reconstruire le fichier `executor.rs` extrait depuis larchive. La recompilation complète a ensuite exécuté le test direct `token_metadata_operations_share_matrix_family` et le test général de parité de matrice avec succès.
`fix-005` ne modifie aucun code de production et ajoute deux tests unitaires. La première reprise locale a confirmé que tout le workspace compilait, passait Clippy et les audits, mais ces deux nouveaux tests échouaient uniquement parce quils attendaient les noms courts `update_token_metadata_authority` et `emit_token_metadata` au lieu des codes canoniques `spl.token_2022.update_token_metadata_authority` et `spl.token_2022.emit_token_metadata`. `fix-006` corrige ces deux assertions sans modifier le comportement de production. Le nombre attendu de tests unitaires `kb-lib` reste 695.
## Frontières maintenues
Les fixtures, soumissions Devnet, confirmations et preuves réseau restent dans `pre.012`. Le sous-panneau desktop Token-2022 reste dans `pre.013`. Aucune résolution off-chain nest ajoutée par cette phase.

View File

@@ -1,11 +1,11 @@
<!-- file: docs/plans/V0_4_8_SOLANA_PROGRAM_METADATA_AND_TOKEN_2022_COMPLETENESS_PLAN.md -->
<!-- version: 17 -->
<!-- version: 23 -->
# Plan `0.4.8` — Solana Program Metadata et complétude Token-2022
## 1. Statut et rôle
Ce document est le livrable principal de `0.4.8-pre.001`, réconcilié après laudit contractuel de `0.4.8-pre.002`, les modèles de `pre.003`, les décodeurs de comptes de `pre.004`, le décodeur dinstructions de `pre.005`, la matérialisation de `pre.006`, lexécuteur de `pre.007`, lorchestration généraliste de `pre.008`, les scénarios réutilisables de `pre.009` et leur intégration desktop de `pre.010`. Il constitue le plan vivant de la version et reste modifiable lorsque laudit du code, des interfaces officielles, de lIDL ou des validations Devnet impose un ajustement.
Ce document est le livrable principal de `0.4.8-pre.001`, réconcilié après laudit contractuel de `0.4.8-pre.002`, les modèles de `pre.003`, les décodeurs de comptes de `pre.004`, le décodeur dinstructions de `pre.005`, la matérialisation de `pre.006`, lexécuteur de `pre.007`, lorchestration généraliste de `pre.008`, les scénarios réutilisables de `pre.009`, leur intégration desktop et leur campagne Devnet de `pre.010`, puis la complétude Token-2022 Token Metadata de `pre.011`. Il constitue le plan vivant de la version et reste modifiable lorsque laudit du code, des interfaces officielles, de lIDL ou des validations Devnet impose un ajustement.
Il doit être maintenu pendant chaque prerelease, puis archivé pendant la dernière prerelease après transfert des décisions durables vers le ROADMAP, les matrices, les guides, les rapports, les TODO et les changelogs concernés.
@@ -306,7 +306,7 @@ Travaux parallèles intégrés : les fonctions de matérialisation Metaplex exis
- matrice Devnet conservative à `not_run` avant exécution réelle ;
- aucune modification de `demo_execution_metadata` dans cette prerelease.
### `0.4.8-pre.010` — intégration desktop et campagne Devnet Solana Program Metadata — terminé côté delta
### `0.4.8-pre.010` — intégration desktop et campagne Devnet Solana Program Metadata — terminé et validé
- sous-panneau `ProgM6…` séparé dans `demo_execution_metadata`, consommant exclusivement les runners de `kb-pipeline-demo-scenarios` ;
- profil Devnet synchronisé avec la section Metaplex et préparation PostgreSQL réutilisée ;
@@ -320,9 +320,11 @@ Travaux parallèles intégrés : les fonctions de matérialisation Metaplex exis
- borne des lectures stateful complètes alignée sur les `65536` octets acceptés par le transport, sans réduire la capacité offline du décodeur ;
- retry borné des réponses HTTP ou JSON-RPC `429` afin que la campagne puisse respecter les limites de lendpoint public Devnet ;
- la validation historique `backfill → extraction → replay → matérialisation` reste la preuve de décodage de `pre.008` ; la campagne Devnet fournit séparément les preuves dexécution et les snapshots stateful confirmés ;
- la matrice Devnet reste `not_run` jusquà lexécution opérateur réelle, particulièrement pour `Trim` et `Extend`.
- validation opérateur finale : deux campagnes indépendantes, 22 transactions confirmées et 18 postconditions `Confirmed` ;
- `Extend` et `Trim` sont désormais observées et validées sur Devnet ;
- preuve brute et rapport conservés sous `docs/validation/evidence/v0.4.8/pre.010/devnet/` et `docs/validation/V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md`.
### `0.4.8-pre.011` — complétude Token-2022 Token Metadata
### `0.4.8-pre.011` — complétude Token-2022 Token Metadata — terminée, validation fonctionnelle acquise
- fermeture des écarts dintents/builders/exécution confirmés pour `UpdateAuthority` et `Emit`, après réaudit des cinq instructions `Initialize`, `UpdateField`, `RemoveKey`, `UpdateAuthority` et `Emit` ;
- conservation des snapshots dédiés `metadata/token_2022/` pour `TokenMetadata`, `TokenGroup` et `TokenGroupMember` ;
@@ -330,6 +332,8 @@ Travaux parallèles intégrés : les fonctions de matérialisation Metaplex exis
- maintien de `InitializeMetadataPointer` et `UpdateMetadataPointer` dans le matérialiseur dadministration qui en possède déjà les faits ;
- tests synthétiques et stateful.
Résultat durable : les cinq instructions de `spl-token-metadata-interface` disposent désormais dintents et de builders exacts. `UpdateAuthority` accepte une nouvelle autorité nullable ; `Emit` valide une plage maximale de 1 024 octets, refuse une plage ouverte avec `start` sans `end`, conserve le `returnData` de simulation et décode uniquement les réponses complètes. La postcondition stateful vérifie lautorité finale depuis le snapshot TLV autoritatif. Les interfaces Token Group restent possédées par le même matérialiseur spécialisé, tandis que Metadata Pointer reste au matérialiseur dadministration. `pre.011-fix-001` active limplémentation TS-RS de `serde_json::Value` via `serde-json-impl` et ferme la plage `Emit` ouverte ; `pre.011-fix-002` aligne la fixture de `kb-pipeline` sur `ExApiExecutionBlockhashKind::Latest` ; `pre.011-fix-004` remplace `fix-003`, rattache `UpdateAuthority` et `Emit` à lentrée `token_metadata` et ajoute un test direct de cette projection. Après nettoyage intégral du cache Cargo, `cargo test -p kb-lib` réussit avec 693 tests unitaires et toutes les APIs externes, puis `cargo test --workspace` réussit avec 1 285 tests et tous les doc-tests. `pre.011-fix-005` clôt la documentation et ajoute les régressions directes pour lautorité `None`, lémission complète et la plage maximale de 1 024 octets. Leur première reprise a révélé uniquement deux attentes de nommage incorrectes dans les tests eux-mêmes : les plans exposent les codes canoniques préfixés `spl.token_2022.*`. `pre.011-fix-006` corrige ces deux assertions sans toucher au code de production ; sa validation ciblée constitue le dernier contrôle avant de commencer `pre.012`.
### `0.4.8-pre.012` — campagne Devnet Token-2022 Token Metadata
- fixture mint ;

View File

@@ -0,0 +1,59 @@
<!-- file: docs/validation/V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md -->
<!-- version: 1 -->
# Validation Devnet Solana Program Metadata — `0.4.8-pre.010`
## 1. Objet
Ce rapport clôt la validation réseau de lintégration Solana Program Metadata livrée entre `0.4.8-pre.009` et `0.4.8-pre.010`.
La preuve brute est conservée sous [`evidence/v0.4.8/pre.010/devnet/`](evidence/v0.4.8/pre.010/devnet/README.md).
## 2. Environnement observé
- cluster : Solana Devnet ;
- endpoint : profil `local_devnet` ;
- autorité opérateur : wallet temporaire persistant du profil ;
- programme : `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` ;
- mode : simulation obligatoire, soumission contrôlée, confirmation, lecture stateful et postcondition.
Le nom source de larchive indiquait `mainnet_research`, mais son contenu utilise Devnet. Elle est donc classée comme preuve Devnet.
## 3. Campagnes exécutées
Deux fixtures indépendantes ont été préparées. Chaque campagne a exécuté :
1. deux transferts de préfinancement ;
2. le parcours Buffer `Allocate → Extend → Write → SetAuthority → Trim → Close` ;
3. le parcours Metadata `Initialize → SetData → SetImmutable`.
Le corpus contient ainsi :
- 2 campagnes complètes ;
- 22 transactions confirmées ;
- 18 opérations Solana Program Metadata ;
- 18 postconditions `Confirmed` ;
- 0 fichier derreur non vide ;
- 0 réponse HTTP ou JSON-RPC `429` observée.
## 4. Résultats par opération
| Opération | Exécutions confirmées | Postconditions confirmées |
|----------------|----------------------:|--------------------------:|
| `Allocate` | 2 | 2 |
| `Extend` | 2 | 2 |
| `Write` | 2 | 2 |
| `SetAuthority` | 2 | 2 |
| `Trim` | 2 | 2 |
| `Close` | 2 | 2 |
| `Initialize` | 2 | 2 |
| `SetData` | 2 | 2 |
| `SetImmutable` | 2 | 2 |
`Close` est validée par labsence finale du compte. Les autres opérations sont validées par une lecture stateful et une projection cohérente avec la postcondition attendue.
## 5. Conclusion
La couverture exécutable des neuf instructions stables Solana Program Metadata est validée sur Devnet, y compris `Extend` et `Trim`, qui navaient pas été observées dans léchantillon historique mainnet de `pre.008`.
La surface Solana Program Metadata peut être considérée comme complète pour `0.4.8`, sous réserve des réconciliations transversales et documentaires prévues avant la clôture finale de la version.

View File

@@ -0,0 +1,17 @@
<!-- file: docs/validation/evidence/v0.4.8/pre.010/devnet/README.md -->
<!-- version: 1 -->
# Preuve Devnet `0.4.8-pre.010`
Ce répertoire conserve larchive opérateur de la validation finale de Solana Program Metadata sur Devnet.
## Contenu
- `devnet_evidence_v0.4.8-pre.010-01.zip` : archive originale fournie après deux campagnes complètes réussies ;
- `SHA256SUMS` : empreinte de contrôle de larchive conservée.
Larchive a été renommée lors de son intégration : son nom source contenait `mainnet_research`, alors que les endpoints et les transactions observés appartiennent à Devnet. Son contenu na pas été modifié.
Cette preuve est documentaire. Aucun test, runner ou composant runtime ne la charge.
Le rapport associé est [`V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md`](../../../../V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md).

View File

@@ -0,0 +1 @@
475e10aec63ccbd17627dd30ba2fb66f83374b8a6f70fb6f3cb26a93a534ec1c devnet_evidence_v0.4.8-pre.010-01.zip