# History 0.0.2-alpha.2 — contrats minimaux et backend process Git ## Statut FAIL La gate opérateur de `0.0.2-alpha.2` exécutée le `2026-09-28` échoue avant validation fonctionnelle du nouveau backend Git. ## Baseline opérateur `alpha.1.fix.1` a été historisé `PASS`, committé et poussé avant application d'`alpha.2` : ```text history/0.0.2/alpha.1.fix.1.md PASS commit 84c01eb message 0.0.2-alpha.1.fix.1 branch master push origin/master PASS ``` Le push observé a avancé `origin/master` de `ab1e5fd` à `84c01eb`. ## Version et contrôles initiaux Les contrôles de version passent : ```text VERSION 0.0.2-alpha.2 Cargo workspace version 0.0.2-alpha.2 history alpha.1.fix.1 PASS ``` En revanche, l'hygiène Git échoue immédiatement : ```text git diff --check docs/validation/001-VALIDATION_MATRIX.md:574: new blank line at EOF. ``` Ce défaut est bloquant pour la tranche. ## Audit structurel du delta L'audit structurel embarqué échoue sur un fichier généré sous `node_modules` : ```text AssertionError: Web/knowledge-template-lab/node_modules/sync-child-process/README.md ``` Le défaut vient de la gate elle-même : elle parcourt récursivement tous les `*.md` du workspace et n'exclut que `.git`, alors que `node_modules` ne fait pas partie du corpus Markdown gouverné par Knowledge. L'intention de contrôle des headers Markdown reste valide, mais la gate doit ignorer les arbres générés/non gouvernés tels que `node_modules`. ## Audits Rust structurels Les audits structurels passent : ```text Rust test-layout audit: clean (8 crate(s)) Rust blank-line audit: clean (22 file(s)) Rust item-spacing audit: clean (22 file(s)) Rust module-order audit: clean (22 file(s)) Rust trait-import-block audit: clean (22 file(s)) Rust re-export-block audit: clean (22 file(s)) Rust export completeness audit: 0 candidate(s) across 8 package(s) ``` Ils confirment la présence cohérente de la huitième crate, mais ne remplacent pas `cargo fmt`, la compilation, Clippy et les tests. ## Formatage Rust `cargo fmt --all -- --check` échoue sur les nouveaux fichiers de `knowledge-git-lib`. Les écarts sont uniquement des différences de formatage rustfmt dans : ```text crates/knowledge-git-lib/src/backend.rs crates/knowledge-git-lib/src/error.rs crates/knowledge-git-lib/src/lib.rs crates/knowledge-git-lib/unit_tests/backend.rs ``` La tranche n'est donc pas formatée conformément à la gate Rust du projet. ## Compilation et tests `cargo metadata --format-version 1 --no-deps` produit correctement les métadonnées attendues, mais `cargo check --workspace` échoue avec `E0423` : ```text crates/knowledge-git-lib/src/backend.rs:126 return crate::GitSourceKey(value); ``` `GitSourceKey` est réexporté publiquement depuis `crate`, mais son champ tuple reste privé au module `backend`. La construction doit donc être effectuée depuis le module propriétaire, par exemple via `crate::backend::GitSourceKey(value)`, ou par un constructeur privé équivalent. Le même défaut bloque : ```text cargo check --workspace cargo clippy --workspace --all-targets --all-features -- -D warnings cargo test -p knowledge-git-lib --all-targets --all-features cargo test --workspace --all-targets --all-features ``` Aucun résultat de test `knowledge-git-lib` n'est donc présenté comme exécuté avec succès. ## Métadonnées et limites de scope L'audit des métadonnées Cargo passe : ```text Knowledge 0.0.2-alpha.2 Cargo metadata audit: clean ``` Il confirme huit packages exactement, dont `knowledge-git-lib`. Les contrôles de frontière passent également : ```text Web/ sans diff crates/knowledge-git-api sans diff crates/knowledge-sync-api sans diff crates/knowledge-app-lib absent crates/knowledge-forge-gitea-lib absent crates/knowledge-store-postgres-lib absent Cargo.lock ignoré et non suivi ``` Le `git status --short` final n'a pas été exécuté à cause d'une faute de frappe opérateur (`it status --short`). Cette faute de frappe n'influence pas la décision : `git diff --cached --check` venait déjà d'échouer sur la ligne vide finale de la matrice de validation. ## Diagnostic `alpha.2` reste dans son scope prévu ; aucun REPLAN n'est nécessaire. Le correctif doit uniquement : - supprimer la ligne vide terminale fautive de la matrice de validation ; - corriger la gate Markdown pour exclure les arbres générés/non gouvernés ; - appliquer le formatage rustfmt attendu aux quatre fichiers Rust signalés ; - corriger la construction privée de `GitSourceKey` sans élargir l'API publique ; - conserver inchangés le scope, les dépendances et les responsabilités du backend ; - ne pas introduire `refresh`, résolution de révision ou snapshot fonctionnel avant `alpha.3`. ## Décision `0.0.2-alpha.2` est `FAIL`. La transition autorisée est : ```text appliquer ce history -> git add / diff --cached --check / status -> commit exact "0.0.2-alpha.2" -> push origin master -> vérifier le workspace propre -> appliquer seulement ensuite 0.0.2-alpha.2.fix.1 ```