Skip to content

v1.4.0 — SOLID Hexagonal Architecture & Security Tooling Alignment

Choose a tag to compare

@hapheus hapheus released this 23 Oct 07:46
· 9 commits to main since this release
05e995b

Release Highlights

This release refactors torproxy into a decoupled, SOLID Python package following Hexagonal Architecture principles, and elevates repository security, supply chain hardening, and governance to match cf-docker-tunnel-sync.

🏗️ Architecture & SOLID Refactoring

  • Package Architecture: Extracted internal scripts into a modular Python package under src/torproxy (domain, ports, adapters, service, web, runtime).
  • Ports & Adapters: Decoupled abstract protocols (ControlPort, EgressProbe, SocksProbe, Clock) from concrete network and OS implementations.
  • Architectural Tests: Added automated AST checks (tests/unit/test_architecture.py) ensuring zero adapter or IO leakage into core domain logic.
  • Backward Compatibility: Container entrypoints (docker/start.sh, docker/api.py, docker/tor_control.py) preserved as thin wrappers with 100% contract fidelity.

🛡️ Security & Supply Chain Workflows

  • Dependabot: Automated weekly updates for GitHub Actions, Python dependencies, and Docker base images.
  • CodeQL: Integrated continuous GitHub Advanced Security static analysis (codeql.yml).
  • OSV-Scanner: Scheduled and PR-level dependency vulnerability audits (osv-scanner.yml).
  • OpenSSF Scorecard: Automated supply-chain security evaluation (scorecard.yml).
  • Strict Quality Gate: PR gate enforces ruff check, ruff format, mypy, ShellCheck, and hermetic pytest execution.

👥 Governance & Community

  • Added .github/CODEOWNERS for @hapheus and @MustermenschAlex.
  • Aligned README.md status badges with production standard.
  • Shipped hardened production deployment examples (examples/hardened-production/).
  • Strictly enforced zero AI files policy across all repositories.

🧪 Verification

  • 204 passed unit & contract tests (100% green).
  • Multi-architecture container build, smoke tests, and Trivy scans passing.