Ordnung

Checks

Every finding Ordnung reports carries a stable check identifier from the list on this page. The identifier is the name you use everywhere: filtering output, setting a severity in .ordnung/overrides.toml, granting a fleet exception, or discussing a finding in review.

Run ordnung --list-checks to see the checks your installed binary carries, with their one-line instructions. That output comes from the binary, so it is the authority if this page and your installed version ever disagree.

How to read the tables#

Severity is the default the built-in policy assigns; any layer of configuration may raise, lower, or switch a check off.

severity meaning
required A failure gates the exit code. Ordnung considers this broken.
recommended Reported, worth fixing, not a gate.
off Opt-in. Runs only when a policy layer switches it on.

Scope says what one finding covers. A repository check has one verdict per repository — there is one README, one default branch, one Dependabot configuration. A project check reports once per detected project root, so a monorepository receives one finding per directory.

Some checks read the local working tree, some read GitHub repository settings through the gh CLI, and some do both. ordnung check runs the local side; ordnung repo-check --repo owner/name is the full audit.

Repository shape#

check severity scope what it wants
codeowners recommended repository Keep a valid CODEOWNERS file in .github/CODEOWNERS, CODEOWNERS, or docs/CODEOWNERS, in GitHub precedence order, with at least one rule that assigns an @account, @organization/team, or email owner.
conventional-commits recommended repository Enforce Conventional Commits in a pull-request or push workflow with a recognized semantic-title action, commitlint, cocogitto, convco, or an explicit failing PR-title validator; mention Conventional Commits in the root README or CONTRIBUTING.md.
gitignore required project Ignore each ecosystem's build junk at every package scope: Cargo requires target/ and Bun, npm, pnpm, and Yarn require node_modules/; applicable ancestor .gitignore files may provide the rule.
project-inventory required repository Keep supported project boundaries and manifests detectable by Ordnung.
repo-meta recommended repository Keep repository description and issue tracking configured.
scripts recommended repository Keep detected shell scripts under the configured scripts.directory, except exact scripts.allow paths; provide the configured development script there and name its repository-relative path in the root README.
stray-files off (opt-in) repository Keep root Markdown and text files conventional or explicitly listed in stray_files.allow; keep working notes under stray_files.notes.

Documentation and text#

check severity scope what it wants
action-badge off (opt-in) repository For a public repository that publishes a root GitHub Action, link its exact Marketplace listing from the root README.
changelog recommended repository Keep a root CHANGELOG.md, CHANGELOG, CHANGELOG.txt, CHANGES.md, or HISTORY.md; format and versioning style are repository choices.
codespell recommended repository Run Codespell from a push or pull-request workflow using its command or registered GitHub Action.
field-guide off (opt-in) repository At the start of work, find and read field_guide.md; append concise, durable discoveries that will help future agents. Keep the file in the repository, preferably at notes/field_guide.md.
license recommended repository Keep a root LICENSE, LICENSE.md, LICENSE.txt, COPYING, or UNLICENSE file; GitHub SPDX classification is useful but nonstandard license text is allowed.
readme required repository Keep a root README that opens with an H1 title in its first ten nonblank lines.
readme-quality recommended repository Keep the root README between 150 and 1,500 words with install/getting-started, usage/docs, contributing, and license sections, and no broken repository-relative Markdown links.
vale off (opt-in) repository Keep a root .vale.ini with an existing relative StylesPath when declared, and run Vale from a push or pull-request workflow.
website off (opt-in) repository Keep the repository's GitHub homepage setting pointed at its reachable HTTP(S) website.

GitHub safeguards#

These read repository settings through the gh CLI, so they report in ordnung repo-check and ordnung github check rather than in a plain local ordnung check.

check severity scope what it wants
allow-auto-merge recommended repository Keep GitHub auto-merge equal to the effective github.allow_auto_merge policy; an unmanaged setting is left alone.
auto-update-pr-branches recommended repository Allow and automate pull-request branch updates when strict checks require freshness.
branch-protection required repository Require pull requests and block force pushes and deletion on the default branch.
required-checks recommended repository Require every check posted by pull-request workflows before default-branch changes merge.
ruleset-bypass recommended repository Give every active branch ruleset that gates merging at least one explicit bypass actor for emergency administration.
secret-scanning required repository Keep secret scanning and push protection enabled where available.
strict-status-checks recommended repository Require status checks to run against the latest default-branch state.

CI safety#

