Files
khadhroony-solana-project/deltas/0.3.7/pre.009.md
2026-09-02 17:40:03 +02:00

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.