Files
khadhroony-solana-project/deltas/0.2.1/pre.007.md
2026-08-17 22:43:07 +02:00

311 lines
9.6 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.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`.