0.0.2-beta.1.fix.2

This commit is contained in:
2026-09-29 06:34:10 +02:00
parent 4b51098911
commit 6de544f534
7 changed files with 333 additions and 10 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/002-V0_0_2_GIT_SYNC_PLAN.md -->
<!-- version: 12 -->
<!-- version: 13 -->
# Plan 0.0.2 — Git générique et synchronisation de lecture
@@ -28,7 +28,7 @@ PGR publish report pgr-0.1.3-publish.001-report.md = PASS
Le passage de PGR `v0.1.1` à `v0.1.3` est traité comme adoption d'un projet existant via `230-ADOPTION`. Les artefacts historiques de `0.0.1` ne sont pas réécrits. `v0.1.3` constitue une provenance d'adoption, pas une dépendance normative vivante : les futurs démarrages Knowledge doivent partir des règles locales et ne consultent PGR que lorsqu'une nouvelle adoption est explicitement engagée.
`0.0.2-alpha.1` est `FAIL` pour défaut de structure du présent plan malgré des contrôles techniques propres. `alpha.1.fix.1` a corrigé uniquement ce cadrage documentaire et sa gate opérateur est `PASS`. `alpha.2` a été fermée par `alpha.2.fix.2` `PASS`. `alpha.3` a été fermée par `alpha.3.fix.1` `PASS`. `alpha.4` a été fermée par `alpha.4.fix.1` `PASS`, terminant l'adoption PGR comme migration ponctuelle. `alpha.5` est `PASS` et ferme le scope fonctionnel alpha avec `knowledge-app-lib` et le cas d'usage partagé `Changed` / `Unchanged`. `beta.1` est `PARTIAL` : la réconciliation, les audits Rust/Git et la baseline Web passent, mais la gate générée a omis les smokes HTTP requis pendant la stabilisation. `beta.1.fix.1` est la tranche courante et rejoue la stabilisation complète sans changement fonctionnel.
`0.0.2-alpha.1` est `FAIL` pour défaut de structure du présent plan malgré des contrôles techniques propres. `alpha.1.fix.1` a corrigé uniquement ce cadrage documentaire et sa gate opérateur est `PASS`. `alpha.2` a été fermée par `alpha.2.fix.2` `PASS`. `alpha.3` a été fermée par `alpha.3.fix.1` `PASS`. `alpha.4` a été fermée par `alpha.4.fix.1` `PASS`, terminant l'adoption PGR comme migration ponctuelle. `alpha.5` est `PASS` et ferme le scope fonctionnel alpha avec `knowledge-app-lib` et le cas d'usage partagé `Changed` / `Unchanged`. `beta.1` est `PARTIAL` : la réconciliation, les audits Rust/Git et la baseline Web passent, mais la gate générée a omis les smokes HTTP requis pendant la stabilisation. `beta.1.fix.1` est `FAIL` : les smokes HTTP sont désormais acquis, mais un `SyntaxError` dans l'audit de stabilisation et une ligne vide supplémentaire à EOF font échouer la gate. `beta.1.fix.2` est la tranche courante et corrige uniquement ces défauts de validation.
## Mission
@@ -238,7 +238,7 @@ Statut opérateur : **PARTIAL**.
La tranche n'ajoute aucune grande fonctionnalité. La réconciliation documentaire, les audits Rust/Git, la baseline Web, le manifest Vite et la revue d'horizon passent. La gate générée a toutefois omis les trois smokes HTTP alors que la stratégie de validation du présent plan les exige pendant la stabilisation.
`beta.1.fix.1` corrige uniquement ce contrat de validation, rend explicite chez l'owner local `400-VALIDATION` qu'un smoke de stabilisation planifié reste obligatoire même sans diff runtime, puis rejoue la gate complète avec les trois launchers. Aucun code produit, contrat métier, package ou scope fonctionnel n'est modifié.
`beta.1.fix.1` corrige le contrat de smoke et acquiert effectivement les trois smokes HTTP, mais reste `FAIL` parce que son audit Python de stabilisation contient une chaîne mal quotée et que `001-VALIDATION_MATRIX.md` introduit une ligne vide supplémentaire à EOF. `beta.1.fix.2` corrige uniquement ces deux défauts de gate, rend durable la règle d'un unique LF terminal et retire les modifications persistantes d'options shell des gates interactives. Aucun code produit, contrat métier, package ou scope fonctionnel n'est modifié.
La réconciliation doit :
@@ -313,7 +313,7 @@ Un REPLAN modifie le présent plan de manière explicite ; il ne doit pas être
## Revue d'horizon
État courant : **réalisée dans `0.0.2-beta.1`; contenu acquis, clôture beta en attente du smoke `beta.1.fix.1`**.
État courant : **réalisée dans `0.0.2-beta.1`; contenu et smokes runtime acquis, clôture beta en attente de la gate propre `beta.1.fix.2`**.
Résultat : aucune version postérieure à `0.0.2` n'est réservée. Les domaines futurs restent non numérotés parce qu'aucune mission suivante ne possède encore un scope et un ordre suffisamment décidés.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/rules/400-VALIDATION.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Validation locale Knowledge
@@ -97,6 +97,8 @@ cargo fmt --all
Les audits Markdown ou autres contrôles documentaires peuvent être exécutés avant ou après le formatage Rust puisqu'ils ne portent pas sur les sources Rust.
Une gate fournie pour exécution dans le shell interactif de l'opérateur ne doit pas modifier durablement les options du shell avec `set -e`, `set -u`, `set -o pipefail` ou une combinaison équivalente. La gate doit laisser chaque commande produire son résultat observable sans risquer de terminer la session terminal de l'opérateur.
Pour une tranche Web, les preuves npm/typecheck/build sont ajoutées lorsque `Web/` ou son contrat d'intégration est touché. Une tranche documentaire ou Rust sans diff Web ne rejoue pas automatiquement le frontend.
Une phase de stabilisation globale explicitement prévue par le plan (`beta`, `rc` ou clôture stable) peut imposer une preuve de non-régression runtime même sans diff direct sous `Web/` ou dans les launchers. Lorsqu'un plan exige un smoke de stabilisation, cette preuve est obligatoire et ne peut pas être omise au motif que le code runtime n'a pas changé dans la tranche.
@@ -107,4 +109,15 @@ Un warning provenant d'une dépendance tierce n'est pas automatiquement un `FAIL
## Traçabilité
## Hygiène des fichiers texte
Les fichiers texte gouvernés doivent utiliser LF et se terminer par exactement un unique LF. Un suffixe `\n\n` est une ligne vide supplémentaire à EOF et doit être rejeté par la validation lorsqu'il est introduit par la tranche.
La validation d'hygiène doit donc distinguer :
```text
...dernière ligne\n valide
...dernière ligne\n\n invalide
```
Chaque delta liste sa gate exécutable et la matrice conserve le contrat durable. Le history enregistre les résultats réellement observés ; il ne résume pas une prévalidation comme si elle avait été exécutée par l'opérateur.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/001-VALIDATION_MATRIX.md -->
<!-- version: 29 -->
<!-- version: 30 -->
# Matrice de validation Knowledge
@@ -778,5 +778,22 @@ Le fix de clôture beta doit prouver :
- `Cargo.lock` présent localement, ignoré et non suivi ;
- hygiène texte et `git diff --cached --check` propres.
Le `PASS` de `beta.1.fix.1` ferme la stabilisation beta et autorise uniquement `0.0.2-rc.1`. Un résultat incomplet ou en échec produit son history réel et interdit la RC.
`beta.1.fix.1` est `FAIL` malgré les smokes HTTP `PASS` : son audit Python de stabilisation échoue sur un quoting invalide et `git diff --cached --check` détecte une ligne vide supplémentaire à EOF. La transition autorisée est uniquement `beta.1.fix.2`.
## Gate de `0.0.2-beta.1.fix.2`
Le fix de clôture beta doit prouver :
- `VERSION = 0.0.2-beta.1.fix.2` et version workspace identique ;
- history `history/0.0.2/beta.1.fix.1.md` présent avec statut `FAIL` et committé avant application ;
- aucun diff sous `crates/` ou `Web/` ;
- aucune nouvelle fonctionnalité, package Cargo/npm, dépendance ou contrat runtime ;
- audit Python de stabilisation corrigé et exécutable, sans chaîne littérale mal quotée ;
- fichiers texte gouvernés terminés par exactement un LF, sans ligne vide supplémentaire à EOF ;
- audits Markdown locaux propres ;
- preuves runtime acquises en `beta.1.fix.1` conservées dans son history : Cargo/Clippy/tests, baseline Web et trois smokes HTTP `PASS` ;
- `Cargo.lock` présent localement, ignoré et non suivi ;
- `git diff --check` puis `git diff --cached --check` propres ;
- gate interactive ne modifiant pas le shell opérateur avec `set -euo pipefail`.
Le `PASS` de `beta.1.fix.2`, combiné aux preuves runtime `PASS` conservées dans `history/0.0.2/beta.1.fix.1.md`, ferme la stabilisation beta et autorise uniquement `0.0.2-rc.1`.