5.7 KiB
Delta 0.0.2-alpha.2.fix.2 — retour explicite Clippy
Base requise
Partir de 0.0.2-alpha.2.fix.1 après application et commit du history réel :
deltas/0.0.2/alpha.2.md présent et historique
deltas/0.0.2/alpha.2.fix.1.md présent et historique
history/0.0.2/alpha.2.md FAIL
history/0.0.2/alpha.2.fix.1.md FAIL
Les deltas historiques ne doivent pas être réécrits.
La version devient :
0.0.2-alpha.2.fix.2
Objet
Corriger uniquement le dernier défaut révélé par la gate opérateur de alpha.2.fix.1 :
clippy::implicit_return
crates/knowledge-git-lib/unit_tests/backend.rs:85
La closure de validation du source-key doit rendre explicitement son booléen avec return conformément aux lints workspace.
Le fix ne modifie aucune logique du backend Git et n'ajoute aucune capacité. refresh, résolution vers commit et snapshot/worktree restent réservés à alpha.3.
Scope
REPLACE :
VERSION
Cargo.toml
crates/knowledge-git-lib/unit_tests/backend.rs
docs/plans/002-V0_0_2_GIT_SYNC_PLAN.md
docs/validation/001-VALIDATION_MATRIX.md
ADD :
deltas/0.0.2/alpha.2.fix.2.md
DELETE : aucun.
Le history history/0.0.2/alpha.2.fix.1.md appartient à la base requise mais n'est pas inclus dans ce delta.
Aucun fichier sous Web/, crates/knowledge-git-api/ ou crates/knowledge-sync-api/ n'est modifié. Les fichiers fonctionnels src/backend.rs, src/error.rs et src/lib.rs de knowledge-git-lib restent inchangés.
Correction attendue
Le test source_key_never_interpolates_raw_source_identifier_as_a_path doit remplacer le retour implicite de la closure par un retour explicite :
|character| return character.is_ascii_alphanumeric() || character == '-'
Aucun autre changement de comportement n'est attendu.
Gate opérateur
Après application du history alpha.2.fix.1, commit/push de cet état, puis application du présent delta :
test "$(cat VERSION)" = '0.0.2-alpha.2.fix.2'
grep -F 'version = "0.0.2-alpha.2.fix.2"' Cargo.toml
grep -A2 '^## Statut$' history/0.0.2/alpha.2.fix.1.md | grep -Fx 'FAIL'
git diff --check
python3 - <<'PY'
from pathlib import Path
import tomllib
root = tomllib.loads(Path("Cargo.toml").read_text(encoding="utf-8"))
manifest = tomllib.loads(Path("crates/knowledge-git-lib/Cargo.toml").read_text(encoding="utf-8"))
assert len(root["workspace"]["members"]) == 8
assert "crates/knowledge-git-lib" in root["workspace"]["members"]
assert set(manifest["dependencies"]) == {"knowledge-domain-lib"}
test = Path("crates/knowledge-git-lib/unit_tests/backend.rs").read_text(encoding="utf-8")
assert "|character| return character.is_ascii_alphanumeric() || character == '-'" in test
assert "|character| character.is_ascii_alphanumeric() || character == '-'" not in test
for path in (
"crates/knowledge-git-lib/src/backend.rs",
"crates/knowledge-git-lib/src/error.rs",
"crates/knowledge-git-lib/src/lib.rs",
):
assert Path(path).is_file(), path
backend = Path("crates/knowledge-git-lib/src/backend.rs").read_text(encoding="utf-8")
error = Path("crates/knowledge-git-lib/src/error.rs").read_text(encoding="utf-8")
for forbidden in ("refresh(", "resolve_revision(", "worktree add", "knowledge-app-lib"):
assert forbidden not in backend + error, forbidden
print("Knowledge 0.0.2-alpha.2.fix.2 structural audit: clean")
PY
python3 -B scripts/audit_rust_test_layout.py crates
python3 -B scripts/audit_rust_blank_lines.py crates
python3 -B scripts/audit_rust_item_spacing.py crates
python3 -B scripts/audit_rust_module_order.py crates
python3 -B scripts/audit_rust_trait_import_blocks.py crates
python3 -B scripts/audit_rust_reexport_blocks.py crates
python3 -B scripts/audit_rust_export_completeness.py --root . --summary-only
cargo fmt --all -- --check
cargo metadata --format-version 1 --no-deps > /tmp/sasedev-knowledge-0.0.2-alpha.2.fix.2-metadata.json
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
python3 - <<'PY'
import json
from pathlib import Path
metadata = json.loads(Path("/tmp/sasedev-knowledge-0.0.2-alpha.2.fix.2-metadata.json").read_text(encoding="utf-8"))
packages = {package["name"] for package in metadata["packages"]}
expected = {
"knowledge-domain-lib",
"knowledge-git-api",
"knowledge-git-lib",
"knowledge-sync-api",
"knowledge-web-lib",
"knowledge-pgr-server",
"knowledge-howtos-server",
"knowledge-snippets-server",
}
assert packages == expected, packages
assert len(metadata["workspace_members"]) == 8, metadata["workspace_members"]
print("Knowledge 0.0.2-alpha.2.fix.2 Cargo metadata audit: clean")
PY
test -f Cargo.lock
git check-ignore -q Cargo.lock
if git ls-files --error-unmatch Cargo.lock >/dev/null 2>&1; then
echo 'Cargo.lock must remain untracked for Knowledge' >&2
exit 1
fi
test -z "$(git diff --name-only -- Web)"
test -z "$(git diff --name-only -- crates/knowledge-git-api crates/knowledge-sync-api)"
test -z "$(git diff --name-only -- crates/knowledge-git-lib/src/backend.rs crates/knowledge-git-lib/src/error.rs crates/knowledge-git-lib/src/lib.rs)"
test ! -e crates/knowledge-app-lib
test ! -e crates/knowledge-forge-gitea-lib
test ! -e crates/knowledge-store-postgres-lib
git add -A
git diff --cached --check
git status --short
Résultat attendu
Le point critique est :
cargo clippy --workspace --all-targets --all-features -- -D warnings
qui doit désormais être PASS sans warning ni erreur.
Le test ciblé doit conserver :
7 passed; 0 failed
Un PASS complet ferme alpha.2 et autorise uniquement la préparation d'alpha.3.