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

382 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- file: prompts/009-V0_2_4_START_PROMPT.md -->
<!-- version: 1 -->
# Prompt de démarrage `0.2.4` — HTTP Blocks + Economics + compliance HTTP finale
## 1. Contexte de reprise
La base attendue est la release stable :
```text
v0.2.3
```
La surface HTTP acquise doit être :
```text
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 :
```text
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
```text
getBlock
getBlockCommitment
getBlockHeight
getBlockProduction
getBlocks
getBlocksWithLimit
getBlockTime
getFirstAvailableBlock
getRecentPerformanceSamples
minimumLedgerSlot
```
### Economics — 5
```text
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** :
```text
52 current
14 historical Deprecated / Removed
52 wrappers typed courants
```
## 3. Gate de sizing obligatoire
Répondre explicitement à `pre.001` :
```text
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 :
```text
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 :
```text
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 :
```text
wrapper typed
-> descriptor central
-> execute_standard_rpc
-> pool/admission
-> executor HTTP
-> validation JSON-RPC
-> decode typed
```
Interdits :
```text
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 :
```text
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 :
```text
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 :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
```
À la clôture :
```bash
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.