v0.3.11-pre.005
This commit is contained in:
125
deltas/0.3.11/pre.005.md
Normal file
125
deltas/0.3.11/pre.005.md
Normal file
@@ -0,0 +1,125 @@
|
||||
<!-- file: deltas/0.3.11/pre.005.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta `0.3.11-pre.005` — supervisor privé et ownership des tâches
|
||||
|
||||
## Base requise
|
||||
|
||||
```text
|
||||
0.3.11-pre.004
|
||||
workspace.package.version = 0.3.11-pre.4
|
||||
```
|
||||
|
||||
Le gate opérateur du 8 septembre 2026 est vert sur `fmt`, audits Rust/Markdown, `cargo check --workspace`, Clippy strict, les 16 tests de la crate Worker, doc-tests et les arbres Cargo normal/features.
|
||||
|
||||
## Objectif
|
||||
|
||||
Matérialiser uniquement la responsabilité `pre.005` du plan `032` : supervisor privé, `JoinSet` privé, ownership et join des tâches enfants, intégration du stop au seam source déterministe et preuve qu'aucune tâche enfant coopérative ne survit au terminal. Aucun admission `mpsc`, aucune canonicalisation RAW et aucune persistence Store réelle.
|
||||
|
||||
## Version
|
||||
|
||||
```text
|
||||
identifiant de livraison : 0.3.11-pre.005
|
||||
workspace.package.version : 0.3.11-pre.5
|
||||
```
|
||||
|
||||
## Runtime privé ajouté
|
||||
|
||||
Le task racine devient le supervisor du run. Il possède un `tokio::task::JoinSet<()>` privé et un seam privé de spawn de tâches source.
|
||||
|
||||
La production appelle ce seam sans source. Les tests injectent des tâches déterministes qui reçoivent un clone du `watch<bool>` de stop.
|
||||
|
||||
Le supervisor :
|
||||
|
||||
```text
|
||||
reap des enfants terminés via join_next()
|
||||
stop prioritaire via select! biased
|
||||
join de tous les enfants restants après stop/fermeture du contrôle
|
||||
Stopped publié uniquement après join complet
|
||||
JoinError -> supervision non clean ; Faulted à la fermeture de supervision
|
||||
```
|
||||
|
||||
Aucun `JoinHandle` ou `JoinSet` n'est ajouté à la surface publique.
|
||||
|
||||
## Arrêt coopératif
|
||||
|
||||
Le timeout de drain configuré existe déjà dans les settings mais n'est pas encore appliqué ici. `pre.005` attend coopérativement les enfants ; le timeout, `abort_all` et les races stop/fault sont réservés au hardening `pre.009`.
|
||||
|
||||
## Hors scope conservé
|
||||
|
||||
```text
|
||||
mpsc / admission
|
||||
PrivateRawTransactionIngress
|
||||
canonicalisation common RAW
|
||||
observation key
|
||||
persistence Store
|
||||
snapshots concrets / WorkerSnapshotSource
|
||||
source live / Transport
|
||||
Config
|
||||
abort/timeout de drain
|
||||
```
|
||||
|
||||
## Tests ajoutés ou étendus
|
||||
|
||||
```text
|
||||
supervisor joint trois tâches source coopératives avant Stopped
|
||||
compteur d'enfants actifs == 0 au terminal
|
||||
reap d'une source terminée pendant Running
|
||||
join d'une source encore active lors du stop
|
||||
canary statique : JoinSet présent mais privé
|
||||
canary statique : aucun scope pre.006+ ouvert
|
||||
```
|
||||
|
||||
## Fichiers ajoutés
|
||||
|
||||
```text
|
||||
deltas/0.3.11/pre.005.md
|
||||
```
|
||||
|
||||
## Fichiers modifiés
|
||||
|
||||
```text
|
||||
Cargo.toml
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/lib.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/src/runtime.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs
|
||||
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime.rs
|
||||
docs/plans/032-V0_3_11_RAW_TRANSACTION_INGEST_WORKER_FOUNDATION_PLAN.md
|
||||
docs/validation/028-V0_3_11_RAW_TRANSACTION_INGEST_WORKER_FOUNDATION.md
|
||||
```
|
||||
|
||||
## Fichiers supprimés
|
||||
|
||||
Aucun.
|
||||
|
||||
## 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
|
||||
scan statique des interdits/scope runtime
|
||||
Markdown table audit: clean (340 table(s), 780 file(s))
|
||||
```
|
||||
|
||||
L'environnement d'assemblage ne fournit ni `cargo`, ni `rustc`, ni `rustfmt`. Aucun gate Cargo de `pre.005` n'est déclaré PASS localement.
|
||||
|
||||
## Gate opérateur demandé
|
||||
|
||||
```bash
|
||||
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
|
||||
cargo check --workspace
|
||||
cargo clippy --workspace --all-targets --all-features -- -D warnings
|
||||
cargo test -p ksp-worker-raw-transaction-ingest-lib
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib --edges normal
|
||||
cargo tree -p ksp-worker-raw-transaction-ingest-lib -e features
|
||||
```
|
||||
|
||||
## Décision
|
||||
|
||||
`pre.006` reste bloquée jusqu'à validation opérateur verte de cette tranche.
|
||||
|
||||
## Questions ouvertes
|
||||
|
||||
Aucune nouvelle question architecturale. L'admission bornée et la canonicalisation common RAW restent dans `pre.006`, la persistence dans `pre.007`, les snapshots dans `pre.008` et le drain forcé/races dans `pre.009`.
|
||||
Reference in New Issue
Block a user