Files
sasedev-knowledge/deltas/0.0.1/alpha.5.fix.1.md

131 lines
3.2 KiB
Markdown

<!-- file: deltas/0.0.1/alpha.5.fix.1.md -->
<!-- version: 1 -->
# Delta 0.0.1-alpha.5.fix.1 — layout séparé des tests unitaires Rust
## Base requise
État `0.0.1-alpha.5` committé et poussé après application du history :
```text
history/0.0.1/alpha.5.md = FAIL
```
La version devient :
```text
0.0.1-alpha.5.fix.1
```
## Cause
La gate technique d'`alpha.5` passe, y compris les tests de `knowledge-web-lib` et les smokes HTTP.
La revue de gouvernance opérateur relève cependant que les tests unitaires restent sous `src/unit_tests.rs`.
PGR `0.1.1` autorise une arborescence `unit_tests/` séparée avec la modalité `MAY`. Knowledge sélectionne désormais explicitement cette convention comme règle locale `MUST`.
Le défaut concerne quatre crates et doit être corrigé de manière cohérente.
## Arborescence cible
```text
crates/<crate>/
src/
unit_tests/
tests/
```
- `unit_tests/` : tests unitaires attachés aux modules source par `#[path = "..."]` ;
- `tests/` : tests d'intégration Cargo qui consomment l'API publique.
Exemple :
```rust
#[cfg(test)]
#[path = "../unit_tests/source.rs"]
mod tests;
```
## ADD
```text
crates/knowledge-domain-lib/unit_tests/source.rs
crates/knowledge-git-api/unit_tests/lib.rs
crates/knowledge-sync-api/unit_tests/lib.rs
crates/knowledge-web-lib/unit_tests/assets.rs
crates/knowledge-web-lib/unit_tests/page.rs
scripts/audit_rust_test_layout.py
manifests/0.0.1/alpha.5.fix.1.delete.txt
deltas/0.0.1/alpha.5.fix.1.md
```
## REPLACE
```text
VERSION
Cargo.toml
CHANGELOG.md
RULES.md
crates/knowledge-domain-lib/src/lib.rs
crates/knowledge-domain-lib/src/source.rs
crates/knowledge-git-api/src/lib.rs
crates/knowledge-sync-api/src/lib.rs
crates/knowledge-web-lib/src/lib.rs
crates/knowledge-web-lib/src/assets.rs
crates/knowledge-web-lib/src/page.rs
docs/plans/001-V0_0_1_FOUNDATION_PLAN.md
docs/validation/001-VALIDATION_MATRIX.md
```
## DELETE
```text
crates/knowledge-domain-lib/src/unit_tests.rs
crates/knowledge-git-api/src/unit_tests.rs
crates/knowledge-sync-api/src/unit_tests.rs
crates/knowledge-web-lib/src/unit_tests.rs
```
Les suppressions sont possédées par :
```text
manifests/0.0.1/alpha.5.fix.1.delete.txt
```
## Audit ajouté
`audit_rust_test_layout.py` vérifie :
- absence de `#[test]` sous `src/` ;
- absence de fichiers `src/tests.rs` et `src/unit_tests.rs` ;
- absence de `mod unit_tests;` classique ;
- rattachement effectif de chaque fichier sous `unit_tests/` par un `#[path = "..."]`.
L'audit ne traite pas `tests/` comme tests internes.
## Scope fonctionnel
Aucun comportement métier ou HTTP n'est modifié.
Les routes, assets, rendu Maud, manifest Vite, binds et trois launchers restent identiques à `alpha.5`.
## Application des suppressions
Après extraction du delta, appliquer exactement le manifest :
```bash
while IFS= read -r path; do
test -n "$path" || continue
rm -f -- "$path"
done < manifests/0.0.1/alpha.5.fix.1.delete.txt
```
Ne pas supprimer d'autre chemin.
## Validation attendue
La gate doit prouver l'arborescence, les rattachements, les audits Rust, Cargo/Clippy/tests, la baseline Web et les trois smokes HTTP.
Ne pas committe `alpha.5.fix.1` avant production de son history à partir des résultats opérateur.