# Delta 0.0.3 rel.1.fix.1 — complétion de la preuve de clôture stable ## Baseline et version Baseline : `0.0.3-rel.1` avec `history/0.0.3/rel.1.md` appliqué, committé et poussé avec le statut `PARTIAL`. Ce delta MUST NOT être appliqué avant ce commit. Version produit avant et après application : ```text 0.0.3 ``` `rel.1.fix.1` est une tranche opérationnelle de clôture ; elle ne change pas la version SemVer stable visée. ## Objet Compléter uniquement les deux preuves absentes du transcript `rel.1` : - audit explicite de l'ensemble exact du workspace à partir de `cargo metadata` ; - audit explicite d'hygiène texte. Toutes les preuves produit/runtime de `rel.1` — Rust, Git, Web, Vite et trois smokes HTTP — sont déjà `PASS` et sont conservées dans son history. Ce fix ne modifie aucun fichier concerné par ces preuves. ## Scope REPLACE : ```text docs/plans/003-V0_0_3_GIT_WRITE_PLAN.md docs/validation/001-VALIDATION_MATRIX.md ``` ADD : ```text deltas/0.0.3/rel.1.fix.1.md ``` DELETE : aucun. Aucun changement sous `VERSION`, `Cargo.toml`, `crates/`, `Web/`, `CHANGELOG.md`, `ROADMAP.md`, `docs/architecture/`, `docs/studies/`, `docs/rules/` ou `prompts/`. ## Gate opérateur Exécuter depuis la racine du dépôt : ```bash test "$(cat VERSION)" = '0.0.3' grep -F 'version = "0.0.3"' Cargo.toml sed -n '/^## Statut$/{n;n;p;q;}' history/0.0.3/rel.1.md | tr -d '`' | grep -Fx 'PARTIAL' git diff --check python3 -B scripts/audit_markdown_headers.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts deltas history python3 -B scripts/audit_markdown_links.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts deltas history python3 -B scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts deltas history cargo metadata --format-version 1 --no-deps > /tmp/sasedev-knowledge-0.0.3-rel.1.fix.1-metadata.json python3 -c 'import json; from pathlib import Path; m=json.loads(Path("/tmp/sasedev-knowledge-0.0.3-rel.1.fix.1-metadata.json").read_text()); expected={"knowledge-app-lib","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 {p["name"] for p in m["packages"]} == expected; assert len(m["workspace_members"]) == 9; print("Knowledge 0.0.3-rel.1.fix.1 workspace audit: clean")' python3 -c 'from pathlib import Path; roots=[Path("README.md"),Path("RULES.md"),Path("ROADMAP.md"),Path("CHANGELOG.md"),Path("docs"),Path("prompts"),Path("deltas"),Path("history")]; paths=[p for r in roots for p in ([r] if r.is_file() else r.rglob("*")) if p.is_file()]; bad=[str(p) for p in paths if (lambda b: b"\r" in b or not b.endswith(b"\n") or b.endswith(b"\n\n") or any(line != line.rstrip(" \t") for line in b.decode("utf-8").splitlines()))(p.read_bytes())]; print(f"Knowledge 0.0.3-rel.1.fix.1 text hygiene: clean ({len(paths)} file(s))") if not bad else (_ for _ in ()).throw(AssertionError(bad))' test -z "$(git diff --name-only -- VERSION Cargo.toml crates Web CHANGELOG.md ROADMAP.md docs/architecture docs/studies docs/rules prompts)" test ! -e history/0.0.3/rel.1.fix.1.md 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 -f Web/knowledge-template-lab/package-lock.json ! git show-ref --verify --quiet refs/tags/v0.0.3 test ! -e sasedev-knowledge-0.0.3-publish.001-report.md git add -A git diff --cached --check git status --short ``` ## Staging attendu Avant ajout du history de ce fix : ```text A deltas/0.0.3/rel.1.fix.1.md M docs/plans/003-V0_0_3_GIT_WRITE_PLAN.md M docs/validation/001-VALIDATION_MATRIX.md ``` ## Transition ### PASS Produire `history/0.0.3/rel.1.fix.1.md`, l'appliquer, puis créer le premier commit stable avec le message exact : ```text 0.0.3 ``` Après push de `master`, créer/pousser le tag annoté `v0.0.3`, vérifier tag/commit/archive réellement publiés puis produire séparément le rapport post-tag `sasedev-knowledge-0.0.3-publish.001-report.md`. ### FAIL / PARTIAL / BLOCKED Conserver le résultat réel dans son history et corriger uniquement la fermeture stable dans le fix suivant, sans créer le tag.