From b8680cc049a6329dc9f25d59512deb5d406d10e9 Mon Sep 17 00:00:00 2001 From: dschlueter Date: Tue, 7 Jul 2026 11:17:41 +0200 Subject: [PATCH] docs: move BEDIENUNGSANLEITUNG and INSTALL_FROM_ARCHIVE into docs/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keep only README, LICENSE, and CHANGELOG as prose at the repo root (tooling/convention) and move the remaining manuals under docs/ next to SECURITY_AND_OPERATIONS.md. - git mv the two files into docs/ (history preserved). - Update all cross-references: README doc-index links, the internal SECURITY_AND_OPERATIONS link and the §12 pointer list in BEDIENUNGSANLEITUNG, and the repo inventory in SECURITY_AND_OPERATIONS §1. - build_archive.py: point REQUIRED_FILES at docs/ and drop the now-redundant INCLUDE_FILES entries (the docs/ dir is included wholesale). - build_archive.py: drop the obsolete requirements.txt<->pyproject dependency mirror check, which broke once requirements.txt was reduced to `.` (pyproject is the single source of truth). Verified by building and re-opening the archive. Co-Authored-By: Claude Opus 4.8 --- README.md | 4 +- build_archive.py | 47 ++++--------------- .../BEDIENUNGSANLEITUNG.md | 4 +- .../INSTALL_FROM_ARCHIVE.md | 2 +- docs/SECURITY_AND_OPERATIONS.md | 5 +- 5 files changed, 16 insertions(+), 46 deletions(-) rename BEDIENUNGSANLEITUNG.md => docs/BEDIENUNGSANLEITUNG.md (98%) rename INSTALL_FROM_ARCHIVE.md => docs/INSTALL_FROM_ARCHIVE.md (98%) diff --git a/README.md b/README.md index 4f8a13c..12a9266 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ Fehlerbehandlung. | Dokument | Für wen / wofür | |---|---| | README (diese Datei) | Schnelleinstieg: Installation, Konfiguration, Verwendung | -| [`BEDIENUNGSANLEITUNG.md`](BEDIENUNGSANLEITUNG.md) | Vollständiges Benutzerhandbuch (alle Aktionen, Optionen, Fehlersuche) | -| [`INSTALL_FROM_ARCHIVE.md`](INSTALL_FROM_ARCHIVE.md) | Installation aus dem `.tar.gz`-Archiv + Archiv selbst bauen/verifizieren | +| [`docs/BEDIENUNGSANLEITUNG.md`](docs/BEDIENUNGSANLEITUNG.md) | Vollständiges Benutzerhandbuch (alle Aktionen, Optionen, Fehlersuche) | +| [`docs/INSTALL_FROM_ARCHIVE.md`](docs/INSTALL_FROM_ARCHIVE.md) | Installation aus dem `.tar.gz`-Archiv + Archiv selbst bauen/verifizieren | | [`docs/SECURITY_AND_OPERATIONS.md`](docs/SECURITY_AND_OPERATIONS.md) | Architektur, Modul-/Repo-Übersicht, Sicherheits- & Betriebsmodell | | `man/llamacppctl.1` | Vollständige Optionsreferenz (`man llamacppctl` bzw. `man ./man/llamacppctl.1`) | | [`CHANGELOG.md`](CHANGELOG.md) | Versionshistorie | diff --git a/build_archive.py b/build_archive.py index 72dbacd..c21ed89 100644 --- a/build_archive.py +++ b/build_archive.py @@ -73,8 +73,8 @@ REQUIRED_FILES = [ "tests/test_lock_ops.py", "tests/test_actions.py", "scripts/smoke.sh", - "BEDIENUNGSANLEITUNG.md", - "INSTALL_FROM_ARCHIVE.md", + "docs/BEDIENUNGSANLEITUNG.md", + "docs/INSTALL_FROM_ARCHIVE.md", ] # Top-level directories to include wholesale (in addition to REQUIRED_FILES), @@ -90,8 +90,6 @@ INCLUDE_FILES = [ "requirements-dev.txt", "llama.cpp.config.example", "build_archive.py", - "BEDIENUNGSANLEITUNG.md", - "INSTALL_FROM_ARCHIVE.md", ] EXCLUDE_DIR_NAMES = {"__pycache__", ".pytest_cache", ".venv", "venv", ".git", "*.egg-info"} @@ -124,14 +122,15 @@ def verify_required_files(project_dir: Path) -> None: def verify_dependencies_declared(project_dir: Path) -> list: - """Parses pyproject.toml and cross-checks it against requirements.txt. + """Parses pyproject.toml and returns the declared runtime dependency + specifiers. - Returns the list of runtime dependency specifiers declared in - pyproject.toml. Raises BuildError on any mismatch. + pyproject.toml is the single source of truth for dependencies + (requirements.txt merely installs the package), so there is no requirements + mirror to cross-check. Raises BuildError if none are declared. """ - log("Verifying declared dependencies are consistent...") + log("Reading declared runtime dependencies from pyproject.toml...") pyproject_path = project_dir / "pyproject.toml" - requirements_path = project_dir / "requirements.txt" try: import tomllib # Python 3.11+ @@ -171,37 +170,7 @@ def verify_dependencies_declared(project_dir: Path) -> list: if not deps: raise BuildError("No runtime dependencies found in pyproject.toml [project.dependencies]") - req_text = requirements_path.read_text(encoding="utf-8") - req_names = set() - for line in req_text.splitlines(): - line = line.strip() - if not line or line.startswith("#"): - continue - # crude package-name extraction, e.g. "requests>=2.31,<3" -> "requests" - name = line - for sep in (">=", "<=", "==", "!=", ">", "<", "~="): - if sep in name: - name = name.split(sep, 1)[0] - req_names.add(name.strip().lower()) - - missing_from_requirements = [] - for dep in deps: - name = dep - for sep in (">=", "<=", "==", "!=", ">", "<", "~="): - if sep in name: - name = name.split(sep, 1)[0] - name = name.strip().lower() - if name not in req_names: - missing_from_requirements.append(dep) - - if missing_from_requirements: - raise BuildError( - "pyproject.toml declares dependencies not mirrored in requirements.txt:\n " - + "\n ".join(missing_from_requirements) - ) - log(f" pyproject.toml dependencies: {deps}") - log(" requirements.txt is consistent with pyproject.toml.") return deps diff --git a/BEDIENUNGSANLEITUNG.md b/docs/BEDIENUNGSANLEITUNG.md similarity index 98% rename from BEDIENUNGSANLEITUNG.md rename to docs/BEDIENUNGSANLEITUNG.md index b22bffe..87b2605 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/docs/BEDIENUNGSANLEITUNG.md @@ -8,7 +8,7 @@ nur auf `127.0.0.1` erreichbar. Diese Anleitung deckt **Installation** und **Benutzung** vollständig ab. Zur Installation aus dem fertigen Archiv siehe zusätzlich [`INSTALL_FROM_ARCHIVE.md`](INSTALL_FROM_ARCHIVE.md). Details zum Sicherheits- -und Betriebsmodell stehen in [`docs/SECURITY_AND_OPERATIONS.md`](docs/SECURITY_AND_OPERATIONS.md); +und Betriebsmodell stehen in [`SECURITY_AND_OPERATIONS.md`](SECURITY_AND_OPERATIONS.md); die vollständige Optionsreferenz in der Manpage (`man/llamacppctl.1`). --- @@ -280,4 +280,4 @@ SMOKE_GPU=1 scripts/smoke.sh - `man/llamacppctl.1` — vollständige Optionsreferenz (`man ./man/llamacppctl.1`). - `docs/SECURITY_AND_OPERATIONS.md` — Architektur, Sicherheits- und Betriebsmodell. - `README.md` — Kurzüberblick. -- `INSTALL_FROM_ARCHIVE.md` — Installation aus dem `.tar.gz`-Archiv. +- `docs/INSTALL_FROM_ARCHIVE.md` — Installation aus dem `.tar.gz`-Archiv. diff --git a/INSTALL_FROM_ARCHIVE.md b/docs/INSTALL_FROM_ARCHIVE.md similarity index 98% rename from INSTALL_FROM_ARCHIVE.md rename to docs/INSTALL_FROM_ARCHIVE.md index fef39bd..2c7c2ef 100644 --- a/INSTALL_FROM_ARCHIVE.md +++ b/docs/INSTALL_FROM_ARCHIVE.md @@ -100,7 +100,7 @@ Das Archiv wird reproduzierbar von `build_archive.py` erzeugt. Es 1. prüft, ob alle erforderlichen Projektdateien vorhanden sind, 2. gleicht die deklarierten Abhängigkeiten in einer frischen venv ab, 3. lässt die komplette Test-Suite laufen, -4. baut das `.tar.gz` (nur Allowlist: `src/ tests/ docs/ man/ scripts/` + `pyproject.toml`, `README.md`, `LICENSE`, `CHANGELOG.md`, `requirements*.txt`, `llama.cpp.config.example`, `build_archive.py`, `BEDIENUNGSANLEITUNG.md`, `INSTALL_FROM_ARCHIVE.md`), +4. baut das `.tar.gz` (nur Allowlist: `src/ tests/ docs/ man/ scripts/` + `pyproject.toml`, `README.md`, `LICENSE`, `CHANGELOG.md`, `requirements*.txt`, `llama.cpp.config.example`, `build_archive.py`), 5. öffnet das Archiv erneut und verifiziert die enthaltenen Dateien, 6. installiert das Paket aus dem Archiv in einer weiteren frischen venv und testet das Konsolenskript. diff --git a/docs/SECURITY_AND_OPERATIONS.md b/docs/SECURITY_AND_OPERATIONS.md index b25dc2f..4eaa144 100644 --- a/docs/SECURITY_AND_OPERATIONS.md +++ b/docs/SECURITY_AND_OPERATIONS.md @@ -43,9 +43,10 @@ scripts/smoke.sh Opt-in End-to-End-Rauchtest gegen echten Docker + GPU `git config core.hooksPath .githooks` .forgejo/workflows/ci.yml Forgejo-Actions-CI (läuft, sobald ein Runner registriert ist) README.md Schnelleinstieg + Doku-Index -BEDIENUNGSANLEITUNG.md Vollständiges Benutzerhandbuch -INSTALL_FROM_ARCHIVE.md Installation aus dem Archiv + Archiv bauen/verifizieren CHANGELOG.md / LICENSE Versionshistorie / MIT-Lizenz +docs/BEDIENUNGSANLEITUNG.md Vollständiges Benutzerhandbuch +docs/INSTALL_FROM_ARCHIVE.md Installation aus dem Archiv + Archiv bauen/verifizieren +docs/SECURITY_AND_OPERATIONS.md Dieses Dokument (Architektur/Sicherheit/Betrieb) ``` ## 2. Konfigurationsmodell