124 lines
5.9 KiB
Markdown
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.
|