v0.2.3-pre.009

This commit is contained in:
2026-08-18 17:33:46 +02:00
parent c9a0f7fd37
commit 039b93cfb3
15 changed files with 1020 additions and 67 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: prompts/000-README.md -->
<!-- version: 12 -->
<!-- version: 13 -->
# Prompts KSP
@@ -29,3 +29,4 @@ Le prompt générique `0.1.x` a été affiné pendant `0.0.3` puis remplacé par
- [`006-V0_2_1_START_PROMPT.md`](006-V0_2_1_START_PROMPT.md) — prompt finalisé par `0.2.0-pre.003`, destiné à ouvrir `0.2.1 — ksp-onchain-transport-lib / HTTP Solana foundation` après publication stable de `0.2.0`; il impose l'audit exhaustif des surfaces HTTP courantes et deprecated/unstable officiellement documentées, la séparation Config/Transport, les pools/rôles et le gate de sizing « une release = une session » ;
- [`007-V0_2_2_START_PROMPT.md`](007-V0_2_2_START_PROMPT.md) — prompt préparé par la dernière prerelease de `0.2.1`, destiné à ouvrir `0.2.2 — HTTP Accounts + Tokens + Cluster` après publication stable de `0.2.1`; il cible les 22 wrappers typés restants de ces familles et impose un nouvel audit officiel/gate de sizing à `pre.001`.
- [`008-V0_2_3_START_PROMPT.md`](008-V0_2_3_START_PROMPT.md) — prompt préparé par la dernière prerelease de `0.2.2`, destiné à ouvrir `0.2.3 — HTTP Transactions` après publication stable de `0.2.2`; il cible les 11 méthodes Transactions et impose un audit actuel ainsi que la politique no-resend des write submissions.
- [`009-V0_2_4_START_PROMPT.md`](009-V0_2_4_START_PROMPT.md) — prompt préparé par `0.2.3-pre.009`, destiné à ouvrir `0.2.4 — HTTP Blocks + Economics + compliance HTTP finale` après publication stable de `0.2.3`; il cible les 15 wrappers restants et impose `KSP-TRANSPORT-007` ainsi qu'un nouvel audit/sizing à `pre.001`.

View File

@@ -0,0 +1,381 @@
<!-- 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.