# Validation finale `0.2.3` — HTTP Transactions ## Objet Cette matrice enregistre la clôture validée et la publication stable de `0.2.3 — HTTP Transactions`. Elle complète le réaudit transversal [`005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md`](005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md), qui vérifie la complétude de requête/réponse des 37 wrappers HTTP typés courants. La publication stable est réalisée par `0.2.3-rel.001` après validation opérateur complète de `pre.009`. ## Réaudit final de l'inventaire Dernier contrôle effectué le **18 août 2026** contre : ```text https://solana.com/docs/rpc/http https://solana.com/docs/rpc/deprecated/confirmtransaction https://solana.com/docs/rpc/json-structures ``` L'inventaire reste : ```text 52 méthodes HTTP courantes 14 méthodes historiques Deprecated ``` Partition KSP stable : ```text 0.2.1 foundation 4 0.2.2 Accounts/Tokens/Cluster 22 0.2.3 Transactions 11 surface typée stable 37 0.2.4 Blocks/Economics restant 15 ``` Aucun recalibrage de `HttpRpcCoverageRelease` n'est nécessaire. ## Surface Transactions stable | Méthode | Classe KSP | Contrat de clôture principal | |-------------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------| | `getFeeForMessage` | Read / RetrySafe | message base64 opaque, contexte, fee nullable | | `getLatestBlockhash` | Read / RetrySafe | contexte, blockhash non vide, lastValidBlockHeight | | `getRecentPrioritizationFees` | Read / RetrySafe | comptes optionnels <= 128, ordre serveur | | `getSignaturesForAddress` | Read / RetrySafe | pagination before/until/1..=1000, newest-first, transactionIndex optionnel | | `getSignatureStatuses` | Read / RetrySafe | <= 256, liste vide runtime, null positionnels, searchTransactionHistory | | `getTransaction` | Read / RetrySafe | config moderne complète + bare encoding deprecated, encodings/version/meta/index lossless | | `getTransactionCount` | Read / RetrySafe | contexte + u64 | | `isBlockhashValid` | Read / RetrySafe | blockhash opaque + contexte + bool | | `requestAirdrop` | WriteSubmission / NeverAfterDispatch | commitment + recentBlockhash runtime, signature, aucune resoumission après dispatch ambigu | | `sendTransaction` | WriteSubmission / NeverAfterDispatch | base58/base64 + toutes options, maxRetries node-side, aucune resoumission après dispatch ambigu | | `simulateTransaction` | Simulation / RetrySafe | config complète, invariants locaux, résultat riche lossless | Classification exacte : ```text 8 Read / RetrySafe 2 WriteSubmission / NeverAfterDispatch 1 Simulation / RetrySafe ``` ## Complétude `KSP-TRANSPORT-007` Le réaudit `pre.008` conclut **37/37 conformes sans remédiation fonctionnelle**. Points particulièrement sensibles conservés : - encodings Account/Transaction legacy encore supportés ; - `getLeaderSchedule` et `getTransaction` avec leurs formes de requête distinctes ; - `transactionIndex` courant ; - `requestAirdrop.recentBlockhash` runtime ; - `sendTransaction.maxRetries` distinct du retry HTTP KSP ; - `simulateTransaction.accounts` avec encodings de retour supportés et rejet local de `binary/base58` ; - résultats wire riches conservés sans introduire de dépendance SDK/RPC haut niveau. ## Résilience et no-resend Les deux writes utilisent le descriptor central `WriteSubmission / NeverAfterDispatch`. Les fixtures end-to-end déjà livrées prouvent : ```text HTTP 429 après dispatch -> une seule requête HTTP 503 après dispatch -> une seule requête timeout après dispatch -> une seule requête NotDispatched prouvé -> retry/fallback central autorisé ``` `simulateTransaction` reste retry-safe et possède un scénario déterministe HTTP 503 -> succès. ## Canaries déterministes La release stable conserve : ```text current registry == 52 historical registry == 14 V0_2_1 exact == 4 V0_2_2 exact == 22 V0_2_3 exact == 11 V0_2_4 restant == 15 KSP-TRANSPORT-007 == 37 wrappers courants audités ``` À la base validée `pre.008`, l'opérateur a confirmé : ```text 182 tests unitaires Transport passed 19 tests public API passed 14 tests release completeness passed 1 smoke Transport live ignored par défaut 0 failure 0 warning clippy signalé ``` ## Smoke Devnet Transport pur `pre.009` étend le smoke Transport existant sans créer de nouvelle ownership boundary. La séquence reste read-only : ```text settings programmatiques -> getAccountInfo -> getTokenAccountsByOwner -> getEpochInfo -> getVoteAccounts -> getLatestBlockhash -> isBlockhashValid -> getTransactionCount ``` La branche Transaction ne déclenche ni `requestAirdrop`, ni `sendTransaction`, ni simulation nécessitant une transaction sérialisée. Les fixtures locales restent la preuve déterministe complète des 11 wrappers. Commande opt-in : ```bash cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture ``` Le smoke historique Config -> Transport reste séparé et transitoire : ```bash cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture ``` ## Frontières et dépendances attendues À clôture : ```text ksp-config-lib -> ksp-onchain-transport-lib ksp-onchain-transport-lib -> ksp-core-lib ksp-onchain-transport-lib -> ksp-logging-lib ksp-onchain-transport-lib -X-> ksp-config-lib ksp-onchain-transport-lib -X-> Store ksp-onchain-transport-lib -X-> Program ksp-onchain-transport-lib -X-> tracing direct ``` Aucune nouvelle dépendance `base64`, `bs58`, `wincode`, `solana-client` ou client RPC haut niveau n'est introduite par `0.2.3`. ## Preuves opérateur finales La candidate `0.2.3-pre.009` a été validée le **18 août 2026** avec succès : ```text cargo fmt --all OK cargo check --workspace OK cargo clippy --workspace --all-targets OK, sans warning signalé Transport 182 unit passed 19 public API passed 14 release completeness passed 1 smoke live ignored par défaut Config 95 unit passed 5 ownership passed 13 public API passed 1 smoke live ignored par défaut Core 14 unit passed 3 public API passed 2 workspace dependencies passed 1 workspace logging passed Config Desk 63 unit passed 2 desktop contract passed 2 desktop security passed 1 public API passed cargo test --workspace OK ``` Le probe diagnostic d'overhead Logging reste volontairement `ignored`; il ne constitue pas un échec. Les graphes suivants ont été inspectés pour Transport et Config : ```text cargo tree cargo tree -d cargo tree -e features cargo tree -e normal ``` Ils confirment la frontière attendue `ksp-config-lib -> ksp-onchain-transport-lib`, sans dépendance inverse Transport -> Config/Store/Program et sans import direct `tracing` dans Transport. Les doublons notables restent transitifs/proc-macro, notamment `syn` 2.x/3.x. Les deux smokes live ont ensuite été exécutés explicitement et passent : ```text Transport pur read-only programmatic_devnet_transport_reaches_accounts_tokens_cluster_and_transaction_read_wrappers -> 1 passed; 0 failed Config -> Transport transitoire committed_devnet_transport_profile_reaches_all_foundation_canaries -> 1 passed; 0 failed ``` ## Publication `rel.001` `0.2.3-rel.001` reste strictement publicationnelle : ```text workspace.package.version = 0.2.3 ROADMAP : 0.2.3 -> [X] CHANGELOG : synthèse stable 0.2.3 commit attendu : v0.2.3-rel.001 tag stable après validation : v0.2.3 ``` Aucune nouvelle méthode HTTP, aucun nouveau DTO, aucune dépendance, aucune feature et aucun nouveau comportement runtime ne sont introduits pendant `rel.001`. Après application du delta publicationnel, la gate finale est : ```bash cargo fmt --all cargo check --workspace cargo clippy --workspace --all-targets cargo test --workspace ``` Après succès, créer le commit `v0.2.3-rel.001`, puis le tag stable `v0.2.3`. La prochaine session s'ouvre avec `prompts/009-V0_2_4_START_PROMPT.md`.