Files
khadhroony-solana-project/deltas/0.2.1/rel.001.md
2026-08-17 22:50:56 +02:00

162 lines
5.3 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/rel.001.md -->
<!-- version: 1 -->
# Delta `v0.2.1-rel.001`
## Base
Base attendue :
```text
v0.2.1-pre.007
```
`pre.007` 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-config-lib` ;
- `cargo test -p ksp-core-lib` ;
- `cargo test -p ksp-app-config-desk` ;
- `cargo test --workspace` ;
- les graphes `cargo tree`, `cargo tree -d`, `cargo tree -e features` et `cargo tree -e normal` pour Transport et Config ;
- le smoke Devnet opt-in `cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture`, avec `1 passed; 0 failed`.
Version Cargo cible :
```text
0.2.1
```
## Objectif
Publier `0.2.1 — HTTP Solana foundation` sans ajouter de capacité fonctionnelle après la candidate `pre.007`.
`rel.001` est strictement publicationnelle :
- passage du workspace à la version stable `0.2.1` ;
- clôture `[X]` de `0.2.1` dans le ROADMAP ;
- ajout de l'entrée stable `0.2.1` au CHANGELOG ;
- clôture du plan HTTP et de sa matrice de validation avec les preuves opérateur ;
- synchronisation des index/plans généraux ;
- conservation explicite du TODO d'ownership du smoke cross-crates.
Aucun fichier Rust de production, aucune API publique, aucune configuration runtime, aucune dépendance et aucune feature Cargo ne changent dans cette livraison.
## Surface stable publiée
`0.2.1` stabilise `ksp-onchain-transport-lib` avec :
```text
JSON-RPC 2.0 sur HTTP POST
52 méthodes HTTP courantes auditées
14 méthodes historiques Deprecated / Removed
4 wrappers typés : getBalance/getGenesisHash/getHealth/getVersion
partition typed restante : 22 / 11 / 15 sur 0.2.20.2.4
pool rôles/capabilities/priorités/fairness
RPS/burst/concurrence/cooldown
deadline commune + timeout/retry/backoff
no-resend après dispatch ambigu
429/Retry-After + statuts temporaires
std.transport + schema + example
adapter ksp-config-lib -> ksp-onchain-transport-lib
redaction URL/provider credentials
neutralisation des URLs contenues dans reqwest::Error
sink Logging Transport dédié à info
fixtures HTTP déterministes
canaries de complétude
smoke Devnet opt-in
README/USAGE Transport
```
La surface raw/générique reste distincte de la couverture typée : elle ne vaut pas implémentation des 48 wrappers reportés.
## Validation de la candidate
Les tests de `pre.007` ont confirmé notamment :
```text
Transport : 70 unit + 8 public API + 2 release completeness = 80
Config : 95 unit + 5 ownership + 13 public API + 1 smoke ignored = 114
Core : tests unit/public/workspace canaries propres
Config Desk : tests unit/desktop/public propres
workspace : propre, hors probes explicitement ignored
```
Le smoke Devnet a ensuite été lancé explicitement et a atteint les quatre canaris foundation via le profil `devnet_public` committé.
Les graphes Cargo confirment la frontière voulue :
```text
ksp-config-lib -> ksp-onchain-transport-lib
ksp-onchain-transport-lib -X-> ksp-config-lib
Transport -X-> Store/Program/tracing direct
```
Les features directes restent activées localement dans les crates consommatrices. Les doublons observés par `cargo tree -d` sur les graphes inspectés se limitent à `syn` 2.x/3.x dans les chaînes transitive/proc-macro ; aucune stack HTTP/Tokio KSP concurrente n'est introduite.
## TODO ownership des smoke tests cross-crates
Le fichier actuel :
```text
crates/ksp-config-lib/tests/transport_devnet_smoke.rs
```
reste temporairement sous Config parce que la direction de dépendance existante permet d'y composer Config -> Transport sans violer le firewall Transport -> Config.
Cette localisation est une **exception transitoire** et ne devient jamais une convention KSP :
- `ksp-config-lib` ne doit pas devenir la destination générale des smoke tests ;
- cela inclut explicitement les futurs scénarios `Config + autre crate` ;
- les tests déterministes de mapping/validation Config restent dans Config ;
- un smoke autonome d'une crate peut rester dans cette crate s'il n'exige pas de composition interdite ;
- les smokes cross-crates doivent appartenir à une future surface dédiée d'intégration/orchestration/demo ;
- le smoke `Config -> Transport -> Devnet` devra migrer vers cette surface lorsqu'elle existera.
## Documentation de clôture
Mises à jour :
```text
CHANGELOG.md
docs/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
ROADMAP.md
```
Le prompt de reprise `prompts/007-V0_2_2_START_PROMPT.md` était déjà livré en `pre.007` et reste inchangé ; il attend comme base le tag stable `v0.2.1`.
## Commit et tag
Identifiant de commit attendu :
```text
v0.2.1-rel.001
```
Le tag stable ne doit être créé qu'après application et validation de ce delta :
```text
v0.2.1
```
Le tag porte uniquement la publication stable ; aucun tag prerelease/fix n'est requis.
## Validation finale après application
Comme `rel.001` ne modifie aucun code de production et ne change que la version workspace et la documentation, la gate finale reste :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test --workspace
```
Après succès : commit `v0.2.1-rel.001`, puis création du tag `v0.2.1`.