v0.4.8-pre.009
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/README.md -->
|
||||
<!-- version: 21 -->
|
||||
<!-- version: 22 -->
|
||||
|
||||
# Documentation active de Khadhroony Bot3
|
||||
|
||||
@@ -45,6 +45,7 @@ Modèles documentaires non génératifs :
|
||||
- [`audits/V0_4_8_PRE_008_METADATA_SOLANA_PROGRAM_PIPELINE_AUDIT.md`](audits/V0_4_8_PRE_008_METADATA_SOLANA_PROGRAM_PIPELINE_AUDIT.md) ;
|
||||
- [`audits/V0_4_8_PRE_008_METADATA_AND_PIPELINE_NOMENCLATURE_AUDIT.md`](audits/V0_4_8_PRE_008_METADATA_AND_PIPELINE_NOMENCLATURE_AUDIT.md) ;
|
||||
- [`audits/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_HISTORICAL_REPLAY_FIX.md`](audits/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_HISTORICAL_REPLAY_FIX.md) ;
|
||||
- [`audits/V0_4_8_PRE_009_METADATA_SOLANA_PROGRAM_DEVNET_SCENARIOS_AUDIT.md`](audits/V0_4_8_PRE_009_METADATA_SOLANA_PROGRAM_DEVNET_SCENARIOS_AUDIT.md) ;
|
||||
- [`decisions/DOCUMENT_ARCHIVE_SELECTION_POLICY.md`](decisions/DOCUMENT_ARCHIVE_SELECTION_POLICY.md) ;
|
||||
- [`decisions/WINCODE_COMPATIBILITY_POLICY.md`](decisions/WINCODE_COMPATIBILITY_POLICY.md).
|
||||
|
||||
@@ -98,6 +99,7 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
|
||||
- [Validation Metaplex Token Metadata 0.4.7](validation/V0_4_7_METAPLEX_TOKEN_METADATA_VALIDATION_REPORT.md)
|
||||
- [`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) ;
|
||||
|
||||
## Audits actifs
|
||||
|
||||
@@ -106,7 +108,8 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
|
||||
- [`Audit 0.4.8-pre.007 — structure du matérialiseur Metaplex Token Metadata`](audits/V0_4_8_PRE_007_METAPLEX_MATERIALIZER_STRUCTURE_AUDIT.md) ;
|
||||
- [`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).
|
||||
- [`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).
|
||||
|
||||
## Plans de version actifs
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
<!-- file: docs/audits/V0_4_8_PRE_009_METADATA_SOLANA_PROGRAM_DEVNET_SCENARIOS_AUDIT.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Audit `0.4.8-pre.009` — scénarios Devnet Solana Program Metadata
|
||||
|
||||
## Frontière de crate
|
||||
|
||||
`kb-pipeline` conserve les contrats réutilisables indépendants du cluster. `kb-pipeline-demo-scenarios` possède les wallets de démonstration, fixtures, appels RPC Devnet et campagnes destructrices. Aucun lien inverse n’est ajouté.
|
||||
|
||||
`kb-app-demo-desktop` n’est pas modifié dans cette prerelease. Son intégration est réservée à `pre.010`.
|
||||
|
||||
## Fixture
|
||||
|
||||
La fixture utilise le wallet persistant du profil Devnet comme autorité et le System Program comme programme exécutable décrit. Deux PDA non canoniques uniques sont dérivés avec des seeds UTF-8 de seize octets :
|
||||
|
||||
- un PDA `Buffer` ;
|
||||
- un PDA `Metadata`.
|
||||
|
||||
Les deux adresses doivent être absentes avant préparation. Leur rent est calculé par RPC et les comptes sont préfinancés par des transferts System Program simulation-first, évalués par `ExSafetyChecker`, signés, soumis et confirmés.
|
||||
|
||||
## Parcours fermés
|
||||
|
||||
### Buffer
|
||||
|
||||
1. `Allocate` ;
|
||||
2. `Extend` ;
|
||||
3. `Write` ;
|
||||
4. `Trim` ;
|
||||
5. `Close`.
|
||||
|
||||
`Extend` précède `Write`, car l’allocation initiale ne réserve que l’en-tête et l’écriture exige la capacité du payload.
|
||||
|
||||
### Metadata
|
||||
|
||||
1. `Initialize` ;
|
||||
2. `SetData` ;
|
||||
3. `SetAuthority` ;
|
||||
4. `SetImmutable`.
|
||||
|
||||
Les neuf opérations stables sont couvertes exactement une fois. Les six opérations classées sensibles par l’exécuteur reçoivent une approbation explicite.
|
||||
|
||||
## Orchestration
|
||||
|
||||
Chaque étape passe par :
|
||||
|
||||
- construction d’un intent typé ;
|
||||
- construction et évaluation du plan ;
|
||||
- lectures stateful avant exécution ;
|
||||
- préflight et preuves de rent ;
|
||||
- transaction exacte et simulation RPC ;
|
||||
- readiness du pipeline ;
|
||||
- évaluation `ExSafetyChecker` avant envoi ;
|
||||
- signature, soumission et confirmation ;
|
||||
- lectures stateful après confirmation ;
|
||||
- postcondition ;
|
||||
- projection matérialisée pour les comptes existants.
|
||||
|
||||
`Close` exige une preuve d’absence et non un snapshot matérialisé.
|
||||
|
||||
## Statut réseau
|
||||
|
||||
Le code et la matrice sont livrés avec des statuts `not_run`. Aucune validation Devnet n’est déclarée avant l’exécution opérateur de `pre.010`.
|
||||
@@ -1,11 +1,11 @@
|
||||
<!-- file: docs/plans/V0_4_8_SOLANA_PROGRAM_METADATA_AND_TOKEN_2022_COMPLETENESS_PLAN.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 14 -->
|
||||
|
||||
# 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` et l’orchestration généraliste de `pre.008`. 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` et les scénarios réutilisables de `pre.009`. 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.
|
||||
|
||||
@@ -276,7 +276,7 @@ Résultat durable : les neuf instructions stables possèdent une opération typ
|
||||
|
||||
Travaux parallèles intégrés : les fonctions de matérialisation Metaplex existaient déjà dans `materializer/metadata/core.rs`; il ne s’agissait donc pas d’un oubli fonctionnel de `0.4.6/0.4.7`. Elles sont déplacées dans un sous-module dédié sans changement de clé métier. Token-2022 reçoit également son composant dédié de snapshots, puis `pre.008` ajoute son matérialiseur instructionnel spécialisé ainsi que celui de Metaplex. L’audit est ensuite étendu à l’ensemble de `src/materializer` : 25 identités sont harmonisées, les façades deviennent pures, les implémentations utilisent `materializer.rs`, les constantes sont centralisées et les coquilles réservées ne produisent plus de faux événements legacy. Les constats sont consignés dans `docs/audits/V0_4_8_PRE_007_METAPLEX_MATERIALIZER_STRUCTURE_AUDIT.md` et `docs/audits/V0_4_8_PRE_007_MATERIALIZER_CONVENTION_AUDIT.md`. Un audit transversal de toutes les surfaces déjà livrées est planifié en `0.5.x` pour vérifier les règles de décodage exhaustif, propriété de matérialisation, exécution des opérations dangereuses via `ExSafetyChecker`, dépréciation officielle et versions remplacées decode-only.
|
||||
|
||||
### `0.4.8-pre.008` — pipeline stateful Solana Program Metadata — code terminé, replay historique à revalider
|
||||
### `0.4.8-pre.008` — pipeline stateful et replay mainnet Solana Program Metadata — terminé
|
||||
|
||||
- lectures RPC bornées des comptes absents, non initialisés, `Buffer` et `Metadata` ;
|
||||
- décodage et matérialisation autoritative des états via `kb-lib` ;
|
||||
@@ -284,50 +284,66 @@ Travaux parallèles intégrés : les fonctions de matérialisation Metaplex exis
|
||||
- passage par `ExSafetyChecker`, readiness simulation-first, résolution des signers et autorisation de soumission ;
|
||||
- postconditions avant/après des neuf opérations, sans succès inventé lorsqu’une lecture manque ;
|
||||
- matrice pipeline machine-readable ;
|
||||
- enregistrement du décodeur et des trois matérialiseurs metadata spécialisés dans le replay générique desktop pour le futur test `demo_backfill` ;
|
||||
- enregistrement du décodeur et des trois matérialiseurs metadata spécialisés dans le replay générique desktop ;
|
||||
- nomenclature interne `metadata_*`, `spl_*` et `solana_*` alignée sur les domaines de `kb-lib` ;
|
||||
- aucune modification de `kb-pipeline-demo-scenarios` ni de `demo_execution_metadata`.
|
||||
- audit consigné dans `docs/audits/V0_4_8_PRE_008_METADATA_SOLANA_PROGRAM_PIPELINE_AUDIT.md`.
|
||||
- première campagne historique : 200 transactions importées, 582 instructions rejouées et 132 instructions `ProgM6…` reconnues ; toutes ont été rejetées à tort parce que le décodeur comparait les privilèges globaux du message par égalité avec les minima de l’instruction ;
|
||||
- `pre.008-fix-002` remplace cette égalité par une validation de minima et ajoute une régression sur les neuf instructions ; la campagne des 132 entrées doit être rejouée avant d’ouvrir `pre.009`.
|
||||
- correction du décodeur pour valider les privilèges requis comme minima au lieu d’exiger l’égalité avec les privilèges globaux du message ;
|
||||
- replay mainnet final : 132 instructions `ProgM6…` dispatchées, 132 décodées, 132 matérialisées, zéro échec et zéro refus ;
|
||||
- opérations observées : `Write` 88, `Allocate` 15, `Initialize` 11, `SetAuthority` 7, `Close` 5, `SetData` 5 et `SetImmutable` 1 ;
|
||||
- `Trim` et `Extend` restent non observées dans l’échantillon mainnet et doivent être prouvées sur Devnet ;
|
||||
- preuve conservée sous `docs/validation/evidence/v0.4.8/pre.008/mainnet/`.
|
||||
|
||||
### `0.4.8-pre.009` — campagne Devnet et desktop Solana Program Metadata
|
||||
### `0.4.8-pre.009` — scénarios réutilisables Solana Program Metadata — terminé côté delta
|
||||
|
||||
- fixture Rust native et comptes préfinancés ;
|
||||
- scénarios réutilisables dans `kb-pipeline-demo-scenarios` ;
|
||||
- appels RPC de simulation, soumission, confirmation, lectures avant/après et replay ;
|
||||
- adaptation du sous-panneau `ProgM6…` de `demo_execution_metadata` pour consommer les runners réutilisables ;
|
||||
- validation historique préalable via `demo_backfill`, Core extraction et decode replay sur un échantillon de signatures ;
|
||||
- preuves RPC et rapport intermédiaire.
|
||||
- séparation stricte : `kb-pipeline` reste généraliste et inchangé, tandis que les fixtures et campagnes réseau appartiennent à `kb-pipeline-demo-scenarios` ;
|
||||
- deux parcours ordonnés couvrent exactement les neuf opérations stables ;
|
||||
- parcours Buffer : `Allocate → Extend → Write → Trim → Close` ;
|
||||
- parcours Metadata : `Initialize → SetData → SetAuthority → SetImmutable` ;
|
||||
- création de deux PDA non canoniques uniques et préfinancés avec le wallet persistant du profil Devnet ;
|
||||
- calcul RPC du rent pour les tailles initiales et finales ;
|
||||
- runner unitaire simulation-first avec `ExSafetyChecker`, soumission contrôlée, confirmation, lectures avant/après et postconditions ;
|
||||
- campagne confirmée réutilisable exécutant séquentiellement les neuf étapes ;
|
||||
- projections stateful matérialisées après confirmation, ou preuve d’absence après `Close` ;
|
||||
- matrice Devnet conservative à `not_run` avant exécution réelle ;
|
||||
- aucune modification de `demo_execution_metadata` dans cette prerelease.
|
||||
|
||||
### `0.4.8-pre.010` — complétude Token-2022 Token Metadata
|
||||
### `0.4.8-pre.010` — intégration desktop et campagne Devnet Solana Program Metadata
|
||||
|
||||
- adapter le sous-panneau `ProgM6…` de `demo_execution_metadata` pour consommer exclusivement les runners de `kb-pipeline-demo-scenarios` ;
|
||||
- préparer la fixture, présenter les deux parcours et exiger la confirmation explicite avant les transferts ou mutations ;
|
||||
- exécuter les neuf opérations sur Devnet, avec signatures, simulations, confirmations et postconditions ;
|
||||
- hydrater les signatures confirmées, lancer Core extraction, decode replay et matérialisation canonique ;
|
||||
- mettre à jour la matrice de validation sans convertir une simulation ou une construction synthétique en preuve confirmée ;
|
||||
- confirmer particulièrement `Trim` et `Extend`, absentes de l’échantillon mainnet ;
|
||||
- conserver des résultats JSON dans le JsonViewer commun.
|
||||
|
||||
### `0.4.8-pre.011` — complétude Token-2022 Token Metadata
|
||||
|
||||
- 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` ;
|
||||
- validation de la matérialisation instructionnelle spécialisée déjà ajoutée en `pre.008` pour les interfaces Token Metadata et Token Group ;
|
||||
- validation de la matérialisation instructionnelle spécialisée des interfaces Token Metadata et Token Group ;
|
||||
- maintien de `InitializeMetadataPointer` et `UpdateMetadataPointer` dans le matérialiseur d’administration qui en possède déjà les faits ;
|
||||
- tests synthétiques et stateful.
|
||||
|
||||
### `0.4.8-pre.011` — campagne Devnet Token-2022 Token Metadata
|
||||
### `0.4.8-pre.012` — campagne Devnet Token-2022 Token Metadata
|
||||
|
||||
- fixture mint ;
|
||||
- simulations, soumissions sûres, confirmations, postconditions, replay et matérialisation.
|
||||
|
||||
### `0.4.8-pre.012` — finalisation desktop metadata
|
||||
### `0.4.8-pre.013` — finalisation desktop metadata
|
||||
|
||||
- compléter le sous-panneau Token-2022 après les travaux de `pre.010` et `pre.011` ;
|
||||
- compléter le sous-panneau Token-2022 après les travaux de `pre.011` et `pre.012` ;
|
||||
- conserver des accordéons ou sous-panneaux séparés pour `ProgM6…`, Token-2022 et Metaplex ;
|
||||
- réutiliser le JsonViewer commun pour les résultats intégralement JSON ;
|
||||
- réconcilier préparation, simulation, soumission, lectures et preuves des trois domaines ;
|
||||
- aucun bouton de fetch URI.
|
||||
|
||||
### `0.4.8-pre.013` — stockage, matrices et réconciliation transversale
|
||||
### `0.4.8-pre.014` — stockage, matrices et réconciliation transversale
|
||||
|
||||
- stockage si de nouveaux contrats persistants sont requis ;
|
||||
- exports, registres, matrices, nomenclature IDL et guides ;
|
||||
- retrait des statuts `reserved` uniquement lorsque l’implémentation correspondante est réelle.
|
||||
|
||||
### `0.4.8-pre.014` — clôture obligatoire
|
||||
### `0.4.8-pre.015` — clôture obligatoire
|
||||
|
||||
Réservée à :
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
<!-- file: docs/validation/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_MAINNET_REPLAY_REPORT.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Validation mainnet du replay Solana Program Metadata — `0.4.8-pre.008`
|
||||
|
||||
## Résultat
|
||||
|
||||
La campagne historique exécutée après `pre.008-fix-002` valide le parcours réel `backfill → Core extraction → decode replay → matérialisation` pour les instructions Solana Program Metadata observées.
|
||||
|
||||
```text
|
||||
dispatched = 132
|
||||
decoded = 132
|
||||
failed = 0
|
||||
processingErrors = 0
|
||||
materializedOutputs = 132
|
||||
materializationRefused = 0
|
||||
```
|
||||
|
||||
## Répartition observée
|
||||
|
||||
| Opération | Observée | Décodée | Matérialisée |
|
||||
|----------------|---------:|--------:|-------------:|
|
||||
| `Write` | 88 | 88 | 88 |
|
||||
| `Allocate` | 15 | 15 | 15 |
|
||||
| `Initialize` | 11 | 11 | 11 |
|
||||
| `SetAuthority` | 7 | 7 | 7 |
|
||||
| `Close` | 5 | 5 | 5 |
|
||||
| `SetData` | 5 | 5 | 5 |
|
||||
| `SetImmutable` | 1 | 1 | 1 |
|
||||
| `Trim` | 0 | 0 | 0 |
|
||||
| `Extend` | 0 | 0 | 0 |
|
||||
|
||||
Les sept opérations rencontrées sont validées sur données mainnet réelles. `Trim` et `Extend` restent validées synthétiquement mais non observées dans cet échantillon. Elles doivent être exercées par les scénarios Devnet de `pre.009` et `pre.010`.
|
||||
|
||||
## Anomalies non liées
|
||||
|
||||
Quatre entrées Loader v4 ont été classées `Unsupported` sans échec de traitement. Elles proviennent de transactions déjà échouées avec `ProgramAccountNotFound` et ne concernent pas `ProgM6…`.
|
||||
|
||||
## Preuve conservée
|
||||
|
||||
- archive : `docs/validation/evidence/v0.4.8/pre.008/mainnet/mainnet_research_v0.4.8-pre.008-01.zip` ;
|
||||
- SHA-256 : `16b3722d4b75afdef304f7b16af4baa3b51713d87a74e9e4a7aac0c0f0411335` ;
|
||||
- manifeste : `docs/validation/evidence/v0.4.8/pre.008/mainnet/SHA256SUMS`.
|
||||
|
||||
Cette archive est une preuve documentaire immuable. Le code, les tests et les runners ne doivent jamais en dépendre.
|
||||
18
docs/validation/evidence/v0.4.8/pre.008/mainnet/README.md
Normal file
18
docs/validation/evidence/v0.4.8/pre.008/mainnet/README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
<!-- file: docs/validation/evidence/v0.4.8/pre.008/mainnet/README.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Preuve mainnet `0.4.8-pre.008`
|
||||
|
||||
Ce répertoire conserve la preuve binaire de la campagne historique ayant validé le décodeur et le matérialiseur Solana Program Metadata après `pre.008-fix-002`.
|
||||
|
||||
## Artefact
|
||||
|
||||
- fichier : `mainnet_research_v0.4.8-pre.008-01.zip` ;
|
||||
- SHA-256 : `16b3722d4b75afdef304f7b16af4baa3b51713d87a74e9e4a7aac0c0f0411335` ;
|
||||
- origine : export de logs produit le 6 août 2026 pendant le replay mainnet ;
|
||||
- usage : preuve documentaire et diagnostic reproductible ;
|
||||
- chargement applicatif : aucun.
|
||||
|
||||
L’archive ne doit pas être extraite dans l’arbre source. Elle est référencée par le rapport `docs/validation/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_MAINNET_REPLAY_REPORT.md`.
|
||||
|
||||
Un contrôle avant archivage n’a trouvé ni fichier de wallet, ni keypair, ni `.env`, ni marqueur d’URL ou d’autorisation dans les contenus textuels. Cette vérification ne remplace pas une revue humaine avant publication hors du dépôt privé.
|
||||
@@ -0,0 +1 @@
|
||||
16b3722d4b75afdef304f7b16af4baa3b51713d87a74e9e4a7aac0c0f0411335 mainnet_research_v0.4.8-pre.008-01.zip
|
||||
Binary file not shown.
Reference in New Issue
Block a user