Files
khadhroony-solana-project/deltas/0.2.5/rel.001.md
2026-08-20 12:31:08 +02:00

219 lines
6.6 KiB
Markdown

<!-- file: deltas/0.2.5/rel.001.md -->
<!-- version: 1 -->
# Delta `0.2.5-rel.001` — publication stable Wallet foundation
## Base requise
Base validée :
```text
v0.2.5-pre.010-fix.003
```
avec :
```text
workspace.package.version = "0.2.5-pre.10.fix.3"
```
Le checkpoint opérateur final du 20 août 2026 est vert :
```text
cargo fmt --all OK
python3 scripts/audit_rust_workspace_rules.py
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 dernier audit Cargo confirme également :
```text
ed25519-dalek 3.0.0
<- ksp-wallet-lib direct
ed25519-dalek 2.2.0
<- solana-keypair 3.1.2
<- ksp-wallet-lib
solana-keypair 3.1.2
<- ksp-wallet-lib comme unique parent KSP direct
solana-address 2.7.0
<- solana-keypair 3.1.2
<- solana-pubkey 4.3.0 via ksp-core-lib
```
## Objectif
Publier la release stable `0.2.5 — Wallet foundation` sans ajouter de capacité fonctionnelle après la candidate validée.
`rel.001` est strictement publicationnelle :
- passage du workspace à la version Cargo stable `0.2.5` ;
- publication stable de `ksp-wallet-lib` et du format `.kspwallet` V1 ;
- ajout de l'entrée stable `0.2.5` au CHANGELOG ;
- clôture `[X]` de `0.2.5` dans le ROADMAP ;
- passage du plan `012` au statut historique clôturé ;
- passage de la matrice `validation/008` au verdict final positif ;
- passage de `KSPWALLET_V1.md` de candidate à spécification normative V1 stable ;
- passage de `ksp-wallet-lib` au statut Stable dans l'inventaire ;
- synchronisation du prompt `0.2.6` comme prochaine entrée officielle ;
- synchronisation du TODO `0.2.11` : après stabilisation de la Price Desk offchain, intégrer la capacité de prix dans Wallet Desk sans dupliquer récupération/normalisation.
Aucun fichier Rust, wire, paramètre cryptographique, dependency ou feature n'est modifié par `rel.001`.
## Version Cargo
`workspace.package.version` passe de :
```text
0.2.5-pre.10.fix.3
```
à :
```text
0.2.5
```
Le header de `Cargo.toml` passe de version 162 à 163.
## Surface stable publiée
`0.2.5` stabilise notamment :
- `ksp-wallet-lib` comme propriétaire KSP du Wallet natif ;
- `.kspwallet` V1 JSON UTF-8 strict, Base64url sans padding et limite documentaire bornée ;
- capabilities VIEW/OWNER cryptographiquement indépendantes ;
- Pubkey/alias/notes protégés lorsque le wallet est verrouillé ;
- Argon2id v19 avec paramètres sérialisés et profil de création `65 536 KiB / 3 / 1` ;
- XChaCha20-Poly1305 pour wrapping et compartments ;
- autorité Ed25519 OWNER distincte de la keypair Solana ;
- compartments `owner_control`, `metadata`, `secret` ;
- create/open/inspect mémoire et fichier ;
- persistence create/import no-clobber et replacement administratif capability-bound ;
- signature Solana OWNER sans getter de secret ;
- alias/notes protégés ;
- rotations OWNER/VIEW ;
- révocation forte VIEW avec nouveau `K_metadata` ;
- détection `wallet.state_conflict` des handles stale/mauvaises cibles ;
- inspection/import/export Solana CLI JSON et Base58 de keypair complète ;
- spécification autonome `docs/formats/KSPWALLET_V1.md` et vecteurs publics ;
- canaris adversariaux et reproduction externe des primitives/vecteurs ;
- normalisation Rust workspace et audit structurel `scripts/audit_rust_workspace_rules.py` ;
- dépendance directe KSP `ed25519-dalek 3.0.0`, avec `2.2.0` transitive conservée par `solana-keypair 3.1.2`.
Les frontières restent :
```text
ksp-wallet-lib -> ksp-core-lib
ksp-wallet-lib -> ksp-logging-lib
ksp-wallet-lib -X-> Config/Transport/ExecutionPolicy/Store/Tauri
Pubkey publique via ksp-core-lib
solana-keypair encapsulée dans Wallet
```
## Fichiers ajoutés
```text
deltas/0.2.5/rel.001.md
```
## Fichiers modifiés
```text
Cargo.toml
CHANGELOG.md
ROADMAP.md
crates/ksp-wallet-lib/README.md
docs/000-README.md
docs/architecture/004-COMPONENT_INVENTORY.md
docs/formats/KSPWALLET_V1.md
docs/plans/000-README.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/012-V0_2_5_WALLET_FOUNDATION_PLAN.md
docs/validation/000-README.md
docs/validation/008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md
prompts/000-README.md
```
## Fichiers supprimés
Aucun.
## Décisions de clôture
Aucune nouvelle décision cryptographique ou fonctionnelle Wallet n'est introduite par `rel.001`.
La publication confirme :
1. `.kspwallet` V1 devient le format natif stable de Wallet ;
2. `ksp-wallet-lib` reste autonome de Config et du réseau ;
3. VIEW/OWNER et la séparation owner-control/metadata/secret restent le contrat V1 ;
4. la coexistence Dalek `3.0.0` direct / `2.2.0` transitive Solana est acceptée tant qu'upstream l'impose ;
5. `cargo fmt --all` reste l'autorité de formatage Rust et l'audit Python contrôle uniquement les conventions structurelles complémentaires ;
6. `0.2.6` ouvre Wallet Desk par audit/sizing ;
7. `0.2.11` doit, après validation de la Price Desk spécialisée, réutiliser la capacité de prix offchain dans Wallet Desk sans duplication de la logique propriétaire.
## Validation finale après application
Le delta change `Cargo.toml` et la documentation mais aucun fichier Rust. Avant création du tag stable, exécuter néanmoins le gate complet de publication :
```bash
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-wallet-lib
cargo test --workspace
```
Les `cargo tree` ne sont pas requis à nouveau par `rel.001` puisque les dependencies/features sont identiques à `pre.010-fix.003`; leur dernier état est déjà enregistré dans `docs/validation/008-V0_2_5_WALLET_SECURITY_COMPLIANCE.md`.
## Commit et tag stable
Après succès du gate final :
1. vérifier le working tree ;
2. créer le commit de release :
```text
v0.2.5-rel.001
```
3. créer le tag stable :
```text
v0.2.5
```
4. pousser le commit puis le tag vers le dépôt canonique.
Aucun tag intermédiaire de prerelease/fix/rel n'est nécessaire.
## Suite
Après le tag stable `v0.2.5`, ouvrir :
```text
0.2.6-pre.001
```
avec :
```text
prompts/011-V0_2_6_START_PROMPT.md
```
La première tranche reste un audit/brainstorming/sizing avant implémentation lourde de `ksp-app-wallet-desk`.