7.8 KiB
Delta 0.2.2-pre.001 — réaudit HTTP Accounts/Tokens/Cluster, DTOs et sizing
Base requise
Release stable attendue :
v0.2.1
L'archive KSP fournie porte workspace.package.version = "0.2.1". Elle ne contient pas .git; le tag v0.2.1 n'est donc pas revérifiable
localement depuis le zip.
Objectif
Exécuter la première tranche obligatoire de 0.2.2 sans implémentation fonctionnelle lourde : relire les contrats KSP, réauditer la surface
HTTP Solana officielle actuelle, confirmer la matrice des 22 méthodes Accounts/Tokens/Cluster, cadrer les DTOs wire, évaluer les dépendances et
trancher le gate de sizing.
Version Cargo
Conformément à VER-ID-009, la prerelease non-fix synchronise le signal technique :
0.2.1 -> 0.2.2-pre.1
Aucune source Rust, dépendance Cargo ou configuration runtime n'est modifiée dans cette tranche.
Résultats principaux
- index HTTP Solana courant réaudité : 52 méthodes ;
- navigation Deprecated officielle : 14 méthodes historiques, inchangées ;
- familles de la release : Accounts
6 = 1 acquis + 5 ciblés, Tokens5 = 5 ciblés, Cluster15 = 3 acquis + 12 ciblés; - aucune méthode ajoutée/supprimée/déplacée détectée depuis l'audit
0.2.1du 2026-08-17 ; - les 22 méthodes ciblées restent des méthodes courantes non marquées Deprecated/Unstable et les descriptors KSP restent
Read + RetrySafe; getMultipleAccountsconserve la limite documentée de 100 adresses ;getSlotLeadersconserve la limite documentée1..=5000;getLargestAccountsetgetProgramAccountsdocumentent toujourssortResults;getProgramAccountsconserve sa réponse bare par défaut et contextualisée avecwithContext=true;- la source primaire Agave confirme trois filtres Program Accounts (
dataSize,memcmp,tokenAccountState), 4 filtres max et 128 octets décodés max pourmemcmp; - le wire Account requiert une union pour
data, y compris le fallbackjsonParsed -> [base64], etspacereste nullable ; TokenAmount.uiAmountreste nullable ;getHighestSnapshotSlotconserveincremental: nullet la source officielle Agave confirme une erreurNoSnapshoten absence de snapshot ;getLeaderScheduleconserve son overload slot/config particulier ;getVoteAccountsconservecurrent/delinquentet les epoch credits triples; la source Agave courante borne cet historique RPC à 5 entrées par validator.
Gate de sizing
Question obligatoire :
Les 22 wrappers typés + DTOs partagés + tests + documentation peuvent-ils être clôturés proprement dans cette session ?
Réponse :
OUI.
Aucun split de release n'est nécessaire. Le plan conserve 0.2.2 à 22 méthodes et répartit le travail sur DTOs communs, Accounts, Tokens,
Cluster simple, Cluster schedule/slot/vote puis clôture. Si une tranche réelle dépasse le budget KSP, elle sera scindée par une prerelease
supplémentaire sans déplacer de méthode hors 0.2.2.
Décisions prises
- conserver exactement la partition
4 / 22 / 11 / 15de0.2.1–0.2.4; - ne pas reconstruire un transport par famille ; tous les wrappers passent par descriptor +
execute_standard_rpc; - mutualiser
SolanaCommitmentetSolanaRpcContextsans casser les réexports0.2.1; - représenter Account data comme une forme wire discriminée, sans décodage Program/SPL ;
- conserver
jsonParsed.parsedcommeserde_json::Valuedans Transport ; - utiliser
ksp_core_lib::Pubkeydans les DTOs publics, avec wire structs privés puis conversion explicite ; - représenter le selector Token comme une union exclusive
mint/programId; - représenter le résultat
getProgramAccountscomme bare ou contextualisé selonwithContext; - conserver les endpoints de
getClusterNodescomme chaînes wire optionnelles au contrat public ; - conserver les
nulldocumentés (Account,space,uiAmount,transactionCount, snapshot incremental, leader schedule) ; - ne pas modifier Config : le contrat
std.transportexistant suffit ; - ne pas ajouter
base64,bs58, SPL,solana-clientou SDK RPC haut niveau àpre.001; les formes encodéesmemcmppeuvent rester des chaînes wire tant qu’aucun décodage local n’est requis.
Prévision de travail
pre.001 audit officiel + matrice + DTOs + dépendances + sizing
pre.002 primitives/configs/results partagés + fixtures de base
pre.003 5 Accounts + tests
pre.004 5 Tokens + tests
pre.005 Cluster simple (7 méthodes) + tests
pre.006 Cluster schedule/slot/vote (5 méthodes) + tests
pre.007 canaries + smoke opt-in si utile + docs + prompt 0.2.3 + préparation stable
Une prerelease supplémentaire reste autorisée si le budget réel d'une tranche l'exige.
Fichiers ajoutés
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
deltas/0.2.2/pre.001.md
Fichiers modifiés
Cargo.toml
ROADMAP.md
docs/000-README.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
Fichiers supprimés
Aucun.
Fichiers volontairement inchangés
CHANGELOG.md
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
crates/ksp-onchain-transport-lib/src/**
crates/ksp-onchain-transport-lib/unit_tests/**
crates/ksp-onchain-transport-lib/tests/**
crates/ksp-config-lib/src/transport.rs
config/std.transport.json
config/schemas/std.transport.schema.json
Les deltas 0.2.1 restent historiques et ne sont pas réécrits.
Validations exécutées
- relecture des sources KSP obligatoires du prompt
0.2.2; - inspection de l'archive stable KSP fournie et de la foundation Transport
0.2.1; - confirmation locale que le registry assigne déjà exactement les 22 méthodes ciblées à
HttpRpcCoverageRelease::V0_2_2; - confirmation locale que ces 22 descriptors sont
Stable / Supported / Stable,Read,RetrySafe; - consultation de l'index HTTP Solana officiel courant et des 22 pages de méthodes ciblées ;
- consultation de la navigation Deprecated officielle courante ;
- consultation de
Solana RPC JSON Structurespour Account data et TokenAmount ; - consultation des sources Agave
v3.1.8liées par les pages officielles pour les ambiguïtés Account, filters/memcmp, cardinalités RPC, largest accounts, snapshot, leader schedule, cluster node et vote accounts ; - contrôle documentaire de la matrice
52 current / 14 historical / 4+22+11+15; - contrôle de l'absence de nouvelle dépendance ou de besoin Config dans le design de
pre.001.
Validations non exécutées
Le sandbox courant ne fournit pas le binaire cargo (command -v cargo ne retourne aucun chemin). Les validations Cargo suivantes n'ont donc pas
été exécutées ici et doivent être rejouées sur le checkout de développement avant commit :
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
Aucun cargo tree n'est nécessaire dans cette tranche car aucune dépendance ni feature n'a changé. Les quatre vues cargo tree du prompt restent
obligatoires dès qu'une prerelease change une dépendance/feature et à la clôture.
L'archive KSP fournie ne contient pas .git; le commit attendu après application et validations suit VER-GIT-001 :
v0.2.2-pre.001
Questions ouvertes
Aucune question bloquante pour pre.002.
Les détails exacts de nommage Rust des DTOs restent ajustables pendant leur implémentation, mais les invariants wire et frontières fixés par le
plan 009 ne doivent pas être relâchés pour simplifier artificiellement les wrappers.
Suite
0.2.2-pre.002 : introduire les primitives/configs/results partagés, mutualiser Context/Commitment, fixer les conversions wire et installer les
fixtures déterministes communes avant les wrappers Accounts.