docs: move BEDIENUNGSANLEITUNG and INSTALL_FROM_ARCHIVE into docs/

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 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-07-07 11:17:41 +02:00
commit b8680cc049
5 changed files with 16 additions and 46 deletions

View file

@ -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