v0.2.3-pre.009
This commit is contained in:
@@ -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`.
|
||||
|
||||
381
prompts/009-V0_2_4_START_PROMPT.md
Normal file
381
prompts/009-V0_2_4_START_PROMPT.md
Normal 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 15–20 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.
|
||||
Reference in New Issue
Block a user