v0.2.6-pre.001
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -36,6 +36,7 @@ yarn.lock
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.pydevproject
|
||||
|
||||
# Operating system files
|
||||
.DS_Store
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?eclipse-pydev version="1.0"?><pydev_project>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
|
||||
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
|
||||
</pydev_project>
|
||||
@@ -1,12 +1,12 @@
|
||||
# file: Cargo.toml
|
||||
# version: 163
|
||||
# version: 164
|
||||
|
||||
[workspace]
|
||||
resolver = "3"
|
||||
members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-wallet-lib"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.2.5"
|
||||
version = "0.2.6-pre.1"
|
||||
edition = "2024"
|
||||
license = "MIT"
|
||||
repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: ROADMAP.md -->
|
||||
<!-- version: 55 -->
|
||||
<!-- version: 56 -->
|
||||
|
||||
# Roadmap KSP
|
||||
|
||||
@@ -50,7 +50,7 @@ Le roadmap décrit les objectifs à atteindre et les grandes étapes prévues. U
|
||||
- [X] `0.2.3` — HTTP Transactions stable : 11/11 wrappers typés publiés, classification `8 Read / 2 WriteSubmission / 1 Simulation`, no-resend ambigu prouvé pour les write submissions, `KSP-TRANSPORT-007` réaudité conforme sur les 37 wrappers HTTP courants, graphes Cargo et deux smokes Devnet validés ; `0.2.4` reprend les 15 Blocks/Economics restants.
|
||||
- [X] `0.2.4` — HTTP Blocks + Economics stable : 15/15 wrappers `V0_2_4` publiés, surface typed complète à 52/52 méthodes courantes, 14/14 historiques conservées, réaudit SIMD/inventaire final et `KSP-TRANSPORT-007` global validés ; deux smokes Devnet passés avant publication.
|
||||
- [X] `0.2.5` — Wallet foundation stable : `.kspwallet` V1, VIEW/OWNER indépendants, Argon2id/XChaCha20-Poly1305, autorité Ed25519 OWNER, persistence no-clobber, signature, administration/rotations/révocation VIEW forte, import/export Solana CLI JSON + Base58, canaris adversariaux, interop externe et documentation durable publiés. La clôture `pre.010-fix.001`–`fix.003` ajoute `ed25519-dalek 3.0.0` direct, normalise le Rust workspace et installe l’audit structurel Python complémentaire à rustfmt/Clippy. `Pubkey` reste via `ksp-core-lib`, la keypair reste encapsulée dans Wallet et Config/Transport/ExecutionPolicy/Store/Tauri restent hors Wallet.
|
||||
- [ ] `0.2.6` — Introduire `ksp-app-wallet-desk` utilisant Config composite + Wallet + transport HTTP, notamment pour afficher l'identité et le solde d'un wallet ; le prompt de démarrage est préparé par `0.2.5-pre.010`.
|
||||
- [ ] `0.2.6` — Introduire `ksp-app-wallet-desk` utilisant Config composite + Wallet + transport HTTP. Le gate `pre.001` retient `cfg.std.wallet` + composite Wallet Desk, inventory `.kspwallet` root-scoped/symlink-safe, handles VIEW/OWNER côté Rust, identité autorisée + `getBalance`, administration OWNER/import/export déjà possédés par Wallet, CSP/capabilities Tauri minimales et un forecast regranularisé jusqu’à `pre.013`.
|
||||
- [ ] `0.2.7` — Étendre `ksp-onchain-transport-lib` au WebSocket Solana standard complet ; permettre plusieurs sessions sur une même URL sans imposer encore un pool automatique complexe.
|
||||
- [ ] `0.2.8` — Ajouter Helius LaserStream WebSocket comme extension du moteur WebSocket standard, sans duplication de client.
|
||||
- [ ] `0.2.9` — Ajouter une première fondation Yellowstone gRPC standard/provider-neutral ; dimensionner la surface exacte à `pre.001` selon la documentation normative actuelle.
|
||||
|
||||
222
deltas/0.2.6/pre.001.md
Normal file
222
deltas/0.2.6/pre.001.md
Normal file
@@ -0,0 +1,222 @@
|
||||
<!-- file: deltas/0.2.6/pre.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.2.6-pre.001` — audit Wallet Desk, composition, UX, sécurité et sizing
|
||||
|
||||
## Base requise
|
||||
|
||||
Release stable attendue :
|
||||
|
||||
```text
|
||||
v0.2.5
|
||||
```
|
||||
|
||||
L'archive stable fournie confirme `workspace.package.version = 0.2.5` avant ouverture, six crates membres et l'absence de `ksp-app-wallet-desk`/`std.wallet`.
|
||||
|
||||
## Type de livraison
|
||||
|
||||
```text
|
||||
ksp-general-0.2.6-pre.001.zip
|
||||
```
|
||||
|
||||
L'archive d'échange est un delta applicable depuis la racine de `v0.2.5`. Elle contient uniquement les fichiers ajoutés/modifiés par cette tranche.
|
||||
|
||||
## Objet
|
||||
|
||||
Ouvrir `0.2.6 — Wallet Desk` sans commencer l'implémentation UI lourde. Le gate :
|
||||
|
||||
- réaudite Config Desk comme template Tauri sans le copier aveuglément ;
|
||||
- réaudite les APIs finales Config, Wallet, Transport et Logging ;
|
||||
- confirme qu'un vrai `std.wallet` exige une extension de `ksp-config-lib` ;
|
||||
- fixe `cfg.std.wallet`, `schema.std.wallet` et `cfg.composite.ksp-app-wallet-desk` ;
|
||||
- fixe `wallets_directory` global avec fallback `${KSP_WALLETS_DIRECTORY:-wallets}` et profil Config minimal `default` pour la composition ;
|
||||
- confirme que `getBalance` stable fournit lamports + contexte RPC sans nouveau wrapper ;
|
||||
- définit runtime state, screen map, command map et DTO map ;
|
||||
- définit inventory/path safety, symlink policy et comportement root absent ;
|
||||
- définit le threat model desktop/password/export/state conflict ;
|
||||
- retient import, metadata OWNER, rotations, disable/recreate VIEW et export fichier dans `0.2.6` ;
|
||||
- exclut un écran de signature arbitraire et tout prix offchain ;
|
||||
- réaudite les dépendances Tauri/frontend actuelles ;
|
||||
- impose une CSP explicite à Wallet Desk au lieu de recopier `csp = null` de Config Desk ;
|
||||
- regranularise le forecast initial jusqu'à `pre.013`.
|
||||
|
||||
## Décisions principales
|
||||
|
||||
### Config
|
||||
|
||||
```text
|
||||
cfg.std.wallet
|
||||
schema.std.wallet
|
||||
cfg.composite.ksp-app-wallet-desk
|
||||
component_id = logging / transport / wallet
|
||||
```
|
||||
|
||||
Shape prévu :
|
||||
|
||||
```text
|
||||
wallets_directory global
|
||||
+ default_profile = default
|
||||
+ profiles = [{ profile_id = default }]
|
||||
```
|
||||
|
||||
Le profil minimal est requis par le moteur composite réel ; aucune donnée Wallet sensible n'entre dans Config.
|
||||
|
||||
### Inventory
|
||||
|
||||
```text
|
||||
root = ResolvedWalletConfig::wallets_directory
|
||||
non récursif
|
||||
.kspwallet exact
|
||||
regular file only
|
||||
symlink excluded
|
||||
root missing = état explicite, aucune création silencieuse
|
||||
wallet_id = filename validé mono-composant
|
||||
aucun alias dérivé du filename
|
||||
```
|
||||
|
||||
### Lifecycle
|
||||
|
||||
```text
|
||||
NoSelection -> Locked -> ViewOpen/OwnerOpen
|
||||
```
|
||||
|
||||
`WalletView`/`WalletOwner` restent en Rust. Lock/deselect/state conflict drop le handle et purgent les projections protégées frontend.
|
||||
|
||||
### Balance
|
||||
|
||||
```text
|
||||
authorized Wallet handle
|
||||
-> Pubkey Rust
|
||||
-> HttpTransportPool::get_balance(role=default, config=None)
|
||||
-> lamports + slot + api_version
|
||||
-> safe DTO
|
||||
```
|
||||
|
||||
### Sécurité Tauri
|
||||
|
||||
- CSP locale restrictive obligatoire ;
|
||||
- capabilities minimales ;
|
||||
- aucun password dans storage/log/Debug ordinaire ;
|
||||
- aucun export secret IPC/clipboard ;
|
||||
- export fichier OWNER uniquement ;
|
||||
- native Dialog `open/save` ajouté seulement lorsqu'il est consommé ;
|
||||
- Bootstrap modals pour confirmations privilégiées ;
|
||||
- aucun plugin filesystem nécessaire.
|
||||
|
||||
## Audit externe au 2026-08-20
|
||||
|
||||
Constats courants :
|
||||
|
||||
```text
|
||||
@tauri-apps/api 2.11.1
|
||||
@tauri-apps/plugin-dialog 2.7.2
|
||||
@fltsci/tauri-plugin-tracing 0.3.4
|
||||
Bootstrap 5.3.8
|
||||
```
|
||||
|
||||
Les ranges existants de Config Desk restent cohérents, mais Wallet Desk démarre sans DataTables/SimpleBar/resize polyfill. Le plugin Dialog sera réaudité au moment exact de son ajout.
|
||||
|
||||
## Prévision souple révisée
|
||||
|
||||
```text
|
||||
pre.001 audit + Config/Wallet/Transport/Tauri + UX + threat model + sizing
|
||||
pre.002 crate Tauri + frontend shell + splash/main + logging bridge + CSP + ports
|
||||
pre.003 cfg.std.wallet + schema + ResolvedWalletConfig + composite Wallet Desk
|
||||
pre.004 runtime state + inventory/path safety + locked inspection + DTO foundation
|
||||
pre.005 create .kspwallet + OWNER session + explicit root-directory flow
|
||||
pre.006 unlock VIEW/OWNER + lock/deselect + authorized details + purge guarantees
|
||||
pre.007 Transport pool from composite + getBalance + diagnostics/refresh
|
||||
pre.008 native Dialog open + inspect/import CLI JSON/Base58 + destination no-clobber
|
||||
pre.009 OWNER metadata administration alias/notes + state_conflict UX
|
||||
pre.010 rotations OWNER/VIEW + disable/recreate VIEW + capability/security UX
|
||||
pre.011 OWNER file export + save picker + privileged confirmation + leak audit
|
||||
pre.012 deterministic integration tests + frontend security checks + Devnet smoke opt-in + compliance
|
||||
pre.013 README/USAGE/docs/graphs + dependency audit + production Tauri build candidate + prompt 0.2.7
|
||||
rel.001 publication stable stricte
|
||||
```
|
||||
|
||||
Le plan détaillé est `docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md`.
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md
|
||||
deltas/0.2.6/pre.001.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
ROADMAP.md
|
||||
docs/000-README.md
|
||||
docs/plans/000-README.md
|
||||
docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md
|
||||
```
|
||||
|
||||
## Fichiers volontairement inchangés
|
||||
|
||||
```text
|
||||
CHANGELOG.md
|
||||
.env.example
|
||||
config/**
|
||||
crates/**
|
||||
docs/architecture/**
|
||||
docs/formats/**
|
||||
docs/validation/**
|
||||
```
|
||||
|
||||
`std.wallet`, le composite et la crate Tauri sont planifiés mais non créés dans le gate documentaire.
|
||||
|
||||
## Version technique
|
||||
|
||||
Conformément à `VERSION_WORKFLOW.md`, le non-fix prerelease ouvre :
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.2.6-pre.1
|
||||
```
|
||||
|
||||
L'identifiant de commit reste :
|
||||
|
||||
```text
|
||||
v0.2.6-pre.001
|
||||
```
|
||||
|
||||
Aucun tag Git n'est créé avant la release stable finale.
|
||||
|
||||
## Validations exécutées avant modification
|
||||
|
||||
- archive stable `v0.2.5` fournie extraite et auditée ;
|
||||
- documents internes obligatoires relus ;
|
||||
- APIs Config/Wallet/Transport/Logging/Config Desk réauditées ;
|
||||
- archive bot3 inspectée uniquement comme référence historique ;
|
||||
- `python3 scripts/audit_rust_workspace_rules.py` exécuté sur la base stable : `General Rust rule audit: clean`, `KSP workspace Rust rule audit: clean` ;
|
||||
- le même audit structurel réexécuté sur l’état candidat `pre.001` après matérialisation : `General Rust rule audit: clean`, `KSP workspace Rust rule audit: clean` ;
|
||||
- audit externe Tauri/frontend actuel réalisé.
|
||||
|
||||
## Validations tentées mais impossibles dans le sandbox
|
||||
|
||||
Le binaire `cargo` n'est pas installé dans le sandbox. Les trois commandes suivantes ont été tentées et ont échoué avec code `127` :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
```
|
||||
|
||||
Aucune de ces commandes n'est déclarée réussie.
|
||||
|
||||
## Validation opérateur requise avant commit
|
||||
|
||||
Après application du delta :
|
||||
|
||||
```bash
|
||||
cargo fmt --all
|
||||
python3 scripts/audit_rust_workspace_rules.py
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets
|
||||
```
|
||||
|
||||
Comme `pre.001` ne crée aucune crate/frontend, aucun `npm` ni build Tauri n'est requis dans cette tranche.
|
||||
|
||||
Le gate `pre.001` n'est fermé qu'après réception de ces preuves opérateur vertes. Aucun travail `pre.002` ne doit être engagé avant ce checkpoint.
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/000-README.md -->
|
||||
<!-- version: 45 -->
|
||||
<!-- version: 46 -->
|
||||
|
||||
# Plans KSP
|
||||
|
||||
@@ -21,6 +21,7 @@ Un plan décrit le périmètre, les décisions déjà acquises, les questions ou
|
||||
- [`010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md`](010-V0_2_3_HTTP_TRANSACTIONS_PLAN.md) — plan historique clôturé de la release stable `0.2.3 — HTTP Transactions`, ouvert par `pre.001`, exécuté jusqu'à `pre.009` puis publié par `rel.001`; il couvre les 11 méthodes, la classification `8 Read / 2 WriteSubmission / 1 Simulation`, `KSP-TRANSPORT-007`, le no-resend et la préparation de `0.2.4`.
|
||||
- [`011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md`](011-V0_2_4_HTTP_BLOCKS_ECONOMICS_PLAN.md) — plan historique clôturé de la release stable `0.2.4`, ouvert par `pre.001`, exécuté jusqu’à `pre.009`, complété par le fix documentaire Wallet `pre.009-fix.001` puis publié par `rel.001`; il couvre les 10 Blocks + 5 Economics et la compliance finale `52/52 + 14/14` sous `KSP-TRANSPORT-007`.
|
||||
- [`012-V0_2_5_WALLET_FOUNDATION_PLAN.md`](012-V0_2_5_WALLET_FOUNDATION_PLAN.md) — plan historique clôturé de la release stable `0.2.5 — Wallet foundation`, ouvert par `pre.001`, livré jusqu’à `pre.010`, renforcé par `pre.010-fix.001`–`fix.003` pour Dalek 3 et la normalisation Rust/audit structurel, puis publié par `rel.001`; il couvre `.kspwallet` V1, VIEW/OWNER, crypto, persistence, administration, transfer et compliance.
|
||||
- [`013-V0_2_6_WALLET_DESK_PLAN.md`](013-V0_2_6_WALLET_DESK_PLAN.md) — plan actif de `0.2.6 — Wallet Desk`, ouvert par `pre.001`; il fixe la composition Config/Wallet/Transport/Logging, `std.wallet`, inventory/path safety, lifecycle VIEW/OWNER, screen/command/DTO maps, threat model Tauri, balance HTTP, administration retenue et forecast regranularisé jusqu’à `pre.013`.
|
||||
|
||||
Le `pre.001` de chaque release fonctionnelle peut introduire son propre plan détaillé lorsque la release s'ouvre.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/plans/002-FUNCTIONAL_RELEASE_SEQUENCE.md -->
|
||||
<!-- version: 55 -->
|
||||
<!-- version: 56 -->
|
||||
|
||||
# Séquence des releases fonctionnelles KSP
|
||||
|
||||
@@ -428,6 +428,8 @@ Le solde d'un wallet constitue un premier cas de validation réseau obligatoire.
|
||||
|
||||
Le prompt [`../../prompts/011-V0_2_6_START_PROMPT.md`](../../prompts/011-V0_2_6_START_PROMPT.md), préparé par `0.2.5-pre.010`, impose un `pre.001` d'audit/sizing couvrant Config `std.wallet`/composite, inventory/path safety, lifecycle VIEW/OWNER, balance `getBalance`, bridge Tauri/TS-RS, sécurité password/export, logging et validation finale Tauri.
|
||||
|
||||
`0.2.6-pre.001` confirme que le registre Config doit être étendu pour `cfg.std.wallet`/`schema.std.wallet` et `cfg.composite.ksp-app-wallet-desk`; `wallets_directory` reste global avec fallback `${KSP_WALLETS_DIRECTORY:-wallets}` tandis qu'un profil `default` minimal préserve le contrat de résolution composite. Le gate retient une inventory non récursive `.kspwallet`, sans symlink, root-scoped, les handles VIEW/OWNER exclusivement côté Rust, une CSP Tauri explicite, `getBalance` via la Pubkey du handle autorisé et les flows OWNER metadata/rotations/revocation/export fichier déjà possédés par Wallet. Le scope tient dans `0.2.6` mais le forecast initial est regranularisé jusqu'à `pre.013`; le plan actif est `docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md`.
|
||||
|
||||
## `0.2.7` — WebSocket Solana standard
|
||||
|
||||
Mission : couvrir la surface WebSocket standard officielle ciblée.
|
||||
|
||||
1137
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md
Normal file
1137
docs/plans/013-V0_2_6_WALLET_DESK_PLAN.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user