Files
sasedev-knowledge/deltas/0.0.2/alpha.2.fix.2.md

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.