v0.2.5-rel.001

This commit is contained in:
2026-08-20 12:31:08 +02:00
parent cb142b1cb8
commit 8c65096f4c
14 changed files with 332 additions and 59 deletions

View File

@@ -1,11 +1,11 @@
<!-- file: docs/validation/008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md -->
<!-- version: 4 -->
<!-- version: 5 -->
# Validation `0.2.5` — Wallet security / interoperability / compliance
## 1. Objet
Cette matrice constitue la validation durable de clôture de `0.2.5`. `pre.009` a fermé le premier gate technique security/interoperability/compliance et `pre.010` a ajouté le gate documentaire. `pre.010-fix.001` rouvre volontairement le gate technique pour la mise à niveau `ed25519-dalek 3.0.0` et la normalisation Rust workspace-wide avant toute publication stable. Elle ne remplace ni la spécification [`../formats/KSPWALLET_V1.md`](../formats/KSPWALLET_V1.md), ni le threat model du plan [`../plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md`](../plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md), ni les deltas.
Cette matrice constitue la validation durable de clôture de la release stable `0.2.5`. `pre.009` a fermé le premier gate technique security/interoperability/compliance, `pre.010` le gate documentaire, puis `pre.010-fix.001``fix.003` ont fermé la mise à niveau `ed25519-dalek 3.0.0`, la normalisation Rust workspace-wide et la compatibilité entre rustfmt et laudit Python avant publication. Elle ne remplace ni la spécification [`../formats/KSPWALLET_V1.md`](../formats/KSPWALLET_V1.md), ni le threat model du plan [`../plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md`](../plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md), ni les deltas.
Le verdict recherché porte sur quatre axes :
@@ -268,16 +268,23 @@ aucun fichier Rust ni manifest Cargo n'est modifié par pre.010
workspace.package.version reste 0.2.5-pre.9 car pre.010 est doc-only
```
## 12. Correctif technique `pre.010-fix.001`
## 12. Correctifs de clôture `pre.010-fix.001` à `fix.003`
Le correctif de clôture apporte deux changements qui exigent une nouvelle validation opérateur :
La clôture technique apporte :
```text
ed25519-dalek direct KSP : ^2.2 -> ^3.0
normalisation Rust workspace + scripts/audit_rust_workspace_rules.py obligatoire
normalisation Rust workspace-wide
scripts/audit_rust_workspace_rules.py obligatoire après cargo fmt
corrections des chemins crate::/super:: et des réexports crate-root
espacement structurel normalisé
audit Python rendu compatible avec l'ordre canonique produit par rustfmt
prompt 0.2.6 renforcé + TODO 0.2.11 prix offchain dans Wallet Desk
```
Le résultat `pre.009` des sections 6 et 10 reste une preuve historique valide pour l'état `2.2.0`; il ne doit pas être présenté comme le tree final après le fix. `solana-keypair 3.1.2` conserve actuellement sa branche Dalek `2.x`, donc le tree attendu après le fix est :
Le wire `.kspwallet` V1, les paramètres Argon2/XChaCha, la sémantique Ed25519, les capabilities VIEW/OWNER et les API Wallet fonctionnelles ne changent pas pendant ces fixes.
Le tree final attendu et observé contient deux générations Dalek intentionnelles :
```text
ed25519-dalek 3.0.0
@@ -292,27 +299,65 @@ solana-address 2.7.0
<- solana-pubkey 4.3.0 via ksp-core-lib
```
Gate opérateur post-fix :
La génération `2.2.0` n'est pas un doublon direct KSP à corriger artificiellement : elle reste imposée par `solana-keypair 3.1.2`.
```bash
cargo fmt --all
## 13. Checkpoint opérateur final `pre.010-fix.003`
Validation communiquée le **20 août 2026** :
```text
cargo fmt --all OK
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-wallet-lib
cargo test --workspace
cargo tree -p ksp-wallet-lib
cargo tree -p ksp-wallet-lib -d
cargo tree -i ed25519-dalek@3.0.0
cargo tree -i ed25519-dalek@2.2.0
cargo tree -i solana-keypair@3.1.2
cargo tree -i solana-address@2.7.0
General Rust rule audit clean
Rust export completeness audit 0 candidate(s)
KSP workspace Rust rule audit clean
cargo check --workspace OK
cargo clippy --workspace --all-targets OK
cargo test -p ksp-wallet-lib OK
unit 58 passed / 1 ignored
dependency_boundary 3 passed
public_api 9 passed
doctests 2 passed
cargo test --workspace OK
```
Le fix ne modifie ni le wire `.kspwallet` V1, ni les paramètres Argon2/XChaCha, ni la sémantique Ed25519, ni les capabilities VIEW/OWNER. Le verdict final reste **en attente de ce checkpoint opérateur**.
Le checkpoint ne rapporte aucun warning Clippy ou compilation. Les tests Config Desk, Config, Core, Logging, Transport et Wallet passent dans le workspace complet ; les smokes réseau opt-in restent volontairement `ignored` dans la suite déterministe.
## 13. Verdict final candidate `0.2.5`
## 14. Audit Cargo final
Le verdict `pre.009` était positif pour l'état alors audité, mais **la candidate stable n'est plus considérée fermée tant que `pre.010-fix.001` n'a pas passé son gate opérateur**. Le changement de génération Dalek et la normalisation Rust sont intentionnels et ne changent pas le wire V1, mais ils constituent un changement technique réel qui doit être compilé, linté et testé dans l'environnement opérateur.
Le dernier audit de dépendances avant release confirme notamment :
Après validation complète de `pre.010-fix.001`, le verdict peut redevenir positif et seulement alors `0.2.5-rel.001` redevient la prochaine étape publicationnelle.
```text
ed25519-dalek 3.0.0
<- ksp-wallet-lib
ed25519-dalek 2.2.0
<- solana-keypair 3.1.2 <- ksp-wallet-lib
solana-keypair 3.1.2
<- ksp-wallet-lib uniquement comme parent KSP direct
solana-address 2.7.0
<- solana-keypair 3.1.2
<- solana-pubkey 4.3.0 via ksp-core-lib
```
Les doublons transitifs RustCrypto/Solana déjà documentés restent acceptés et n'introduisent aucun second owner KSP du secret Solana.
## 15. Verdict final `0.2.5`
**Verdict positif.** Tous les gates déterministes et structurels requis avant publication sont verts sur `0.2.5-pre.010-fix.003`.
`0.2.5-rel.001` est donc strictement publicationnelle :
```text
workspace.package.version -> 0.2.5
aucun changement Rust fonctionnel
aucun changement du wire .kspwallet V1
aucune nouvelle dépendance/feature
CHANGELOG/ROADMAP/plans/validation synchronisés
commit attendu : v0.2.5-rel.001
tag stable attendu : v0.2.5
```
Après validation du delta `rel.001`, la session suivante s'ouvre avec `prompts/011-V0_2_6_START_PROMPT.md` et commence par `0.2.6-pre.001` audit/sizing.