v0.3.7-pre.003

This commit is contained in:
2026-09-02 10:05:36 +02:00
parent bc7ccd97a5
commit 862f40ad26
27 changed files with 673 additions and 76 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Plan v0.3.7 — Backfill Desk
@@ -148,7 +148,7 @@ Au bootstrap, l'application charge le composite, résout Logging/Transport/Store
Les rôles présentés à l'UI sont dérivés des snapshots/settings Transport, dédupliqués, puis validés côté Rust comme capables de sélectionner à la fois `getSignaturesForAddress` et `getTransaction`. Le rôle `default` est actuellement le seul rôle des profils standard, mais il n'est pas codé en dur comme contrat du Desk.
Les resources bundle minimales sont le composite Backfill Desk, `std.logging.json`, `std.transport.json`, `std.store.json` et leurs schemas, plus `composite.schema.json`. Les documents Wallet/offchain ne sont pas embarqués sans besoin démontré.
Le packaging Config suit le contrat atomique déjà détenu par `ksp-config-lib::prepare_packaged_runtime()` : il traverse l'intégralité de `ConfigFileRegistry::defaults()`. L'ajout du composite Backfill Desk fait donc passer le registre de 13 à 14 descriptors et impose que les quatre applications Desk qui utilisent ce packaging embarquent les 14 resources Config/schema du registre. Backfill Desk embarque ainsi également les documents Wallet/offchain sans les consommer au runtime ; leur présence satisfait le contrat de packaging partagé et n'ouvre aucune dépendance, permission frontend ou responsabilité métier supplémentaire.
## 8. Dependency map
@@ -235,7 +235,7 @@ Créer package lib+bin, shell/splash/tracing/capability, frontend minimal, ports
### pre.003 — Config composite et packaging
Ajouter composite Backfill Desk, resources minimales, bootstrap Config/Logging et canaries packaging/composition sans encore ouvrir réseau/Store réel.
Ajouter le composite Backfill Desk et l'enregistrer dans Config, mettre à jour atomiquement les quatre bundles Desk vers les 14 resources du registre, puis brancher le bootstrap Config/Logging et ses canaries sans encore ouvrir Transport/Store réel. Pendant le développement de l'application, `devnet` sélectionne le profil Logging `supertrace` et le fallback local Backfill Desk reste au niveau `trace`; ce choix est local au Desk et devra être resserré avant publication stable.
### pre.004 — Transport readiness

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/024-V0_3_7_BACKFILL_DESK.md -->
<!-- version: 2 -->
<!-- version: 3 -->
# Validation v0.3.7 — Backfill Desk
@@ -95,7 +95,7 @@ Le journal opérateur fourni rapporte `cargo clean`, `cargo fmt`, audits Rust/Ma
- [ ] Package Rust lib + bin conforme.
- [ ] Ports Vite/HMR 1436/1437 stricts.
- [ ] Splash/main + tracing conformes.
- [ ] Composite Backfill Desk packagé et valide.
- [X] Composite Backfill Desk packagé et valide.
- [ ] Transport readiness et role inventory sûrs.
- [ ] Store readiness et cohérence réseau.
- [ ] Quatre scopes + commitments + bornes mappés.
@@ -135,3 +135,33 @@ Contraintes de gabarit vérifiées statiquement : mêmes assets splash/logo/DOS
- [ ] typecheck npm complet / build Tauri : non exécutés dans le sandbox.
Le contrôle TypeScript local est syntaxique avec le compilateur global disponible ; il ne remplace pas le typecheck complet avec dépendances npm et bindings TS-RS générés. Toute correction révélée par le gate opérateur reste dans la lane `pre.002-fix.NNN`.
## 10. pre.003 — composite Config et packaging
Le composite `cfg.composite.ksp-app-backfill-desk` est enregistré dans `ksp-config-lib` avec `devnet` par défaut. Il sélectionne `supertrace + devnet_public + devnet`, tandis que `mainnet` et `testnet` conservent des couples Transport/Store cohérents. Le bootstrap Backfill Desk valide les trois composants requis mais ne résout encore que Logging : aucun `HttpTransportPool`, `Store::open`, `BackfillRequest` ou `BackfillJobRuntime` n'est ouvert dans cette tranche.
Le niveau de développement est volontairement verbeux pour cette application : `devnet` utilise `supertrace`, et le fallback Logging propre à Backfill Desk utilise `LogFilterLevel::Trace`. Les autres applications Desk ne changent pas de profil Logging.
La découverte du contrat réel de `prepare_packaged_runtime()` a réconcilié le plan : la fonction traverse tout `ConfigFileRegistry::defaults()`. Le registre compte désormais 14 descriptors, de sorte que Config Desk, Wallet Desk, SOL Prices Desk et Backfill Desk embarquent toutes les 14 resources Config/schema. Les documents Wallet/offchain présents dans le bundle Backfill ne sont pas consommés par son runtime et n'élargissent ni ses capabilities ni ses dépendances Rust.
### Gate pre.002 opérateur acquis
- [X] audits Rust et Markdown propres ;
- [X] `cargo check --workspace` propre ;
- [X] `cargo clippy --workspace --all-targets` propre ;
- [X] `cargo test -p ksp-app-backfill-desk` : 12 unitaires + 5 desktop contract + 4 desktop security + 1 public API, aucun échec.
### Gate statique local pre.003
- [X] composite Backfill Desk ajouté au source Config et aux fixtures Config ;
- [X] registre Config porté à 14 descriptors avec exports publics associés ;
- [X] profils `devnet/mainnet/testnet` et références Logging/Transport/Store couplés conformément au plan ;
- [X] les quatre `tauri.conf.json` Desk embarquent le registre Config complet de 14 resources ;
- [X] release packaging Backfill Desk appelle `prepare_packaged_runtime()` avant l'initialisation applicative ;
- [X] bootstrap Backfill valide Logging/Transport/Store puis ne résout que Logging ;
- [X] niveau de développement Backfill Desk verrouillé à `supertrace` via Config et `trace` en fallback ;
- [X] aucune dépendance `ksp-job-backfill-lib`, `ksp-onchain-transport-lib`, `ksp-store-lib` ou backend Store ajoutée au manifeste Backfill Desk ;
- [X] audit Rust workspace propre, zéro candidat d'export ;
- [X] audit Markdown propre : 270 tableaux / 150 fichiers ;
- [X] parsing JSON/TOML, validation JSON Schema et audit structurel Config/package propres ;
- [ ] `cargo fmt/check/clippy/test` pre.003 : à exécuter par l'opérateur, `cargo`/`rustfmt` absents du sandbox.