Files
khadhroony-solana-project/prompts/009-V0_2_4_START_PROMPT.md
2026-08-18 17:33:46 +02:00

10 KiB
Raw Blame History

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 1520 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 null positionnels ;
  • commission et extension runtime commissionBps si 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.10.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.