# History 0.0.3-alpha.3 — worktree d'écriture et commit candidat ## Statut FAIL La gate opérateur de `0.0.3-alpha.3` exécutée le `2026-09-29` échoue sur la compilation du nouveau test d'intégration `git_write_candidate`. Le défaut est limité à une assertion de test qui tente de comparer directement deux `Result` alors que `std::io::Error` n'implémente pas `PartialEq`. L'implémentation produit passe `cargo check --workspace`; les audits structurels et spécifiques de la tranche restent propres. Le statut demeure néanmoins `FAIL`, car Clippy `--all-targets` et les tests requis ne compilent pas. ## Baseline opérateur `alpha.2` `PASS` a été historisé, committé et poussé avant application de `alpha.3` : ```text history/0.0.3/alpha.2.md PASS commit 88a63b0 message 0.0.3-alpha.2 branch master push origin/master PASS workspace après push propre ``` Le push observé a avancé `origin/master` de `3004e4b` à `88a63b0`. ## Version et documentation Les contrôles initiaux passent : ```text VERSION 0.0.3-alpha.3 Cargo workspace version 0.0.3-alpha.3 git diff --check PASS Markdown header audit clean (108 file(s)) Markdown link audit clean (78 local link(s), 108 file(s)) Markdown table audit clean (4 table(s), 108 file(s)) ``` ## Formatage et audits Rust ```text cargo fmt --all PASS cargo fmt --all -- --check PASS Rust test-layout audit clean (9 crate(s)) Rust blank-line audit clean (35 file(s)) Rust item-spacing audit clean (35 file(s)) Rust module-order audit clean (35 file(s)) Rust trait-import-block audit clean (35 file(s)) Rust re-export-block audit clean (35 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 `cargo metadata` et `cargo check --workspace` passent. La première défaillance obligatoire survient pendant Clippy : ```text cargo metadata --format-version 1 --no-deps PASS cargo check --workspace PASS cargo clippy --workspace --all-targets --all-features -- -D warnings FAIL ``` Erreur observée : ```text error[E0369]: binary operation `==` cannot be applied to type `Result` crates/knowledge-git-lib/tests/git_write_candidate.rs:253 assert_eq!(snapshot_content, Ok(String::from("first\n"))); std::io::Error does not implement PartialEq ``` Le chemin de lecture historique reste propre : ```text cargo test -p knowledge-git-lib --test git_read_path PASS (2) ``` Le nouveau test ciblé et la gate workspace reproduisent le même défaut de compilation : ```text cargo test -p knowledge-git-lib --test git_write_candidate FAIL E0369 cargo test --workspace --all-targets --all-features FAIL E0369 ``` Aucun échec runtime du worktree/candidat n'est donc observé dans cette gate : `git_write_candidate` ne peut pas encore être exécuté jusqu'à ses assertions. ## Audits spécifiques après l'échec Les contrôles statiques et de scope exécutés après l'échec passent : ```text Knowledge 0.0.3-alpha.3 candidate-worktree audit: clean Knowledge 0.0.3-alpha.3 text hygiene: clean (108 file(s)) ``` Ils confirment notamment : - le contrat `alpha.2` historisé `PASS` ; - la présence du worktree candidat, des contrôles de symlink, de l'identité explicite, de `--no-verify`, `--no-gpg-sign`, `HEAD^1` et de la référence candidate interne ; - la neutralisation des configurations Git globale/système et des hooks ; - l'absence de `push_candidate` dans l'implémentation `alpha.3` ; - l'absence de diff sous `knowledge-git-api`, `knowledge-app-lib`, `Web/`, `CHANGELOG.md` et `ROADMAP.md` ; - `Cargo.lock` présent localement, ignoré et non suivi ; - le package-lock Web présent. Le staging final est cohérent avec la tranche : ```text M Cargo.toml M README.md M VERSION M crates/knowledge-git-lib/src/backend.rs M crates/knowledge-git-lib/src/error.rs M crates/knowledge-git-lib/src/lib.rs A crates/knowledge-git-lib/src/write.rs A crates/knowledge-git-lib/tests/git_write_candidate.rs M crates/knowledge-git-lib/unit_tests/backend.rs A deltas/0.0.3/alpha.3.md M docs/architecture/002-KNOWLEDGE_ARCHITECTURE.md M docs/plans/003-V0_0_3_GIT_WRITE_PLAN.md M docs/validation/001-VALIDATION_MATRIX.md ``` ## Diagnostic Le défaut est borné au test : ```rust let snapshot_content = std::fs::read_to_string(snapshot.path().join("content.txt")); assert_eq!(snapshot_content, Ok(String::from("first\n"))); ``` Cette comparaison exige `PartialEq` sur le type d'erreur du `Result`, ce que `std::io::Error` ne fournit pas. Le test doit vérifier le cas `Ok("first\n")` sans comparer la variante `Err`. Aucun élément du retour opérateur ne justifie un REPLAN, une modification du contrat public ou un changement de l'implémentation de worktree. ## Décision `0.0.3-alpha.3` est `FAIL`. La correction autorisée est `0.0.3-alpha.3.fix.1`, bornée à l'assertion de test fautive et au suivi version/plan. Elle doit rejouer Clippy, le test `git_write_candidate` et la gate workspace avant d'autoriser `alpha.4`.