Files
khadhroony-solana-project/deltas/0.2.13/pre.005-fix.001.md

138 lines
3.6 KiB
Markdown

<!-- file: deltas/0.2.13/pre.005-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.13-pre.005-fix.001` — faux positif du scanner Logging
## 1. Déclencheur
Le gate opérateur de `pre.005` confirme :
```text
cargo fmt --all PASS
python3 scripts/audit_rust_workspace_rules.py PASS / clean
python3 scripts/audit_markdown_tables.py ... PASS / clean
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-interface-lib PASS
cargo test --workspace FAIL
cargo tree -p ksp-interface-lib --edges normal Core-only confirmé
cargo tree --duplicates fourni
```
Le test ciblé Interface est entièrement vert :
```text
unit tests 10/10
manifest/source firewall 4/4
external consumer 1/1
public API 5/5
release completeness 3/3
```
Le workspace échoue uniquement ici :
```text
ksp-logging-lib/tests/ownership.rs
workspace_crates_do_not_bypass_ksp_logging_facade
```
avec :
```text
crates/ksp-interface-lib/tests/dependency_boundary.rs bypasses ksp-logging-lib via tracing
```
## 2. Cause exacte
Le scanner Logging recherche le chemin littéral :
```text
tracing::
```
sur le texte brut de tous les fichiers Rust des crates KSP, tests compris.
Le hardening `pre.005` a ajouté ce même littéral dans `tests/dependency_boundary.rs` comme **pattern interdit à rechercher dans les sources de production**. Il ne s'agit donc ni d'un import, ni d'un appel runtime, ni d'une dépendance Interface vers Tracing : le scanner transversal détecte simplement la donnée de son canari voisin.
Le graphe Cargo opérateur confirme toujours :
```text
ksp-interface-lib
└── ksp-core-lib
└── solana-pubkey 4.3.0
```
## 3. Correction
Le firewall Interface conserve strictement la même vérification, mais le token est écrit sans matérialiser `tracing::` contigu dans le source du test :
```rust
concat!("tracing", "::")
```
La valeur produite à la compilation reste exactement `tracing::`. Le test Interface continue donc d'échouer si un module de production utilise directement ce chemin.
Aucun `allow`, aucune exclusion de fichier et aucun affaiblissement du scanner Logging ne sont introduits.
## 4. Version
Le fix modifie un test Rust ; la version workspace devient :
```text
0.2.13-pre.5.fix.1
```
Commit attendu après validation :
```text
v0.2.13-pre.005-fix.001
```
Aucun tag prerelease.
## 5. Frontières
Inchangés :
```text
crates/ksp-interface-lib/src/**
crates/ksp-interface-lib/Cargo.toml
surface publique Interface
ProgramAccountMeta
ProgramInstruction
bornes 255 / 10_240
Error/Result Core
ksp-logging-lib absent d'Interface
constants.rs absent
TRACING_TARGET absent
serde/borsh/bincode/wincode absents
solana-instruction absent
```
## 6. Fichiers modifiés
```text
Cargo.toml
crates/ksp-interface-lib/tests/dependency_boundary.rs
docs/plans/020-V0_2_13_INTERFACE_PLAN.md
docs/validation/016-V0_2_13_INTERFACE.md
deltas/0.2.13/pre.005-fix.001.md
```
## 7. Gate opérateur
```bash
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.2.13
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-interface-lib
cargo test -p ksp-logging-lib --test ownership
cargo test --workspace
cargo tree -p ksp-interface-lib --edges normal
cargo tree --duplicates
```
`pre.006` reste interdit tant que ce gate n'est pas intégralement vert.