0.2.1-pre.1

This commit is contained in:
2026-08-17 17:20:41 +02:00
parent 24cf2c5a11
commit 624202c363
8 changed files with 1225 additions and 102 deletions

151
deltas/0.2.1/pre.001.md Normal file
View File

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