219 lines
6.6 KiB
Markdown
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`.
|