125 lines
4.7 KiB
Markdown
125 lines
4.7 KiB
Markdown
<!-- file: deltas/0.3.7/pre.009.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.3.7-pre.009` — monitoring latest-value Backfill Desk
|
|
|
|
## 1. Base requise
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
workspace.package.version = 0.3.7-pre.9
|
|
label = 0.3.7-pre.009
|
|
```
|
|
|
|
## 8. Fichiers ajoutés
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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
|
|
|
|
```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 :
|
|
|
|
- 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` :
|
|
|
|
```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-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.
|