From ad02b6f13c7508c160ba38ce594925dcafaffa3e Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Sat, 29 Aug 2026 09:54:55 +0200 Subject: [PATCH] v0.3.1-pre.007-fix.001 --- Cargo.toml | 2 +- .../tests/release_completeness.rs | 44 +++++++++++++++---- .../ksp-store-api/tests/security_hardening.rs | 8 ++-- deltas/0.3.1/pre.007-fix.001.md | 39 ++++++++++++++++ 4 files changed, 80 insertions(+), 13 deletions(-) create mode 100644 deltas/0.3.1/pre.007-fix.001.md diff --git a/Cargo.toml b/Cargo.toml index 7bc8778..13c21e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ resolver = "3" members = ["crates/ksp-app-config-desk", "crates/ksp-app-solprices-desk", "crates/ksp-app-wallet-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-interface-lib", "crates/ksp-logging-lib", "crates/ksp-offchain-transport-lib", "crates/ksp-onchain-transport-lib", "crates/ksp-program-api", "crates/ksp-store-api", "crates/ksp-wallet-lib"] [workspace.package] -version = "0.3.1-pre.7" +version = "0.3.1-pre.7-fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-store-api/tests/release_completeness.rs b/crates/ksp-store-api/tests/release_completeness.rs index 3a4ba76..9e1ee4d 100644 --- a/crates/ksp-store-api/tests/release_completeness.rs +++ b/crates/ksp-store-api/tests/release_completeness.rs @@ -83,15 +83,33 @@ fn pre_007_exact_crate_root_export_inventory_is_stable() { } #[test] -fn pre_007_exact_production_module_inventory_is_raw_only() -> std::io::Result<()> { +fn pre_007_exact_production_module_inventory_is_raw_only() { let root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src"); - assert_eq!(rust_file_names(root.as_path())?, std::vec!["capability.rs", "error.rs", "lib.rs", "model.rs"]); + let root_names = rust_file_names(root.as_path()); + assert!(root_names.is_ok()); + let root_names = match root_names { + std::result::Result::Ok(value) => value, + std::result::Result::Err(_) => return, + }; + assert_eq!(root_names, std::vec!["capability.rs", "error.rs", "lib.rs", "model.rs"]); + let model_names = rust_file_names(root.join("model").as_path()); + assert!(model_names.is_ok()); + let model_names = match model_names { + std::result::Result::Ok(value) => value, + std::result::Result::Err(_) => return, + }; assert_eq!( - rust_file_names(root.join("model").as_path())?, + model_names, std::vec!["raw_account.rs", "raw_outcome.rs", "raw_pagination.rs", "raw_primitives.rs", "raw_retention.rs", "raw_transaction.rs"] ); - assert_eq!(rust_file_names(root.join("capability").as_path())?, std::vec!["raw_account.rs", "raw_retention.rs", "raw_transaction.rs"]); - return std::result::Result::Ok(()); + let capability_names = rust_file_names(root.join("capability").as_path()); + assert!(capability_names.is_ok()); + let capability_names = match capability_names { + std::result::Result::Ok(value) => value, + std::result::Result::Err(_) => return, + }; + assert_eq!(capability_names, std::vec!["raw_account.rs", "raw_retention.rs", "raw_transaction.rs"]); + return; } #[test] @@ -208,11 +226,21 @@ fn assert_non_exhaustive(sources: &[&str], enum_name: &str) { } fn rust_file_names(directory: &std::path::Path) -> std::io::Result> { - let entries = std::fs::read_dir(directory)?; + let entries = match std::fs::read_dir(directory) { + std::result::Result::Ok(value) => value, + std::result::Result::Err(error) => return std::result::Result::Err(error), + }; let mut names = std::vec::Vec::new(); for entry in entries { - let entry = entry?; - if !entry.file_type()?.is_file() { + let entry = match entry { + std::result::Result::Ok(value) => value, + std::result::Result::Err(error) => return std::result::Result::Err(error), + }; + let file_type = match entry.file_type() { + std::result::Result::Ok(value) => value, + std::result::Result::Err(error) => return std::result::Result::Err(error), + }; + if !file_type.is_file() { continue; } let name = match entry.file_name().into_string() { diff --git a/crates/ksp-store-api/tests/security_hardening.rs b/crates/ksp-store-api/tests/security_hardening.rs index 627bbfa..a030b93 100644 --- a/crates/ksp-store-api/tests/security_hardening.rs +++ b/crates/ksp-store-api/tests/security_hardening.rs @@ -14,7 +14,7 @@ fn pre_007_hostile_model_query_and_provenance_errors_never_echo_input_material() std::result::Result::Err(value) => value, std::result::Result::Ok(_) => return, }; - assert_eq!(network_error.code(), &ksp_store_api::ERROR_CODE_RAW_MODEL_INVALID); + assert_eq!(network_error.code(), ksp_store_api::ERROR_CODE_RAW_MODEL_INVALID); assert!(!std::format!("{network_error}").contains(HOSTILE_MARKER)); assert!(!std::format!("{network_error:?}").contains(HOSTILE_MARKER)); let provenance = ksp_store_api::RawProvenanceCode::new(hostile_code.clone()); @@ -23,7 +23,7 @@ fn pre_007_hostile_model_query_and_provenance_errors_never_echo_input_material() std::result::Result::Err(value) => value, std::result::Result::Ok(_) => return, }; - assert_eq!(provenance_error.code(), &ksp_store_api::ERROR_CODE_RAW_PROVENANCE_INVALID); + assert_eq!(provenance_error.code(), ksp_store_api::ERROR_CODE_RAW_PROVENANCE_INVALID); assert!(!std::format!("{provenance_error}").contains(HOSTILE_MARKER)); assert!(!std::format!("{provenance_error:?}").contains(HOSTILE_MARKER)); let format = ksp_store_api::RawFormatId::new(hostile_code); @@ -32,7 +32,7 @@ fn pre_007_hostile_model_query_and_provenance_errors_never_echo_input_material() std::result::Result::Err(value) => value, std::result::Result::Ok(_) => return, }; - assert_eq!(format_error.code(), &ksp_store_api::ERROR_CODE_RAW_PAYLOAD_INVALID); + assert_eq!(format_error.code(), ksp_store_api::ERROR_CODE_RAW_PAYLOAD_INVALID); assert!(!std::format!("{format_error}").contains(HOSTILE_MARKER)); assert!(!std::format!("{format_error:?}").contains(HOSTILE_MARKER)); let cursor = ksp_store_api::RawPageCursor::try_new(std::vec![0x41_u8; ksp_store_api::MAX_RAW_PAGE_CURSOR_BYTES + 1].into_boxed_slice()); @@ -41,7 +41,7 @@ fn pre_007_hostile_model_query_and_provenance_errors_never_echo_input_material() std::result::Result::Err(value) => value, std::result::Result::Ok(_) => return, }; - assert_eq!(cursor_error.code(), &ksp_store_api::ERROR_CODE_RAW_QUERY_INVALID); + assert_eq!(cursor_error.code(), ksp_store_api::ERROR_CODE_RAW_QUERY_INVALID); assert!(!std::format!("{cursor_error}").contains(HOSTILE_MARKER)); assert!(!std::format!("{cursor_error:?}").contains(HOSTILE_MARKER)); return; diff --git a/deltas/0.3.1/pre.007-fix.001.md b/deltas/0.3.1/pre.007-fix.001.md new file mode 100644 index 0000000..b073657 --- /dev/null +++ b/deltas/0.3.1/pre.007-fix.001.md @@ -0,0 +1,39 @@ +# Delta `0.3.1-pre.007-fix.001` + +## Objet + +Corriger exclusivement les erreurs de compilation et Clippy des nouveaux canaris de hardening/completeness introduits par `0.3.1-pre.007`. + +## Version + +```text +0.3.1-pre.7-fix.1 +``` + +Le changement de version est requis car ce fix modifie du code Rust/tests exécutables ; il fournit également une identité Cargo distincte pour le rebuild. + +## Corrections + +- retire quatre emprunts `&ErrorCode` erronés dans `tests/security_hardening.rs` ; `Error::code()` retourne déjà `ErrorCode` par valeur ; +- remplace les six usages de `?` interdits par `clippy::question-mark-used` dans `tests/release_completeness.rs` par des branches `Result` explicites ; +- ne modifie aucun contrat public, modèle RAW, capability, outcome, règle de rétention ou comportement fonctionnel. + +## Payload + +```text +Cargo.toml +crates/ksp-store-api/tests/release_completeness.rs +crates/ksp-store-api/tests/security_hardening.rs +deltas/0.3.1/pre.007-fix.001.md +``` + +## Gate opérateur + +```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/0.3.1 +cargo check --workspace +cargo clippy --workspace --all-targets +cargo test -p ksp-store-api +```