7.9 KiB
Delta 0.2.6-pre.018 — candidate finale Wallet Desk, runtime packagé et documentation
Base requise
0.2.6-pre.017 appliquée
workspace.package.version = 0.2.6-pre.17
Le checkpoint opérateur du 22 août 2026 est intégralement vert :
cargo fmt --all OK
python3 scripts/audit_rust_workspace_rules.py clean
cargo check --workspace OK
cargo clippy --workspace --all-targets OK
cargo test --workspace OK
ksp-wallet-lib 84 passed / 1 ignored
Wallet Desk desktop_contract 17/17 OK
Wallet Desk desktop_security 12/12 OK
Wallet Desk release_compliance 4/4 OK
smokes réseau / benchmark ignored comme prévu
Le parcours manuel Tauri crate-local est également acquis : avec un KSP_WALLETS_DIRECTORY isolé, Wallet Desk importe une keypair Solana CLI JSON, ksp-wallet-lib journalise la création native format_version=2, la session OWNER s'ouvre, l'inventory retrouve le V2 et getBalance Devnet réussit avec un slot non nul.
pre.017 est donc accepté comme base de la candidate finale.
Signal technique
Cette tranche modifie le bootstrap release, les resources Tauri, Config et la documentation :
workspace.package.version = 0.2.6-pre.18
package.json Config Desk = 0.2.6-pre.18
package.json Wallet Desk = 0.2.6-pre.18
tauri.conf Config Desk = 0.2.6-pre.18
tauri.conf Wallet Desk = 0.2.6-pre.18
commit = v0.2.6-pre.018
Aucun tag prerelease.
Objectifs de la candidate
pre.018 n'ajoute aucune nouvelle capacité Wallet métier. La tranche ferme :
runtime distribué indépendant du checkout source
resources Config/Schemas packagées
racine runtime KSP user-writable commune aux Desks
README/USAGE Wallet Desk
synchronisation docs/règles/compliance/prompt 0.2.7
versions applicatives finales de prerelease
canaris packaging/resources
ordre du gate final et build Tauri absolu dernier
Runtime packagé : ownership Config
Le parcours debug existant reste inchangé : Tauri est lancé crate-local, puis main.rs normalise le CWD Rust vers la racine du workspace avant Config.
Le parcours release ne dépend plus de ce checkout.
Les deux tauri.conf.json embarquent exactement les huit resources actuellement connues du ConfigFileRegistry :
config/composite.ksp-app-wallet-desk.json
config/std.logging.json
config/std.transport.json
config/std.wallet.json
config/schemas/composite.schema.json
config/schemas/std.logging.schema.json
config/schemas/std.transport.schema.json
config/schemas/std.wallet.schema.json
Ne sont jamais embarqués :
.env
logs/
wallets/
secrets runtime
ksp-config-lib reçoit la dépendance directories ^6.0 et expose :
prepare_packaged_runtime(resource_root)
PackagedRuntimeLayout
ERROR_CODE_PACKAGED_RUNTIME_PREPARATION_FAILED
La racine writable commune est résolue par directories::ProjectDirs avec l'identité projet KSP, sans path user codé en dur dans les applications.
Politique de préparation :
Config documents package-owned defaults
-> seed uniquement si la destination utilisateur est absente
-> une Config existante n'est jamais écrasée silencieusement
JSON Schemas
-> package-owned current authority
-> synchronisés depuis les resources à chaque lancement
.env
-> jamais packagé / jamais seedé
-> reste possédé et géré par Config dans la racine runtime writable
La persistence réutilise la primitive atomique Config existante et rejette les destinations symlink/non-file.
Bootstrap Tauri release
src/tauri.rs des deux applications suit désormais :
generate_context
-> configure_packaged_runtime(context)
-> AppState::initialize(arguments)
-> Builder/run
configure_packaged_runtime compile dans tous les profils afin que cargo check/Clippy debug vérifient également les APIs Tauri utilisées par le parcours release. En debug, il retourne immédiatement sans modifier le comportement acquis.
En release :
tauri::utils::platform::resource_dir
-> ksp_config_lib::prepare_packaged_runtime
-> std::env::set_current_dir(runtime_root)
-> AppState::initialize
Le guest frontend ne reçoit aucune capability filesystem supplémentaire.
Canaris Config / desktop
ksp-config-lib ajoute des tests déterministes qui prouvent :
- premier seed des Config packagées ;
- conservation d'une Config utilisateur déjà modifiée ;
- resynchronisation d'un schema mis à jour dans le package ;
- layout runtime/cfg/schema cohérent ;
- rejet d'une destination symlink sous Unix ;
- exposition du contrat public depuis la racine de crate.
Les deux desktop_contract.rs vérifient les mappings bundle.resources et l'appel de préparation du runtime packagé.
release_compliance.rs Wallet Desk vérifie en plus qu'aucune resource .env, logs, wallets, secret ou private n'entre dans le bundle.
Documentation candidate
Créés :
crates/ksp-app-wallet-desk/README.md
crates/ksp-app-wallet-desk/USAGE.md
Synchronisés :
crates/ksp-app-config-desk/README.md
crates/ksp-app-config-desk/USAGE.md
docs/rules/RULES_KSP.md
docs/architecture/010-APPS_SERVICES_SCENARIOS_AND_CONTROL.md
docs/validation/009-V0_2_6_WALLET_DESK_COMPLIANCE.md
docs/validation/000-README.md
docs/formats/000-README.md
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
docs/plans/000-README.md
docs/000-README.md
docs/IDEAS.md
ROADMAP.md état global uniquement
prompts/011-V0_2_6_START_PROMPT.md
prompts/012-V0_2_7_START_PROMPT.md
prompts/012-V0_2_7_START_PROMPT.md reste dédié à 0.2.7 — WebSocket Solana standard sur base stable v0.2.6.
CHANGELOG.md est audité mais volontairement inchangé dans la prerelease. L'entrée stable 0.2.6 appartient à rel.001 après validation du build final.
Dépendances
Nouvelle dépendance externe :
directories = ^6.0
Elle est déclarée uniquement sous [workspace.dependencies] et consommée par ksp-config-lib via directories.workspace = true.
tempfile, déjà possédé par le workspace, est ajouté aux dev-dependencies de Config pour les fixtures packaging isolées.
Aucune dépendance Solana, réseau, filesystem Tauri guest ou cryptographique supplémentaire n'est ajoutée.
Validation opérateur candidate
Après application du delta :
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-config-lib
cargo test -p ksp-wallet-lib
cargo test -p ksp-app-config-desk
cargo test -p ksp-app-wallet-desk
cargo test --workspace
Puis réaudit de dépendances si nécessaire :
cargo tree -p ksp-config-lib --depth 1
cargo tree -p ksp-app-wallet-desk --depth 1
cargo tree -p ksp-app-wallet-desk -d
Le parcours fonctionnel final et les smokes live retenus sont exécutés avant le build. Exemple :
KSP_WALLETS_DIRECTORY=var/wallet-desk-pre018 \
bash -lc 'cd crates/ksp-app-wallet-desk && cargo tauri dev'
Le smoke Devnet opt-in peut être rejoué avant le build si souhaité.
Build final
L'absolue dernière opération de validation est :
(cd crates/ksp-app-wallet-desk && cargo tauri build)
Ne lancer ensuite ni fmt, ni check, ni test, ni autre build avant d'enregistrer le résultat du gate. Si une correction est requise, produire pre.018-fix.NNN, rejouer les validations depuis le début, puis refaire le build en dernière opération.
Si le gate complet est vert, la prochaine étape est uniquement :
0.2.6-rel.001
workspace.package.version -> 0.2.6
CHANGELOG stable -> 0.2.6
tag final -> v0.2.6
rel.001 n'introduit aucune nouvelle fonctionnalité.