Skip to main content

Cross-repo invariant verifier for the zyplux organization

Project description

cerberus

Verifies repository invariants — CI workflows, branch-protection rulesets, CODEOWNERS, workflow secrets, and justfile conventions. Run it two ways: as a per-repo linter against a checkout (cerberus), or as a central scan across every repo in the org (cerberus org).

Requirements

  • uv and Python 3.14
  • gh, authenticated against the org — only for cerberus org

The justfile check shells out to just, which ships with the package (via rust-just) — no separate install.

Lint a repo

uv run cerberus            # lint the current directory
uv run cerberus PATH       # lint a checkout at PATH

Runs the content checks (justfile, ci-workflow, codeowners) against the checkout and exits non-zero on any failure or error — warnings do not fail the run — so it drops into CI like any linter. Control-plane checks (ruleset, workflow-secrets) read GitHub org/admin state the checkout cannot see, so they are skipped here and reported by cerberus org.

Run cerberus list to see every check, its scope, and what it verifies.

Option Description
--check NAME Limit to named check(s); repeatable
--config PATH Use a cerberus.toml other than the bundled
--fix Auto-fix fixable problems (e.g. trailing whitespace)

Scan the org

cerberus org takes the org as a required argument — a bare name, github.com/<org>, or a full URL.

uv run cerberus org zyplux                  # scan every repo, report findings
uv run cerberus org github.com/zyplux       # same, org given as a URL
uv run cerberus org zyplux --repo api       # scan only the named repo(s)

Runs all checks, including the control-plane ones the local linter skips. Accepts --repo/-r and --check. A failure or error exits non-zero; warnings do not.

Checks

ID Scope Verifies
justfile content Recipe names, aliases, check pipeline, wrapped tool calls, no trailing whitespace
ci-workflow content ci.yml exists, exposes a ci check, runs on PRs
workflow-tooling content Workflows set up only the workspace toolchain (uv, bun), not extra tools
codeowners content CODEOWNERS present and covers /.github/
ruleset control-plane Default branch protected by the org baseline ruleset
workflow-secrets control-plane Every secret referenced in workflows is provisioned

Config

Policy — org name, excluded repos, ruleset name, required recipes and aliases — lives in cerberus.toml. Override it with --config PATH.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zyplux_cerberus-0.2.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zyplux_cerberus-0.2.0-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file zyplux_cerberus-0.2.0.tar.gz.

File metadata

  • Download URL: zyplux_cerberus-0.2.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for zyplux_cerberus-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8326529673d75c0f125d6e2b092d6f68b0abfffb7e4ef283b4f14495d020b978
MD5 d21ddbb5dc0e5edaa0b84636dc5ba17d
BLAKE2b-256 23552aa56544d422f7a33d4b20db9eb29ed7105ed10f0f33ec9ba2c9c13ff748

See more details on using hashes here.

File details

Details for the file zyplux_cerberus-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: zyplux_cerberus-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for zyplux_cerberus-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 02be2b36643797f7da3c44653bfb05371d921ddab32d3941e6437a2b700c1f5e
MD5 1e4cf4e33395da83ae181ff8f1de40c8
BLAKE2b-256 8ceec7775d58fcf1e6207814d37008587507483f860a52f8731975aa7ff9a974

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page