# 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 l’arborescence des modules à partir des anciennes crates. - [x] Conserver une copie de référence complète de `khadhroony-bot2`. - [x] Restaurer l’architecture 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 d’exé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 d’export TS‑RS 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 l’adaptateur 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 l’architecture 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 l’ensemble 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 l’audit 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 l’ordre 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 Token‑2022 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 Token‑2022 et registre ElGamal après validation. ### 0.1.0-pre.008 — Décodeurs Token‑2022 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 Token‑2022, les sous-instructions d’extensions 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 Token‑2022/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 l’inventaire exhaustif des 58 discriminateurs d’instructions `0..=57`, y compris les variantes historiques. - [x] Conserver l’inventaire 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 d’autorité et de délégation, escrow et Reservation List. - [x] Préserver les validations d’owner, 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 d’idempotence. - [x] Réexporter les types concrets et les fonctions stateful publiques depuis la façade de `kb-lib`. - [x] Ajouter un test d’intégration aval prouvant qu’un 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 d’idempotence existantes. - [x] Ajouter la règle d’ordre et d’absence 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, Token‑2022, registre ElGamal et Metaplex.