0001: QA Split, CI, and Docs

Context

  • CI failed due to manim’s system dependency (pangocairo) when installed from requirements.txt. We also wanted a robust QA pipeline and auto-published docs.

Decision

  • Keep runtime dependencies lean in requirements.txt (no manim).

  • Add QA-only dependencies to requirements-qa.txt (ruff, mypy, pytest-cov, bandit, interrogate, pyupgrade, sphinx, myst-parser, RTD theme, pre-commit).

  • Keep dev extras (including manim) in requirements-dev.txt for local usage.

  • Make Vulture optional (not in default audit) to avoid false positives early in the project.

  • Add pre-commit with ruff+black hooks and run as part of make audit.

  • Add Sphinx docs and a GitHub Actions workflow to publish on GitHub Pages.

Consequences

  • CI is reliable across environments without needing system packages for manim.

  • Developers can opt-in locally to manim by installing requirements-dev.txt.

  • QA is standardized via make qa and enforced pre-commit hooks.

  • Documentation builds and deploys from the main branch.