v0.2.13-pre.005-fix.001

This commit is contained in:
2026-08-28 06:27:26 +02:00
parent 29f27ae109
commit e774a065b4
6 changed files with 227 additions and 21 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/020-V0_2_13_INTERFACE_PLAN.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Plan `0.2.13` — Interface / wire foundation
@@ -401,7 +401,7 @@ Ajouter l'instruction `{ program_id, accounts, data }`, constructeur validé, ac
### pre.005 — adversarial + consumer externe + API/dependency hardening
**Statut : réalisé ; gate opérateur à confirmer.**
**Statut : réalisé ; gate opérateur ciblé PASS, workspace bloqué par faux positif du canari Logging ; `pre.005-fix.001` préparé.**
Fermer les cas limites, surface crate-root, consumer externe, firewall source/manifest et graphes Cargo. Ne pas ajouter un second domaine wire opportuniste.
@@ -574,3 +574,32 @@ Il verrouille également l'absence de `pub mod` et l'inventaire exact des quatre
Le hardening unitaire vérifie enfin que les allocations des `Vec` admis sont transférées telles quelles dans `ProgramInstruction` et que les erreurs de dépassement n'échoient ni marqueur hostile de payload ni représentation arbitraire d'account meta. Ces tests renforcent le contrat de construction sans changer l'API publique.
Après validation opérateur de `pre.005`, `pre.006` doit rester un gate technique pur sans nouveau développement fonctionnel.
## 20. Correctif préparé `pre.005-fix.001`
Le gate opérateur `pre.005` confirme les preuves suivantes :
```text
fmt / audits Rust / Markdown PASS
cargo check --workspace PASS
cargo clippy --workspace --all-targets PASS
cargo test -p ksp-interface-lib PASS
external consumer PASS
release completeness PASS
hardening adversarial PASS
cargo test --workspace FAIL cross-crate canary Logging
cargo tree Interface Core-only confirmé
```
L'échec workspace ne révèle aucun bypass runtime d'Interface. Le scanner `ksp-logging-lib/tests/ownership.rs` recherche littéralement le chemin source `tracing::` dans tous les fichiers Rust des crates KSP, tests compris. Le firewall `ksp-interface-lib/tests/dependency_boundary.rs` contenait cette chaîne comme **valeur de test interdite**, ce qui déclenchait le scanner Logging sur le canari lui-même.
Le fix conserve exactement la même interdiction mais construit le token de recherche sans faire apparaître le chemin littéral dans le source du test :
```rust
concat!("tracing", "::")
```
Le test Interface continue donc de refuser un chemin direct vers Tracing dans les sources de production, tandis que le scanner Logging ne confond plus la donnée du canari avec un usage runtime réel.
Aucun fichier `src/` de production, aucune dépendance, aucune API publique, aucune borne et aucune décision de logging ne sont modifiés. La version technique devient `0.2.13-pre.5.fix.1` parce que le fix touche un test Rust. `pre.006` reste bloqué jusqu'au gate workspace vert du fix.