0.0.1-alpha.5.fix.2

This commit is contained in:
2026-09-28 10:24:55 +02:00
parent a1b56af8ed
commit 515f8153a4
8 changed files with 265 additions and 13 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: CHANGELOG.md --> <!-- file: CHANGELOG.md -->
<!-- version: 8 --> <!-- version: 9 -->
# Changelog SaseDev Knowledge # 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 ; - 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 ; - 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 ; - 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 ; - 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 ; - 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 ; - 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 ;

14
Cargo.lock generated
View File

@@ -475,46 +475,46 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
[[package]] [[package]]
name = "knowledge-domain-lib" name = "knowledge-domain-lib"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
[[package]] [[package]]
name = "knowledge-git-api" name = "knowledge-git-api"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
dependencies = [ dependencies = [
"knowledge-domain-lib", "knowledge-domain-lib",
] ]
[[package]] [[package]]
name = "knowledge-howtos-server" name = "knowledge-howtos-server"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
dependencies = [ dependencies = [
"knowledge-web-lib", "knowledge-web-lib",
] ]
[[package]] [[package]]
name = "knowledge-pgr-server" name = "knowledge-pgr-server"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
dependencies = [ dependencies = [
"knowledge-web-lib", "knowledge-web-lib",
] ]
[[package]] [[package]]
name = "knowledge-snippets-server" name = "knowledge-snippets-server"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
dependencies = [ dependencies = [
"knowledge-web-lib", "knowledge-web-lib",
] ]
[[package]] [[package]]
name = "knowledge-sync-api" name = "knowledge-sync-api"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
dependencies = [ dependencies = [
"knowledge-domain-lib", "knowledge-domain-lib",
] ]
[[package]] [[package]]
name = "knowledge-web-lib" name = "knowledge-web-lib"
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-web", "actix-web",

View File

@@ -1,5 +1,5 @@
# file: Cargo.toml # file: Cargo.toml
# version: 10 # version: 11
[workspace] [workspace]
resolver = "3" resolver = "3"
@@ -14,7 +14,7 @@ members = [
] ]
[workspace.package] [workspace.package]
version = "0.0.1-alpha.5.fix.1" version = "0.0.1-alpha.5.fix.2"
edition = "2024" edition = "2024"
publish = false publish = false
repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge" repository = "https://git.sasedev.com/Sasedev/sasedev-knowledge"

View File

@@ -1 +1 @@
0.0.1-alpha.5.fix.1 0.0.1-alpha.5.fix.2

View File

@@ -0,0 +1,61 @@
<!-- file: deltas/0.0.1/alpha.5.fix.2.md -->
<!-- version: 1 -->
# 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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/001-V0_0_1_FOUNDATION_PLAN.md --> <!-- file: docs/plans/001-V0_0_1_FOUNDATION_PLAN.md -->
<!-- version: 12 --> <!-- version: 13 -->
# Plan 0.0.1 — fondation SaseDev Knowledge # 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 ; - 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/`. - 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 ### 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. 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.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/001-VALIDATION_MATRIX.md --> <!-- file: docs/validation/001-VALIDATION_MATRIX.md -->
<!-- version: 12 --> <!-- version: 13 -->
# Matrice de validation Knowledge # Matrice de validation Knowledge
@@ -363,3 +363,21 @@ Le fix de layout des tests doit prouver :
- smoke HTTP production des trois serveurs `PASS` ; - smoke HTTP production des trois serveurs `PASS` ;
- aucune modification fonctionnelle Actix/Maud/Vite au-delà du rattachement des tests ; - aucune modification fonctionnelle Actix/Maud/Vite au-delà du rattachement des tests ;
- `git diff --cached --check` propre. - `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.

View File

@@ -0,0 +1,168 @@
<!-- file: history/0.0.1/alpha.5.fix.2.md -->
<!-- version: 1 -->
# 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é.