0.0.2-beta.1.fix.1

This commit is contained in:
2026-09-29 06:24:50 +02:00
parent 5cee2a65b0
commit 4b51098911
7 changed files with 476 additions and 9 deletions

View File

@@ -0,0 +1,170 @@
<!-- file: history/0.0.2/beta.1.fix.1.md -->
<!-- version: 1 -->
# History 0.0.2-beta.1.fix.1 — clôture de stabilisation runtime
## Statut
FAIL
La gate opérateur de `0.0.2-beta.1.fix.1` exécutée le `2026-09-29` acquiert les preuves Rust, Cargo, tests, Web et les trois smokes HTTP requis, mais deux commandes requises échouent dans la gate elle-même : l'audit Python de stabilisation contient une chaîne mal quotée et `git diff --cached --check` détecte une ligne vide supplémentaire en fin de `docs/validation/001-VALIDATION_MATRIX.md`.
Conformément à `400-VALIDATION`, une commande requise en échec conserve le statut `FAIL` même si les preuves runtime exécutées ensuite passent.
## Baseline opérateur
L'opérateur indique que la matérialisation de `beta.1` a été réalisée correctement avant application de `beta.1.fix.1`. Le rendu terminal du commit/push n'est plus disponible à la suite de la fermeture de la fenêtre GNOME Terminal après activation de `set -euo pipefail`.
L'état observé au démarrage de la gate confirme néanmoins :
```text
VERSION 0.0.2-beta.1.fix.1
Cargo workspace version 0.0.2-beta.1.fix.1
history/0.0.2/beta.1.md PARTIAL
```
## Contrôles documentaires et formatage
Les audits suivants passent :
```text
Markdown header audit clean (89 file(s))
Markdown link audit clean (72 local link(s), 89 file(s))
Markdown table audit clean (4 table(s), 89 file(s))
cargo fmt --all PASS
cargo fmt --all -- --check PASS
```
Le premier `git diff --check` de la gate signale toutefois :
```text
docs/validation/001-VALIDATION_MATRIX.md:782: new blank line at EOF.
```
## Audits Rust
Après formatage, les audits Rust passent :
```text
Rust test-layout audit clean (9 crate(s))
Rust blank-line audit clean (32 file(s))
Rust item-spacing audit clean (32 file(s))
Rust module-order audit clean (32 file(s))
Rust trait-import-block audit clean (32 file(s))
Rust re-export-block audit clean (32 file(s))
Rust crate-root facade audit clean (6 crate root(s))
Rust export completeness audit 0 candidate(s) across 9 package(s)
```
## Cargo, Clippy et tests
Les neuf packages passent :
```text
cargo metadata --format-version 1 --no-deps PASS
cargo check --workspace PASS
cargo clippy --workspace --all-targets --all-features
-- -D warnings PASS
cargo test --workspace --all-targets --all-features PASS
```
Résultats observés :
```text
knowledge-app-lib 3 PASS
knowledge-domain-lib 3 PASS
knowledge-git-api 1 PASS
knowledge-git-lib 8 unit PASS + 2 integration PASS
knowledge-sync-api 1 PASS
knowledge-web-lib 4 PASS
launchers 0 test chacun
```
Les tests d'intégration Git réels restent propres.
## Baseline Web
Les commandes suivantes passent :
```text
npm ci
npm run typecheck
npm run build
```
Vite transforme `63` modules et produit le manifest attendu. Les warnings Sass issus de Bootstrap et l'avertissement npm sur le script d'installation de `@parcel/watcher@2.6.0` restent non bloquants.
## Échec de l'audit de stabilisation
Le bloc `PYGATE` échoue avec :
```text
SyntaxError: unterminated string literal
```
La cause est la chaîne Python suivante, délimitée par des apostrophes tout en contenant `n'est` :
```text
assert 'Aucun prompt `0.0.3` n'est créé' in study
```
Cet échec appartient à la gate livrée, pas au produit.
## Smokes HTTP
Malgré l'échec précédent, les trois smokes HTTP sont exécutés et passent :
```text
knowledge-pgr-server smoke PASS
knowledge-howtos-server smoke PASS
knowledge-snippets-server smoke PASS
Knowledge 0.0.2-beta.1.fix.1 HTTP smoke: clean
```
Ils prouvent `/healthz`, `/`, la présence des assets du manifest dans le HTML et leur service HTTP effectif.
## Hygiène texte et EOF
Le script d'hygiène texte affiche :
```text
Knowledge beta.1.fix.1 text hygiene: clean (89 file(s))
```
mais son contrat est insuffisant : il vérifie seulement qu'un fichier se termine par `\n`, pas qu'il se termine par exactement un seul `\n`. Il laisse donc passer un suffixe `\n\n`.
Après staging, `git diff --cached --check` échoue de nouveau sur la même ligne vide supplémentaire à EOF dans `001-VALIDATION_MATRIX.md`.
## Frontières
Les contrôles suivants passent :
```text
Cargo.lock présent localement PASS
Cargo.lock ignoré PASS
Cargo.lock non suivi PASS
aucun diff sous crates/ ou Web/ PASS
aucune crate forge Gitea PASS
aucun store PostgreSQL PASS
```
Le `git status --short` final montre uniquement les fichiers attendus de la tranche après correction de la faute de frappe opérateur `it status --short`.
## Décision
`0.0.2-beta.1.fix.1` est `FAIL`.
Les preuves runtime manquantes de `beta.1` sont désormais acquises, mais la stabilisation beta ne peut pas être fermée tant que la gate elle-même n'est pas propre.
La transition autorisée est :
```text
appliquer ce history
-> git add / diff --cached --check / status
-> commit exact "0.0.2-beta.1.fix.1"
-> push origin master
-> vérifier le workspace propre
-> appliquer seulement ensuite 0.0.2-beta.1.fix.2
```
`beta.1.fix.2` doit rester documentaire/gate-only : corriger le quoting Python, normaliser les EOF à exactement un LF, rendre cette propriété vérifiable et ne pas réintroduire `set -euo pipefail` dans une gate destinée au shell interactif.