v0.4.8-pre.011
This commit is contained in:
@@ -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).
|
||||
|
||||
|
||||
@@ -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 d’exé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 d’instruction, sans faux snapshot |
|
||||
|
||||
Les cinq opérations sont présentes dans les intents, les builders et les capacités de l’exécuteur. `UpdateAuthority` encode l’autorité nullable avec le type officiel. `Emit` accepte la forme complète sans plage ou une plage explicite d’au 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 d’autorité 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 d’administration ;
|
||||
- aucun fait n’est dupliqué entre le matérialiseur metadata spécialisé et le matérialiseur d’administration.
|
||||
|
||||
## 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 l’archive. 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 qu’ils 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 n’est ajoutée par cette phase.
|
||||
@@ -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 l’audit contractuel de `0.4.8-pre.002`, les modèles de `pre.003`, les décodeurs de comptes de `pre.004`, le décodeur d’instructions de `pre.005`, la matérialisation de `pre.006`, l’exécuteur de `pre.007`, l’orchestration 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 l’audit du code, des interfaces officielles, de l’IDL ou des validations Devnet impose un ajustement.
|
||||
Ce document est le livrable principal de `0.4.8-pre.001`, réconcilié après l’audit contractuel de `0.4.8-pre.002`, les modèles de `pre.003`, les décodeurs de comptes de `pre.004`, le décodeur d’instructions de `pre.005`, la matérialisation de `pre.006`, l’exécuteur de `pre.007`, l’orchestration 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 l’audit du code, des interfaces officielles, de l’IDL 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 l’endpoint 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 d’exécution et les snapshots stateful confirmés ;
|
||||
- la matrice Devnet reste `not_run` jusqu’à l’exé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 d’intents/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 d’administration 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 d’intents 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 l’autorité 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 d’administration. `pre.011-fix-001` active l’implé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` à l’entré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 l’autorité `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 ;
|
||||
|
||||
@@ -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 l’inté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 l’archive 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 d’erreur 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 l’absence 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 n’avaient 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.
|
||||
17
docs/validation/evidence/v0.4.8/pre.010/devnet/README.md
Normal file
17
docs/validation/evidence/v0.4.8/pre.010/devnet/README.md
Normal 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 l’archive 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 l’archive conservée.
|
||||
|
||||
L’archive 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 n’a 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).
|
||||
@@ -0,0 +1 @@
|
||||
475e10aec63ccbd17627dd30ba2fb66f83374b8a6f70fb6f3cb26a93a534ec1c devnet_evidence_v0.4.8-pre.010-01.zip
|
||||
Binary file not shown.
Reference in New Issue
Block a user