5.6 KiB
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 :
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 :
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 :
docs/validation/001-VALIDATION_MATRIX.md:782: new blank line at EOF.
Audits Rust
Après formatage, les audits Rust passent :
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 :
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 :
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 :
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 :
SyntaxError: unterminated string literal
La cause est la chaîne Python suivante, délimitée par des apostrophes tout en contenant n'est :
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 :
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 :
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 :
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 :
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.