v0.3.7-pre.008
This commit is contained in:
130
deltas/0.3.7/pre.008.md
Normal file
130
deltas/0.3.7/pre.008.md
Normal file
@@ -0,0 +1,130 @@
|
||||
<!-- file: deltas/0.3.7/pre.008.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.7-pre.008` — runtime et Start réel Backfill
|
||||
|
||||
## 1. Base requise
|
||||
|
||||
```text
|
||||
0.3.7-pre.007-fix.001
|
||||
workspace.package.version = 0.3.7-pre.7.fix.1
|
||||
```
|
||||
|
||||
## 2. Objectif
|
||||
|
||||
Ouvrir l'exécution réelle d'une campagne Backfill HTTP à partir du contrat strictement validé en `pre.007`, avec un seul run actif, handle installé avant spawn et réponse Start minimale, sans encore ouvrir le monitoring latest-value, Cancel ou Resume.
|
||||
|
||||
## 3. Admission single-run
|
||||
|
||||
Le `JobId` est généré exclusivement côté backend sous la forme bornée `backfill-desk-<sequence>`. Le frontend ne fournit aucune identité Job.
|
||||
|
||||
`BackfillRunState` retient un unique `BackfillJobHandle` et refuse tout second Start via l'erreur stable `backfill_run_active`. `BackfillJobRuntime::handle()` est obtenu puis installé dans ce slot avant que le command handler ne lance `tauri::async_runtime::spawn`.
|
||||
|
||||
Le Start réutilise `map_backfill_request()` sans divergence : réseau dérivé du Store, rôle HTTP revalidé et bornes/scope/commitment validés par `BackfillRequest::new` restent les seules entrées autoritaires.
|
||||
|
||||
## 4. Ressources d'exécution
|
||||
|
||||
`HttpTransportPool` est cloné depuis `TransportRuntime` et conserve toute la topologie provider/URL/retry dans `ksp-onchain-transport-lib`.
|
||||
|
||||
Le `Store` backend-neutre n'est pas clonable. Backfill Desk le retire temporairement de son slot Rust, le déplace dans le task du run et le restaure après le résultat terminal avant de libérer le slot single-run. Aucune dépendance directe `ksp-store-api`, PostgreSQL, `reqwest`, `tonic` ou Yellowstone n'est ajoutée.
|
||||
|
||||
La fermeture de l'application pendant un run actif reste une limite transitoire : le couloir `pre.010` ajoutera la demande d'annulation coopérative et traitera explicitement les races shutdown/Cancel/terminal.
|
||||
|
||||
## 5. IPC et frontend
|
||||
|
||||
La commande Tauri `backfill_start` retourne uniquement :
|
||||
|
||||
```text
|
||||
job_id
|
||||
state = created
|
||||
```
|
||||
|
||||
Le formulaire conserve **Valider la requête** et ajoute **Démarrer le backfill**. Start est activé seulement lorsque `composition_ready = true`. Après admission, le bouton Start est verrouillé côté frontend jusqu'à l'arrivée du monitoring détaillé en `pre.009`.
|
||||
|
||||
Les logs Start contiennent seulement JobId backend, rôle logique/scope/commitment ou états techniques sûrs. Adresse, signature, ancre et valeur `min_context_slot` ne sont jamais journalisées.
|
||||
|
||||
## 6. Autocomplete Program IDs — exigence reportée au polish
|
||||
|
||||
Le besoin UX enregistré pendant cette tranche est réservé à `pre.012` : l'input adresse restera libre mais proposera un `datalist` HTML alimenté depuis le registre canonique `ksp-core-lib::entries()` et `ProgramIdEntry`. Aucune liste Program ID ne sera copiée/hardcodée dans le frontend. Le comportement recherché reprend uniquement le principe fonctionnel de l'ancien dataset `ks-program-ids` de kbot3, sans reprise de code.
|
||||
|
||||
## 7. Version
|
||||
|
||||
```text
|
||||
workspace.package.version = 0.3.7-pre.8
|
||||
label = 0.3.7-pre.008
|
||||
```
|
||||
|
||||
## 8. Fichiers ajoutés
|
||||
|
||||
```text
|
||||
crates/ksp-app-backfill-desk/src/backfill_run.rs
|
||||
crates/ksp-app-backfill-desk/unit_tests/backfill_run.rs
|
||||
deltas/0.3.7/pre.008.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/constants.rs
|
||||
crates/ksp-app-backfill-desk/src/dto_backfill.rs
|
||||
crates/ksp-app-backfill-desk/src/errors.rs
|
||||
crates/ksp-app-backfill-desk/src/lib.rs
|
||||
crates/ksp-app-backfill-desk/src/store_runtime.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_backfill.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.007-fix.001` est propre : audits Rust/Markdown, `cargo check --workspace`, Clippy, toutes les suites `ksp-job-backfill-lib`, toutes les suites Backfill Desk et arbres Cargo passent. Le smoke `cargo tauri dev` confirme aussi le profil Mainnet, les trois routes HTTP logiques et le tracing frontend ; le Store non joignable laisse correctement le shell disponible en mode diagnostic.
|
||||
|
||||
## 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 ;
|
||||
- handle construit et installé avant le spawn Start ;
|
||||
- admission single-run et JobId backend-only ;
|
||||
- absence de payload métier dans la réponse Start et les logs Start ;
|
||||
- dépendances/capabilities inchangées hors surfaces déjà autorisées ;
|
||||
- prêt/restauration du Store backend-neutre ;
|
||||
- absence de gRPC/WS dans le contrat Backfill V1 ;
|
||||
- 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.009` :
|
||||
|
||||
```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
|
||||
cargo tree -p ksp-app-backfill-desk --edges normal
|
||||
cargo tree -p ksp-app-backfill-desk -e features
|
||||
```
|
||||
|
||||
## 14. Suite
|
||||
|
||||
`pre.009` ajoutera le bridge latest-value : source de snapshots, DTO de statut complet, resynchronisation par commande et événements coalescés. Cancel et races terminales restent en `pre.010`.
|
||||
Reference in New Issue
Block a user