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