186 lines
5.7 KiB
Markdown
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.
|