v0.3.7-pre.004

This commit is contained in:
2026-09-02 11:00:20 +02:00
parent 03a94f4fb6
commit 46a4ad7487
17 changed files with 630 additions and 60 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/024-V0_3_7_BACKFILL_DESK.md -->
<!-- version: 4 -->
<!-- version: 5 -->
# Validation v0.3.7 — Backfill Desk
@@ -92,11 +92,11 @@ Le journal opérateur fourni rapporte `cargo clean`, `cargo fmt`, audits Rust/Ma
## 8. Gates futures
- [ ] Package Rust lib + bin conforme.
- [ ] Ports Vite/HMR 1436/1437 stricts.
- [ ] Splash/main + tracing conformes.
- [X] Package Rust lib + bin conforme.
- [X] Ports Vite/HMR 1436/1437 stricts.
- [X] Splash/main + tracing conformes.
- [X] Composite Backfill Desk packagé et valide.
- [ ] Transport readiness et role inventory sûrs.
- [X] Transport readiness et role inventory sûrs.
- [ ] Store readiness et cohérence réseau.
- [ ] Quatre scopes + commitments + bornes mappés.
- [ ] Single active run + Start.
@@ -196,5 +196,31 @@ cargo test -p ksp-app-backfill-desk FAIL — canari Ca
### Gate du fix
- [X] audits statiques Rust/Markdown rejoués dans l'environnement d'assemblage ;
- [ ] `cargo fmt --all`, `cargo check --workspace`, Clippy et suites Cargo à rejouer par l'opérateur ; `cargo`/`rustfmt` restent absents du sandbox.
- [X] replay opérateur du 2026-09-02 : audits Rust/Markdown propres, `cargo check --workspace` propre, Clippy propre ;
- [X] `cargo test -p ksp-config-lib` : 128 tests unitaires + suites ownership/public API, aucun échec ;
- [X] `cargo test -p ksp-app-config-desk` : 63 tests unitaires + desktop/security/public API, aucun échec ;
- [X] `cargo test -p ksp-app-wallet-desk` et `cargo test -p ksp-app-solprices-desk` : suites ciblées propres ;
- [X] `cargo test -p ksp-app-backfill-desk` : 13 unitaires + 2 composition + 7 desktop contract + 5 desktop security + 1 public API, aucun échec ;
- [X] arbres `cargo tree` Backfill Desk exécutés sans anomalie rapportée.
## 12. `pre.004` — Transport readiness
Backfill Desk dépend désormais directement de `ksp-onchain-transport-lib` au niveau backend uniquement. `initialize_transport()` résout le profil Transport déjà sélectionné par le composite, construit `HttpTransportPool`, dérive les clusters HTTP activés et déduplique les rôles logiques à partir des snapshots sûrs. Chaque rôle candidat doit réussir `select_for_method()` pour `getSignaturesForAddress` **et** `getTransaction` avant d'être exposé comme compatible.
Le sous-contrat `BackfillDeskOptionsDto` expose uniquement : réseaux configurés, rôles compatibles, readiness Transport et diagnostic applicatif sûr. Il ne contient ni provider, URL, endpoint physique, token, checkpoint, payload RAW ou objet Transport. La commande Tauri `backfill_options` est centralisée dans `tauri.rs`. Les scopes, commitments et bornes restent hors de cette tranche et seront ajoutés en `pre.006`.
Une seule network distincte et au moins un rôle compatible sont requis pour `transport_ready = true`. Une erreur Config/Transport n'empêche pas le shell de démarrer : elle produit une options projection non-ready avec `CommandErrorDto`, tandis que le pool n'est pas conservé. La cohérence avec le réseau Store reste explicitement réservée à `pre.005`.
### Gate statique local `pre.004`
- [X] dépendance `ksp-onchain-transport-lib` ajoutée à Backfill Desk ;
- [X] aucune dépendance `ksp-store-lib`, `ksp-store-api`, `ksp-store-postgres-lib` ou `ksp-job-backfill-lib` ajoutée ;
- [X] `HttpTransportPool` construit uniquement dans `transport_runtime.rs`, pas dans le bootstrap Config/Logging ;
- [X] inventaire des clusters dérivé sans URL/provider ;
- [X] rôles candidats dédupliqués et vérifiés sur les deux RPC requis ;
- [X] le profil standard `devnet_public` possède un unique cluster `devnet` et le rôle wildcard `default` ;
- [X] capabilities Tauri inchangées : `core:default + tracing:default` ;
- [X] tracing de développement Backfill inchangé : Config `supertrace`, fallback `trace` ;
- [X] audit Rust workspace local propre, zéro candidat d'export ;
- [ ] `cargo fmt/check/clippy/test` de `pre.004` à rejouer par l'opérateur ; `cargo`/`rustfmt` restent absents du sandbox.