Files
khadhroony-solana-project/deltas/0.3.11/pre.003.md
2026-09-08 09:31:23 +02:00

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.