v0.2.1-pre.007

This commit is contained in:
2026-08-17 22:43:07 +02:00
parent e0a7ac0bf8
commit 79b67f8eae
20 changed files with 1379 additions and 42 deletions

310
deltas/0.2.1/pre.007.md Normal file
View File

@@ -0,0 +1,310 @@
<!-- file: deltas/0.2.1/pre.007.md -->
<!-- version: 1 -->
# Delta `v0.2.1-pre.007`
## Base
Base attendue :
```text
v0.2.1-pre.006-fix.002
```
Cette base a été validée localement par l'opérateur le 2026-08-17 avec :
- `cargo fmt --all` ;
- `cargo check --workspace` ;
- `cargo clippy --workspace --all-targets` ;
- `cargo test -p ksp-onchain-transport-lib` ;
- `cargo test -p ksp-app-config-desk` ;
- `cargo test -p ksp-config-lib` ;
- `cargo test -p ksp-core-lib` ;
- `cargo test --workspace`.
Le test Transport renforcé contre la fuite d'URL dans les sources `reqwest::Error` passe également sur cette base.
Version Cargo cible :
```text
0.2.1-pre.7
```
## Objectif
Fermer la dernière prerelease fonctionnelle de `0.2.1` sans rouvrir le périmètre HTTP :
- revérifier la matrice officielle Solana ;
- figer la complétude `52 + 14` et la partition `4 / 22 / 11 / 15` par des canaries publiques ;
- fournir un smoke Devnet opt-in de bout en bout Config -> Transport ;
- produire le README et le guide d'utilisation durables de Transport ;
- remettre la baseline Logging Transport à `info` avant stable ;
- absorber les écarts documentaires réservés par l'audit complet de `pre.006-fix.002` ;
- produire la matrice de validation finale et le prompt de démarrage `0.2.2` ;
- préparer un `rel.001` strictement publicationnel.
Aucune cinquième méthode HTTP typée n'est ajoutée dans cette tranche.
## Revérification officielle HTTP Solana
La documentation officielle Solana a été revérifiée le 2026-08-17 :
```text
https://solana.com/docs/rpc/http
https://solana.com/docs/rpc/deprecated/confirmtransaction
```
Le résultat reste compatible avec la matrice acquise :
```text
52 méthodes HTTP courantes
14 méthodes historiques Deprecated
```
L'index courant confirme également le transport JSON-RPC 2.0 sur HTTP `POST` avec `Content-Type: application/json`.
Les 14 méthodes historiques restent représentées dans KSP comme `Deprecated / Removed / Historical` et ne sont pas simulées comme appelables.
## Canaries de complétude de release
Nouveau test public :
```text
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
```
Il fige depuis l'API publique :
```text
current == 52
historical == 14
coverage == 4 / 22 / 11 / 15
V0_2_1 == getBalance/getGenesisHash/getHealth/getVersion
historical => Deprecated + Removed + Historical + NotApplicable
```
La candidate déclare désormais **80 tests Transport**.
La surface raw/générique `execute_standard_rpc()` reste disponible mais ne compte pas comme couverture typée des 48 méthodes reportées à `0.2.2``0.2.4`.
## Smoke Devnet opt-in Config -> Transport
Nouveau test :
```text
crates/ksp-config-lib/tests/transport_devnet_smoke.rs
```
Il est volontairement :
```rust
#[ignore = "opt-in live Solana Devnet smoke; performs external network requests"]
```
Le chemin validé est :
```text
ConfigFileRegistry::defaults()
-> cfg.std.transport
-> profile devnet_public
-> ConfigEnvironment
-> ResolvedTransportConfig
-> HttpTransportSettings
-> HttpTransportPool
-> getHealth
-> getGenesisHash
-> getVersion
-> getBalance(System Program)
```
Transport ne lit donc toujours pas directement l'environnement.
Le test Config nécessite Tokio uniquement comme dev-dependency local :
```toml
[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt"] }
```
La candidate déclare **114 tests Config**, dont cet unique smoke Devnet `ignored`.
Exécution opt-in :
```bash
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
```
Un incident ou rate-limit du RPC public Devnet reste un signal externe à analyser ; les gates reproductibles restent les tests déterministes par défaut.
## Logging Transport avant stable
Le sink dédié introduit pendant le développement est conservé, mais sa baseline revient de `debug` à `info` conformément à la politique de clôture :
```text
output_id : file.onchain_transport.info
path : transport/onchain/ksp-onchain-transport.log
target : ksp-onchain-transport-lib
level : info
```
La console et le fichier général restent à `info`. Un niveau `debug`/`trace` ciblé peut être réactivé temporairement via Config lors d'un futur développement, puis doit être refermé avant publication stable.
## Documentation durable Transport
Nouveaux documents :
```text
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
```
Ils documentent :
- responsabilités et firewall de dépendances ;
- registre `52 current + 14 historical` ;
- différence raw/générique vs couverture typée ;
- quatre canaris `0.2.1` ;
- pool/routing/admission/résilience ;
- retry/no-resend ;
- sécurité des URLs et sources `reqwest` ;
- target Logging explicite ;
- construction directe ou via Config ;
- snapshots et smoke Devnet opt-in.
## Normalisation documentaire issue de l'audit complet
Les écarts purement documentaires réservés par `pre.006-fix.002` sont absorbés ici :
- `FILE-GEN-003` décrit désormais `bindings/` et `gen/` comme artefacts générés/reconstructibles ignorés par défaut, et non comme convention encore future ;
- `crates/ksp-config-lib/README.md` ne présente plus `ksp-app-config-desk` comme future ;
- l'inventaire des composants décrit `0.2.1` comme foundation HTTP + registre `52+14` + quatre wrappers canari, et non comme surface typed HTTP complète ;
- les index docs/plans/validation/prompts sont synchronisés avec les nouveaux livrables ;
- le ROADMAP conserve uniquement l'état synthétique de la candidate et reste `[/]` jusqu'à la publication stable.
Les prompts et deltas historiques consommés restent immuables même lorsqu'ils décrivent l'état de leur époque.
## Matrice de validation finale
Nouveau document :
```text
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
```
Il regroupe les critères de clôture, les preuves acquises, les commandes Cargo/cargo-tree attendues et les conditions de passage à `rel.001`.
## Prompt de reprise `0.2.2`
Nouveau prompt :
```text
prompts/007-V0_2_2_START_PROMPT.md
```
Il ouvre `0.2.2 — HTTP Accounts + Tokens + Cluster` par un nouveau `pre.001` d'audit/brainstorming/sizing et conserve la partition nominale actuelle de 22 méthodes :
```text
Accounts : 5
Tokens : 5
Cluster : 12
```
Il exige une revérification officielle du jour avant toute implémentation lourde et rappelle que l'appel raw ne vaut jamais couverture typée.
## Préparation de `rel.001`
`CHANGELOG.md` n'est volontairement pas modifié dans cette prerelease. Si la candidate passe les validations opérateur, `rel.001` doit rester minimal :
```text
workspace.package.version -> 0.2.1
ROADMAP : 0.2.1 -> [X]
CHANGELOG : synthèse stable 0.2.1
plan 008 / validation 003 : statut clôturé + preuves opérateur
deltas/0.2.1/rel.001.md
commit v0.2.1-rel.001
tag v0.2.1
```
Aucune nouvelle fonctionnalité HTTP ne doit être introduite dans `rel.001`.
## Fichiers ajoutés
```text
crates/ksp-config-lib/tests/transport_devnet_smoke.rs
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
crates/ksp-onchain-transport-lib/tests/release_completeness.rs
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
prompts/007-V0_2_2_START_PROMPT.md
deltas/0.2.1/pre.007.md
```
## Fichiers modifiés
```text
Cargo.toml
ROADMAP.md
config/std.logging.json
crates/ksp-config-lib/Cargo.toml
crates/ksp-config-lib/README.md
docs/000-README.md
docs/architecture/004-COMPONENT_INVENTORY.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/rules/FILE_CONTRACTS.md
docs/validation/000-README.md
prompts/000-README.md
```
Aucun ancien delta et aucun `CHANGELOG.md` ne sont modifiés.
## Validation statique de génération
Effectuée dans le sandbox :
- comparaison différentielle avec `pre.006-fix.002` ;
- parsing de tous les TOML et JSON du workspace ;
- validation Draft 2020-12 de `std.logging.json`, `std.transport.json` et de l'exemple Transport contre leurs schemas ;
- contrôle des headers et incréments de version des fichiers modifiés ;
- contrôle de l'unique fin de ligne des fichiers livrés ;
- contrôle des lignes Rust/TOML <= 160 colonnes ;
- contrôle des fences Markdown et des liens Markdown relatifs des fichiers modifiés ;
- confirmation que les anciens deltas sont byte-for-byte inchangés ;
- contrôle de la baseline Logging Transport `info` ;
- comptage statique de 80 tests Transport et 114 tests Config, dont un smoke Config `ignored` ;
- contrôle des tableaux de registre Rust `[52]` et `[14]`.
Non exécutées dans le sandbox : `cargo`, `rustc` et `rustfmt` n'y sont pas disponibles. Aucune réussite Cargo de `pre.007` n'est donc déclarée avant validation opérateur.
## Validation requise après application
```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
```
Puis, de manière opt-in :
```bash
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
```
Les `cargo tree` Config sont requis car `pre.007` ajoute un dev-dependency Tokio local au smoke live. Si les validations déterministes et les audits de graphe sont propres, la tranche suivante est `0.2.1-rel.001`.