# Validation `0.2.1` — HTTP Solana foundation ## Objet Cette matrice synthétise les critères de clôture de `0.2.1 — ksp-onchain-transport-lib / HTTP Solana foundation` et les preuves opérateur ayant autorisé la publication stable `0.2.1-rel.001`. Elle ne remplace ni `docs/plans/008-V0_2_1_ONCHAIN_HTTP_PLAN.md` ni les deltas `0.2.1`. ## Base de clôture ```text base validée : 0.2.1-pre.6.fix.2 candidate finale : 0.2.1-pre.7 ``` La base `pre.006-fix.002` a été validée par l'opérateur le 2026-08-17 avec `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --workspace --all-targets`, les tests ciblés Transport/Config Desk/Config/Core et `cargo test --workspace`. ## Revérification officielle Solana Revérification de clôture effectuée le 2026-08-17. Index HTTP officiel : ```text https://solana.com/docs/rpc/http ``` L'index courant expose toujours **52 méthodes HTTP** et confirme JSON-RPC 2.0 sur HTTP `POST` avec `Content-Type: application/json`. La navigation officielle `Deprecated Methods`, visible depuis les pages deprecated telles que : ```text https://solana.com/docs/rpc/deprecated/confirmtransaction ``` expose toujours les **14 noms historiques** audités : ```text confirmTransaction getConfirmedBlock getConfirmedBlocks getConfirmedBlocksWithLimit getConfirmedSignaturesForAddress2 getConfirmedTransaction getFeeCalculatorForBlockhash getFeeRateGovernor getFees getRecentBlockhash getSignatureConfirmation getSignatureStatus getSnapshotSlot getStakeActivation ``` KSP les conserve comme `Deprecated / Removed / Historical`; `0.2.1` ne simule pas leur appelabilité runtime. ## Matrice de clôture | Critère | État stable `0.2.1` | Preuve / contrat | |------------------------------------------------------------|---------------------|-----------------------------------------------------------------------| | Crate `ksp-onchain-transport-lib` présente et indépendante | OK | manifest + canary Core `workspace_dependencies` | | Transport -X-> Config/Store/Program | OK | canary de firewall workspace | | Transport -X-> `tracing` direct | OK | ownership Logging + `ksp-logging-lib` | | Features Cargo activées localement par consumer | OK | canary workspace + manifests | | Target Logging explicite possédé par la crate | OK | `src/constants.rs` + canary `workspace_logging` | | URL endpoint redacted dans settings/snapshots/Debug | OK | tests settings/client/pool/public API | | `reqwest::Error` source sans URL sensible | OK | `without_url()` + canary timeout secret | | JSON-RPC 2.0 request/response/id/error | OK | tests `json_rpc` | | Registry HTTP courant | OK | 52 descriptors + canary de release | | Registry historique Deprecated | OK | 14 descriptors `Removed` + canary de release | | Partition typed future | OK | `4 / 22 / 11 / 15` pour `0.2.1`–`0.2.4` | | Quatre canaris typés exacts | OK | `getBalance`, `getGenesisHash`, `getHealth`, `getVersion` | | Pool rôles/capabilities/priorités/fairness | OK | tests pool | | RPS/burst/concurrence/cooldown | OK | tests resilience/pool | | Deadline/timeout/retry borné | OK | tests executor/resilience | | No-resend après dispatch ambigu | OK | descriptor + policy + tests | | 429/Retry-After et statuts temporaires | OK | tests executor | | Config standard Transport | OK | `std.transport.json` + schema + example | | Direction Config -> Transport | OK | adapter `load_resolved_transport_config` | | Sensibilité/provenance/env Transport | OK | tests Config | | Logging Transport dédié | OK | sink dédié `info` dans `std.logging.json` | | Tests réseau par défaut déterministes | OK | fixtures + serveur HTTP local | | Smoke Devnet | OPT-IN | `tests/transport_devnet_smoke.rs`, ignored par défaut | | README durable | OK | `crates/ksp-onchain-transport-lib/README.md` | | USAGE durable | OK | `crates/ksp-onchain-transport-lib/USAGE.md` | | Prompt release suivante | OK | `prompts/007-V0_2_2_START_PROMPT.md` | | Matrice HTTP globale préservée | OK | plan `008`; 48 méthodes restantes restent affectées à `0.2.2`–`0.2.4` | ## Canaries de complétude finales `pre.007` ajoute une intégration publique dédiée qui vérifie : ```text current == 52 historical == 14 coverage == 4 / 22 / 11 / 15 V0_2_1 == getBalance/getGenesisHash/getHealth/getVersion historical => Deprecated + Removed + NotApplicable ``` Ces checks complètent les tests unitaires existants du registre et protègent la frontière de release depuis l'API publique. La candidate validée déclare **80 tests Transport** et **114 tests Config**, dont le smoke Devnet Config unique marqué `ignored`. Cargo a confirmé ces surfaces sur le dépôt canonique avant `rel.001`. ## Smoke Devnet opt-in Le smoke live est temporairement hébergé dans `ksp-config-lib`, car la direction de dépendance actuelle permet d’y prouver la chaîne sans introduire Transport -> Config : ```text Config -> profile devnet_public -> HttpTransportSettings -> HttpTransportPool -> getHealth -> getGenesisHash -> getVersion -> getBalance(System Program) ``` Transport ne lit donc pas directement l'environnement. Exécution explicite : ```bash cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture ``` Ce test dépend d'un service Devnet externe. Il reste ignoré dans les suites déterministes et un incident/rate-limit du RPC public n'est pas assimilé à une régression locale sans analyse. Il a été exécuté explicitement avec succès avant `rel.001`. **TODO ownership :** `ksp-config-lib` ne doit jamais devenir la destination générale des smoke tests, y compris pour les futurs scénarios `Config + autre crate`. Dès qu'une surface KSP d'intégration/orchestration appropriée existe, ce smoke doit y migrer ; les futurs smokes cross-crates doivent être créés directement sur cette surface dédiée. ## Audit `cargo tree` final Les graphes ont été exécutés sur le dépôt canonique pour Transport et Config sous les formes normale, duplicates et features. Ils confirment : - aucune dépendance Config sous Transport ; - Config dépend de Transport dans le sens autorisé ; - aucune dépendance Store/Program ; - aucune dépendance `tracing` directe de Transport ; - `reqwest/rustls`, `serde/derive`, Tokio Transport et Tokio de test Config restent activés localement par les crates consommatrices ; - les doublons signalés par `cargo tree -d` sont limités à `syn` 2.x/3.x dans les graphes inspectés et proviennent des chaînes proc-macro/transitives, sans duplication d'une stack HTTP/Tokio KSP concurrente. ## Validations finales opérateur Validé le 2026-08-17 sur le dépôt canonique : ```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 ``` Le smoke live a ensuite été exécuté explicitement : ```bash cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture ``` Résultat : `1 passed; 0 failed`; les quatre canaris foundation sont donc atteints via le profil Devnet committé. ## Publication `rel.001` `0.2.1-rel.001` ne contient aucune nouvelle capacité HTTP. Il publie : ```text workspace.package.version -> 0.2.1 ROADMAP : 0.2.1 -> [X] CHANGELOG : synthèse stable 0.2.1 plan 008 / matrice 003 : statut clôturé et preuves opérateur delta deltas/0.2.1/rel.001.md commit v0.2.1-rel.001 tag stable v0.2.1 après validation du commit de release ```