Files
khadhroony-solana-project/deltas/0.2.1/pre.001.md
2026-08-17 17:20:41 +02:00

152 lines
5.9 KiB
Markdown
Raw 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: 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 na é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.