144 lines
3.5 KiB
Markdown
144 lines
3.5 KiB
Markdown
<!-- 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.
|