7.7 KiB
Delta 0.2.2-pre.001-fix.001 — réaudit Agave v4.2.1 et complétude des DTOs Cluster
Base requise
Livraison précédente :
0.2.2-pre.001
workspace.package.version = "0.2.2-pre.1"
Le fichier docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md fourni pour correction porte déjà version: 2; le présent correctif
l'incrémente à version: 3 conformément à GEN-FILE-004.
Le delta historique :
deltas/0.2.2/pre.001.md
reste inchangé. Conformément à KSP-REL-003 et VER-DELTA-007, l'audit incomplet de pre.001 n'est pas réécrit silencieusement : ce fix
trace explicitement sa correction avant pre.002.
Objectif
Corriger la source Agave complémentaire utilisée par le plan 0.2.2 et réauditer les contrats wire concernés avant l'implémentation des DTOs.
pre.001 avait pris Agave v3.1.8 comme source complémentaire parce que les liens Source actuellement exposés par les pages RPC de
solana.com pointent encore vers ce snapshot. Ce constat reste utile pour expliquer la documentation publiée, mais il ne suffit pas à qualifier
v3.1.8 de source Agave actuelle.
Le présent fix recoupe donc les pages Solana avec le tag Agave plus récent :
v4.2.1
et utilise directement ses sources primaires pour les structures/configurations RPC qui intéressent 0.2.2.
Sources réauditées
Documentation RPC :
https://solana.com/docs/rpc/http
https://solana.com/docs/rpc/json-structures
Source primaire Agave v4.2.1 :
https://github.com/anza-xyz/agave/blob/v4.2.1/rpc/src/rpc.rs
https://github.com/anza-xyz/agave/blob/v4.2.1/rpc-client-types/src/config.rs
https://github.com/anza-xyz/agave/blob/v4.2.1/rpc-client-types/src/filter.rs
https://github.com/anza-xyz/agave/blob/v4.2.1/rpc-client-types/src/request.rs
https://github.com/anza-xyz/agave/blob/v4.2.1/rpc-client-types/src/response.rs
Le Cargo.toml racine du tag v4.2.1 déclare lui-même workspace.package.version = "4.2.1".
Résultat du réaudit
Invariants confirmés
Le passage de la référence complémentaire v3.1.8 à v4.2.1 ne remet pas en cause le périmètre 0.2.2 ni les principales limites déjà
retenues :
MAX_MULTIPLE_ACCOUNTS = 100
MAX_GET_PROGRAM_ACCOUNT_FILTERS = 4
MAX_GET_SLOT_LEADERS = 5000
MAX_RPC_VOTE_ACCOUNT_INFO_EPOCH_CREDITS_HISTORY = 5
Les filtres Program Accounts restent :
DataSize
Memcmp
TokenAccountState
et Memcmp conserve les formes base58, base64 et octets bruts, avec 128 octets décodés maximum et rejet de l'ancien libellé binary.
Les configurations Accounts, Token selector, Leader Schedule et Vote Accounts retenues dans le plan restent également compatibles avec
v4.2.1.
Évolution 1 — getClusterNodes
Agave v4.2.1 expose dans RpcContactInfo le champ supplémentaire :
clientId Option<String>
La page RPC Solana courante ne le liste pas encore. KSP doit néanmoins pouvoir accepter et préserver ce champ lorsqu'un noeud/provider le retourne, sans le rendre obligatoire pour les réponses qui ne le contiennent pas.
Le DTO Cluster prévu par le plan est donc complété avec clientId: Option<String>.
Évolution 2 — getVoteAccounts
Agave v4.2.1 expose dans RpcVoteAccountInfo :
inflationRewardsCommissionBps Option<u16>
La source précise que ce champ est absent/None pour les noeuds antérieurs à son introduction. KSP doit le préserver comme optionnel et ne doit
pas le déduire artificiellement du champ historique commission: u8.
Le DTO Vote Account prévu par le plan est donc complété avec inflationRewardsCommissionBps: Option<u16>.
Tests à préserver dans la suite
La stratégie de tests du plan exige désormais explicitement :
getClusterNodesavec présence et absence declientId;getVoteAccountsavec présence et absence deinflationRewardsCommissionBps;- conservation des tests déjà prévus sur les autres champs optionnels/nullables et sur les limites
100 / 4 / 5000 / 5.
Périmètre inchangé
Le correctif ne modifie pas :
- les 22 méthodes affectées à
0.2.2; - la partition globale
4 / 22 / 11 / 15; - le gate de sizing positif de
0.2.2; - l'architecture
wrapper -> descriptor -> execute_standard_rpc -> pool -> reqwest -> JSON-RPC -> decode; - Config ;
- les dépendances Cargo ;
- les sources Rust ;
- les canaris
0.2.1; - le planning
pre.002àpre.007.
Aucun nouveau besoin base64, bs58, SPL, solana-client ou SDK RPC haut niveau n'est introduit par ce réaudit.
Fichier modifié
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
Fichier ajouté
deltas/0.2.2/pre.001-fix.001.md
Fichiers supprimés
Aucun.
Fichiers volontairement inchangés
Cargo.toml
ROADMAP.md
CHANGELOG.md
deltas/0.2.2/pre.001.md
docs/000-README.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.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/**
crates/ksp-config-lib/**
config/**
Le plan 009 reste le fichier canonique ; aucun fichier parallèle *.corrected.md n'est ajouté au dépôt.
Version Cargo
Ce correctif est exclusivement documentaire et ne touche aucun fichier consommé par le code, le build, le runtime, la configuration exécutable
ou une migration. Conformément à VER-ID-008, workspace.package.version reste :
0.2.2-pre.1
L'identifiant de livraison est :
0.2.2-pre.001-fix.001
Validations exécutées
- relecture de
RULES.md,docs/rules/VERSION_WORKFLOW.md,docs/rules/FILE_CONTRACTS.md,docs/rules/RULES_GENERAL.md,docs/rules/RULES_KSP.mdetdocs/rules/PROMPT_STRUCTURE.md; - contrôle des règles
GEN-FILE-004,VER-ID-003,VER-ID-008,VER-DELTA-003,VER-DELTA-007,VER-ARCHIVE-002,VER-ARCHIVE-004etKSP-REL-003applicables à ce correctif ; - comparaison de la source Agave
v3.1.8utilisée parpre.001avec Agavev4.2.1sur les structures/configs RPC nécessaires à Accounts/Tokens/Cluster ; - confirmation dans Agave
v4.2.1des limites100 / 4 / 5000 / 5et des variantes Program Account filters ; - confirmation dans Agave
v4.2.1deRpcContactInfo.client_id: Option<String>; - confirmation dans Agave
v4.2.1deRpcVoteAccountInfo.inflation_rewards_commission_bps: Option<u16>; - contrôle que le plan canonique référence désormais
v4.2.1pour les cinq sources Agave complémentaires ; - contrôle que les seules mentions restantes de
v3.1.8expliquent le snapshot encore lié par le site Solana ; - contrôle que
clientIdetinflationRewardsCommissionBpssont présents dans les DTOs prévus et dans la stratégie de tests ; - contrôle qu'aucune autre famille de fichier n'est modifiée par ce fix.
Validations non exécutées
Aucune validation Cargo n'est requise spécifiquement pour ce fix documentaire : aucune source Rust, dépendance, feature, configuration runtime ou manifest Cargo n'est modifié.
Les validations Rust prévues pour 0.2.2-pre.002 restent inchangées et devront être réellement exécutées après ses modifications de code.
Questions ouvertes
Aucune question bloquante nouvelle.
Le plan garde comme règle de mise en oeuvre que les champs optionnels/versionnés observés dans Agave doivent être représentés sans rendre leur présence obligatoire chez tous les providers.
Suite
Après application/commit de 0.2.2-pre.001-fix.001, reprendre 0.2.2-pre.002 sur le plan 009 corrigé, en incluant dès la conception des DTOs
Cluster/Vote les deux champs optionnels confirmés par Agave v4.2.1.