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/validation/016-V0_2_13_INTERFACE.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# Validation `0.2.13` — Interface / wire foundation
@@ -140,15 +140,15 @@ Si une nouvelle dépendance externe apparaît après `pre.001`, la présente mat
## 10. Tests de release
| Famille | Attendu | Statut |
|--------------------------|-------------------------------------------------|-----------------|
| unit tests privés | account meta/borne puis instruction/adversarial | PASS pre.004 |
| `tests/public_api.rs` | consommation crate-root uniquement | PASS pre.004 |
| external consumer canary | surface utilisable hors modules privés | PRÉSENT pre.005 |
| dependency boundary | firewall exact | PASS pre.004 |
| release completeness | inventaire exact, aucun domaine supplémentaire | PRÉSENT pre.005 |
| round-trip codec | aucun tant qu'aucun codec | N/A |
| network smoke | aucun pour crate wire pure | N/A |
| Famille | Attendu | Statut |
|--------------------------|-------------------------------------------------|--------------|
| unit tests privés | account meta/borne puis instruction/adversarial | PASS pre.004 |
| `tests/public_api.rs` | consommation crate-root uniquement | PASS pre.004 |
| external consumer canary | surface utilisable hors modules privés | PASS pre.005 |
| dependency boundary | firewall exact | PASS pre.004 |
| release completeness | inventaire exact, aucun domaine supplémentaire | PASS pre.005 |
| round-trip codec | aucun tant qu'aucun codec | N/A |
| network smoke | aucun pour crate wire pure | N/A |
## 11. Gate technique final attendu
@@ -286,3 +286,46 @@ Les nouveaux tests sont **présents mais non déclarés PASS dans le sandbox**,
Le consumer externe est un test d'intégration Rust, donc compilé par Cargo dans un crate distinct de `ksp-interface-lib`. Sa source ne consomme que les exports du crate-root ; les modules privés ne sont pas utilisés.
Le canari de complétude impose exactement les exports publics retenus et exactement quatre modules/fichiers de production : `error.rs`, `lib.rs`, `program_account_meta.rs`, `program_instruction.rs`. Cette contrainte ferme explicitement le risque d'ajout opportuniste d'une seconde famille wire avant la release stable.
## 17. Gate `pre.005` et correctif `pre.005-fix.001`
Le gate ciblé Interface est intégralement vert :
```text
unit tests Interface 10/10 PASS
manifest/source firewall 4/4 PASS
external consumer 1/1 PASS
public API 5/5 PASS
release completeness 3/3 PASS
doctests 0 échec
```
Le workspace échoue ensuite dans le canari transversal Logging :
```text
ksp-logging-lib/tests/ownership.rs
workspace_crates_do_not_bypass_ksp_logging_facade
```
Diagnostic confirmé : `tests/dependency_boundary.rs` contient le littéral `tracing::` uniquement comme pattern interdit. Le scanner Logging travaille sur le texte brut des `.rs` et interprète donc ce pattern de test comme un bypass réel. Le graphe Cargo Interface reste pourtant :
```text
ksp-interface-lib
└── ksp-core-lib
└── solana-pubkey 4.3.0
```
`pre.005-fix.001` remplace uniquement ce littéral source par une construction compile-time équivalente `concat!("tracing", "::")`. La propriété testée reste identique ; seule l'interaction entre deux scanners est corrigée.
Statut du fix avant gate opérateur :
```text
production src inchangé
API publique inchangée
dépendances inchangées
logging runtime Interface toujours absent
codec toujours absent
version technique 0.2.13-pre.5.fix.1
cargo test --workspace après fix À REJOUER
```