v0.1.0-pre.076
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<!-- file: docs/validation/MAINNET_RESEARCH_BACKFILL_VALIDATION_SCENARIO.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Scénario de validation backfill `mainnet_research`
|
||||
|
||||
## Objectif
|
||||
|
||||
Valider un parcours borné `raw → Core → decode → materialize` sur Mainnet sans envoi de transaction.
|
||||
|
||||
## Paramètres recommandés
|
||||
|
||||
- profil : `mainnet_research` ;
|
||||
- rôle HTTP : endpoint standard Mainnet configuré ;
|
||||
- commitment : `finalized` ;
|
||||
- taille de page : `20` ;
|
||||
- pages maximales : `1` ;
|
||||
- concurrence : `2` ;
|
||||
- retries : `2` ;
|
||||
- mode : Programme Solana ;
|
||||
- Program ID : `MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr` ;
|
||||
- direction : `before` ;
|
||||
- signature d’ancrage : vide ;
|
||||
- nombre de signatures : `20`.
|
||||
|
||||
Memo v4 est choisi pour limiter le volume et disposer d’un décodeur et d’un matérialisateur connus.
|
||||
|
||||
## Étapes
|
||||
|
||||
1. Relever les diagnostics PostgreSQL avant campagne.
|
||||
2. Lancer le backfill et conserver le résumé JSON.
|
||||
3. Vérifier les nouvelles lignes raw et observations.
|
||||
4. Exécuter Core extraction uniquement sur les lignes non traitées.
|
||||
5. Exécuter Decode replay avec Memo v4 et matérialisation activée.
|
||||
6. Vérifier les annotations matérialisées.
|
||||
7. Rejouer la même sélection et confirmer l’idempotence.
|
||||
8. Relever les diagnostics PostgreSQL après campagne.
|
||||
|
||||
## Critères de réussite
|
||||
|
||||
- campagne bornée terminée sans échec non expliqué ;
|
||||
- transactions hydratées et stockées ;
|
||||
- extraction Core sans doublon ;
|
||||
- décodage Memo cohérent ;
|
||||
- matérialisation attendue ;
|
||||
- second replay sans duplication ;
|
||||
- aucune écriture ou transaction envoyée sur Mainnet.
|
||||
82
docs/validation/PRE_062_DEVNET_VALIDATION_REPORT.md
Normal file
82
docs/validation/PRE_062_DEVNET_VALIDATION_REPORT.md
Normal file
@@ -0,0 +1,82 @@
|
||||
<!-- file: docs/validation/PRE_062_DEVNET_VALIDATION_REPORT.md -->
|
||||
<!-- version: 2 -->
|
||||
|
||||
# Rapport de validation Devnet — `0.1.0-pre.062`
|
||||
|
||||
## Portée
|
||||
|
||||
Ce rapport clôt la campagne Devnet exécutée sur une base PostgreSQL propre, sans réinitialisation entre les scénarios.
|
||||
|
||||
- profil : `local_devnet` ;
|
||||
- RPC : `https://api.devnet.solana.com` ;
|
||||
- genesis hash : `EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG` ;
|
||||
- wallet opérateur : `J12WA6c42oqpWkLu1dFa4pCegkQJPpxabwc3RRCMSUuH` ;
|
||||
- preuves locales : `/tmp/devnet-validation/pre.062-clean` ;
|
||||
- CLI observées : `solana-cli 4.0.2`, `solana-keygen 4.0.2`, `spl-token-cli 5.5.0` ;
|
||||
- PostgreSQL : 13 tables sur 13 disponibles.
|
||||
|
||||
## Scénarios validés
|
||||
|
||||
| Code | Surface | Opération | Signature | Slot | Statut |
|
||||
|-------|---------------------|------------------|--------------------------------------------------------------------------------------------|------------:|----------|
|
||||
| S01 | Solana Core | System Transfer | preuve locale de campagne | — | validé |
|
||||
| S02 | SPL Memo v4 | Memo v4 | `3LJN8URRqvCJcjKMEpHmdVcJXsQHFMDc5cUiSCE4MkCsieqtPDXB39ReyzZ3oGh9WGTTaVT4ew5NPju8AWCzsUAk` | `479794063` | finalisé |
|
||||
| S03A | ATA classique | CreateIdempotent | `5ugba9K7NHN8vUsDnxhBGM37n3UsBsaX56B1ccrH3j64BbSgYcrxT1fsV5Z98waeyquYyxi46w4AENgrdhPucedn` | `479803680` | finalisé |
|
||||
| S03B | ATA Token-2022 | CreateIdempotent | `4Cv8p6bB2iqc1qRJDxhVgjGtriPx1Ji3F7AirqXPRUmCLVLCDhtQPLTipWgigGVSDTLSsrvz3mZtnNPe5GQwuUWG` | `479805232` | finalisé |
|
||||
| S04 | SPL Token classique | TransferChecked | `4ghND4BHUxVhCgRfKbZgtLHKV1f3VrF3XVXqSjCawT4dX2qEAHsRTKsDvHod9xKeNQE7HrHCZmPY4D9e8XENY7XT` | `479828478` | finalisé |
|
||||
| S05.1 | Token-2022 | MintToChecked | `3hdeszJNUdopzVNiBUSXLb7GYbuRJgQjVmXo9Rc6UUguWcuS3DcxeDGaVTxCsuuTA2uM5f6cKbJRkmYobU2FdkPX` | `479925764` | finalisé |
|
||||
| S05.2 | Token-2022 | TransferChecked | `5nx6eGR44AexrgSutBo8CvrpdDVCwgA3YcPrXomnBwPpKqBB3WcbZuNxy8H6AryKj3d4dF5kszKsvUYGx5qSzNPY` | `479926573` | finalisé |
|
||||
| S05.3 | Token-2022 | ApproveChecked | `2QLSCz3FqimxPqxFSGyiJtHJAJoFAoRxTsQPnageetGYZcMdtH3CprByPV4ho33xGAn1wTERkwJ56JQcBbSabYYn` | `479926994` | finalisé |
|
||||
| S05.4 | Token-2022 | Revoke | `3WjYXTMH8h7WAhpG641UHFGC3PfSYKZBHrnQuFJxsJ1agDq8BS7BfmKzXB1ciF3LKtLndRog4HiDybJ41EmTDgwC` | `479927342` | finalisé |
|
||||
| S05.5 | Token-2022 | BurnChecked | `4qRMULuArbjfnbqqqgpbs1AdVHA5XLZkxSA1h8M3BnkTjRCXNA7rDbGhNhMBc2GCoYeYyKmfT1YCPxySfYp67Rhz` | `479927657` | finalisé |
|
||||
| S05.6 | Token-2022 | FreezeAccount | `4E5GuHkRQjRJNCnr1WgMk9c4XYEu2qpH1KibrQcj1dK5wa1x9Jh3RTCxqYh63EZtbMB9JeK9F5SMcP6TqQm1pT4R` | `479927943` | finalisé |
|
||||
| S05.7 | Token-2022 | ThawAccount | `37D9d14hHpkBSj8WbKc4wtKssNhMzfTrXUANwvt8xZ3VypSZe43MxtEm2u7RHkdBhUVfms7vsuE5gjAfmREAXMJ2` | `479928232` | finalisé |
|
||||
| S05.8 | Token-2022 | CloseAccount | `3rarADrqnYkmGBFsNYCABE2WCKoE9KcP7d2bsqZDCn7pjLwHFKnjw7w3h1hMa3aWodXfcZz7DDCqgzvMamuS4AHP` | `479928489` | finalisé |
|
||||
|
||||
## Invariants vérifiés
|
||||
|
||||
Pour les scénarios applicatifs S02 à S05 concernés, les sorties ont confirmé selon la surface :
|
||||
|
||||
- simulation exacte réussie ;
|
||||
- confirmation réseau ;
|
||||
- insertion canonique ;
|
||||
- extraction Core ;
|
||||
- replay de décodage sans échec ;
|
||||
- matérialisation attendue ;
|
||||
- second replay idempotent ;
|
||||
- séparation correcte entre SPL Token classique, ATA et Token-2022.
|
||||
|
||||
La fixture Token-2022 est générée par une commande idempotente :
|
||||
|
||||
```bash
|
||||
cargo run -p kb-pipeline-demo-scenarios --bin kb-pipeline-demo-scenarios-cli -- prepare-token-2022-fixture --rpc-url "$KB_DEVNET_RPC_URL" --wallet "$KB_DEVNET_WALLET" --wallet-dir "$PWD/wallets/temporary/local_devnet" --decimals 9
|
||||
```
|
||||
|
||||
Le second passage a retourné `fixture_written=false`, sans recréer les comptes.
|
||||
|
||||
## Surface reportée
|
||||
|
||||
Le registre ElGamal n’est pas validé dans `pre.062`.
|
||||
|
||||
Motifs :
|
||||
|
||||
- absence d’un générateur de compte de contexte de preuve `PubkeyValidity` ;
|
||||
- panneau desktop Registry non raccordé à un handler et à une commande Tauri complète.
|
||||
|
||||
Le code existant ne doit pas être présenté comme validé Devnet avant une campagne dédiée.
|
||||
|
||||
## État avant commit
|
||||
|
||||
La prerelease est commitable lorsque les commandes suivantes restent propres dans le workspace utilisateur :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo test -p kb-pipeline-demo-scenarios
|
||||
cargo clippy --all-targets
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
```
|
||||
|
||||
Le user a confirmé Clippy et l’audit après ajout manuel de deux `return` manquants dans des closures `or_else`. Ces corrections locales doivent être incluses dans le commit.
|
||||
|
||||
La refonte générale de `README.md`, `ROADMAP.md`, `CHANGELOG.md` et des documents historiques est volontairement reportée à la phase suivante ; ce rapport ne prétend pas la remplacer.
|
||||
@@ -0,0 +1,26 @@
|
||||
<!-- file: docs/validation/WEBSOCKET_MAINNET_RESEARCH_VALIDATION_REPORT.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Validation WebSocket `mainnet_research` — `0.1.0-pre.075`
|
||||
|
||||
## Portée
|
||||
|
||||
La campagne a utilisé le profil `mainnet_research` et une souscription `logsSubscribe`. Les secrets et URLs contenant une clé API ne sont pas reproduits dans ce rapport.
|
||||
|
||||
## Preuves observées
|
||||
|
||||
- ouverture de `demo_ws` à `11:14:17` ;
|
||||
- connexion de la session persistante à `11:15:02` ;
|
||||
- souscription `logsSubscribe` créée avec l’identifiant `16376948` ;
|
||||
- nouvelles ouvertures de `demo_ws` à `11:16:16` puis `11:16:51` sans déconnexion intermédiaire ;
|
||||
- notifications reçues avec le même identifiant de souscription après réouverture ;
|
||||
- désabonnement explicite à `11:16:56` ;
|
||||
- déconnexion explicite de la session à `11:17:04`.
|
||||
|
||||
## Conclusion
|
||||
|
||||
La campagne valide que la fermeture et la réouverture de la fenêtre ne détruisent pas la session WebSocket applicative, que l’état de souscription reste récupérable et que la fermeture réseau intervient sur action explicite.
|
||||
|
||||
## Limite observée
|
||||
|
||||
Le Program ID SPL Token classique produit un volume trop élevé pour un test opérateur confortable. Les logs montrent du throttling UI et des événements internes perdus. Les prochaines campagnes doivent utiliser un programme moins actif ou une fenêtre courte, sans interpréter ces pertes UI comme une perte de la session réseau.
|
||||
Reference in New Issue
Block a user