From ec64be340e52791c67ec727934ff8c1872ec3060 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Tue, 8 Sep 2026 09:35:26 +0200 Subject: [PATCH] v0.3.11-pre.003-fix.001 --- Cargo.toml | 4 +- .../src/settings.rs | 14 ++- deltas/0.3.11/pre.003-fix.001.md | 100 ++++++++++++++++++ 3 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 deltas/0.3.11/pre.003-fix.001.md diff --git a/Cargo.toml b/Cargo.toml index 7d153ab..871c707 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 507 +# version: 508 [workspace] resolver = "3" members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-store-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-job-api", "crates/ksp-job-backfill-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-raw-transaction-lib", "crates/ksp-store-api", "crates/ksp-store-lib", "crates/ksp-store-postgres-lib", "crates/ksp-wallet-lib", "crates/ksp-worker-api", "crates/ksp-worker-raw-transaction-ingest-lib"] [workspace.package] -version = "0.3.11-pre.3" +version = "0.3.11-pre.3.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs b/crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs index 862f330..ecee28d 100644 --- a/crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs +++ b/crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs @@ -1,5 +1,5 @@ // file: crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs -// version: 3 +// version: 4 /// Default bounded admission queue capacity for one RAW transaction ingest Worker. pub const DEFAULT_RAW_TRANSACTION_INGEST_ADMISSION_QUEUE_CAPACITY: usize = 256; @@ -39,18 +39,22 @@ impl crate::RawTransactionIngestSettings { persistence_concurrency: usize, shutdown_drain_timeout: std::time::Duration, ) -> ksp_core_lib::Result { - validate_inclusive_usize( + if let std::result::Result::Err(error) = validate_inclusive_usize( admission_queue_capacity, crate::MIN_RAW_TRANSACTION_INGEST_ADMISSION_QUEUE_CAPACITY, crate::MAX_RAW_TRANSACTION_INGEST_ADMISSION_QUEUE_CAPACITY, "admission_queue_capacity", - )?; - validate_inclusive_usize( + ) { + return std::result::Result::Err(error); + } + if let std::result::Result::Err(error) = validate_inclusive_usize( persistence_concurrency, crate::MIN_RAW_TRANSACTION_INGEST_PERSISTENCE_CONCURRENCY, crate::MAX_RAW_TRANSACTION_INGEST_PERSISTENCE_CONCURRENCY, "persistence_concurrency", - )?; + ) { + return std::result::Result::Err(error); + } if !(crate::MIN_RAW_TRANSACTION_INGEST_SHUTDOWN_DRAIN_TIMEOUT..=crate::MAX_RAW_TRANSACTION_INGEST_SHUTDOWN_DRAIN_TIMEOUT) .contains(&shutdown_drain_timeout) { diff --git a/deltas/0.3.11/pre.003-fix.001.md b/deltas/0.3.11/pre.003-fix.001.md new file mode 100644 index 0000000..647924d --- /dev/null +++ b/deltas/0.3.11/pre.003-fix.001.md @@ -0,0 +1,100 @@ + + + +# Delta `0.3.11-pre.003-fix.001` — propagation d'erreur explicite des settings + +## Base requise + +```text +0.3.11-pre.003 +workspace.package.version = 0.3.11-pre.3 +``` + +## Défaut opérateur constaté + +Le gate opérateur du 8 septembre 2026 confirme que `cargo fmt --all`, les audits Rust/Markdown et `cargo check --workspace` passent, mais `cargo clippy --workspace --all-targets --all-features -- -D warnings` rejette deux usages de l'opérateur `?` dans `RawTransactionIngestSettings::new`. + +Diagnostics : + +```text +crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs:42:9 +clippy::question_mark_used + +crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs:48:9 +clippy::question_mark_used +``` + +La règle normative `RUST-ERR-002` interdit également l'opérateur `?` en code de production. Les tests de la crate communiqués dans le même journal restent verts : 4 tests unitaires, 3 tests dependency-boundary et 3 tests public API, sans échec. + +## Objectif + +Corriger strictement `pre.003` sans modifier son contrat fonctionnel : remplacer les deux propagations `?` par un contrôle de flux explicite retournant exactement la même erreur. Aucun type, borne, default, code d'erreur, dépendance, test, lifecycle ou comportement runtime n'est ajouté. + +## Version + +Le correctif touche un fichier Rust de production. Conformément à `VER-ID-007` et `VER-ID-010` : + +```text +identifiant de livraison : 0.3.11-pre.003-fix.001 +workspace.package.version : 0.3.11-pre.3.fix.1 +``` + +## Modification + +Dans `RawTransactionIngestSettings::new`, les validations de : + +```text +admission_queue_capacity +persistence_concurrency +``` + +utilisent désormais `if let Result::Err(error)` puis `return Err(error)`. La validation de `shutdown_drain_timeout` était déjà explicite et reste inchangée. + +## Fichiers ajoutés + +```text +deltas/0.3.11/pre.003-fix.001.md +``` + +## Fichiers modifiés + +```text +Cargo.toml +crates/ksp-worker-raw-transaction-ingest-lib/src/settings.rs +``` + +## Fichiers supprimés + +Aucun. + +## Validations exécutées dans l'environnement d'assemblage + +```text +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 : aucun opérateur `?` restant dans settings.rs +scan statique : aucune modification de surface publique/settings hors propagation d'erreur +``` + +L'environnement d'assemblage ne fournit ni `cargo`, ni `rustc`, ni `rustfmt`. Aucun gate Cargo du fix 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 +``` + +## Décision + +`pre.004` reste bloquée jusqu'à validation opérateur verte de ce fix. Aucun périmètre de `pre.003` n'est redéfini. + +## Questions ouvertes + +Aucune.