diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c3a641..6622cc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ - + # Changelog SaseDev Knowledge @@ -18,6 +18,7 @@ Ce fichier décrit les changements utiles des releases publiées. Les détails d - introduit les premiers contrats provider-neutral de source, Git et synchronisation sans dépendance à une forge ni à PostgreSQL ; - active les audits Rust PGR de structure et de façade au moment où des API publiques réelles apparaissent ; - sélectionne localement `unit_tests/` hors de `src/` pour tous les tests unitaires Rust, avec `tests/` réservé aux tests d'intégration Cargo ; +- clôture la migration du layout de tests après normalisation rustfmt des deux `lib.rs` ayant fait échouer le premier `git diff --check` du fix précédent ; - fixe le frontend Web PGR comme laboratoire de validation des templates statiques et des assets avant adaptation du markup runtime en Maud ; - matérialise ce laboratoire sous `Web/knowledge-template-lab/` avec npm, TypeScript strict, Vite, Sass, Bootstrap et manifest Vite ; - retient l’intégration production Actix/Maud via le manifest Vite comme contrat d’asset mapping à réimplémenter proprement, sans copier mécaniquement le corpus historique ; diff --git a/Cargo.lock b/Cargo.lock index d503538..8055ee9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -475,46 +475,46 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "knowledge-domain-lib" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" [[package]] name = "knowledge-git-api" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" dependencies = [ "knowledge-domain-lib", ] [[package]] name = "knowledge-howtos-server" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" dependencies = [ "knowledge-web-lib", ] [[package]] name = "knowledge-pgr-server" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" dependencies = [ "knowledge-web-lib", ] [[package]] name = "knowledge-snippets-server" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" dependencies = [ "knowledge-web-lib", ] [[package]] name = "knowledge-sync-api" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" dependencies = [ "knowledge-domain-lib", ] [[package]] name = "knowledge-web-lib" -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" dependencies = [ "actix-files", "actix-web", diff --git a/Cargo.toml b/Cargo.toml index 26ce1d7..126c1a6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 10 +# version: 11 [workspace] resolver = "3" @@ -14,7 +14,7 @@ members = [ ] [workspace.package] -version = "0.0.1-alpha.5.fix.1" +version = "0.0.1-alpha.5.fix.2" edition = "2024" publish = false repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge" diff --git a/VERSION b/VERSION index d8849ff..f207228 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.1-alpha.5.fix.1 +0.0.1-alpha.5.fix.2 diff --git a/deltas/0.0.1/alpha.5.fix.2.md b/deltas/0.0.1/alpha.5.fix.2.md new file mode 100644 index 0000000..88c42fd --- /dev/null +++ b/deltas/0.0.1/alpha.5.fix.2.md @@ -0,0 +1,61 @@ + + + +# Delta 0.0.1-alpha.5.fix.2 — clôture du layout de tests Rust + +## Base requise + +État `0.0.1-alpha.5.fix.1` committé et poussé après application du history : + +```text +history/0.0.1/alpha.5.fix.1.md = FAIL +``` + +La version devient : + +```text +0.0.1-alpha.5.fix.2 +``` + +## Cause + +`alpha.5.fix.1` réalise correctement la migration des tests unitaires : quatre anciens `src/unit_tests.rs` supprimés, cinq fichiers sous `unit_tests/` présents, audit de layout `PASS`, Cargo/Clippy/tests `PASS` et baseline Web `PASS`. + +La tranche reste néanmoins `FAIL` car son premier `git diff --check` signale : + +```text +crates/knowledge-domain-lib/src/lib.rs:14: new blank line at EOF. +crates/knowledge-web-lib/src/lib.rs:25: new blank line at EOF. +``` + +`cargo fmt --all` exécuté ensuite normalise ces fichiers et le `git diff --cached --check` final est propre. Le smoke HTTP demandé pour le fix n'apparaît pas dans le transcript opérateur. + +## Nature du fix + +Le snapshot `alpha.5.fix.1` committé après son history contient déjà la normalisation rustfmt observée pendant la gate. `alpha.5.fix.2` ne remplace donc pas artificiellement les deux `lib.rs`. Il avance la version, documente le statut réel du fix précédent et rejoue toutes les preuves sans formatage mutateur préalable, avec les trois smokes HTTP obligatoires. + +## Fichiers remplacés + +```text +VERSION +Cargo.toml +CHANGELOG.md +docs/plans/001-V0_0_1_FOUNDATION_PLAN.md +docs/validation/001-VALIDATION_MATRIX.md +``` + +## Fichier ajouté + +```text +deltas/0.0.1/alpha.5.fix.2.md +``` + +Aucun fichier n'est supprimé. Aucun contrat, route, rendu Maud, comportement Vite, dépendance Web ou layout de tests supplémentaire n'est modifié. + +Le bump Cargo peut mettre à jour `Cargo.lock`; toute modification réelle reste versionnée. + +## Validation attendue + +La gate commence par `git diff --check`, puis `cargo fmt --all -- --check` sans `cargo fmt --all` préalable. Elle rejoue ensuite audits Rust, Cargo/Clippy/tests, baseline Web, manifest et trois smokes HTTP. + +Ne pas committe `alpha.5.fix.2` avant production de son history à partir des résultats opérateur. diff --git a/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md b/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md index 8659bfd..fd45a95 100644 --- a/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md +++ b/docs/plans/001-V0_0_1_FOUNDATION_PLAN.md @@ -1,5 +1,5 @@ - + # Plan 0.0.1 — fondation SaseDev Knowledge @@ -215,6 +215,10 @@ Le défaut existait déjà dans les trois crates antérieures et est également - conserve `tests/` pour les tests d'intégration Cargo uniquement ; - ajoute un audit monotâche empêchant le retour de `#[test]` ou de fichiers `unit_tests.rs` sous `src/`. +La gate opérateur d'`alpha.5.fix.1` reste **FAIL** : le premier `git diff --check` détecte une ligne vide supplémentaire en fin de `crates/knowledge-domain-lib/src/lib.rs` et de `crates/knowledge-web-lib/src/lib.rs`. `cargo fmt` normalise ensuite ces deux fichiers et la totalité des audits/tests Rust ainsi que la baseline Web passent. Le smoke HTTP demandé n'est pas rejoué dans le transcript du fix. + +Le snapshot `alpha.5.fix.1` committé après history contient donc déjà la normalisation rustfmt observée. `alpha.5.fix.2` ne réécrit pas artificiellement les deux `lib.rs` : il avance la tranche, documente le défaut et rejoue la gate sans exécuter de formatage mutateur avant `cargo fmt --check`. Les trois smokes HTTP sont de nouveau obligatoires. + ### beta.1 — réconciliation de fondation Rejouer les gates pertinentes, réconcilier docs/architecture avec ce qui existe réellement, traiter les décisions devenues nécessaires et effectuer la revue d'horizon. diff --git a/docs/validation/001-VALIDATION_MATRIX.md b/docs/validation/001-VALIDATION_MATRIX.md index 7f05fd5..604e8d7 100644 --- a/docs/validation/001-VALIDATION_MATRIX.md +++ b/docs/validation/001-VALIDATION_MATRIX.md @@ -1,5 +1,5 @@ - + # Matrice de validation Knowledge @@ -363,3 +363,21 @@ Le fix de layout des tests doit prouver : - smoke HTTP production des trois serveurs `PASS` ; - aucune modification fonctionnelle Actix/Maud/Vite au-delà du rattachement des tests ; - `git diff --cached --check` propre. + +## Gate de `0.0.1-alpha.5.fix.2` + +Le second fix de clôture doit prouver : + +- `VERSION = 0.0.1-alpha.5.fix.2` et version workspace identique ; +- history `alpha.5.fix.1` `FAIL` committé avant application ; +- `git diff --check` `PASS` immédiatement après application, avant toute commande de formatage ; +- `cargo fmt --all -- --check` `PASS` sans exécution préalable de `cargo fmt --all`, afin de prouver que le snapshot livré est déjà formaté ; +- les quatre anciens `src/unit_tests.rs` restent absents ; +- les cinq fichiers sous `unit_tests/` restent présents et rattachés par `#[path = "..."]` ; +- `audit_rust_test_layout.py` et les audits Rust PGR existants `PASS` ; +- `cargo check`, Clippy strict et `cargo test --workspace --all-targets --all-features` `PASS` ; +- `npm ci`, `npm run typecheck` et `npm run build` `PASS` ; +- manifest Vite `PASS` ; +- smoke HTTP de `knowledge-pgr-server`, `knowledge-howtos-server` et `knowledge-snippets-server` `PASS` ; +- aucune modification fonctionnelle du runtime Actix/Maud/Vite ; +- `git diff --cached --check` propre. diff --git a/history/0.0.1/alpha.5.fix.2.md b/history/0.0.1/alpha.5.fix.2.md new file mode 100644 index 0000000..db418c7 --- /dev/null +++ b/history/0.0.1/alpha.5.fix.2.md @@ -0,0 +1,168 @@ + + + +# History 0.0.1-alpha.5.fix.2 — clôture du layout de tests Rust + +## Statut + +PASS + +La gate opérateur de `0.0.1-alpha.5.fix.2` exécutée le `2026-09-28` est propre. + +## Baseline opérateur + +`alpha.5.fix.1` `FAIL` a été historisé, committé et poussé avant application du second fix : + +```text +history/0.0.1/alpha.5.fix.1.md = FAIL +commit a1b56af +message 0.0.1-alpha.5.fix.1 +branch master +push origin/master PASS +status clean après push +``` + +Le push observé a avancé `origin/master` de `c17b706` à `a1b56af`. + +## Snapshot propre avant mutation + +Les premiers contrôles passent immédiatement après application du delta : + +```text +VERSION = 0.0.1-alpha.5.fix.2 +git diff --check PASS +cargo fmt --all -- --check PASS +``` + +Aucun `cargo fmt --all` mutateur n'est exécuté avant cette preuve. + +## Layout des tests + +La vérification structurelle passe : + +```text +Knowledge 0.0.1-alpha.5.fix.2 layout audit: clean +Rust test-layout audit: clean (7 crate(s)) +``` + +Les quatre anciens `src/unit_tests.rs` restent absents et les cinq fichiers `unit_tests/` restent présents. + +Aucun `#[test]` ni `mod unit_tests;` classique n'est observé sous `src/`. + +## Audits Rust + +Les audits sélectionnés passent : + +```text +Rust blank-line audit: clean (18 file(s)) +Rust item-spacing audit: clean (18 file(s)) +Rust module-order audit: clean (18 file(s)) +Rust trait-import-block audit: clean (18 file(s)) +Rust re-export-block audit: clean (18 file(s)) +Rust export completeness audit: 0 candidate(s) across 7 package(s) +``` + +## Cargo, Clippy et tests + +Les sept packages compilent en version `0.0.1-alpha.5.fix.2`. + +```text +cargo check --workspace PASS +cargo clippy --workspace --all-targets --all-features + -- -D warnings PASS +cargo test --workspace --all-targets --all-features PASS +``` + +Tests observés : + +```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 +``` + +Les noms de tests confirment les rattachements hors `src/` : + +```text +source::tests::... +assets::tests::... +page::tests::... +``` + +## Baseline Web + +Les commandes suivantes passent : + +```text +npm ci +npm run typecheck +npm run build +``` + +npm observe toujours `@parcel/watcher@2.6.0` comme package possédant un script d'installation non approuvé. Aucune approbation automatique n'est effectuée. + +Les warnings Sass issus de Bootstrap restent non bloquants. + +## Manifest Vite + +L'audit passe : + +```text +Knowledge 0.0.1-alpha.5.fix.2 Vite manifest audit: clean +``` + +avec : + +```text +JS assets/assets/main-BMHcm6u9.js +CSS assets/main-V0IwlRbh.css +``` + +## Smokes HTTP + +Les trois launchers passent la gate production/manifest : + +```text +knowledge-pgr-server smoke PASS +knowledge-howtos-server smoke PASS +knowledge-snippets-server smoke PASS +Knowledge 0.0.1-alpha.5.fix.2 HTTP smoke: clean +``` + +Chaque smoke vérifie `/healthz`, le rendu de `/`, les références JavaScript/CSS issues du manifest et le service effectif des assets hashés. + +## Hygiène Git + +Le contrôle final passe : + +```text +git diff --cached --check = PASS +``` + +Le staging observé avant ajout du présent history est : + +```text +M CHANGELOG.md +M Cargo.lock +M Cargo.toml +M VERSION +A deltas/0.0.1/alpha.5.fix.2.md +M docs/plans/001-V0_0_1_FOUNDATION_PLAN.md +M docs/validation/001-VALIDATION_MATRIX.md +``` + +## Décision + +`0.0.1-alpha.5.fix.2` est `PASS`. + +La phase alpha de la fondation est close. + +La transition autorisée est : + +```text +0.0.1-beta.1 +``` + +`beta.1` est une tranche de réconciliation et de revue d'horizon. Elle ne doit pas introduire de nouvelle grande fonctionnalité.