5.5 KiB
Delta 0.3.7-pre.007 — DTO et mapping de requête Backfill
1. Base requise
0.3.7-pre.006-fix.001
workspace.package.version = 0.3.7-pre.6.fix.1
2. Objectif
Ouvrir le contrat Job Backfill dans la Desk uniquement pour construire, valider et prévisualiser une requête de campagne HTTP, sans créer ni démarrer de BackfillJobRuntime.
3. Contrat applicatif
Backfill Desk dépend désormais directement de ksp-job-api et ksp-job-backfill-lib. Le frontend reçoit les quatre scopes HTTP V1, les deux commitments, les maxima publics Job et des defaults applicatifs bornés.
BackfillStartRequestDto reste possédé par l'application et ne contient ni réseau, provider, endpoint, URL, credential, checkpoint ou JobId. Le réseau est dérivé du Store composé ; http_role est revalidé contre l'inventaire sûr BackfillDeskOptionsDto::http_routes avant construction du contrat Job.
min_context_slot traverse IPC sous forme de texte décimal et est parsé en u64 côté Rust afin d'éviter toute perte de précision JavaScript.
4. Mapping autoritaire
Le mapping Rust :
- valide la readiness Transport + Store et leur cohérence réseau ;
- mappe explicitement
finalized/confirmed; - mappe explicitement
latest_address,before_address,after_addressetexplicit_signatures; - parse l'adresse et les signatures dans les types propriétaires ;
- convertit les bornes
u32versusize; - délègue la validation finale à
ksp-job-backfill-lib::BackfillRequest::new; - n'ouvre aucun runtime Job.
La commande Tauri backfill_validate_request utilise exactement ce mapping avec un JobId interne réservé à la validation, puis renvoie une BackfillRequestPreviewDto sûre. La preview expose réseau/rôle/commitment/scope/bornes, mais réduit adresse, ancre, min_context_slot et signatures à des booléens ou comptages.
5. Frontend
Le formulaire Backfill expose :
- route HTTP logique ;
- scope ;
- commitment ;
- adresse et ancre selon le scope ;
- signatures explicites ;
- page size ;
- max pages ;
- max candidates ;
- hydration concurrency ;
min_context_slot.
Le bouton reste Valider la requête. Aucun Start, Cancel, Resume ou checkpoint n'est ouvert dans cette tranche. Les logs frontend ne contiennent aucune adresse, signature, ancre ou valeur de min_context_slot.
6. Version
workspace.package.version = 0.3.7-pre.7
label = 0.3.7-pre.007
7. Fichiers ajoutés
crates/ksp-app-backfill-desk/src/backfill_request.rs
crates/ksp-app-backfill-desk/src/dto_backfill.rs
crates/ksp-app-backfill-desk/unit_tests/backfill_request.rs
crates/ksp-app-backfill-desk/unit_tests/dto_backfill.rs
deltas/0.3.7/pre.007.md
8. Fichiers modifiés
Cargo.toml
crates/ksp-app-backfill-desk/Cargo.toml
crates/ksp-app-backfill-desk/frontend/main.html
crates/ksp-app-backfill-desk/frontend/ts/main.ts
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/src/transport_runtime.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
9. Fichiers supprimés
Aucun.
10. Gate précédent acquis
Le replay opérateur de 0.3.7-pre.006-fix.001 est propre : audits Rust/Markdown, cargo check --workspace, Clippy, ksp-config-lib, Backfill Desk et arbres Cargo passent sans anomalie rapportée.
11. 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 :
- syntaxe TypeScript par transpilation locale ;
- cohérence des headers/version des fichiers modifiés ;
- présence des quatre scopes et deux commitments à partir des contrats Job publics ;
- absence de réseau/provider/URL/endpoint/JobId dans le DTO frontend ;
- absence de
BackfillJobRuntime, Start, Cancel, Resume et checkpoint dans le runtime de cette tranche ; - absence de valeur d'adresse/signature/ancre/
min_context_slotdans la preview et les logs frontend ; - dépendances directes limitées aux façades/API prévues ;
- contrôle différentiel et reconstruction par application du delta.
12. Validations non exécutées dans l'environnement d'assemblage
cargo et rustfmt ne sont pas disponibles dans l'environnement d'assemblage. Gate opérateur obligatoire avant pre.008 :
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-job-backfill-lib
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
13. Suite
pre.008 ouvrira le runtime et Start : état single-active-run, construction BackfillJobRuntime, admission atomique, spawn non bloquant et handle installé avant exécution. Le choix HTTP pool/provider et le mapping BackfillRequest de pre.007 restent les entrées autoritaires.