Files
sasedev-knowledge/history/0.0.2/beta.1.fix.1.md
2026-09-29 06:24:50 +02:00

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.