v0.3.7-pre.008

This commit is contained in:
2026-09-02 16:56:11 +02:00
parent 6e406a6b84
commit 48d26b43f9
19 changed files with 693 additions and 30 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/028-V0_3_7_BACKFILL_DESK_PLAN.md -->
<!-- version: 7 -->
<!-- version: 8 -->
# Plan v0.3.7 — Backfill Desk
@@ -265,7 +265,7 @@ Le mapping Rust dérive le réseau du Store configuré, revalide `http_role` con
### pre.008 — runtime + Start
Single-active-run state, construction `BackfillJobRuntime`, spawn non bloquant, handle installé avant exécution, admission atomique et snapshot initial/terminal.
Ouvrir le Start réel en réutilisant strictement le mapping `pre.007` : JobId généré côté backend, état single-active-run, construction `BackfillJobRuntime`, handle installé atomiquement avant tout spawn, puis exécution non bloquante sur le pool HTTP courant et le Store déjà ouvert. Le Store est temporairement prêté au run puis remis dans le slot applicatif après terminal ; aucune dépendance backend Store supplémentaire n'est ouverte. La réponse Start reste minimale (`job_id`, état initial) et aucun snapshot détaillé n'est encore projeté. La fermeture pendant un run reste une limite transitoire jusqu'au couloir Cancel/races de `pre.010`.
### pre.009 — monitoring latest-value
@@ -281,7 +281,7 @@ Projection sûre, conservation Rust-only du checkpoint, reprise in-session et in
### pre.012 — frontend fonctionnel et polish
Formulaire complet, états responsive, instrumentation sûre, summary terminal, erreurs, boutons contextuels, aucun secret/browser storage.
Formulaire complet, états responsive, instrumentation sûre, summary terminal, erreurs, boutons contextuels, aucun secret/browser storage. L'adresse reste une saisie libre, mais reçoit un autocomplete HTML via `datalist` alimenté depuis le registre canonique `ksp-core-lib::entries()`/`ProgramIdEntry` : aucune copie locale de Program IDs, et une valeur arbitraire valide reste toujours acceptée. Le comportement fonctionnel recherché est celui de l'ancien dataset `ks-program-ids` de kbot3, sans reprise de son code.
### pre.013 — hardening et complétude

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/024-V0_3_7_BACKFILL_DESK.md -->
<!-- version: 10 -->
<!-- version: 11 -->
# Validation v0.3.7 — Backfill Desk
@@ -340,4 +340,27 @@ Le correctif renomme uniquement cette variable locale en `request_job_id`. Aucun
- [X] aucun fichier fonctionnel de `pre.007` modifié ;
- [X] version Cargo synchronisée en `0.3.7-pre.7.fix.1` conformément à `VER-ID-007` et `VER-ID-010` ;
- [X] audits statiques Rust/Markdown rejoués dans l'environnement d'assemblage ;
- [ ] replay opérateur `cargo fmt/check/clippy/test` du fix à exécuter avant `pre.008`.
- [X] replay opérateur `cargo fmt/check/clippy/test` du fix propre : audits, check, Clippy, `ksp-job-backfill-lib` et toutes les suites Backfill Desk passent.
## 17. `pre.008` — runtime et Start réel
Le replay opérateur de `pre.007-fix.001` est acquis. `pre.008` ouvre l'exécution réelle sans modifier le contrat de requête : `backfill_start` réutilise `map_backfill_request`, génère le `JobId` côté backend, construit `BackfillJobRuntime`, capture son `BackfillJobHandle` puis installe ce handle dans un slot single-active-run avant le spawn Tauri. Un second Start est rejeté par `backfill_run_active`.
Le pool HTTP est clonable et reste possédé par Transport. Le Store backend-neutre, non clonable, est temporairement retiré de son slot applicatif pour être déplacé dans le task du run ; après terminal, il est restauré avant libération du slot actif. La réponse IPC Start contient uniquement `job_id` et l'état initial `created`. Le monitoring détaillé, les événements latest-value et la projection terminale restent réservés à `pre.009`. Cancel et la fermeture coopérative d'un run actif restent réservés à `pre.010`.
La note UX ajoutée pendant cette tranche est reportée à `pre.012` : l'input adresse restera libre mais utilisera un `datalist` HTML construit depuis le registre canonique `ksp-core-lib::entries()`/`ProgramIdEntry`, sur le principe fonctionnel de l'ancien `ks-program-ids` de kbot3 sans en reprendre le code.
### Gate statique local `pre.008`
- [X] `BackfillJobRuntime::new` est appelé uniquement après le mapping autoritaire `pre.007` ;
- [X] `BackfillJobHandle` est obtenu et installé dans le slot actif avant `tauri::async_runtime::spawn` ;
- [X] admission single-run atomique avec erreur stable `backfill_run_active` ;
- [X] JobId généré côté backend, jamais reçu du frontend ;
- [X] pool HTTP cloné depuis `TransportRuntime`, sans URL/provider physique supplémentaire ;
- [X] Store temporairement prêté au run puis restauré après terminal ;
- [X] `BackfillStartResponseDto` limité à `job_id` + état initial ;
- [X] frontend conserve le bouton de validation et ajoute un bouton Start distinct, activé seulement si `composition_ready` ;
- [X] aucune adresse, signature, ancre ou `min_context_slot` ajoutée aux logs Start ;
- [X] capabilities Tauri inchangées : `core:default + tracing:default` ;
- [X] audits statiques Rust/Markdown propres dans l'environnement d'assemblage ;
- [ ] `cargo fmt/check/clippy/test` de `pre.008` à rejouer par l'opérateur ; `cargo`/`rustfmt` restent absents du sandbox.