152 lines
5.9 KiB
Markdown
152 lines
5.9 KiB
Markdown
<!-- file: deltas/0.2.1/pre.001.md -->
|
||
<!-- version: 1 -->
|
||
|
||
# Delta `0.2.1-pre.001` — audit HTTP, matrice exhaustive, architecture et sizing
|
||
|
||
## Base requise
|
||
|
||
Release stable attendue :
|
||
|
||
```text
|
||
v0.2.0
|
||
```
|
||
|
||
L'archive KSP fournie porte `workspace.package.version = "0.2.0"` et contient les quatre crates N1 attendues. Elle ne contient pas `.git`; le tag `v0.2.0` n'est donc pas revérifiable localement depuis le zip.
|
||
|
||
Archive historique auditée :
|
||
|
||
```text
|
||
khadhroony-bot3_v0.5.3-pre.005-fix010.zip
|
||
workspace.package.version = "0.5.3-pre.5"
|
||
```
|
||
|
||
## Objectif
|
||
|
||
Exécuter la première tranche obligatoire d'audit/conception de `0.2.1` sans grosse implémentation : relecture KSP, audit détaillé du transport bot3, inventaire officiel Solana HTTP actuel, matrice exhaustive, décisions d'architecture et gate de sizing.
|
||
|
||
## Version Cargo
|
||
|
||
Conformément à `VER-ID-009`, la prerelease non-fix synchronise le signal technique :
|
||
|
||
```text
|
||
0.2.0 -> 0.2.1-pre.1
|
||
```
|
||
|
||
Aucune crate, source Rust ou dépendance n'est ajoutée dans cette tranche.
|
||
|
||
## Résultats principaux
|
||
|
||
- index HTTP Solana courant audité : **52 méthodes** ;
|
||
- navigation Deprecated officielle : **14 méthodes historiques** ;
|
||
- changelog Agave : endpoints RPC v1 obsolete/deprecated retirés en v2 ; les 14 pages sont donc conservées dans la matrice comme `Deprecated / runtime Removed`, pas comme wrappers callables ;
|
||
- aucune méthode HTTP courante marquée unstable/experimental trouvée dans l'audit du 2026-08-17 ; les marqueurs Unstable trouvés concernent WebSocket/PubSub ;
|
||
- `getBlock` et `getTransaction` sont des méthodes courantes stables mais leur deuxième paramètre legacy sous forme de bare encoding string est explicitement deprecated ;
|
||
- bot3 contient exactement les 52 noms courants, tous `TypedAdapter`, sans manque ni extra ; il n'intègre pas les 14 Deprecated au registre HTTP ;
|
||
- bot3 doit être refondu pour supprimer Transport -> Config, Transport -> `ks-lib` et `tracing` direct.
|
||
|
||
## Gate de sizing
|
||
|
||
Réponse pour le périmètre monolithique du prompt `006` :
|
||
|
||
```text
|
||
NON
|
||
```
|
||
|
||
Le scope est scindé immédiatement, sans masquer aucune méthode :
|
||
|
||
```text
|
||
0.2.1 foundation + registry exhaustif + pool/resilience/config + 4 canaris
|
||
0.2.2 Accounts + Tokens
|
||
0.2.3 Transactions
|
||
0.2.4 Blocks
|
||
0.2.5 Cluster
|
||
0.2.6 Economics + compliance finale HTTP
|
||
```
|
||
|
||
Wallet est décalé à `0.2.7`, Wallet Desk à `0.2.8`, puis les releases suivantes sont renumérotées.
|
||
|
||
Réponse pour la `0.2.1` réduite définie par le plan `008` :
|
||
|
||
```text
|
||
OUI, raisonnablement clôturable dans la session.
|
||
```
|
||
|
||
## Architecture décidée
|
||
|
||
- settings runtime publics possédés par Transport, utilisant notamment `Duration`;
|
||
- provider/cluster/role/request kind sous descriptors ouverts/newtypes ;
|
||
- URL encapsulée avec `Debug` redacted ;
|
||
- descriptor central séparant statut documentaire, statut runtime, statut de forme de requête, operation kind et retry class ;
|
||
- pool logique : priorité globale puis round-robin/fallback, avec endpoints disabled exclus ;
|
||
- RPS/burst/concurrence/cooldown par endpoint/rôle ;
|
||
- retry transport borné seulement pour opérations retry-safe ; `sendTransaction`/`requestAirdrop` ne sont jamais resend automatiquement après dispatch ambigu ;
|
||
- erreurs via l'unique `ksp_core_lib::Error` ;
|
||
- réponses Transport/wire, aucun modèle Store/Program/canonical ;
|
||
- Config standard IDs candidats `cfg.std.transport` / `schema.std.transport` et adapter Config -> Transport ;
|
||
- aucune nouvelle variable `.env.example` dans `pre.001`.
|
||
|
||
## Dépendances auditées
|
||
|
||
`reqwest` courant observé : `0.13.4`; Tokio courant observé : `1.53.1`. Le workspace possède déjà `serde`, `serde_json` et `tokio ^1.53`. `reqwest` sera ajouté seulement à `pre.002` après vérification exacte de ses features. `base64`/`bs58` sont différés jusqu'au premier besoin concret.
|
||
|
||
## Fichiers ajoutés
|
||
|
||
```text
|
||
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
|
||
deltas/0.2.1/pre.001.md
|
||
```
|
||
|
||
## Fichiers modifiés
|
||
|
||
```text
|
||
Cargo.toml
|
||
ROADMAP.md
|
||
docs/000-README.md
|
||
docs/plans/000-README.md
|
||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||
prompts/006-V0_2_1_START_PROMPT.md
|
||
```
|
||
|
||
## Fichiers supprimés
|
||
|
||
Aucun.
|
||
|
||
## Validations exécutées
|
||
|
||
- relecture des sources internes obligatoires et des contrats publics Core/Logging/Config ;
|
||
- inspection du workspace stable fourni ;
|
||
- inspection du transport/config bot3 fourni ;
|
||
- comparaison automatisée locale des 52 noms bot3 avec les 52 noms de l'index officiel audité : `missing = []`, `extra = []` ;
|
||
- consultation de la documentation officielle Solana HTTP et Deprecated ;
|
||
- consultation de JSON-RPC 2.0 ;
|
||
- consultation du changelog Agave pour le statut runtime des endpoints deprecated ; aucun POST JSON-RPC live vers un provider n’a été exécuté, les éventuelles divergences provider restent donc à documenter séparément ;
|
||
- vérification des versions actuelles candidates `reqwest`/`tokio` ;
|
||
- vérification de l'absence de `.git` dans l'archive KSP.
|
||
|
||
## Validations non exécutées
|
||
|
||
Le sandbox ne contient pas le binaire `cargo` (`cargo: command not found`). Les commandes suivantes n'ont donc pas été exécutées ici et doivent être rejouées sur le checkout de développement avant commit :
|
||
|
||
```bash
|
||
cargo fmt --all
|
||
cargo check --workspace
|
||
cargo clippy --workspace --all-targets
|
||
cargo test --workspace
|
||
```
|
||
|
||
Aucun `cargo tree` n'est pertinent avant ajout de la crate/dépendance ; les audits `cargo tree -p ksp-onchain-transport-lib ...` deviennent obligatoires dès `pre.002`.
|
||
|
||
L'archive source ne contient pas `.git`; le commit attendu après application/validation suit `VER-GIT-001` :
|
||
|
||
```text
|
||
v0.2.1-pre.001
|
||
```
|
||
|
||
## Questions ouvertes
|
||
|
||
Aucune question bloquante pour ouvrir `pre.002`. Les détails de nommage Rust peuvent encore être ajustés si une contrainte concrète apparaît, sans modifier l'ownership et les invariants fixés par le plan.
|
||
|
||
## Suite
|
||
|
||
`0.2.1-pre.002` : créer la crate, fixer les settings/validation, JSON-RPC, descriptors/status, erreurs et base Logging sur le périmètre réduit.
|