Files
khadhroony-bot3/ROADMAP.md
2026-07-23 21:41:09 +02:00

129 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: ROADMAP.md -->
<!-- version: 8 -->
# ROADMAP — khadhroony-bot3
## 0.1.0 — Consolidation du workspace
- [x] Créer les dix crates initiales du workspace avec le nom canonique `kb-wallet`.
- [x] Regrouper les contrats decoder/executor/materializer dans `kb-lib`.
- [x] Générer larborescence des modules à partir des anciennes crates.
- [x] Conserver une copie de référence complète de `khadhroony-bot2`.
- [x] Restaurer larchitecture modulaire de `kb-core` à partir de `kb_core`, avec `lib.rs` limité aux modules et réexports.
- [x] Porter exactement les contrats publics de `kb_decoder_api`.
- [x] Porter exactement les contrats publics des APIs dexécution et de matérialisation.
- [x] Porter les modèles de `kb_model` vers `kb-lib`.
- [~] Porter les décodeurs Solana core, SPL et Metaplex.
- [~] Porter leurs matérialisateurs.
- [ ] Porter leurs exécuteurs.
- [x] Fusionner `kb_store_core` et `kb_store_pg` dans `kb-store`.
- [ ] Adapter `kb-pipeline` aux nouveaux chemins publics.
- [ ] Adapter `kb-app-demo` et rétablir les validations fonctionnelles.
- [ ] Créer ultérieurement une crate off-chain dédiée au fetch borné HTTP/IPFS/Arweave des URI de metadata, séparée des décodeurs, matérialisateurs et du replay canonique on-chain.
- [ ] Réorganiser les chemins dexport TSRS de `kb-lib` dans une tranche dédiée, en conservant `../frontend/ts/bindings/` comme préfixe de base.
- [ ] Auditer rétrospectivement la couverture historique des décodeurs et matérialisateurs.
### 0.1.0-pre.002 — Contrats fondamentaux consolidés
- [x] Porter les modèles partagés de `kb_model` dans `kb-lib`.
- [x] Porter les contrats publics de décodage dans `kb-lib::decoder::api`.
- [x] Porter les contrats publics de matérialisation dans `kb-lib::materializer::api`.
- [x] Porter les contrats publics d'exécution dans `kb-lib::executor::api`.
- [x] Maintenir `lib.rs` comme façade sans implémentation métier.
- [x] Valider le workspace avec Cargo sur la machine de développement.
### 0.1.0-pre.003 — Réécriture de `kb-store`
- [x] Remplacer le scaffold par une architecture intégrée contrats/adaptateurs.
- [x] Porter les DTO, entités, traits et validations store-neutral.
- [x] Porter ladaptateur PostgreSQL, ses requêtes, diagnostics et initialisations idempotentes.
- [x] Conserver `CoreInstructionReplayInput` dans `kb-lib` et le réexporter depuis `kb-store`.
- [x] Supprimer la dépendance directe de `kb-store` vers `kb-config`.
- [x] Adapter les règles bot2 devenues incompatibles avec larchitecture bot3.
- [x] Valider `cargo check`, les 84 tests et Clippy pour `kb-store`, puis `cargo check --workspace`.
- [ ] Valider `cargo test --workspace` et `cargo clippy --workspace --all-targets`.
- [x] Valider les 84 tests PostgreSQL réels avec `KB_POSTGRES_TEST_URL`.
### 0.1.0-pre.004 — Décodeur Solana Core dans `kb-lib`
- [x] Remplacer le scaffold `kb-lib::decoder::solana::core` par le décodeur maximal validé de bot2.
- [x] Conserver les 18 surfaces natives, leurs 121 déclarations de couverture et leurs tests.
- [x] Adapter les contrats vers les réexports de `kb-lib` sans dépendance vers `kb-store`.
- [x] Préfixer les symboles internes afin déviter les collisions avec les futurs décodeurs fusionnés.
- [x] Déclarer le target hiérarchique `kb-lib.decoder.solana.core`.
- [x] Valider `cargo check -p kb-lib`, les 169 tests de `kb-lib` et les deux audits Rust.
- [ ] Valider Clippy et lensemble du workspace sur la machine de développement.
- [x] Poursuivre avec SPL Memo après validation.
### 0.1.0-pre.005 — Décodeur SPL Memo dans `kb-lib`
- [x] Remplacer le scaffold `kb-lib::decoder::spl::memo` par le décodeur validé de bot2.
- [x] Conserver les générations v1, v3 et v4, leurs règles distinctes et les 9 tests.
- [x] Ajouter les trois Program IDs canoniques dans `kb-program-ids` sans les classer comme natifs.
- [x] Préserver le payload borné, le SHA-256, les comptes ordonnés et les statuts non commités.
- [x] Porter la matrice machine-readable `docs/SPL_MEMO_MATRIX.json`.
- [x] Valider `kb-program-ids`, `kb-lib` et le workspace avec Cargo sur la machine de développement.
- [x] Poursuivre avec SPL Token classique après validation.
### 0.1.0-pre.006 — Décodeur SPL Token classique dans `kb-lib`
- [x] Remplacer le scaffold `kb-lib::decoder::spl::token` par le décodeur maximal validé de bot2.
- [x] Conserver les 28 tags publiés par `spl-token-interface 3.0.0` et les huit tests différentiels.
- [x] Préserver montants bruts, comptes ordonnés, autorités simple/multisig, suffixes et statuts non commités.
- [x] Conserver les bornes de `Batch`, ses chemins enfants et le refus des batches imbriqués.
- [x] Porter le target de tracing vers `kb-lib.decoder.spl.token`.
- [x] Rendre la contrainte `wincode 0.5.5` et `solana-wincode-varint 1.0.0` vérifiable par laudit workspace.
- [x] Valider `kb-program-ids`, `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement.
- [x] Poursuivre avec le décodeur SPL Associated Token Account après validation.
### 0.1.0-pre.007 — Décodeur SPL Associated Token Account dans `kb-lib`
- [x] Remplacer le scaffold `kb-lib::decoder::spl::associated_token_account` par le décodeur exact validé de bot2.
- [x] Conserver `Create`, `CreateIdempotent`, `RecoverNested` et la forme historique `Create` à payload vide.
- [x] Préserver lordre des comptes, les flags, doublons, chemins outer/inner et statuts non commités.
- [x] Valider les PDA canoniques `[wallet, token_program, mint]` sans remplacer les adresses observées.
- [x] Distinguer explicitement SPL Token classique et Token2022 sans décoder leurs états ni extensions.
- [x] Conserver les dix tests différentiels et la matrice machine-readable ATA.
- [x] Porter le target de tracing vers `kb-lib.decoder.spl.associated_token_account`.
- [x] Valider `kb-program-ids`, les 196 tests de `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement.
- [x] Poursuivre avec les décodeurs Token2022 et registre ElGamal après validation.
### 0.1.0-pre.008 — Décodeurs Token2022 et registre ElGamal dans `kb-lib`
- [x] Remplacer les scaffolds `token_2022` et `elgamal_registry` par les décodeurs exacts validés de bot2.
- [x] Conserver les 48 enveloppes Token2022, les sous-instructions dextensions identifiables et les interfaces Metadata/Group incorporées.
- [x] Porter le parseur borné des états Mint, Account et Multisig avec leurs entrées TLV ordonnées.
- [x] Maintenir le registre ElGamal comme programme indépendant avec ses deux instructions et son état de compte exact de 64 octets.
- [x] Ajouter le Program ID du registre ElGamal à `kb-program-ids` sans le classer comme surface native.
- [x] Déplacer `ProgramIdEntry` et les fonctions du registre dans `kb-program-ids/src/programs.rs`, avec `lib.rs` limité aux réexports.
- [x] Porter les targets de tracing vers `kb-lib.decoder.spl.token_2022` et `kb-lib.decoder.spl.elgamal_registry`.
- [x] Conserver les 55 tests Token2022/ElGamal et leurs matrices machine-readable.
- [x] Valider `kb-program-ids`, les 251 tests de `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement.
- [x] Poursuivre avec le décodeur Metaplex Token Metadata après validation.
### 0.1.0-pre.009 — Décodeur Metaplex Token Metadata dans `kb-lib`
- [x] Remplacer le scaffold `kb-lib::decoder::metadata::metaplex_token_metadata` par le décodeur maximal validé de bot2.
- [x] Conserver linventaire exhaustif des 58 discriminateurs dinstructions `0..=57`, y compris les variantes historiques.
- [x] Conserver linventaire exhaustif des 15 variantes de comptes `Key 0..=14`, avec rejet explicite de `Uninitialized`.
- [x] Porter les parseurs bornés de Metadata, Edition, Master Edition, Edition Marker, Token Record, records dautorité et de délégation, escrow et Reservation List.
- [x] Préserver les validations downer, de PDA, de bump, de longueur, de suffixe, de comptes ordonnés et de provenance.
- [x] Maintenir les layouts historiques matérialisables avec lifecycle explicite mais définitivement non exécutables.
- [x] Ajouter le Program ID Metaplex Token Metadata à `kb-program-ids` sans le classer comme surface native.
- [x] Porter le target de tracing vers `kb-lib.decoder.metadata.metaplex_token_metadata`.
- [x] Conserver les 69 tests Metaplex et la matrice machine-readable exhaustive.
- [x] Valider `kb-program-ids`, les 320 tests de `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement.
- [x] Poursuivre avec les matérialisateurs après validation du port des décodeurs prioritaires.
### 0.1.0-pre.010 — Matérialisateurs Solana natifs dans `kb-lib`
- [x] Porter `LifecycleMaterializer`, `AdminMaterializer`, `ComplianceAuditMaterializer` et `StakingMaterializer` dans les modules consolidés de `kb-lib`.
- [x] Conserver leurs 50 tests de projections natives, de politique de transaction et didempotence.
- [x] Réexporter les types concrets et les fonctions stateful publiques depuis la façade de `kb-lib`.
- [x] Ajouter un test dintégration aval prouvant quun futur crate externe peut implémenter `EventMaterializer` avec la seule API publique.
- [x] Porter les targets vers `kb-lib.materializer.admin`, `kb-lib.materializer.compliance`, `kb-lib.materializer.lifecycle` et `kb-lib.materializer.staking`.
- [x] Conserver les identités de processor historiques afin de préserver les clés de replay et didempotence existantes.
- [x] Ajouter la règle dordre et dabsence de ligne vide interne dans les blocs de réexports publics.
- [ ] Valider les 371 tests attendus de `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement.
- [ ] Poursuivre avec les matérialisateurs Memo, SPL Token, ATA, Token2022, registre ElGamal et Metaplex.