Files
khadhroony-solana-project/deltas/0.2.5/pre.004-fix.002.md

4.3 KiB

Delta 0.2.5-pre.004-fix.002 — faux positif du canari global Logging sur le canari Wallet

Base requise

livraison : 0.2.5-pre.004-fix.001
workspace.package.version = "0.2.5-pre.4.fix.1"

La base conserve les réorganisations opérateur déjà acquises dans crates/ksp-wallet-lib/src/constants.rs et crates/ksp-wallet-lib/src/lib.rs. Ce fix ne touche pas ces fichiers.

Motif

Les validations opérateur de pre.004-fix.001 donnent :

cargo fmt --all                        OK
cargo check --workspace                OK
cargo clippy --workspace --all-targets OK
cargo test -p ksp-wallet-lib           OK : 22 passés, 1 benchmark ignoré + intégration/API/doctests
cargo test --workspace                 ECHEC : 1 canari Logging

L'unique échec est :

ksp-logging-lib/tests/ownership.rs
workspace_crates_do_not_bypass_ksp_logging_facade

crates/ksp-wallet-lib/tests/dependency_boundary.rs bypasses ksp-logging-lib via tracing

Le canari global Logging scanne tous les fichiers Rust des crates, tests compris, à la recherche d'un chemin direct tracing::.

Le canari Wallet contenait lui-même ce motif littéral afin de vérifier son absence dans crates/ksp-wallet-lib/src/** :

assert!(!all_source.contains("tracing::"));

Le canari global détectait donc la chaîne de test elle-même. Il s'agit d'un faux positif de composition entre deux canaris corrects pris isolément, et non d'une dépendance ou d'un appel direct à tracing dans le code Wallet.

Correction

Le canari Wallet conserve exactement la même vérification mais construit le motif interdit à l'exécution :

let direct_tracing_path = ["tracing", "::"].concat();
assert!(!all_source.contains(direct_tracing_path.as_str()));

Le fichier source du test ne contient ainsi plus le token contigu recherché par le canari global, tandis que le contrôle Wallet continue de détecter toute apparition réelle de ce chemin dans src/**.

Le correctif ne :

  • retire aucun canari ;
  • n'ajoute aucun #[allow] ;
  • ne modifie pas ksp-logging-lib ;
  • ne modifie aucune API Wallet ;
  • ne modifie aucune primitive crypto, aucun wire .kspwallet, aucun paramètre Argon2 et aucun vecteur.

Benchmark Argon2 enregistré

Le benchmark opérateur de pre.004-fix.001, exécuté après les validations Wallet, donne :

memory_kib=65536   iterations=3 parallelism=1 elapsed_ms=1742
memory_kib=131072  iterations=3 parallelism=1 elapsed_ms=3459
memory_kib=262144  iterations=3 parallelism=1 elapsed_ms=6925

Ces mesures sont enregistrées comme entrée du gate pre.005. Elles ne figent pas le profil de création dans ce fix.

Version Cargo

Le correctif modifie un test Rust participant au build :

0.2.5-pre.4.fix.1 -> 0.2.5-pre.4.fix.2

Fichiers modifiés

Cargo.toml
crates/ksp-wallet-lib/tests/dependency_boundary.rs

Fichiers ajoutés

deltas/0.2.5/pre.004-fix.002.md

Fichiers supprimés

Aucun.

Fichiers volontairement inchangés

crates/ksp-wallet-lib/src/**
crates/ksp-wallet-lib/Cargo.toml
deltas/0.2.5/pre.004.md
deltas/0.2.5/pre.004-fix.001.md
docs/**
ROADMAP.md
CHANGELOG.md

Validation attendue après application

cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-wallet-lib
cargo test --workspace

Le test de régression déterminant pour ce fix est :

cargo test -p ksp-logging-lib --test ownership

Il doit confirmer simultanément :

dependency_scanner_distinguishes_tauri_plugin_tracing_from_tracing    OK
workspace_crates_do_not_bypass_ksp_logging_facade                    OK

Décisions

  • conserver le canari Wallet interdisant le chemin direct vers tracing ;
  • ne pas affaiblir le canari global Logging ;
  • éliminer uniquement la représentation littérale auto-détectée dans le test Wallet ;
  • ne pas modifier le périmètre fonctionnel de pre.004 ;
  • reporter la décision sur le profil Argon2 de création à pre.005, à partir des mesures opérateur déjà obtenues.

Questions ouvertes

Aucune nouvelle question fonctionnelle introduite par ce correctif.

Le profil Argon2 de création reste la décision d'ouverture de pre.005.

Commit attendu

v0.2.5-pre.004-fix.002