163 lines
4.8 KiB
Markdown
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.
|