Files
khadhroony-solana-project/deltas/0.3.11/pre.009.md
2026-09-08 16:22:40 +02:00

4.7 KiB

Delta 0.3.11-pre.009 — hardening shutdown, backpressure et races fault/stop

Base requise

0.3.11-pre.008-fix.001
workspace.package.version = 0.3.11-pre.8.fix.1

Le gate opérateur du 8 septembre 2026 est vert sur fmt, audits Rust/Markdown, cargo check --workspace, Clippy strict, 38 tests de la crate Worker et les doc-tests. Aucune dépendance/feature n'ayant changé, aucun cargo tree intermédiaire n'était requis.

Objectif

Fermer uniquement le hardening pre.009 du plan 032 : faults source sûrs, saturation observable, ordering stop/fault déterministe, deadline de drain, abort+join au timeout et absence de tâches orphelines. Aucune source live n'est introduite.

Version

identifiant de livraison : 0.3.11-pre.009
workspace.package.version : 0.3.11-pre.9

Faults source

Les tâches source privées retournent ksp_core_lib::Result<()>. Une erreur source ou un JoinError devient :

worker_raw_transaction_ingest.source_failed

Le détail distant/provider n'est pas propagé et source_failure_total est incrémenté via checked-add.

Shutdown borné

Le drain complet est enveloppé par shutdown_drain_timeout. En cas de timeout :

admission.close()
persistence.abort_all()
sources.abort_all()
join complet des persistences
join complet des sources
Faulted(worker_raw_transaction_ingest.drain_timeout)

Le terminal n'est donc jamais publié avant la récolte de toutes les tâches possédées.

Ordering stop/fault

Le stop reste prioritaire dans le select!, mais un Store fault découvert pendant le drain n'est pas masqué. Un fault terminal déjà décidé n'est pas remplacé par un stop tardif. Le timeout de drain prévaut lorsqu'il empêche la clôture coopérative.

Backpressure source-neutral

L'admission conserve une unique queue mpsc bornée. Le dequeue constate si cette queue était pleine à sa capacité configurée et incrémente backpressure_wait_total. Aucun drop, aucune queue secondaire et aucun unbounded_channel ne sont ajoutés.

Tests ajoutés ou étendus

source failure terminal + compteur
late stop ne remplace pas source_failed
stop puis Store fault pendant drain
saturation capacity=1 sans drop
backpressure_wait_total observable
drain timeout + abort/join des sources et persistences
aucune tâche active après terminal timeout
projection snapshot source/backpressure
error codes source_failed/drain_timeout publics
dependency firewall inchangé

Fichiers ajoutés

deltas/0.3.11/pre.009.md

Fichiers modifiés

Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/src/admission.rs
crates/ksp-worker-raw-transaction-ingest-lib/src/error.rs
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/src/snapshot.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/public_api.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/admission.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/snapshot.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.

Dépendances

Aucune dépendance ni feature n'est ajoutée, supprimée ou modifiée. Le Cargo.toml de la crate Worker reste identique à la base.

Validations exécutées dans l'environnement d'assemblage

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 frontières runtime/dependencies

L'environnement d'assemblage ne fournit ni cargo, ni rustc, ni rustfmt. Aucun gate Cargo de pre.009 n'est déclaré PASS localement.

Gate opérateur demandé

Aucune dépendance ni feature n'ayant changé, aucun cargo tree intermédiaire n'est requis :

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

Décision

pre.010 reste bloquée jusqu'à validation opérateur verte du hardening shutdown/backpressure/fault races.

Questions ouvertes

Aucune nouvelle question architecturale. Les sources live restent explicitement hors scope de 0.3.11.