# Delta `0.2.1-pre.001` — audit HTTP, matrice exhaustive, architecture et sizing ## Base requise Release stable attendue : ```text v0.2.0 ``` L'archive KSP fournie porte `workspace.package.version = "0.2.0"` et contient les quatre crates N1 attendues. Elle ne contient pas `.git`; le tag `v0.2.0` n'est donc pas revérifiable localement depuis le zip. Archive historique auditée : ```text khadhroony-bot3_v0.5.3-pre.005-fix010.zip workspace.package.version = "0.5.3-pre.5" ``` ## Objectif Exécuter la première tranche obligatoire d'audit/conception de `0.2.1` sans grosse implémentation : relecture KSP, audit détaillé du transport bot3, inventaire officiel Solana HTTP actuel, matrice exhaustive, décisions d'architecture et gate de sizing. ## Version Cargo Conformément à `VER-ID-009`, la prerelease non-fix synchronise le signal technique : ```text 0.2.0 -> 0.2.1-pre.1 ``` Aucune crate, source Rust ou dépendance n'est ajoutée dans cette tranche. ## Résultats principaux - index HTTP Solana courant audité : **52 méthodes** ; - navigation Deprecated officielle : **14 méthodes historiques** ; - changelog Agave : endpoints RPC v1 obsolete/deprecated retirés en v2 ; les 14 pages sont donc conservées dans la matrice comme `Deprecated / runtime Removed`, pas comme wrappers callables ; - aucune méthode HTTP courante marquée unstable/experimental trouvée dans l'audit du 2026-08-17 ; les marqueurs Unstable trouvés concernent WebSocket/PubSub ; - `getBlock` et `getTransaction` sont des méthodes courantes stables mais leur deuxième paramètre legacy sous forme de bare encoding string est explicitement deprecated ; - bot3 contient exactement les 52 noms courants, tous `TypedAdapter`, sans manque ni extra ; il n'intègre pas les 14 Deprecated au registre HTTP ; - bot3 doit être refondu pour supprimer Transport -> Config, Transport -> `ks-lib` et `tracing` direct. ## Gate de sizing Réponse pour le périmètre monolithique du prompt `006` : ```text NON ``` Le scope est scindé immédiatement, sans masquer aucune méthode : ```text 0.2.1 foundation + registry exhaustif + pool/resilience/config + 4 canaris 0.2.2 Accounts + Tokens 0.2.3 Transactions 0.2.4 Blocks 0.2.5 Cluster 0.2.6 Economics + compliance finale HTTP ``` Wallet est décalé à `0.2.7`, Wallet Desk à `0.2.8`, puis les releases suivantes sont renumérotées. Réponse pour la `0.2.1` réduite définie par le plan `008` : ```text OUI, raisonnablement clôturable dans la session. ``` ## Architecture décidée - settings runtime publics possédés par Transport, utilisant notamment `Duration`; - provider/cluster/role/request kind sous descriptors ouverts/newtypes ; - URL encapsulée avec `Debug` redacted ; - descriptor central séparant statut documentaire, statut runtime, statut de forme de requête, operation kind et retry class ; - pool logique : priorité globale puis round-robin/fallback, avec endpoints disabled exclus ; - RPS/burst/concurrence/cooldown par endpoint/rôle ; - retry transport borné seulement pour opérations retry-safe ; `sendTransaction`/`requestAirdrop` ne sont jamais resend automatiquement après dispatch ambigu ; - erreurs via l'unique `ksp_core_lib::Error` ; - réponses Transport/wire, aucun modèle Store/Program/canonical ; - Config standard IDs candidats `cfg.std.transport` / `schema.std.transport` et adapter Config -> Transport ; - aucune nouvelle variable `.env.example` dans `pre.001`. ## Dépendances auditées `reqwest` courant observé : `0.13.4`; Tokio courant observé : `1.53.1`. Le workspace possède déjà `serde`, `serde_json` et `tokio ^1.53`. `reqwest` sera ajouté seulement à `pre.002` après vérification exacte de ses features. `base64`/`bs58` sont différés jusqu'au premier besoin concret. ## Fichiers ajoutés ```text docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md deltas/0.2.1/pre.001.md ``` ## Fichiers modifiés ```text Cargo.toml ROADMAP.md docs/000-README.md docs/plans/000-README.md docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md prompts/006-V0_2_1_START_PROMPT.md ``` ## Fichiers supprimés Aucun. ## Validations exécutées - relecture des sources internes obligatoires et des contrats publics Core/Logging/Config ; - inspection du workspace stable fourni ; - inspection du transport/config bot3 fourni ; - comparaison automatisée locale des 52 noms bot3 avec les 52 noms de l'index officiel audité : `missing = []`, `extra = []` ; - consultation de la documentation officielle Solana HTTP et Deprecated ; - consultation de JSON-RPC 2.0 ; - consultation du changelog Agave pour le statut runtime des endpoints deprecated ; aucun POST JSON-RPC live vers un provider n’a été exécuté, les éventuelles divergences provider restent donc à documenter séparément ; - vérification des versions actuelles candidates `reqwest`/`tokio` ; - vérification de l'absence de `.git` dans l'archive KSP. ## Validations non exécutées Le sandbox ne contient pas le binaire `cargo` (`cargo: command not found`). Les commandes suivantes n'ont donc pas été exécutées ici et doivent être rejouées sur le checkout de développement avant commit : ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test --workspace ``` Aucun `cargo tree` n'est pertinent avant ajout de la crate/dépendance ; les audits `cargo tree -p ksp-onchain-transport-lib ...` deviennent obligatoires dès `pre.002`. L'archive source ne contient pas `.git`; le commit attendu après application/validation suit `VER-GIT-001` : ```text v0.2.1-pre.001 ``` ## Questions ouvertes Aucune question bloquante pour ouvrir `pre.002`. Les détails de nommage Rust peuvent encore être ajustés si une contrainte concrète apparaît, sans modifier l'ownership et les invariants fixés par le plan. ## Suite `0.2.1-pre.002` : créer la crate, fixer les settings/validation, JSON-RPC, descriptors/status, erreurs et base Logging sur le périmètre réduit.