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

3.6 KiB

Delta 0.2.14-pre.005-fix.001 — faux positif du canari logging

1. Base requise

Ce correctif s'applique exclusivement après :

0.2.14-pre.005

Le gate opérateur du 28 août 2026 confirme :

cargo fmt --all                                      PASS
audit Rust général / exports / workspace             PASS
audit Markdown                                       PASS — 173 tables / 122 fichiers
cargo check --workspace                              PASS
cargo clippy --workspace --all-targets               PASS
cargo test -p ksp-program-api                        PASS — 18 tests Rust
cargo test --workspace                               FAIL — ksp-logging-lib/tests/ownership.rs

L'unique échec observé est :

crates/ksp-program-api/tests/release_completeness.rs bypasses ksp-logging-lib via tracing

2. Diagnostic

release_completeness.rs doit vérifier que les sources de production Program API ne contiennent aucun chemin direct vers tracing. Le canari écrivait cependant lui-même ce chemin sous forme de chaîne littérale dans sa liste de motifs interdits.

Le scanner workspace de ksp-logging-lib/tests/ownership.rs inspecte tous les fichiers Rust des autres crates, tests d'intégration compris, et recherche textuellement ce chemin. Il classait donc le motif de test lui-même comme un bypass alors qu'aucune dépendance, importation ou utilisation de tracing n'existe dans ksp-program-api.

Le graphe normal observé reste :

ksp-program-api
├── ksp-core-lib
└── ksp-interface-lib
    └── ksp-core-lib

3. Correction

Le canari conserve exactement la même interdiction sur les sources de production, mais construit désormais le motif recherché à partir de deux fragments. Son propre fichier ne contient donc plus le chemin direct littéral que le scanner logging doit légitimement refuser.

Aucune règle logging n'est contournée ou affaiblie. Le scanner de ksp-logging-lib reste inchangé.

Comme un fichier .rs est modifié, VER-ID-007 et VER-ID-010 imposent :

workspace.package.version = 0.2.14-pre.5.fix.1

La livraison est :

0.2.14-pre.005-fix.001

4. Fichiers modifiés

Cargo.toml
crates/ksp-program-api/tests/release_completeness.rs

5. Fichier ajouté

deltas/0.2.14/pre.005-fix.001.md

6. Fichiers volontairement inchangés

crates/ksp-program-api/src/**
crates/ksp-program-api/Cargo.toml
crates/ksp-program-api/tests/security_hardening.rs
crates/ksp-logging-lib/**
docs/plans/**
docs/validation/**
README.md
ROADMAP.md
CHANGELOG.md
prompts/**

7. Scope négatif

Ce fix n'ajoute aucun :

contrat Program
trait ou type public
dependency
logging runtime
registry
descriptor
codec
payload D3
preparer

8. Validations de génération

Les audits statiques disponibles dans l'environnement de génération doivent rester propres. Cargo n'y est pas disponible ; aucun PASS Cargo n'est revendiqué par ce delta.

9. Gate opérateur attendu

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.14
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-program-api
cargo test -p ksp-logging-lib --test ownership
cargo test --workspace
cargo tree -p ksp-program-api --edges normal
cargo tree --duplicates

Si ce gate est vert, pre.005 est considéré corrigé et pre.006 peut ouvrir le gate technique final sans développement fonctionnel.