9.2 KiB
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, 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 :
https://solana.com/docs/rpc/http
https://solana.com/docs/rpc/deprecated/confirmtransaction
https://solana.com/docs/rpc/json-structures
L'inventaire reste :
52 méthodes HTTP courantes
14 méthodes historiques Deprecated
Partition KSP stable :
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 :
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 ;
getLeaderScheduleetgetTransactionavec leurs formes de requête distinctes ;transactionIndexcourant ;requestAirdrop.recentBlockhashruntime ;sendTransaction.maxRetriesdistinct du retry HTTP KSP ;simulateTransaction.accountsavec encodings de retour supportés et rejet local debinary/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 :
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 :
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é :
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 :
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 :
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
Le smoke historique Config -> Transport reste séparé et transitoire :
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
Frontières et dépendances attendues
À clôture :
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 :
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 :
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 :
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 :
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 :
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.