From 0a8ce6e5f90f24186ce8bb42f3cdaa4ad2c25fe2 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sun, 13 Sep 2026 11:30:56 +0200 Subject: [PATCH] v0.3.15-pre.006 --- Cargo.toml | 4 +- .../Cargo.toml | 3 +- .../README.md | 22 +- .../USAGE.md | 48 ++- .../frontend/main.html | 42 +- .../frontend/ts/main.ts | 128 ++++-- .../src/app_state.rs | 37 +- .../src/bootstrap.rs | 12 +- .../src/constants.rs | 4 +- .../src/dto_route.rs | 155 +++++++- .../src/errors.rs | 5 +- .../src/lib.rs | 25 +- .../src/route_inventory.rs | 375 ++++++++++++++++++ .../src/tauri.rs | 19 +- .../tests/dependency_boundary.rs | 21 +- .../tests/desktop_contract.rs | 22 +- .../tests/desktop_security.rs | 20 +- .../tests/release_completeness.rs | 30 +- .../unit_tests/dto_route.rs | 35 +- .../unit_tests/route_inventory.rs | 112 ++++++ deltas/0.3.15/pre.006.md | 271 +++++++++++++ ...0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md | 14 +- ...032-V0_3_15_RAW_TRANSACTION_INGEST_DESK.md | 6 +- 23 files changed, 1298 insertions(+), 112 deletions(-) create mode 100644 crates/ksp-app-raw-transaction-ingest-desk/src/route_inventory.rs create mode 100644 crates/ksp-app-raw-transaction-ingest-desk/unit_tests/route_inventory.rs create mode 100644 deltas/0.3.15/pre.006.md diff --git a/Cargo.toml b/Cargo.toml index f76dedd..ac74b3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 601 +# version: 602 [workspace] resolver = "3" members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-raw-transaction-ingest-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"] [workspace.package] -version = "0.3.15-pre.5.fix.2" +version = "0.3.15-pre.6" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-raw-transaction-ingest-desk/Cargo.toml b/crates/ksp-app-raw-transaction-ingest-desk/Cargo.toml index 8ee90ca..c15530d 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/Cargo.toml +++ b/crates/ksp-app-raw-transaction-ingest-desk/Cargo.toml @@ -1,5 +1,5 @@ # file: crates/ksp-app-raw-transaction-ingest-desk/Cargo.toml -# version: 1 +# version: 2 [package] name = "ksp-app-raw-transaction-ingest-desk" @@ -27,6 +27,7 @@ fs2.workspace = true ksp-config-lib = { path = "../ksp-config-lib" } ksp-core-lib = { path = "../ksp-core-lib" } ksp-logging-lib = { path = "../ksp-logging-lib" } +ksp-onchain-transport-lib = { path = "../ksp-onchain-transport-lib" } serde = { workspace = true, features = ["derive"] } tauri.workspace = true tauri-plugin-tracing.workspace = true diff --git a/crates/ksp-app-raw-transaction-ingest-desk/README.md b/crates/ksp-app-raw-transaction-ingest-desk/README.md index a139715..85649ae 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/README.md +++ b/crates/ksp-app-raw-transaction-ingest-desk/README.md @@ -1,11 +1,11 @@ - + # `ksp-app-raw-transaction-ingest-desk` Application desktop Tauri KSP destinée à composer et superviser les routes live alimentant le Store commun en `RawTransaction`. -Le composant conserve les frontières KSP : Config possède les profils/endpoints/secrets, Transport les clients et sessions, Store la persistance et le Worker la logique d'ingestion. Le shell desktop ne doit jamais déplacer ces responsabilités vers le frontend. +Le composant conserve les frontières KSP : Config possède les profils/endpoints/secrets, Transport les clients et sessions, Store la persistance et le Worker la logique d'ingestion. Le shell desktop ne déplace jamais ces responsabilités vers le frontend. ## Package @@ -18,14 +18,18 @@ bin : ksp-app-raw-transaction-ingest-desk ## Frontières ```text -Config -> composite + Logging + ressources packagées -Desk -> route IDs/states statiques + Tauri + projections sûres -Transport / Store / Worker -> non construits dans cette tranche +Config -> composite, profils, secrets et résolution effective +Transport -> capabilities HTTP/WS/gRPC et ressources physiques +Desk -> catalogue logique, inventaire Config-only et projections sûres +Store -> persistance via la façade KSP +Worker -> acquisition continue et lifecycle d'exécution ``` -Le frontend ne reçoit aucune URL, credential, URI Store, source key ou payload `RawTransaction`. +L'inventaire de routes est calculé côté Rust à partir du composite Config validé et des settings Transport/Store résolus. Il ne lance aucun probe réseau et n'ouvre ni Store ni Worker. -## Routes V1 réservées +Le frontend ne reçoit aucune URL, credential, URI Store, metadata secrète, source key, handle runtime ou payload `RawTransaction`. + +## Routes V1 ```text yellowstone-hydrated @@ -35,7 +39,7 @@ helius-transaction-hydrated http-block-polling ``` -Leur présence dans l'interface n'est pas une preuve de composabilité : seule la projection backend issue de Config et des préconditions runtime peut déclarer une route disponible. +Une route `Configured` est uniquement **composable depuis Config**. La disponibilité réelle des connexions, du Store et du Worker est revalidée lors du Start avant qu'une route puisse devenir `Running`. ## Ports de développement @@ -50,4 +54,6 @@ Lancement : (cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev) ``` +Le cycle frontend est déclenché par Tauri via ses hooks configurés ; les scripts npm applicatifs ne sont pas lancés directement par l'opérateur. + Voir [`USAGE.md`](USAGE.md) et [`../../docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md`](../../docs/plans/036-V0_3_15_RAW_TRANSACTION_INGEST_DESK_PLAN.md). diff --git a/crates/ksp-app-raw-transaction-ingest-desk/USAGE.md b/crates/ksp-app-raw-transaction-ingest-desk/USAGE.md index 1fe9819..3fc4590 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/USAGE.md +++ b/crates/ksp-app-raw-transaction-ingest-desk/USAGE.md @@ -1,5 +1,5 @@ - + # Utilisation de `ksp-app-raw-transaction-ingest-desk` @@ -11,22 +11,56 @@ Depuis la racine du workspace : (cd crates/ksp-app-raw-transaction-ingest-desk && cargo tauri dev) ``` +Tauri déclenche lui-même les hooks frontend configurés. Les scripts npm applicatifs de développement, contrôle ou build ne sont pas lancés directement par l'opérateur. + Le runtime prépare les ressources Config nécessaires, charge le composite dédié, initialise Logging puis ouvre le shell desktop. ## 2. Vue Routes -La vue Routes présente les routes logiques connues par l'application et leur état applicatif. La présence d'un identifiant de route dans l'interface ne constitue pas, à elle seule, une preuve de composabilité ou de disponibilité runtime ; l'état projeté par le backend reste l'autorité. +La vue Routes charge un inventaire déterministe construit côté Rust depuis le composite Config validé. Le sélecteur présente les profils logiques du composite et la vue projette, pour chaque route V1 : -Les URLs, tokens, metadata secrètes, handles Transport/Store/Worker et payloads RAW restent backend-only. +```text +route_id +famille et label sûrs +réseau logique lorsque résolu +état Config +selectable oui/non +raison sûre lorsque la route est indisponible +génération d'inventaire +``` -## 3. Diagnostics +`Configured` signifie uniquement que toutes les requirements Config nécessaires à la route sont cohérentes. Aucun probe réseau, aucune ouverture de Store et aucun Worker ne sont déclenchés par l'inventaire. -La vue Diagnostics expose uniquement des informations techniques sûres nécessaires à l'exploitation du Desk, notamment l'identité de version, l'état du shell, la composition Config active, l'état Logging et les diagnostics projetés par codes/messages sûrs. +Un refresh reconstruit l'inventaire depuis Config et publie une nouvelle génération. La sélection visuelle d'un profil ne choisit aucune URL ou ressource physique et ne démarre aucune acquisition. + +Les URLs, tokens, metadata secrètes, handles Transport/Store/Worker, URI Store, source keys et payloads RAW restent backend-only. + +## 3. Raisons d'indisponibilité + +Les reasons exposées sont des codes applicatifs bornés, par exemple : + +```text +profile_unresolved +network_mismatch +missing_http_get_transaction +missing_http_block_scan +missing_ws_logs_capability +missing_ws_block_capability +missing_helius_transaction_capability +missing_yellowstone_grpc +missing_required_secret +``` + +Le texte arbitraire d'une erreur provider ou d'un secret Config n'est jamais projeté dans l'inventaire. + +## 4. Diagnostics + +La vue Diagnostics expose uniquement des informations techniques sûres nécessaires à l'exploitation du Desk, notamment l'identité de version, l'état du shell, la composition Config bootstrap, l'état Logging et la génération d'inventaire. Les diagnostics ne doivent pas exposer de credentials, d'URI Store, d'URL d'endpoint, de source key, de handle runtime ou de payload `RawTransaction`. -## 4. Runtime packagé +## 5. Runtime packagé Le build Tauri embarque les documents Config et schemas enregistrés. `ksp-config-lib` prépare ensuite la racine KSP user-writable sans embarquer `.env`. -Les fichiers Config et les secrets restent administrés par les mécanismes Config KSP ; l'interface ne doit pas contourner cette ownership. +Les fichiers Config et les secrets restent administrés par les mécanismes Config KSP ; l'interface ne contourne pas cette ownership. diff --git a/crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html b/crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html index 5f5583a..308d2fe 100644 --- a/crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html +++ b/crates/ksp-app-raw-transaction-ingest-desk/frontend/main.html @@ -1,5 +1,5 @@ - + @@ -21,7 +21,10 @@ Routes - scaffold +
+ + inventory +
@@ -48,29 +51,38 @@

Routes live

-

Fondation statique V1 ; la composabilité Config sera matérialisée en pre.006.

+

Inventaire déterministe depuis Config, sans probe réseau ni démarrage de Worker.

-
-
- Aucun Worker n'est démarré par ce scaffold. Les cinq IDs ci-dessous ne constituent aucune preuve de disponibilité runtime. -
-
-
-
États réservés
-
-
+
+
+ + +
+
+
Réseau
+
+
+
+
Génération
+
+
+ Configured signifie uniquement que Config prouve la composabilité. Les connexions, le Store et le Worker seront revalidés au Start dans les tranches suivantes. +
+
Profil affiché :
+