Files
2026-09-02 11:00:20 +02:00

5.9 KiB

Delta 0.3.7-pre.004 — Transport readiness de Backfill Desk

1. Base requise

0.3.7-pre.003-fix.001
workspace.package.version = 0.3.7-pre.3.fix.1

Le replay opérateur de pre.003-fix.001 est propre : audits Rust/Markdown, cargo check --workspace, Clippy, suites Config/Config Desk/Wallet Desk/SOL Prices Desk/Backfill Desk et arbres de dépendances Backfill Desk ne rapportent plus d'échec.

2. Objectif

Ouvrir uniquement la readiness HTTP Transport de Backfill Desk : résoudre le profil Transport sélectionné par le composite, construire HttpTransportPool, dériver des métadonnées réseau/rôle sûres, vérifier que chaque rôle exposé sait router getSignaturesForAddress et getTransaction, puis offrir cette readiness via IPC sans ouvrir Store ni Job Backfill.

3. Implémentation

  • ajouter la dépendance backend ksp-onchain-transport-lib à ksp-app-backfill-desk ;
  • créer transport_runtime.rs, propriétaire du pool HTTP et de la dérivation de readiness ;
  • collecter uniquement les labels de cluster des endpoints HTTP activés, sans URL ni provider ;
  • dédupliquer les rôles logiques à partir des snapshots sûrs Transport ;
  • ne conserver comme rôles compatibles que ceux pour lesquels select_for_method() réussit sur getSignaturesForAddress et getTransaction ;
  • considérer Transport ready uniquement avec un réseau distinct, au moins un rôle compatible et au moins un endpoint actuellement disponible ;
  • conserver le shell ouvrable lorsqu'une erreur Config/Transport empêche la construction du pool, en projetant uniquement un CommandErrorDto sûr ;
  • introduire BackfillDeskOptionsDto comme sous-contrat Transport du futur DTO complet et centraliser la commande Tauri backfill_options ;
  • maintenir les capabilities Tauri à core:default + tracing:default et le niveau de développement Backfill à supertrace / fallback trace.

Le DTO complet avec commitments, scopes et bornes reste réservé à pre.006. pre.004 n'ajoute aucune dépendance Store ou Job.

4. Version

Cette tranche modifie du code/runtime et ajoute une dépendance fonctionnelle. Conformément à VER-ID-009 :

workspace.package.version = 0.3.7-pre.4
label = 0.3.7-pre.004

5. Fichiers ajoutés

crates/ksp-app-backfill-desk/src/transport_runtime.rs
crates/ksp-app-backfill-desk/unit_tests/transport_runtime.rs
deltas/0.3.7/pre.004.md

6. Fichiers modifiés

Cargo.toml
crates/ksp-app-backfill-desk/Cargo.toml
crates/ksp-app-backfill-desk/src/app_state.rs
crates/ksp-app-backfill-desk/src/constants.rs
crates/ksp-app-backfill-desk/src/dto_common.rs
crates/ksp-app-backfill-desk/src/errors.rs
crates/ksp-app-backfill-desk/src/lib.rs
crates/ksp-app-backfill-desk/src/tauri.rs
crates/ksp-app-backfill-desk/tests/config_composition.rs
crates/ksp-app-backfill-desk/tests/desktop_contract.rs
crates/ksp-app-backfill-desk/tests/desktop_security.rs
crates/ksp-app-backfill-desk/unit_tests/dto_common.rs
docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md
docs/validation/024-V0_3_7_BACKFILL_DESK.md

7. Fichiers supprimés

Aucun.

8. Invariants conservés

  • Config reste l'unique propriétaire du choix de profil et des secrets/URLs physiques ;
  • Transport reste propriétaire du pool, du routage, retry, pacing, rate-limit et choix physique d'endpoint ;
  • aucun provider, URL, endpoint physique ou credential n'est sérialisé dans BackfillDeskOptionsDto ;
  • aucun rôle history_backfill n'est hardcodé ; les rôles proviennent des snapshots Transport ;
  • aucune dépendance ksp-store-lib, ksp-store-api, ksp-store-postgres-lib ou ksp-job-backfill-lib n'est ouverte ;
  • aucun Store::open, BackfillRequest, BackfillJobRuntime ou checkpoint n'est introduit ;
  • le frontend garde son gabarit, ses dependencies et son instrumentation de clics/tabs inchangés ;
  • le tracing de développement reste supertrace via Config devnet et trace en fallback Backfill Desk.

9. Validations exécutées dans l'environnement d'assemblage

python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.7

Contrôles ciblés supplémentaires :

  • parse du manifeste Cargo modifié ;
  • vérification de la frontière de dépendances Backfill Desk ;
  • vérification du composite devnet -> devnet_public ;
  • vérification que devnet_public, mainnet_public et publicnode_testnet utilisent chacun un cluster unique et le rôle logique default wildcard ;
  • vérification que le DTO Transport ne projette aucun champ provider/URL/credential ;
  • vérification que les capabilities Tauri restent inchangées.

10. Validations non exécutées dans l'environnement d'assemblage

cargo et rustfmt ne sont pas disponibles dans cet environnement. Le gate opérateur pre.004 reste à exécuter :

cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas/0.3.7
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-app-backfill-desk
cargo tree -p ksp-app-backfill-desk --edges normal
cargo tree -p ksp-app-backfill-desk -e features

11. Décisions

BackfillDeskOptionsDto est introduit progressivement : pre.004 possède uniquement la readiness Transport ; pre.005 ajoutera la cohérence Store/réseau et pre.006 ajoutera les paramètres de campagne. Cette progression évite d'ajouter ksp-job-backfill-lib avant sa tranche dédiée.

La construction Transport ne rend pas le shell inutilisable lorsqu'elle échoue. L'AppState conserve alors seulement un diagnostic applicatif sûr et backfill_options retourne transport_ready = false. Une composition HTTP multi-cluster est également non-ready afin de préparer la vérification stricte Store/Transport de pre.005.

12. Questions ouvertes

Aucune.