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

4.8 KiB

Delta v0.2.2-pre.007-fix.001

Base

Base attendue :

v0.2.2-pre.007

Version Cargo de la base :

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 :

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() :

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é :

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 :

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

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é

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

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 :

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.