Files
2026-09-02 16:07:57 +02:00

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_address et explicit_signatures ;
  • parse l'adresse et les signatures dans les types propriétaires ;
  • convertit les bornes u32 vers usize ;
  • 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_slot dans 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.