Files
khadhroony-solana-project/deltas/0.2.2/pre.007-fix.001.md

163 lines
4.8 KiB
Markdown

<!-- file: deltas/0.2.2/pre.007-fix.001.md -->
<!-- version: 1 -->
# Delta `v0.2.2-pre.007-fix.001`
## Base
Base attendue :
```text
v0.2.2-pre.007
```
Version Cargo de la base :
```text
0.2.2-pre.7
```
Ce fix modifie du Rust de test et synchronise donc le signal technique Cargo conformément à `VER-ID-007` / `VER-ID-010` :
```text
0.2.2-pre.7.fix.1
```
Le delta historique `deltas/0.2.2/pre.007.md` reste inchangé conformément à `KSP-REL-003` et `VER-DELTA-007`.
## Motif du fix
La validation opérateur du 2026-08-18 a révélé deux défauts du nouveau smoke Transport de `pre.007`.
### 1. Clippy `expect_used` hors corps de test
`cargo clippy --workspace --all-targets` échoue sur deux `expect()` placés dans le helper `devnet_pool()` :
```text
HttpEndpointUrl::parse(...).expect(...)
HttpTransportPool::new(...).expect(...)
```
Le workspace autorise les assertions/`expect` dans les corps de tests via sa configuration Clippy, mais le helper non annoté comme test reste soumis à `expect_used = deny`.
Correction : `devnet_pool()` retourne désormais `ksp_core_lib::Result<HttpTransportPool>` et propage explicitement l'erreur par `match`, sans `?`, `unwrap` ni `expect` dans le helper.
### 2. Fixture live Token trop fragile
L'exécution opt-in du smoke Transport a atteint Devnet mais `getTokenSupply` a renvoyé :
```text
onchain_transport.rpc_application_error
rpc_code = -32602
```
Le mint utilisé reste affiché par la documentation officielle courante, mais son état réel n'est donc pas une dépendance live suffisamment durable pour une gate de candidate KSP.
Correction : la branche Token du smoke utilise désormais :
```text
getTokenAccountsByOwner
owner = System Program (Pubkey valide et stable)
selector = programId
programId = SPL Token canonique (Tokenkeg...)
config = absent
```
Une liste vide est acceptable. Le test vérifie le contexte RPC et la traversée du wrapper Token sans dépendre de l'existence d'un mint ou d'un token account Devnet particulier.
La documentation officielle `getTokenAccountsByOwner` confirme que le selector accepte `programId` et que la méthode cible Devnet.
## Résultats opérateur de la base
Avant ce fix, l'opérateur a communiqué :
- `cargo fmt --all` : OK ;
- `cargo check --workspace` : OK ;
- `cargo clippy --workspace --all-targets` : **FAIL**, uniquement les deux `expect_used` ci-dessus ;
- `cargo test -p ksp-onchain-transport-lib` : 127 unit + 13 public API + 7 release completeness, OK ; smoke ignoré par défaut ;
- `cargo test -p ksp-config-lib` : OK ;
- `cargo test -p ksp-core-lib` : OK ;
- `cargo test -p ksp-app-config-desk` : OK ;
- `cargo test --workspace` : OK ;
- inspections `cargo tree` demandées : exécutées ;
- smoke Config -> Transport live : OK ;
- smoke Transport live : **FAIL** uniquement sur `getTokenSupply` avec RPC `-32602`.
Ces échecs empêchent `pre.007` de devenir la base de `rel.001` sans fix.
## Fichiers modifiés
```text
Cargo.toml
crates/ksp-onchain-transport-lib/tests/transport_devnet_smoke.rs
crates/ksp-onchain-transport-lib/README.md
crates/ksp-onchain-transport-lib/USAGE.md
docs/plans/009-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER_PLAN.md
docs/validation/004-V0_2_2_HTTP_ACCOUNTS_TOKENS_CLUSTER.md
```
## Fichier ajouté
```text
deltas/0.2.2/pre.007-fix.001.md
```
Aucun fichier supprimé.
## Inchangé
Ce fix ne modifie pas :
- les 22 wrappers `0.2.2` ;
- les DTOs publics ;
- les descriptors ou politiques retry ;
- Config ;
- les fixtures HTTP déterministes ;
- les canaries de complétude ;
- les dépendances/features Cargo ;
- `ROADMAP.md` ;
- `CHANGELOG.md` ;
- le prompt `0.2.3` ;
- le delta historique `pre.007.md`.
Le périmètre reste strictement la correction de la candidate `pre.007`.
## Validations exécutées pendant la préparation
Contrôles statiques exécutés :
- version Cargo `0.2.2-pre.7.fix.1` ;
- versions de tous les fichiers modifiés incrémentées ;
- aucun `expect()` dans `devnet_pool()` ;
- absence du mint d'exemple `3wyAj7...` dans le smoke corrigé ;
- présence de `getTokenAccountsByOwner` + selector `ProgramId` ;
- aucune dépendance/feature ajoutée ;
- payload du fix limité aux sept fichiers listés ;
- archive réextraite et comparée au payload préparé.
Cargo n'est pas disponible dans l'environnement de préparation.
## Validations opérateur à rejouer
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-onchain-transport-lib
cargo test --workspace
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
```
Résultat attendu :
```text
clippy propre
127 unit + 13 public API + 7 release completeness OK
smoke Transport live OK
smoke Config -> Transport live OK
```
Si ces gates passent, `0.2.2-rel.001` peut rester strictement publicationnel comme prévu.