10 KiB
Prompt de démarrage 0.2.4 — HTTP Blocks + Economics + compliance HTTP finale
1. Contexte de reprise
La base attendue est la release stable :
v0.2.3
La surface HTTP acquise doit être :
52 méthodes HTTP courantes enregistrées
14 méthodes historiques Deprecated / runtime Removed
37 wrappers typed courants :
4 foundation
22 Accounts/Tokens/Cluster
11 Transactions
15 wrappers typed restants : 10 Blocks + 5 Economics
0.2.3 a aussi formalisé KSP-TRANSPORT-007 : un wrapper RPC KSP ne compte comme complet que s'il expose toutes les possibilités supportées retenues par l'audit — paramètres, options, overloads/formes legacy encore supportés, contraintes déterministes utiles et variantes de réponse pertinentes sans perte.
La release à ouvrir est :
0.2.4 — HTTP Blocks + Economics + compliance HTTP finale
La première tranche est 0.2.4-pre.001 et commence par audit officiel actuel + brainstorming + sizing, avant toute implémentation lourde.
2. Mission
Compléter exactement les 15 méthodes actuellement affectées à HttpRpcCoverageRelease::V0_2_4.
Blocks — 10
getBlock
getBlockCommitment
getBlockHeight
getBlockProduction
getBlocks
getBlocksWithLimit
getBlockTime
getFirstAvailableBlock
getRecentPerformanceSamples
minimumLedgerSlot
Economics — 5
getInflationGovernor
getInflationRate
getInflationReward
getStakeMinimumDelegation
getSupply
La partition doit être revérifiée contre la documentation Solana du jour avant confirmation.
Après ces 15 wrappers, 0.2.4 doit exécuter la compliance finale de toute la surface HTTP :
52 current
14 historical Deprecated / Removed
52 wrappers typed courants
3. Gate de sizing obligatoire
Répondre explicitement à pre.001 :
Les 15 wrappers Blocks/Economics, leurs DTOs/wires, les overloads/legacy,
les tests, la compliance 52+14 et la documentation peuvent-ils être
clôturés proprement dans cette release/session ?
Si NON, scinder avant implémentation fonctionnelle lourde.
Une prerelease vise environ 15–20 minutes de travail effectif.
4. Sources internes obligatoires
Relire avant modification :
ROADMAP.md
CHANGELOG.md
RULES.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
docs/plans/010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md
docs/validation/005-V0_2_3_KSP_TRANSPORT_007_RETRO_AUDIT.md
docs/validation/006-V0_2_3_HTTP_TRANSACTIONS.md
docs/architecture/002-LAYERS_AND_DEPENDENCIES.md
docs/architecture/003-COMPONENT_CONTRACTS.md
docs/architecture/004-COMPONENT_INVENTORY.md
docs/architecture/005-DEPENDENCY_GRAPH.md
docs/rules/RULES_DEPENDENCIES.md
docs/rules/RULES_RUST.md
docs/rules/RULES_KSP.md
docs/rules/FILE_CONTRACTS.md
docs/rules/VERSION_WORKFLOW.md
docs/rules/PROMPT_STRUCTURE.md
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
crates/ksp-onchain-transport-lib/src/
crates/ksp-onchain-transport-lib/unit_tests/
crates/ksp-onchain-transport-lib/tests/
Les deltas historiques ne sont pas réécrits.
5. Sources externes normatives
Au début de pre.001, réauditer :
https://solana.com/docs/rpc/http
https://solana.com/docs/rpc/json-structures
Recouper avec les sources primaires Agave stables actuelles lorsque la documentation publique ne détaille pas une option, un overload, une limite ou un champ wire.
Ne pas supposer que v4.2.1 est encore la référence au moment de l'ouverture de 0.2.4 : vérifier la génération Agave effectivement stable/recommandée ce jour-là.
6. Règle KSP-TRANSPORT-007
Pour chaque wrapper Blocks/Economics :
- couvrir tous les paramètres ordonnés ;
- couvrir tous les champs de config supportés ;
- conserver les overloads distincts ;
- conserver les formes legacy encore supportées, marquées deprecated si nécessaire ;
- appliquer avant I/O les contraintes déterministes connues lorsqu'elles n'exigent pas de décodage métier disproportionné ;
- préserver
null, omissions significatives, ordre et cardinalités ; - conserver losslessly les sous-arbres wire riches lorsque leur typage intégral créerait un couplage SDK inutile.
Une simplification volontaire n'est acceptable que si elle est explicitement justifiée et ne retire aucune capacité RPC.
7. Points sensibles Blocks
getBlock
Auditer en priorité :
- config moderne complète ;
- forme bare encoding legacy si elle est toujours supportée ;
- encodings actuels ;
- transactionDetails ;
- rewards ;
- commitment autorisé ;
- maxSupportedTransactionVersion ;
- résultat
null; - transaction/meta/version/rewards/blockTime/blockHeight/numRewardPartitions ;
- erreurs de version/non-disponibilité pertinentes.
La stratégie wire doit réutiliser les primitives Transaction de 0.2.3 lorsque pertinentes, sans copier solana-rpc-client.
getBlockCommitment
Préserver commitment nullable et totalStake.
getBlockHeight
Auditer config contextuelle et contraintes de commitment/minContextSlot.
getBlockProduction
Auditer identity, range firstSlot/lastSlot, commitment et forme contextualisée.
getBlocks
Vérifier les overloads actuels autour de start/end/config. Ne pas réduire la surface à la seule signature d'un client SDK.
getBlocksWithLimit
Auditer start slot, limit, config et limite runtime éventuelle.
getBlockTime
Préserver i64|null et les erreurs significatives.
getFirstAvailableBlock
Pas de config si le contrat courant reste sans paramètre.
getRecentPerformanceSamples
Auditer limite optionnelle/default/max et tous les champs de sample.
minimumLedgerSlot
Pas de config si le contrat courant reste sans paramètre ; préserver les erreurs RPC runtime.
8. Points sensibles Economics
getInflationGovernor
Auditer commitment éventuel et tous les champs governor.
getInflationRate
Préserver total/validator/foundation/epoch.
getInflationReward
Auditer :
- liste d'adresses et limite éventuelle ;
- epoch ;
- commitment ;
- minContextSlot ;
- ordre et
nullpositionnels ; - commission et extension runtime
commissionBpssi toujours supportée.
getStakeMinimumDelegation
Auditer config contextuelle et résultat contextualisé.
getSupply
Auditer commitment et excludeNonCirculatingAccountsList, puis total/circulating/nonCirculating/liste de comptes.
9. Architecture Transport
Conserver le flux unique :
wrapper typed
-> descriptor central
-> execute_standard_rpc
-> pool/admission
-> executor HTTP
-> validation JSON-RPC
-> decode typed
Interdits :
client HTTP parallèle
reqwest direct par wrapper
retry/deadline/admission bypass
Transport -> Config
Transport -> Store/Program
tracing direct
solana-rpc-client pour masquer les possibilités RPC
10. Réutilisation des wires
Réutiliser les contrats 0.2.1–0.2.3 lorsqu'ils représentent réellement le même wire :
SolanaCommitment/ configs contextuelles ;SolanaRpcContext/SolanaRpcResponse<T>;- Account encodings/types ;
- Transaction encodings/version/meta et
SolanaWireField<T>.
Ne pas dédupliquer artificiellement des contrats qui ont des sémantiques différentes.
11. Tests déterministes
Pour chaque wrapper :
- request JSON exacte ;
- omission/config vide ;
- toutes options et overloads significatifs ;
- encodings ;
- success typed ;
null/omitted ;- ordre/cardinalité ;
- erreurs RPC ;
- limites avant I/O pertinentes.
Conserver les canaries acquises :
52 current registry
14 historical
0.2.1 exact == 4
0.2.2 exact == 22
0.2.3 exact == 11
0.2.4 exact == 15
KSP-TRANSPORT-007 sur les 37 wrappers précédents
À la clôture 0.2.4, ajouter la preuve finale :
52/52 méthodes courantes couvertes par wrapper typed
14/14 historiques conservées pour compliance
12. Smokes live
Les smokes live restent opt-in et ne remplacent jamais les fixtures locales.
Le smoke Transport pur peut être étendu à quelques reads Blocks/Economics stables si cela apporte une vraie preuve sans dépendre d'un état Devnet fragile.
Éviter les écritures ou scénarios nécessitant des fonds/wallets dans la couche Transport seule.
Le smoke Config -> Transport reste transitoire et ne doit pas devenir la destination générale des scénarios cross-crates.
13. Dépendances
Ne pas ajouter une crate RPC/client Solana haut niveau.
Toute nouvelle dépendance doit :
- répondre à un besoin réel non couvert par les primitives existantes ;
- être déclarée sous
[workspace.dependencies]; - respecter le firewall Transport ;
- être justifiée dans le delta/plan.
14. Dernière prerelease et publication
La dernière prerelease de 0.2.4 doit :
- réauditer une dernière fois l'inventaire courant/deprecated ;
- figer la compliance 52/52 + 14/14 ;
- synchroniser README/USAGE et matrices ;
- exécuter les smokes pertinents ;
- auditer les graphes de dépendances ;
- préparer le prompt
0.2.5 — Wallet foundation; - laisser
CHANGELOG.mdàrel.001.
0.2.4-rel.001 doit rester strictement publicationnelle.
15. Validations
Pendant le développement :
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
À la clôture :
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test -p ksp-config-lib
cargo test -p ksp-core-lib
cargo test -p ksp-app-config-desk
cargo test --workspace
cargo tree -p ksp-onchain-transport-lib
cargo tree -p ksp-onchain-transport-lib -d
cargo tree -p ksp-onchain-transport-lib -e features
cargo tree -p ksp-onchain-transport-lib -e normal
cargo tree -p ksp-config-lib
cargo tree -p ksp-config-lib -d
cargo tree -p ksp-config-lib -e features
cargo tree -p ksp-config-lib -e normal
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
Ne jamais déclarer une commande réussie sans preuve opérateur ou exécution réelle.