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

186 lines
5.7 KiB
Markdown

<!-- file: deltas/0.3.11/pre.003.md -->
<!-- version: 3 -->
# Delta `0.3.11-pre.003` — identité Worker + settings bornés
## Base requise
```text
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 :
```text
workspace.package.version = 0.3.11-pre.3
```
## Identité Worker
La verticale possède le code stable :
```text
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 :
```text
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 :
```text
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 :
```text
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 :
```text
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 :
```text
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
```text
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
```text
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
```text
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 :
```text
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é
```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
```
## 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.