5.7 KiB
Delta 0.3.11-pre.003 — identité Worker + settings bornés
Base requise
0.3.11-pre.002
workspace.package.version = 0.3.11-pre.2
Le gate opérateur communiqué pour pre.002 est entièrement vert : cargo fmt, audits Rust/Markdown, cargo check --workspace, Clippy strict, tests de la crate et arbres Cargo normal/features. Les 3 tests pre.002 passent et le firewall de dépendances reste conforme.
Objectif
Matérialiser uniquement l'identité de la verticale Worker RAW transaction ingest et ses settings runtime techniques bornés. Aucun lifecycle, start, spawn, task, channel, supervisor, persistence Store, canonicalisation ou source live n'est introduit.
Version
Cette tranche est une prerelease non-fix :
workspace.package.version = 0.3.11-pre.3
Identité Worker
La verticale possède le code stable :
RAW_TRANSACTION_INGEST_WORKER_KIND_CODE = "raw_transaction_ingest"
La transformation de ce texte en WorkerKindCode reste sous validation de ksp-worker-api; aucun second validateur d'identité n'est créé dans la crate concrète.
RawTransactionIngestSettings
Surface exacte :
network: ksp_store_lib::RawNetworkId
worker_id: ksp_worker_api::WorkerId
admission_queue_capacity: usize
persistence_concurrency: usize
shutdown_drain_timeout: Duration
Les champs sont privés et exposés par getters. Deux constructions existent : paramètres explicites bornés et defaults V1 sur des identités déjà validées.
Bornes exactes :
admission queue : 1..=65_536, default 256
persistence concurrency : 1..=64, default 8
shutdown drain : 100 ms..=30 s, default 5 s
Les bornes sont inclusives. Aucun champ historique, provider-specific, retry, replay, gap repair, source capability ou frontier n'est ajouté.
Erreur settings
La crate ouvre un seul code propre à cette tranche :
worker_raw_transaction_ingest.settings_invalid
Il couvre uniquement les limites techniques possédées par le Worker concret. Le contexte d'erreur contient seulement le nom statique du champ invalide :
admission_queue_capacity
persistence_concurrency
shutdown_drain_timeout
Aucune valeur caller-supplied n'est copiée dans le diagnostic.
Les erreurs de RawNetworkId, WorkerId et WorkerKindCode restent celles de leurs crates propriétaires.
Redaction
Debug du settings rend le network logique mais conserve le WorkerId(..) redacted fourni par ksp-worker-api; le texte réel du Worker ID n'est pas rendu.
Frontière runtime maintenue
Toujours absents :
RawTransactionIngestWorker
start/spawn
JoinHandle/JoinSet
mpsc/watch
supervisor
Store write
common RAW conversion
Transport
source live/provider SDK
Le manifest de production est inchangé depuis pre.002.
Tests ajoutés/étendus
unit_tests/settings.rs
defaults exacts
bornes min/max inclusives
six cas hors bornes
code/contexte d'erreur stable
redaction Debug du WorkerId
tests/public_api.rs
kind + settings consommables depuis crate root
validation network/Worker identity reste lower-layer-owned
erreur de borne publique stable et sans echo d'identité
tests/dependency_boundary.rs
firewall pre.002 conservé
crate-root pre.003 limité à identity/settings
absence de comportement runtime prématuré
Fichiers ajoutés
crates/ksp-worker-raw-transaction-ingest-lib/src/error.rs
crates/ksp-worker-raw-transaction-ingest-lib/src/identity.rs
crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs
crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/settings.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/public_api.rs
deltas/0.3.11/pre.003.md
Fichiers modifiés
Cargo.toml
crates/ksp-worker-raw-transaction-ingest-lib/src/lib.rs
crates/ksp-worker-raw-transaction-ingest-lib/tests/dependency_boundary.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
Premier passage : quatre écarts de forme détectés par l'audit Rust (rustdoc pub(crate), ordre de constantes, ligne vide de fonction), puis un espacement Markdown documentaire détecté après ajout de la validation. Ils ont tous été corrigés avant livraison.
Gate final local :
python3 scripts/audit_rust_workspace_rules.py
General Rust rule audit: clean
Rust export completeness audit: 0 candidate(s)
KSP workspace Rust rule audit: clean
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
Markdown table audit: clean (340 table(s), 777 file(s))
contrôle statique runtime-boundary : clean
comparaison byte-à-byte avec pre.002 : 6 fichiers ajoutés, 5 modifiés, 0 supprimé
L'environnement d'assemblage ne fournit ni cargo, ni rustc, ni rustfmt. Aucun gate Cargo n'est déclaré PASS localement.
Gate opérateur demandé
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
Suite
Après gate opérateur vert, pre.004 introduit le start caller-runtime-owned, le handle concret, le lifecycle/terminal et le stop idempotent. Aucun supervisor complet ni persistence réelle ne doit être anticipé avant leurs tranches dédiées.