🛡️ Hexaqual
🛡️ Universal quality & governance engine for Hexastack, Hexaqueue, and Hexaflow · 🌊 Execution DAGs powered by Hexaflow
Universal Python quality gates, architectural boundary enforcement, and release engineering toolchain.
Hexaqual provides an opinionated, high-velocity quality harness designed for modular Python architectures, monorepos, and single-package projects. It unifies linting, type-checking, cognitive complexity enforcement, __all__ integrity, 1:1 test symmetry, and automated PyPI release workflows into a cohesive, workflow-driven developer CLI.
🚀 Key Features
- Workflow-Driven Sanity Checks: Multi-stage DAG pipeline powered by Hexaflow for parallel linting, typechecking, and testing.
- Turnkey GitHub Marketplace Action: Drop-in composite action setting up Python,
uv, pre-commit caching, and executing quality checks in CI. - Architectural Invariants: First-class support for hexagonal layer enforcement (
domain,ports,adapters,infra). - Test Parity Enforcement: 1:1 symmetry verification between source modules and unit test suites.
- Public API Integrity: Automatic sorting, deduplication, and AST validation of
__all__exports. - Smart PyPI Publishing: Dependency-ordered, reproducible builds with automatic skip-if-exists checks.
⚡ GitHub Marketplace Action
Hexaqual is available on the GitHub Marketplace as a turnkey composite action that automatically sets up uv, Python, caches pre-commit environments, and runs your checks:
jobs:
quality-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: TheTrueSCU/hexaqual@v0.4.0
with:
mode: "pre-commit" # options: 'pre-commit', 'sanity', 'setup'
sync-args: "--all-extras --dev"
📦 Installation
# Add as a development dependency
uv add --dev hexaqual
# Or install globally
uv tool install hexaqual
🛠️ Unified CLI (hexaqual)
Hexaqual subsumes all developer quality tools into a single unified entrypoint (hexaqual). It dynamically detects workspace layout:
- Multi-package workspaces (
packages/exists): accepts-p/--packageto filter focus across packages, or-a/--allfor the whole workspace. - Single-package projects (no
packages/): automatically focuses on the root package without requiring-p. - Examples support: if an
examples/directory exists,-e/--exampleallows targeted auditing of example projects.
Command Overview
| Command | Subcommands | Description |
|---|---|---|
hexaqual check (alias: sanity) |
— | Run the multi-stage quality pipeline (Ruff, Ty, Complexipy, __all__, test parity, pytest). |
hexaqual statements |
check, fix |
Audit and auto-format __all__ exports with strict casefold sorting. |
hexaqual parity |
test, extras |
Audit 1:1 symmetry between source modules and unit tests, and optional extras forwarding. |
hexaqual test |
run, boundary, redundancy, impact, fuzz, snapshot, archon |
Run pytest suites, boundary assertion audits, redundancy analysis, git impact tests, fuzzing, and inline snapshots. |
hexaqual mutate |
run, inspect |
Dual-engine mutation testing (pytest-gremlins & mutmut) with auto-parallelism and triage inspection. |
hexaqual hooks |
install, check, uninstall, commit-msg |
Multi-stage Git hooks lifecycle management (pre-commit, commit-msg, pre-push, post-merge, post-checkout). |
hexaqual release |
build, check, publish, reproducible |
Build sdist/wheel distributions, verify metadata, and publish to PyPI with smart duplicate skipping. |
hexaqual gh |
pr, checks, repo, security, code-scanning, codeql |
Inspect PR health dashboards, CI checks, repo governance, Dependabot, and CodeQL alerts. |
hexaqual deps |
audit, deptry, graph |
Audit dependencies, run deptry checks, and generate dependency graphs via pydeps. |
hexaqual imports |
check, generate |
Verify and generate import-linter contracts for hexagonal boundary enforcement. |
hexaqual refactor |
alphabetize, rename, extract, move, run |
Automated code refactoring and AST-level symbol alphabetization via Rope. |
hexaqual docs |
usage, publish |
Verify/regenerate USAGE.md catalogs and publish Medium articles. |
hexaqual agents |
sync, check, list |
Synchronize and verify universal .agents guardrails (rules, workflows, skills). |
hexaqual complexity |
— | Audit cognitive complexity across functions and methods via complexipy. |
# Run sanity checks on specific packages in a workspace
hexaqual check -p core -p cqrs
# Run sanity check with auto-formatting on a single-package repo
hexaqual check --fix
# Audit __all__ integrity across all packages
hexaqual statements check
# Run pytest on tests impacted by recent git changes
hexaqual test impact
# Examine a GitHub Pull Request dashboard with live polling
hexaqual gh pr 42 --watch
# Verify USAGE.md catalog is up to date
hexaqual docs usage --check
For the complete unrolled CLI reference and full option listings for every subcommand, see USAGE.md.
🪝 Git Lifecycle Hooks & Commit Governance
Standard pre-commit install only installs the pre-commit stage by default. Hexaqual provides a unified hooks manager that configures all 5 critical lifecycle stages in a single step:
# Install all 5 hook stages (pre-commit, commit-msg, pre-push, post-merge, post-checkout)
uv run hexaqual hooks install
# Inspect active hook status across all stages
uv run hexaqual hooks check
| Hook Stage | Trigger | Purpose |
|---|---|---|
pre-commit |
git commit |
Fast static quality checks (Ruff, Ty, complexipy, __all__, test symmetry). |
commit-msg |
git commit |
Validates Conventional Commits and OpenSSF DCO sign-offs (Signed-off-by:). |
pre-push |
git push |
Fast regression sanity gate preventing broken builds from reaching remote CI. |
post-merge |
git pull / merge |
Auto-syncs dependencies (uv sync) and re-synchronizes universal agent rules. |
post-checkout |
git switch |
Auto-syncs dependencies and agent guardrails on branch changes. |
Pre-Commit Configuration (.pre-commit-config.yaml)
Hexaqual distributes reusable hooks via GitHub:
repos:
- repo: https://github.com/TheTrueSCU/hexaqual
rev: v0.8.0
hooks:
- id: hexaqual-sanity # Fast static sanity gate (Ruff, Ty, complexipy, etc.)
- id: hexaqual-architecture # Verify test_hexagonal_boundaries.py suites
- id: hexaqual-agents # Verify .agents/ assets match installed hexaqual
- id: hexaqual-agents-sync # Auto-sync .agents/ on post-merge and post-checkout
- id: hexaqual-commit-msg # Enforce Conventional Commits & DCO on commit-msg
- id: hexaqual-pre-push # Run fast sanity check on pre-push
🧬 Dual-Engine Mutation Testing
Hexaqual implements a high-velocity dual-engine mutation testing harness:
pytest-gremlins(Default): In-process AST mutation engine targeting executable boundary conditions (<vs<=,andvsor, arithmetic, returns). Delivers 100% actionable signal with decoupled multicore scaling:-n auto: Parallel baseline pytest execution viapytest-xdist.-w auto: Parallel in-process mutation workers (--gremlin-workers).--batch-size 10: Batched mutant execution (--gremlin-batch).-A/--affected: Scopes mutation testing strictly to packages impacted bygit diff.
mutmut: Subprocess-isolated deep mutation auditor for literal constants, token shifts, and pre-release audits.
# High-velocity developer loop: multicore auto-scaled boundary mutations
uv run hexaqual mutate run -p <pkg> -e gremlins -w auto --batch-size 10 -n auto
# Scoped to affected packages only (ideal for PR CI verification)
uv run hexaqual mutate run -A -e gremlins -w auto
# Deep literal constant audit
uv run hexaqual mutate run -p <pkg> -e mutmut
# High-level triage summary of surviving mutants (Critical, Equivalent, Ignorable)
uv run hexaqual mutate inspect -s
# Actionable critical mutants only
uv run hexaqual mutate inspect -p <pkg> -act
🐕 Dogfooding Hexaflow: Workflows as Architecture
Hexaqual serves as the primary real-world dogfooding ground for Hexaflow, demonstrating how lightweight, in-memory workflow DAGs can orchestrate high-performance developer tooling without complexity or latency.
The Sanity Workflow DAG
Rather than executing checks in a rigid, monolithic sequence or maintaining ad-hoc shell orchestration, hexaqual sanity compiles each target's verification into a declarative hexaflow.Workflow:
graph LR
subgraph stage1 ["Stage 1: Leaf Static Checks"]
Lint["Ruff Lint & Format"]
Statements["__all__ Integrity"]
Parity["1:1 Test Symmetry"]
end
subgraph stage2 ["Stage 2: Static Analysis"]
Typecheck["Ty Typecheck"]
Complexity["Cognitive Complexity <= 25"]
end
subgraph stage3 ["Stage 3: Dynamic Verification"]
Pytest["Pytest Test Suites"]
end
Lint --> Typecheck
Statements --> Typecheck
Parity --> Complexity
Typecheck --> Pytest
Complexity --> Pytest
Why Dogfooding Hexaflow Matters:
- Deterministic Staging & Fail-Fast: Ultra-fast leaf AST checks (Ruff,
__all__, test symmetry) execute in Stage 1 (~0.05s), providing immediate feedback before heavier static analysis (Ty, complexipy) or test suites run. - Granular Step Checkpoints: Each verification step executes within a discrete
StepContext, recording execution metrics, structured findings, and pass/fail states into anInMemoryStateStore. - Zero-Latency Overhead: Hexaflow's minimal runtime footprint adds virtually zero overhead—the entire 5-stage static check pipeline runs in under 0.6 seconds.
- Resilient Error Isolation: If a step fails, the workflow gracefully preserves partial reports, enabling the Rich presenter to render complete multi-target dashboards showing exact failure context.
🤖 Universal AI Guardrails & Agent Management (.agents/)
Hexaqual acts as the single source of truth for AI pair programming assistants (Antigravity CLI, Cursor, Claude Code, Windsurf) across the entire hexa- family (hexastack, hexaqueue, hexaflow, hexaqual).
It implements a Two-Tier Architecture:
- Universal Guardrails (Managed by
hexaqual): Bundled rules (hexaqual-*.md), workflows (hexaqual-*.md), and skills (hexaqual_*.py) that apply universally across every repository. - Family-Member Guardrails (Local to
X): Repository-specific rules (hexa<X>-*.md) that define project-specific invariants (e.g.,hexaqueue-elevation.md,hexaflow-dag-invariants.md). These local assets are preserved untouched during synchronizations.
Bundled Universal Catalog
| Category | File | Description |
|---|---|---|
| Rule | hexaqual-boundaries.md |
Enforce hexagonal layer isolation (domain/ -> ports/ -> adapters/ -> infra/). |
| Rule | hexaqual-test-authoring.md |
1:1 test parity, __init__.py mirroring, pure ABC port mocking, side-effect-free assertions. |
| Rule | hexaqual-hermetic-testing.md |
Hermetically sealed test fixtures, tmp_path, zero global state or socket pollution. |
| Rule | hexaqual-docstrings.md |
Mandatory Google docstrings with Args:, Returns:, Raises:, and Notes/Architectural Intent:. |
| Rule | hexaqual-workspace.md |
Monorepo hierarchy, subpackage import boundaries, casefold-sorted __all__ exports. |
| Rule | hexaqual-typing.md |
Python 3.12+ generic syntax (class C[T]:), zero bare Any across domain boundaries. |
| Rule | hexaqual-property-testing.md |
Hypothesis stateful fuzzing (RuleBasedStateMachine) for state machines and schedulers. |
| Rule | hexaqual-security.md |
Prohibition of shell=True, path traversal guards, secret scanning, least-privilege defaults. |
| Rule | hexaqual-sync.md |
Guardrail invariant to execute hexaqual agents sync upon dependency upgrades. |
| Workflow | hexaqual-pre-commit.md |
Fast pre-commit gate (hexaqual sanity -a --skip-tests, docs freshness, agent sync). |
| Workflow | hexaqual-pre-push.md |
Full pre-push gate: format drift -> sanity with tests -> graphify -> pre-commit hooks. |
| Workflow | hexaqual-pre-release.md |
Pre-release packaging audit, doc freeze, PyPI availability, reproducible wheel check. |
| Workflow | hexaqual-scaffold-unit.md |
Scaffold domain entity, port, adapter, and mirrored unit test file. |
| Workflow | hexaqual-mutation.md |
Targeted mutation analysis and actionable mutant triage. |
| Workflow | hexaqual-sync.md |
Synchronize shared agent guardrails from installed hexaqual. |
| Skill | hexaqual_audit_complexity.py |
Fast function cognitive complexity linter (<= 25 via complexipy). |
| Skill | hexaqual_audit_docstrings.py |
AST docstring auditor checking for Google docstrings & Architectural Intent. |
| Skill | hexaqual_scaffold_test_parity.py |
Git-aware test mirror and __init__.py scaffolding helper. |
CLI Synchronization & Drift Verification
# Synchronize universal guardrails to current repository (preserves local hexaX-* rules)
uv run hexaqual agents sync
# Dry-run simulation of synchronization
uv run hexaqual agents sync --dry-run
# Verify repository guardrails match the installed hexaqual version (pre-commit gate)
uv run hexaqual agents check
# List all universal bundled rules, workflows, and skills
uv run hexaqual agents list
Root Pointer (AGENTS.md) & Dynamic Reloading
- Aggregated Index:
hexaqual agents synccreates a rootAGENTS.mdindexing all active rules, workflows, and skills (both universalhexaqual-*and project-specifichexa<X>-*assets). This ensures single-file agent tools (like GitHub Copilot Workspace) maintain full context. - VCS Hygiene:
hexaqual agents syncensures.gitignoreexcludes.agents/*/hexaqual-*so upstream assets are never committed to git. Maintainers may commitAGENTS.mdfor GitHub visibility or add it to local.git/info/excludeto keep the root directory clean. - Per-Turn Dynamic Reloading: In Antigravity CLI/IDE, rule files under
.agents/rules/andAGENTS.mdare dynamically reloaded at the start of each user prompt, so synced guardrails take effect immediately on the next interaction.
🏛️ Architecture & Documentation
- Architecture & Design Guide: Hexagonal boundaries, CQRS command bus, and architectural invariants.
- AI Agent Governance Guide: Universal
.agents/rules, SDLC workflows, colocated skills, and VCS hygiene. - CLI Reference Catalog: Full unrolled command and subcommand trees with exhaustive option listings.
📄 License
Apache-2.0. See LICENSE for details.
Metadata
Release files for hexaqual 0.9.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hexaqual-0.9.7.tar.gz | 6.6 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hexaqual-0.9.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.9 MB
Release files / hexaqual-0.9.7.tar.gz
| Download URL | hexaqual-0.9.7.tar.gz |
|---|---|
| Size | 6.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c543cc23cfe9a168d98a763e6467e62430b3e4d0366b2ad46ed866e9ba404b32
|
|
BLAKE2b-256 checksum How to use checksums |
ea4e2ef07ee77d35bd8f642e418f30e19acf0eaa19bbd07692443eefef8e0795
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / hexaqual-0.9.7-py3-none-any.whl
| Download URL | hexaqual-0.9.7-py3-none-any.whl |
|---|---|
| Size | 304.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b59affcca860a4bf97bc61938828b2c60962da08a039354d4f81a91becbf8fd7
|
|
BLAKE2b-256 checksum How to use checksums |
84cbb12355b566d48e8d67f19d7c506b36106a436d7691d7d2999d9435364496
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for hexaqual 0.9.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.