Files
2026-09-02 17:40:03 +02:00

4.7 KiB

Delta 0.3.7-pre.009 — monitoring latest-value Backfill Desk

1. Base requise

0.3.7-pre.008-fix.003
workspace.package.version = 0.3.7-pre.8.fix.3

2. Objectif

Projeter le flux latest-value déjà fourni par ksp-job-backfill-lib vers Backfill Desk, avec événement coalescé et commande de resynchronisation, sans parser les logs et sans encore ouvrir Cancel ou Resume.

3. Bridge latest-value

BackfillRunLaunch conserve une BackfillSnapshotSource indépendante du runtime exécuté. Le command handler démarre un task de monitoring qui lit la valeur complète courante puis attend JobSnapshotSource::wait_for_change; les updates intermédiaires peuvent être coalescées par le contrat Job et chaque notification frontend reste une valeur complète.

L'événement Tauri est ksp-backfill-status. Aucun event bus générique, queue métier ou parsing des logs n'est introduit.

4. Resynchronisation et terminal retenu

BackfillRunState conserve le handle pendant l'activité et retient la dernière JobNotification<BackfillJobSnapshot> terminale avant de libérer le slot single-run. backfill_status retourne la notification active courante ou ce dernier terminal retenu. L'UI peut ainsi se recaler au démarrage, après Start ou sur demande manuelle même si elle a manqué un événement.

5. DTO de statut sûr

BackfillRunStatusDto expose uniquement :

active / terminal
job_id / job_kind
sequence (texte décimal)
state / completion / phase / scope_kind / discovery_boundary
candidates_selected / candidates_admitted / candidates_finished
entities_inserted / entities_existing / entities_purged
observations_inserted / observations_existing
missing / conflicts / cancelled_candidates / holes
maximum_in_flight / contiguous_completed
checkpoint_present
failure_domain / failure_code

Aucune adresse, signature, ancre, URL/endpoint/provider, credential, payload RAW, contexte d'erreur ou valeur de checkpoint ne traverse cette surface.

6. Frontend

Le frontend installe le listener ksp-backfill-status, resynchronise via backfill_status, affiche le snapshot complet dans une carte dédiée et offre une action Resynchroniser. Le bouton Start reste verrouillé tant que le statut est actif et est réactivé sur terminal.

Cancel, état cancelling piloté par l'opérateur et shutdown coopératif restent réservés à pre.010.

7. Version

workspace.package.version = 0.3.7-pre.9
label = 0.3.7-pre.009

8. Fichiers ajoutés

crates/ksp-app-backfill-desk/src/backfill_status.rs
crates/ksp-app-backfill-desk/unit_tests/backfill_status.rs
deltas/0.3.7/pre.009.md

9. Fichiers modifiés

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/backfill_run.rs
crates/ksp-app-backfill-desk/src/lib.rs
crates/ksp-app-backfill-desk/src/tauri.rs
crates/ksp-app-backfill-desk/tests/desktop_contract.rs
crates/ksp-app-backfill-desk/tests/desktop_security.rs
docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md
docs/validation/024-V0_3_7_BACKFILL_DESK.md

10. Fichiers supprimés

Aucun.

11. Gate précédent acquis

Le replay opérateur de 0.3.7-pre.008-fix.003 est intégralement propre : audits Rust/Markdown, cargo check --workspace, Clippy, ksp-job-backfill-lib et toutes les suites Backfill Desk passent.

12. 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 ;
  • source latest-value et wait_for_change présents, sans log parsing ;
  • terminal retenu + commande de resynchronisation ;
  • DTO de monitoring sans payload métier/checkpoint concret ;
  • capabilities et dépendances inchangées ;
  • contrôle différentiel strict et reconstruction par application du delta.

13. 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.010 :

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

14. Suite

pre.010 ajoutera Cancel, état cancelling, fermeture coopérative et races Start/Cancel/terminal.