Files
khadhroony-solana-project/deltas/0.3.7/pre.004.md
2026-09-02 11:00:20 +02:00

124 lines
5.9 KiB
Markdown

<!-- file: deltas/0.3.7/pre.004.md -->
<!-- version: 1 -->
# Delta `0.3.7-pre.004` — Transport readiness de Backfill Desk
## 1. Base requise
```text
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` :
```text
workspace.package.version = 0.3.7-pre.4
label = 0.3.7-pre.004
```
## 5. Fichiers ajoutés
```text
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
```text
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
```text
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 :
```text
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.