# 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// 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.