v0.2.2-pre.007
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/000-README.md -->
|
||||
<!-- version: 4 -->
|
||||
<!-- version: 5 -->
|
||||
|
||||
# Validations KSP
|
||||
|
||||
@@ -12,3 +12,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.
|
||||
- [`004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md`](004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md) — matrice de clôture candidate de `0.2.2`, 22 wrappers Accounts/Tokens/Cluster, canaries 52+14, smoke Devnet Transport pur et préparation de `0.2.3`.
|
||||
|
||||
247
docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md
Normal file
247
docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md
Normal file
@@ -0,0 +1,247 @@
|
||||
<!-- file: docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Validation finale `0.2.2` — HTTP Accounts + Tokens + Cluster
|
||||
|
||||
## Statut
|
||||
|
||||
Cette matrice accompagne la candidate `0.2.2-pre.007`. Elle ne publie pas encore la release stable : les preuves opérateur finales doivent être enregistrées avant `0.2.2-rel.001`.
|
||||
|
||||
Base fonctionnelle validée avant `pre.007` :
|
||||
|
||||
```text
|
||||
v0.2.2-pre.006-fix.001
|
||||
```
|
||||
|
||||
L'opérateur a validé cette base le 2026-08-18 avec :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
cargo test -p ksp-onchain-transport-lib
|
||||
```
|
||||
|
||||
Résultats Transport communiqués :
|
||||
|
||||
```text
|
||||
127 unit tests passed
|
||||
13 public API tests passed
|
||||
6 release completeness passed
|
||||
0 warning clippy signalé
|
||||
```
|
||||
|
||||
## Réaudit officiel final
|
||||
|
||||
Le 2026-08-18, l'index officiel courant a été revérifié :
|
||||
|
||||
```text
|
||||
https://solana.com/docs/rpc/http
|
||||
https://solana.com/docs/rpc/deprecated/confirmtransaction
|
||||
```
|
||||
|
||||
La matrice reste :
|
||||
|
||||
```text
|
||||
52 méthodes HTTP courantes
|
||||
14 méthodes historiques Deprecated
|
||||
```
|
||||
|
||||
Répartition courante utile à cette release :
|
||||
|
||||
```text
|
||||
Accounts : 6 = getBalance acquis en 0.2.1 + 5 en 0.2.2
|
||||
Tokens : 5 = 5 en 0.2.2
|
||||
Cluster : 15 = getGenesisHash/getHealth/getVersion acquis en 0.2.1 + 12 en 0.2.2
|
||||
```
|
||||
|
||||
Aucune méthode `0.2.2` n'est reclassée Deprecated/Unstable. Les 22 descriptors restent `Stable / Supported / Read / RetrySafe`.
|
||||
|
||||
## Surface typée candidate
|
||||
|
||||
`0.2.2` ajoute exactement :
|
||||
|
||||
```text
|
||||
Accounts : 5
|
||||
Tokens : 5
|
||||
Cluster : 12
|
||||
Total : 22
|
||||
```
|
||||
|
||||
Avec les quatre canaris de `0.2.1`, Transport expose donc 26 wrappers typed à la candidate.
|
||||
|
||||
Les partitions futures restent intactes :
|
||||
|
||||
```text
|
||||
0.2.3 Transactions : 11
|
||||
0.2.4 Blocks + Economics : 15
|
||||
```
|
||||
|
||||
L'API raw `execute_standard_rpc()` reste disponible mais ne compte pas comme couverture typed d'une méthode future.
|
||||
|
||||
## Contrats wire à préserver
|
||||
|
||||
La candidate doit conserver notamment :
|
||||
|
||||
- `Account.data` legacy / encoded / `jsonParsed` sans décodage Program ;
|
||||
- `Account.space: Option<u64>` ;
|
||||
- comptes absents sous `null` ;
|
||||
- `getProgramAccounts` bare vs contextualisé ;
|
||||
- `TokenAmount.amount` et `uiAmountString` comme chaînes exactes ;
|
||||
- `TokenAmount.uiAmount: Option<f64>` ;
|
||||
- selector Token exclusif `Mint | ProgramId` ;
|
||||
- `ClusterNode.clientId: Option<String>` ;
|
||||
- `EpochInfo.transactionCount: Option<u64>` ;
|
||||
- `SnapshotSlotInfo.incremental: Option<u64>` ;
|
||||
- `getLeaderSchedule -> Option<schedule>` ;
|
||||
- `VoteAccountInfo.inflationRewardsCommissionBps: Option<u16>` ;
|
||||
- triplets `epochCredits` sans interprétation métier.
|
||||
|
||||
Limites locales figées :
|
||||
|
||||
```text
|
||||
getMultipleAccounts <= 100
|
||||
getProgramAccounts <= 4 filtres
|
||||
memcmp raw <= 128 octets
|
||||
getSlotLeaders 1..=5000
|
||||
```
|
||||
|
||||
## Canaries de complétude
|
||||
|
||||
`tests/release_completeness.rs` protège :
|
||||
|
||||
```text
|
||||
current == 52
|
||||
historical == 14
|
||||
partition == 4 / 22 / 11 / 15
|
||||
0.2.1 exact == 4 canaris foundation
|
||||
0.2.2 exact == 22 Accounts/Tokens/Cluster
|
||||
0.2.3 count == 11 sans avancement typed prématuré
|
||||
0.2.4 count == 15 sans avancement typed prématuré
|
||||
historical => Deprecated + Removed + Historical + NotApplicable
|
||||
```
|
||||
|
||||
Après `pre.007`, la suite attendue est :
|
||||
|
||||
```text
|
||||
127 unit tests
|
||||
13 public API tests
|
||||
7 release completeness tests
|
||||
1 smoke Transport live ignored par défaut
|
||||
```
|
||||
|
||||
## Smoke Devnet Transport pur
|
||||
|
||||
Nouveau test :
|
||||
|
||||
```text
|
||||
crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs
|
||||
```
|
||||
|
||||
Il construit `HttpTransportSettings` programmatiquement, sans Config ni environnement :
|
||||
|
||||
```text
|
||||
https://api.devnet.solana.com
|
||||
-> getAccountInfo(System Program)
|
||||
-> getTokenSupply(mint de l'exemple Devnet officiel courant)
|
||||
-> getEpochInfo
|
||||
-> getVoteAccounts
|
||||
```
|
||||
|
||||
Exécution explicite :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Le test est `ignored` par défaut. Un incident réseau/rate-limit ou la disparition d'un état externe documenté doit être analysé séparément ; il ne remplace jamais les fixtures HTTP locales.
|
||||
|
||||
## Smoke de composition Config -> Transport
|
||||
|
||||
Le smoke historique `0.2.1` reste disponible :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Il valide `Config -> profil devnet_public -> Transport -> quatre canaris foundation`.
|
||||
|
||||
Ownership : ce smoke cross-crates est transitoire. `ksp-config-lib` ne doit pas devenir la destination générale des smokes `Config + autre crate`; il migrera vers une future surface d'intégration/orchestration/demo appropriée.
|
||||
|
||||
## Dépendances, sécurité et logging
|
||||
|
||||
La candidate ne doit introduire :
|
||||
|
||||
```text
|
||||
aucune dépendance externe nouvelle
|
||||
aucune dépendance Transport -> Config/Store/Program
|
||||
aucun tracing direct hors ksp-logging-lib
|
||||
aucun client HTTP parallèle
|
||||
```
|
||||
|
||||
Les invariants de sécurité `0.2.1` restent obligatoires : URL/provider credentials absents des diagnostics ordinaires, `reqwest::Error::without_url()` avant exposition comme source, aucune réponse/body massif journalisé par défaut.
|
||||
|
||||
La baseline Logging Transport reste `info` avant publication stable.
|
||||
|
||||
## Documentation candidate
|
||||
|
||||
Doivent être synchronisés :
|
||||
|
||||
```text
|
||||
crates/ksp-onchain-transport-lib/README.md
|
||||
crates/ksp-onchain-transport-lib/USAGE.md
|
||||
docs/architecture/004-COMPONENT_INVENTORY.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
|
||||
ROADMAP.md
|
||||
prompts/008-V0_2_3_START_PROMPT.md
|
||||
```
|
||||
|
||||
`CHANGELOG.md` reste volontairement inchangé avant `rel.001`.
|
||||
|
||||
## Validations finales opérateur à exécuter sur `pre.007`
|
||||
|
||||
```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 les deux smokes opt-in :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-onchain-transport-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
cargo test -p ksp-config-lib --test transport_devnet_smoke -- --ignored --nocapture
|
||||
```
|
||||
|
||||
Les résultats doivent être reportés dans `rel.001`; cette matrice ne les anticipe pas.
|
||||
|
||||
## Passage à `rel.001`
|
||||
|
||||
Si toutes les validations passent, `rel.001` doit rester strictement publicationnel :
|
||||
|
||||
```text
|
||||
workspace.package.version -> 0.2.2
|
||||
ROADMAP : 0.2.2 -> [X]
|
||||
CHANGELOG : synthèse stable 0.2.2
|
||||
plan 009 / validation 004 : statut clôturé + preuves opérateur
|
||||
deltas/0.2.2/rel.001.md
|
||||
commit v0.2.2-rel.001
|
||||
tag stable v0.2.2 après validation du commit
|
||||
```
|
||||
|
||||
Aucune nouvelle méthode HTTP, aucun nouveau DTO et aucun nouveau comportement runtime ne doivent apparaître dans `rel.001`.
|
||||
Reference in New Issue
Block a user