diff --git a/Cargo.toml b/Cargo.toml index 3edbc96..e5d4ea4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ # file: Cargo.toml -# version: 653 +# version: 654 [workspace] resolver = "3" members = ["crates/ksp-app-backfill-desk", "crates/ksp-app-config-desk", "crates/ksp-app-raw-transaction-ingest-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.17-pre.2" +version = "0.3.17-pre.2.fix.1" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-store-api/tests/dependency_boundary.rs b/crates/ksp-store-api/tests/dependency_boundary.rs index 166dde7..f9b78ff 100644 --- a/crates/ksp-store-api/tests/dependency_boundary.rs +++ b/crates/ksp-store-api/tests/dependency_boundary.rs @@ -1,5 +1,5 @@ // file: crates/ksp-store-api/tests/dependency_boundary.rs -// version: 9 +// version: 10 //! Dependency canaries for the Store API RAW foundation. @@ -137,7 +137,7 @@ fn pre_006_source_boundary_keeps_models_and_capabilities_backend_free() { assert!(raw_account_capability.contains("trait RawAccountStateWrite")); assert!(raw_account_capability.contains("trait RawAccountObservationRead")); assert!(raw_account_capability.contains("trait RawAccountObservationWrite")); - for forbidden in ["trait StoreBackend", "trait Store", "PostgresStore", "MySqlStore", "Arc + + +# Delta `0.3.17-pre.002-fix.001` — correction du canari Store API backend-neutral + +## Base requise + +```text +0.3.17-pre.002 appliquée +workspace.package.version = 0.3.17-pre.2 +``` + +## Objet + +Corriger l'unique échec du gate opérateur de `pre.002` sans modifier le périmètre fonctionnel de la tranche. + +Le gate du 24 septembre 2026 a établi : + +```text +cargo fmt --all / --check PASS +Rust audits PASS +Markdown audit PASS (352 tables / 966 files) +cargo check --workspace PASS +clippy all-targets/all-features -D warnings PASS +ksp-store-api unit tests PASS 35/35 +ksp-store-api dependency_boundary FAIL 1/2 +``` + +L'échec concerne uniquement `pre_006_source_boundary_keeps_models_and_capabilities_backend_free`. + +## Cause + +Le canari historique interdisait textuellement : + +```text +trait Store +``` + +Cette recherche par sous-chaîne correspond désormais aussi au nouveau contrat légitime introduit par `pre.002` : + +```text +trait StoreErrorClassifier +``` + +Il ne s'agit donc pas d'une fuite backend/runtime dans `ksp-store-api`, mais d'un faux positif du test de frontière. + +## Correction + +`crates/ksp-store-api/tests/dependency_boundary.rs` continue d'interdire : + +```text +StoreBackend +un trait exactement nommé Store +PostgresStore +MySqlStore +Arc +trait Store: +trait Store< +trait Store\n +``` + +Ainsi `StoreErrorClassifier` reste autorisé, tandis qu'une réintroduction d'un trait générique `Store` continue de faire échouer le canari. + +Aucun item de production de `ksp-store-api` n'est modifié. + +## Version + +Le correctif modifie un test Rust consommé par le gate. Conformément à `VER-ID-007` et `VER-ID-010` : + +```text +workspace.package.version = 0.3.17-pre.2.fix.1 +``` + +Le header du `Cargo.toml` racine passe de `653` à `654`. + +## Fichiers modifiés + +```text +Cargo.toml +crates/ksp-store-api/tests/dependency_boundary.rs +docs/validation/034-V0_3_17_RAW_OPERATIONAL_RESILIENCE.md +``` + +## Fichier ajouté + +```text +deltas/0.3.17/pre.002-fix.001.md +``` + +## Hors périmètre + +```text +aucun contrat public modifié +aucun modèle Store API modifié +aucune migration SQL +aucun backend PostgreSQL +aucun Store facade +aucun Worker +aucun Transport/Config +aucune application Desk +``` + +## Validations d'assemblage + +Exécutées après correction : + +```text +General Rust rule audit clean +Rust export completeness audit 0 candidate(s) +KSP workspace Rust rule audit clean +Markdown table audit clean (352 table(s), 967 file(s)) +dependency-boundary lexical simulation PASS +``` + +Non exécutées dans l'environnement d'assemblage faute de toolchain Rust : + +```text +cargo fmt/check NOT RUN +cargo clippy NOT RUN +cargo test NOT RUN +``` + +## Gate requis après application + +```bash +cargo fmt --all +cargo fmt --all -- --check + +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-store-api --all-targets --all-features +``` + +`pre.003` ne doit commencer qu'après fermeture propre de ce gate. diff --git a/docs/validation/034-V0_3_17_RAW_OPERATIONAL_RESILIENCE.md b/docs/validation/034-V0_3_17_RAW_OPERATIONAL_RESILIENCE.md index fe76091..0688b41 100644 --- a/docs/validation/034-V0_3_17_RAW_OPERATIONAL_RESILIENCE.md +++ b/docs/validation/034-V0_3_17_RAW_OPERATIONAL_RESILIENCE.md @@ -1,5 +1,5 @@ - + # Validation `0.3.17` — résilience opérationnelle et cycle de vie des variantes RAW @@ -628,3 +628,56 @@ cargo fmt/check/clippy/test pre.002 NOT RUN ici ``` Le gate opérateur requis pour fermer `pre.002` est celui de `deltas/0.3.17/pre.002.md`, incluant `cargo test -p ksp-store-api --all-targets --all-features`. + +## 25. Gate opérateur `0.3.17-pre.002` et correctif `fix.001` + +Le 24 septembre 2026, l'opérateur a exécuté le gate complet demandé pour `pre.002`. + +Résultats avant le test ciblé : + +```text +cargo fmt --all / --check PASS +General Rust rule audit clean +Rust export completeness audit 0 candidate(s) +KSP workspace Rust rule audit clean +Markdown table audit clean (352 table(s), 966 file(s)) +cargo check --workspace PASS, 0.3.17-pre.2, 5.97 s +cargo clippy --workspace --all-targets --all-features -- -D warnings + PASS, 0.3.17-pre.2, 8.83 s +``` + +`cargo test -p ksp-store-api --all-targets --all-features` a ensuite compilé et exécuté correctement les 35 tests unitaires, mais le gate a échoué dans `tests/dependency_boundary.rs` : + +```text +unit tests PASS 35/35 +dependency_boundary FAIL 1/2 +pre_006_source_boundary_keeps_models_and_capabilities_backend_free +``` + +La cause est un faux positif du canari historique. Il interdisait la sous-chaîne : + +```text +trait Store +``` + +Le nouveau contrat backend-neutral légitime : + +```text +trait StoreErrorClassifier +``` + +contient cette sous-chaîne sans déclarer un trait générique `Store`. Le correctif `pre.002-fix.001` resserre donc uniquement le canari afin d'interdire un identifiant de trait exactement nommé `Store` (`Store `, `Store:`, `Store<` ou séparation de ligne), tout en conservant l'interdiction de `StoreBackend`, `PostgresStore`, `MySqlStore` et `Arc