v0.2.6-pre.013-fix.002
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
# file: Cargo.toml
|
# file: Cargo.toml
|
||||||
# version: 184
|
# version: 185
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "3"
|
resolver = "3"
|
||||||
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
members = ["crates/ksp-app-config-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.2.6-pre.13.fix.1"
|
version = "0.2.6-pre.13.fix.2"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ksp-app-wallet-desk",
|
"name": "ksp-app-wallet-desk",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.2.6-pre.13.fix.1",
|
"version": "0.2.6-pre.13.fix.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "KSP Wallet Desk",
|
"productName": "KSP Wallet Desk",
|
||||||
"version": "0.2.6-pre.13.fix.1",
|
"version": "0.2.6-pre.13.fix.2",
|
||||||
"identifier": "com.sasedev.ksp-app-wallet-desk",
|
"identifier": "com.sasedev.ksp-app-wallet-desk",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "npm run dev",
|
"beforeDevCommand": "npm run dev",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// file: crates/ksp-app-wallet-desk/tests/release_compliance.rs
|
// file: crates/ksp-app-wallet-desk/tests/release_compliance.rs
|
||||||
// version: 2
|
// version: 3
|
||||||
|
|
||||||
//! Release-wide deterministic compliance canaries for Wallet Desk.
|
//! Release-wide deterministic compliance canaries for Wallet Desk.
|
||||||
|
|
||||||
@@ -71,10 +71,12 @@ fn backend_keeps_config_wallet_transport_and_logging_ownership_boundaries() {
|
|||||||
] {
|
] {
|
||||||
assert!(!source.contains(forbidden), "Wallet Desk backend bypasses an owned boundary through {forbidden}");
|
assert!(!source.contains(forbidden), "Wallet Desk backend bypasses an owned boundary through {forbidden}");
|
||||||
}
|
}
|
||||||
|
let tracing_path = ["tracing", "::"].concat();
|
||||||
|
let tracing_use = std::format!("use {tracing_path}");
|
||||||
for line in source.lines() {
|
for line in source.lines() {
|
||||||
let trimmed = line.trim_start();
|
let trimmed = line.trim_start();
|
||||||
assert!(!trimmed.starts_with("use tracing::"), "Wallet Desk backend must not import tracing directly: {trimmed}");
|
assert!(!trimmed.starts_with(tracing_use.as_str()), "Wallet Desk backend must not import tracing directly: {trimmed}");
|
||||||
assert!(!trimmed.starts_with("tracing::"), "Wallet Desk backend must not emit through tracing directly: {trimmed}");
|
assert!(!trimmed.starts_with(tracing_path.as_str()), "Wallet Desk backend must not emit through tracing directly: {trimmed}");
|
||||||
}
|
}
|
||||||
assert!(source.contains("ksp_config_lib::ConfigEnvironment::load"));
|
assert!(source.contains("ksp_config_lib::ConfigEnvironment::load"));
|
||||||
assert!(source.contains("ksp_wallet_lib::"));
|
assert!(source.contains("ksp_wallet_lib::"));
|
||||||
|
|||||||
44
deltas/0.2.6/pre.013-fix.002.md
Normal file
44
deltas/0.2.6/pre.013-fix.002.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<!-- file: deltas/0.2.6/pre.013-fix.002.md -->
|
||||||
|
<!-- version: 1 -->
|
||||||
|
|
||||||
|
# Delta `0.2.6-pre.013-fix.002` — correction de l'auto-détection Logging du canari compliance
|
||||||
|
|
||||||
|
## Objet
|
||||||
|
|
||||||
|
Corriger le second faux positif révélé par la validation de `pre.013-fix.001` : le canari global de `ksp-logging-lib` interprète le littéral `tracing::` contenu dans `release_compliance.rs` comme un bypass direct, alors que ce fichier utilise ce texte uniquement comme motif d'audit.
|
||||||
|
|
||||||
|
## Diagnostic
|
||||||
|
|
||||||
|
`release_compliance.rs` ne dépend pas de `tracing` et n'émet aucun événement via `tracing`. Son test `backend_keeps_config_wallet_transport_and_logging_ownership_boundaries` contenait cependant littéralement `"use tracing::"` et `"tracing::"` pour scanner les sources `src/`. Le canari workspace Logging inspecte tous les fichiers Rust et cherche lui aussi `tracing::`; il détectait donc la chaîne de test elle-même.
|
||||||
|
|
||||||
|
## Changements
|
||||||
|
|
||||||
|
- construit le motif interdit avec `["tracing", "::"].concat()` dans `release_compliance.rs` ;
|
||||||
|
- construit `use {tracing_path}` à l'exécution pour le contrôle d'import ;
|
||||||
|
- conserve les mêmes assertions sur les sources backend ;
|
||||||
|
- ne modifie pas le scanner global `ksp-logging-lib/tests/ownership.rs` ;
|
||||||
|
- ne modifie aucun runtime, DTO, capability, permission, dépendance ou frontière Logging ;
|
||||||
|
- enregistre le checkpoint opérateur : release compliance vert et smoke Devnet vert avant ce fix.
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
```text
|
||||||
|
workspace.package.version = 0.2.6-pre.13.fix.2
|
||||||
|
commit attendu = v0.2.6-pre.013-fix.002
|
||||||
|
aucun tag
|
||||||
|
```
|
||||||
|
|
||||||
|
## Validation attendue
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --all
|
||||||
|
python3 scripts/audit_rust_workspace_rules.py
|
||||||
|
cargo check --workspace
|
||||||
|
cargo clippy --workspace --all-targets
|
||||||
|
cargo test -p ksp-logging-lib --test ownership
|
||||||
|
cargo test -p ksp-app-wallet-desk --test release_compliance
|
||||||
|
cargo test -p ksp-app-wallet-desk
|
||||||
|
cargo test --workspace
|
||||||
|
```
|
||||||
|
|
||||||
|
Le smoke Devnet a déjà passé sur `pre.013-fix.001`; aucun `cargo tauri dev` n'est requis pour ce correctif test-only.
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md -->
|
<!-- file: docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md -->
|
||||||
<!-- version: 29 -->
|
<!-- version: 30 -->
|
||||||
|
|
||||||
# Plan `0.2.6` — Wallet Desk
|
# Plan `0.2.6` — Wallet Desk
|
||||||
|
|
||||||
@@ -30,6 +30,10 @@ Les validations opérateur du `2026-08-20` ont ensuite confirmé la base `pre.00
|
|||||||
|
|
||||||
Le premier passage opérateur de `pre.013` a confirmé `fmt`, audit, `check` et Clippy, mais le nouveau canari `response_dtos_keep_secret_key_material_out_of_ipc` a produit un faux positif sur `WalletAuthorizedDto` : le scanner analysait aussi les commentaires du bloc de structure et rencontrait la documentation légitime `Wallet password candidates`. `pre.013-fix.001` aligne ce gate sur la règle déjà éprouvée en `pre.006-fix.001` : seuls les champs `pub(crate)` réellement sérialisables sont inspectés pour `password`, key material, path/content/bytes. Aucun DTO ni contrat IPC runtime n'est assoupli.
|
Le premier passage opérateur de `pre.013` a confirmé `fmt`, audit, `check` et Clippy, mais le nouveau canari `response_dtos_keep_secret_key_material_out_of_ipc` a produit un faux positif sur `WalletAuthorizedDto` : le scanner analysait aussi les commentaires du bloc de structure et rencontrait la documentation légitime `Wallet password candidates`. `pre.013-fix.001` aligne ce gate sur la règle déjà éprouvée en `pre.006-fix.001` : seuls les champs `pub(crate)` réellement sérialisables sont inspectés pour `password`, key material, path/content/bytes. Aucun DTO ni contrat IPC runtime n'est assoupli.
|
||||||
|
|
||||||
|
### Correctif `0.2.6-pre.013-fix.002`
|
||||||
|
|
||||||
|
La validation de `pre.013-fix.001` confirme `fmt`, audit, `check`, Clippy, les tests Wallet Desk, le canari `release_compliance` et le smoke Devnet opt-in. Le workspace complet révèle toutefois un second faux positif : le test global `ksp-logging-lib::workspace_crates_do_not_bypass_ksp_logging_facade` détecte le littéral `tracing::` présent dans le code du canari Wallet Desk qui vérifie précisément l'absence de ce bypass. `pre.013-fix.002` conserve le scanner global inchangé et construit ce motif à l'exécution dans `release_compliance.rs`; le canari continue ainsi d'auditer les sources backend sans s'auto-déclarer comme bypass. Aucun comportement runtime, DTO, dependency firewall ou capability n'est modifié.
|
||||||
|
|
||||||
## 2. Sources relues et hiérarchie appliquée
|
## 2. Sources relues et hiérarchie appliquée
|
||||||
|
|
||||||
L'audit suit l'ordre d'autorité demandé :
|
L'audit suit l'ordre d'autorité demandé :
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/validation/009-V0_2_6_WALLET_DESK_COMPLIANCE.md -->
|
<!-- file: docs/validation/009-V0_2_6_WALLET_DESK_COMPLIANCE.md -->
|
||||||
<!-- version: 2 -->
|
<!-- version: 3 -->
|
||||||
|
|
||||||
# Validation `0.2.6` — Wallet Desk integration / compliance / security
|
# Validation `0.2.6` — Wallet Desk integration / compliance / security
|
||||||
|
|
||||||
@@ -225,14 +225,17 @@ Ce checkpoint n'est pas rejoué automatiquement par `pre.013`; la tranche ajoute
|
|||||||
|
|
||||||
## 11. Résultats `pre.013`
|
## 11. Résultats `pre.013`
|
||||||
|
|
||||||
À compléter après exécution opérateur :
|
Checkpoint opérateur après `pre.013-fix.001` :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
fmt / audit / check / clippy : PENDING
|
fmt / audit / check / clippy : PASS
|
||||||
cargo test -p ksp-app-wallet-desk : PENDING
|
cargo test -p ksp-app-wallet-desk : PASS
|
||||||
cargo test --workspace : PENDING
|
release_compliance : PASS (4/4)
|
||||||
cargo tree / inverse tree : PENDING
|
smoke Devnet Wallet Desk opt-in : PASS
|
||||||
smoke Devnet Wallet Desk opt-in : PENDING
|
cargo tree / inverse tree : exécutés ; tauri-plugin-fs observé uniquement transitivement via tauri-plugin-dialog
|
||||||
|
cargo test --workspace : BLOCKED par un faux positif du canari Logging global
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Le blocage workspace est limité à `ksp-logging-lib/tests/ownership.rs::workspace_crates_do_not_bypass_ksp_logging_facade` : le scanner voit le littéral `tracing::` dans `release_compliance.rs`, alors que ce littéral est la chaîne recherchée par le canari et non un usage de `tracing`. `pre.013-fix.002` supprime ce littéral statique en construisant le motif à l'exécution, sans modifier le scanner global ni relâcher la politique Logging.
|
||||||
|
|
||||||
La matrice reste ouverte jusqu'à `pre.015`, où seront ajoutés le résultat du polish `pre.014`, le parcours fonctionnel final, les docs README/USAGE et le build Tauri exécuté en toute dernière opération.
|
La matrice reste ouverte jusqu'à `pre.015`, où seront ajoutés le résultat du polish `pre.014`, le parcours fonctionnel final, les docs README/USAGE et le build Tauri exécuté en toute dernière opération.
|
||||||
|
|||||||
Reference in New Issue
Block a user