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

3.6 KiB

Delta 0.2.13-pre.005-fix.001 — faux positif du scanner Logging

1. Déclencheur

Le gate opérateur de pre.005 confirme :

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 :

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 :

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

avec :

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 :

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 :

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 :

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 :

0.2.13-pre.5.fix.1

Commit attendu après validation :

v0.2.13-pre.005-fix.001

Aucun tag prerelease.

5. Frontières

Inchangés :

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

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

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.