0.3.17-pre.002-fix.001
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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<dyn"] {
|
||||
for forbidden in ["trait StoreBackend", "trait Store ", "trait Store:", "trait Store<", "trait Store\n", "PostgresStore", "MySqlStore", "Arc<dyn"] {
|
||||
assert!(!capability_home.contains(forbidden));
|
||||
assert!(!raw_account_capability.contains(forbidden));
|
||||
assert!(!raw_conflict_capability.contains(forbidden));
|
||||
|
||||
143
deltas/0.3.17/pre.002-fix.001.md
Normal file
143
deltas/0.3.17/pre.002-fix.001.md
Normal file
@@ -0,0 +1,143 @@
|
||||
<!-- file: deltas/0.3.17/pre.002-fix.001.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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<dyn
|
||||
```
|
||||
|
||||
La détection du trait générique `Store` est resserrée sur des frontières lexicales compatibles avec une déclaration Rust :
|
||||
|
||||
```text
|
||||
trait Store<espace>
|
||||
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.
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: docs/validation/034-V0_3_17_RAW_OPERATIONAL_RESILIENCE.md -->
|
||||
<!-- version: 2 -->
|
||||
<!-- version: 3 -->
|
||||
|
||||
# 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<dyn`.
|
||||
|
||||
Aucun contrat public, modèle, capability, comportement runtime ou dépendance n'est modifié par ce correctif. Le gate `pre.002` reste ouvert jusqu'à revalidation complète de `ksp-store-api` sur `0.3.17-pre.2.fix.1`.
|
||||
|
||||
Assemblage local du correctif :
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
La toolchain Rust reste absente de l'environnement d'assemblage ; `cargo fmt/check/clippy/test` doit être rejoué par l'opérateur sur `0.3.17-pre.2.fix.1`.
|
||||
|
||||
Reference in New Issue
Block a user