v0.2.1-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/000-README.md -->
|
||||
<!-- version: 3 -->
|
||||
<!-- version: 4 -->
|
||||
|
||||
# Validations KSP
|
||||
|
||||
@@ -11,3 +11,4 @@ Documents :
|
||||
|
||||
- [`001-V0_1_4_CONFIG_DESKTOP.md`](001-V0_1_4_CONFIG_DESKTOP.md) — matrice finale de `0.1.4 — ksp-app-config-desk`.
|
||||
- [`002-V0_2_0_SERIES_PLANNING.md`](002-V0_2_0_SERIES_PLANNING.md) — matrice finale de la release stable `0.2.0`, avec audit de cohérence et preuves opérateur de `pre.003`.
|
||||
- [`003-V0_2_1_ONCHAIN_HTTP.md`](003-V0_2_1_ONCHAIN_HTTP.md) — matrice de clôture de `0.2.1 — HTTP Solana foundation`, registry 52+14, résilience, Config -> Transport, quatre canaris et smoke Devnet opt-in.
|
||||
|
||||
194
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
Normal file
194
docs/validation/003-V0_2_1_ONCHAIN_HTTP.md
Normal file
@@ -0,0 +1,194 @@
|
||||
<!-- file: docs/validation/003-V0_2_1_ONCHAIN_HTTP.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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`, les preuves acquises jusqu'à `pre.006-fix.002` et les validations finales attendues de `pre.007` avant publication `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 candidat `pre.007` | 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 déclare **80 tests Transport** et **114 tests Config**, dont le smoke Devnet Config unique marqué `ignored`. Ces nombres sont des canaries de clôture de la candidate et devront être confirmés par Cargo sur le dépôt canonique.
|
||||
|
||||
## Smoke Devnet opt-in
|
||||
|
||||
Le smoke live appartient à `ksp-config-lib`, car il doit prouver la chaîne :
|
||||
|
||||
```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.
|
||||
|
||||
## Audit `cargo tree` final attendu
|
||||
|
||||
À exécuter sur le dépôt canonique :
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
Points attendus :
|
||||
|
||||
- pas de Config sous Transport ;
|
||||
- Config dépend de Transport dans le sens autorisé ;
|
||||
- pas de Store/Program ;
|
||||
- pas de `tracing` direct chez Transport ;
|
||||
- `reqwest/rustls`, `serde/derive`, Tokio Transport et Tokio de test Config restent activés localement par les crates consommatrices.
|
||||
|
||||
## Validations finales de `pre.007`
|
||||
|
||||
Avant commit :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Puis, de manière opt-in :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Le smoke live est une preuve supplémentaire ; les suites déterministes restent la gate reproductible de publication.
|
||||
|
||||
## Préparation de `rel.001`
|
||||
|
||||
Si les validations de `pre.007` sont propres, `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 / matrice 003 : statut clôturé et preuves opérateur
|
||||
nouveau delta deltas/0.2.1/rel.001.md
|
||||
commit v0.2.1-rel.001
|
||||
tag v0.2.1
|
||||
```
|
||||
|
||||
Aucune nouvelle capacité HTTP ne doit être introduite dans `rel.001`.
|
||||
Reference in New Issue
Block a user