v0.2.5-pre.004-fix.002
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 149
|
||||
# version: 150
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.2.5-pre.4.fix.1"
|
||||
version = "0.2.5-pre.4.fix.2"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-wallet-lib/tests/dependency_boundary.rs
|
||||
// version: 5
|
||||
// version: 6
|
||||
|
||||
//! Wallet-specific dependency and ownership canaries.
|
||||
|
||||
@@ -81,6 +81,7 @@ fn wallet_sources_use_core_pubkey_logging_facade_and_no_environment() -> std::io
|
||||
assert!(all_source.contains("pub(crate) const TRACING_TARGET: &str = \"ksp-wallet-lib\";"));
|
||||
assert!(!all_source.contains("solana_pubkey::"));
|
||||
assert!(!all_source.contains("std::env::"));
|
||||
assert!(!all_source.contains("tracing::"));
|
||||
let direct_tracing_path = ["tracing", "::"].concat();
|
||||
assert!(!all_source.contains(direct_tracing_path.as_str()));
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
|
||||
155
deltas/0.2.5/pre.004-fix.002.md
Normal file
155
deltas/0.2.5/pre.004-fix.002.md
Normal file
@@ -0,0 +1,155 @@
|
||||
<!-- file: deltas/0.2.5/pre.004-fix.002.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.5-pre.004-fix.002` — faux positif du canari global Logging sur le canari Wallet
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
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/**` :
|
||||
|
||||
```rust
|
||||
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 :
|
||||
|
||||
```rust
|
||||
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 :
|
||||
|
||||
```text
|
||||
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 :
|
||||
|
||||
```text
|
||||
0.2.5-pre.4.fix.1 -> 0.2.5-pre.4.fix.2
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-wallet-lib/tests/dependency_boundary.rs
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.2.5/pre.004-fix.002.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
Aucun.
|
||||
|
||||
## Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```bash
|
||||
cargo test -p ksp-logging-lib --test ownership
|
||||
```
|
||||
|
||||
Il doit confirmer simultanément :
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
v0.2.5-pre.004-fix.002
|
||||
```
|
||||
Reference in New Issue
Block a user