# History 0.0.1-alpha.5 — composition Actix/Maud et manifest Vite ## Statut FAIL La gate technique de `0.0.1-alpha.5` exécutée le `2026-09-28` est propre, mais la revue opérateur relève avant clôture une non-conformité avec la convention de layout Rust souhaitée pour Knowledge : les tests unitaires sont implémentés sous `src/unit_tests.rs` au lieu d'une arborescence `unit_tests/` séparée. ## Baseline `alpha.4.fix.2` `PASS` a été historisé, committé et poussé avant application d'`alpha.5`. ```text history/0.0.1/alpha.4.fix.2.md = PASS commit 8f6f072 message 0.0.1-alpha.4.fix.2 branch master push origin/master PASS ``` ## Preuves techniques PASS La structure `alpha.5` est propre. La baseline Web passe : ```text npm ci PASS typecheck PASS vite build PASS ``` Les audits Rust PGR passent sur 17 fichiers et 7 packages. Cargo et Clippy strict passent. Les tests workspace passent : ```text knowledge-domain-lib : 3 PASS knowledge-git-api : 1 PASS knowledge-sync-api : 1 PASS knowledge-web-lib : 4 PASS launchers : 0 test chacun ``` Le manifest Vite est valide. Les trois smokes HTTP production passent : ```text knowledge-pgr-server PASS knowledge-howtos-server PASS knowledge-snippets-server PASS ``` `git diff --cached --check` est propre. ## Défaut de gouvernance/layout Le staging contient notamment : ```text crates/knowledge-web-lib/src/unit_tests.rs ``` et les trois crates introduites plus tôt possèdent également leur `src/unit_tests.rs`. PGR `0.1.1` ne rend pas ce layout globalement obligatoire : il indique qu'un workspace **MAY** adopter une arborescence `unit_tests/` séparée et miroir de `src/`. Knowledge sélectionne maintenant explicitement cette option comme convention locale obligatoire. La tranche ne peut donc pas être fermée `PASS` tant que la workspace conserve ses tests unitaires dans `src/`. ## Décision `0.0.1-alpha.5` est `FAIL`. La transition autorisée est : ```text 0.0.1-alpha.5.fix.1 ``` Le fix doit être global et non limité à `knowledge-web-lib` : - déplacer les tests unitaires existants sous `unit_tests/` ; - rattacher les fichiers de tests aux modules source avec `#[cfg(test)]` + `#[path = "..."]` ; - réserver `tests/` aux tests d'intégration Cargo ; - formaliser la convention dans `RULES.md` ; - automatiser le contrôle du layout ; - rejouer l'intégralité des gates Rust/Web/HTTP sans changement fonctionnel.