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

129 lines
3.6 KiB
Markdown

<!-- file: deltas/0.2.14/pre.005-fix.001.md -->
<!-- version: 1 -->
# Delta `0.2.14-pre.005-fix.001` — faux positif du canari logging
## 1. Base requise
Ce correctif s'applique exclusivement après :
```text
0.2.14-pre.005
```
Le gate opérateur du 28 août 2026 confirme :
```text
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 :
```text
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 :
```text
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 :
```text
workspace.package.version = 0.2.14-pre.5.fix.1
```
La livraison est :
```text
0.2.14-pre.005-fix.001
```
## 4. Fichiers modifiés
```text
Cargo.toml
crates/ksp-program-api/tests/release_completeness.rs
```
## 5. Fichier ajouté
```text
deltas/0.2.14/pre.005-fix.001.md
```
## 6. Fichiers volontairement inchangés
```text
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 :
```text
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
```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.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.