check severity scope what it wants
ci-continue-on-error required repository Do not let jobs or gating test, lint, format, typecheck, and build steps hide failures with continue-on-error.
ci-exists required project Keep a push or pull-request workflow with test, lint, and format tasks for every detected language; exempt scratch project paths explicitly with ci_exists.ignore.
ci-green required repository Keep latest default-branch runs green for active repository-owned workflows.
ci-job-timeout recommended repository Give every push and pull-request CI job an explicit finite timeout; reusable-workflow jobs are exempt because GitHub does not allow the setting there.
ci-matrix-scoped recommended repository Let every pull-request matrix job short-circuit: scope the workflow with path filters, condition the job, or expand the matrix from a fanout job that inspects the change.
ci-scheduled-run recommended repository Run validation on a schedule when periodic coverage should expose repository bitrot between changes.
ci-scoped recommended repository Gate heavy pull-request jobs with workflow path filters, a job condition, or a dependency on an output-producing fanout job.
git-hooks off (opt-in) repository Commit the repository's Git hooks under .githooks, keep every hook file executable, and have the development script point core.hooksPath at it; a declared hook manager installs itself instead.
zizmor off (opt-in) repository Run zizmor static analysis over the repository's GitHub Actions workflows from a push or pull-request workflow, using its command or the zizmor-action.
test-retry-masking required repository Do not configure test commands or standard Rust and TypeScript test-runner configuration to rerun failures until they pass.
workflow-permissions required repository Keep the repository's default GITHUB_TOKEN read-only and prevent workflows from approving pull requests; jobs that need write access must grant it explicitly with a permissions block.

Build and toolchain#

check severity scope what it wants
artifacts-built recommended project Build every detected binary, site bundle, napi-rs addon, and Tauri application in GitHub Actions; run full Tauri builds on a scheduled workflow.
builds required project Run every declared build, build:* or *:build package target on push or pull requests; Tauri projects also need a change-triggered compile check and a scheduled full build.
codegen-drift recommended project Declare each committed generator under [[codegen]] with its project root, command, and output patterns; run it in CI and follow it in the same job with git diff --exit-code or git diff --quiet.
hawk off (opt-in) repository In Rust repositories, run Astral's hawk (cargo hawk) from a push or pull-request workflow to flag unnecessarily public APIs.
reproducible-toolchain required repository Keep GitHub setup-action toolchain inputs off unbounded latest and wildcard versions; explicit versions and bounded stable channels are allowed.
shellcheck off (opt-in) repository When the repository carries shell scripts, run ShellCheck over them from a push or pull-request workflow using its command or a registered GitHub Action.
stylelint off (opt-in) project For each package containing CSS, SCSS, Sass, or Less, keep a Stylelint configuration in that package or an ancestor and run Stylelint on pushes or pull requests.
test-inline off (opt-in) project Keep tests out of source files; move an inline test module under the configured test root.
test-mirror off (opt-in) project Give every source file a mirrored test file under the configured test root, matching its path and a configured test suffix.
typecheck required project Keep JavaScript and TypeScript projects on an explicit type layer and run their typechecker on push or pull requests.

Dependencies#

check severity scope what it wants
dependabot required repository Keep a valid .github/dependabot.yml version 2 configuration with a scheduled update covering every detected package ecosystem at its owning directory and GitHub Actions at the repository root; directory globs may be used explicitly.
dependabot-automerge recommended repository When github.allow_auto_merge is explicitly enabled, use a Dependabot-only pull-request workflow that fetches update metadata, excludes major updates, and enables auto-merge behind required checks.
lockfiles required project Commit the correct lockfile for every detected package ecosystem.
pinned-actions required repository Reference third-party GitHub Actions by commit SHA; local actions are exempt and first-party release channels are allowed.
pinned-dependencies recommended project Use exact npm/Bun dependency versions; local dependencies are exempt and Cargo ranges stay advisory because Cargo.lock owns resolution.
required-dependencies required project Declare every package the effective policy requires for a project's language or ecosystem; a workspace member may inherit the declaration from its workspace root.

Maintenance automation#

check severity scope what it wants
stale recommended repository Keep open pull requests active within 30 days, remove branches already merged into the default branch, and enable automatic branch deletion after merge.

Changing a severity#

Outside a fleet, a repository sets check severities directly in .ordnung/overrides.toml:

[checks]
codespell = { severity = "off" }
test-mirror = { severity = "required" }

Inside a fleet, a member requests an exception under [overrides] instead, and every exception must carry a reason. Unknown check IDs are an error at every layer, so a typo fails loudly instead of silently doing nothing.