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 surgetSignaturesForAddressetgetTransaction; - 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
CommandErrorDtosûr ; - introduire
BackfillDeskOptionsDtocomme sous-contrat Transport du futur DTO complet et centraliser la commande Tauribackfill_options; - maintenir les capabilities Tauri à
core:default + tracing:defaultet le niveau de développement Backfill àsupertrace/ fallbacktrace.
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_backfilln'est hardcodé ; les rôles proviennent des snapshots Transport ; - aucune dépendance
ksp-store-lib,ksp-store-api,ksp-store-postgres-libouksp-job-backfill-libn'est ouverte ; - aucun
Store::open,BackfillRequest,BackfillJobRuntimeou 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
supertracevia Config devnet ettraceen 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_publicetpublicnode_testnetutilisent chacun un cluster unique et le rôle logiquedefaultwildcard ; - 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.