Explainable conformance checks for Apache Airflow engineering policies
Project description
ConformDAG
Turn Apache Airflow engineering standards into enforceable, explainable checks.
ConformDAG is a local-first CLI that scans Airflow repositories against versioned organizational policies. Source analysis is offline and non-executing by default. Dockerized Airflow import validation and BYOK semantic review are explicit opt-ins. Every engine contributes to one versioned JSON report that can also be rendered as terminal output, SARIF, or self-contained HTML.
Public beta
ConformDAG 0.1.0b1 includes:
- six deterministic Airflow policy evaluators with versioned policy contracts;
- policy provenance validation and human/machine-readable policy inspection;
- expiring suppressions with stale and unmatched-suppression diagnostics;
- a constrained Docker runtime profile for maintained Airflow 3.3.0;
- four opt-in semantic policies through OpenAI-compatible endpoints, with local redaction, strict response validation, bounded concurrency, and normalized caching;
- canonical JSON, terminal, SARIF, and static HTML reports; and
- a 240-case offline deterministic benchmark with per-policy release gates.
Provider-backed semantic accuracy baselines are not claimed because the public benchmark does not yet contain a redistributable, labelled semantic corpus. The recorded provider smoke measurements validate integration, provenance, schema rejection, and cache behavior; they are not accuracy measurements. This limitation does not weaken the offline deterministic gate.
Airflow 2.11.2 was evaluated as a legacy candidate but is not shipped in the beta. It
reached upstream end of life, and maintaining an EOL image would undermine the beta's
security and update cadence. Users who must inspect that version can provide their own
digest-pinned image with --runtime-image; it is outside the supported beta profile
matrix and benchmark gate.
Installation and quick start
ConformDAG requires Python 3.12. With Python and uv managed through mise, run the pinned beta without installing it globally:
mise use python@3.12 uv@0.12.0
mise exec -- uvx --from conformdag==0.1.0b1 conformdag version
In an Airflow repository, create the non-destructive starter files and review the empty policy scaffold before adding organizational rules:
mise exec -- uvx --from conformdag==0.1.0b1 conformdag init
mise exec -- uvx --from conformdag==0.1.0b1 conformdag validate-policies \
--path policies/pack.yaml
mise exec -- uvx --from conformdag==0.1.0b1 conformdag scan \
--path . \
--policy-pack policies/pack.yaml
Source analysis is offline and non-executing unless runtime or semantic evaluation is explicitly enabled. See the user guide before enabling either networked opt-in.
Development
The project uses mise as its tool and task entry point:
mise install
mise run setup
mise run check
Run the CLI from a checkout through the locked uv environment:
mise exec -- uv run conformdag validate-policies --path policies/pack.yaml
mise exec -- uv run conformdag list-policies --path policies/pack.yaml
mise exec -- uv run conformdag policy review AIR-DET-001 --path policies/pack.yaml
mise exec -- uv run conformdag scan --path . --policy-pack policies/pack.yaml
See the user guide for setup and operational usage, the architecture for trust boundaries and data flow, and the release checklist for publication evidence and verification.
License
Apache-2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file conformdag-0.1.0b1.tar.gz.
File metadata
- Download URL: conformdag-0.1.0b1.tar.gz
- Upload date:
- Size: 41.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ff90635401012b146eaf931915813a9ae3c303cb0435367f61b4c2556b8ee08
|
|
| MD5 |
bd6e4243f14301e1aa8b23dfe7d43c92
|
|
| BLAKE2b-256 |
001352f5b68f32ccd0ac2df537d40fa27ea79b473e568841a4f1aea4dd538ebb
|
Provenance
The following attestation bundles were made for conformdag-0.1.0b1.tar.gz:
Publisher:
release.yml on parthmule28/conformdag
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conformdag-0.1.0b1.tar.gz -
Subject digest:
4ff90635401012b146eaf931915813a9ae3c303cb0435367f61b4c2556b8ee08 - Sigstore transparency entry: 2314386177
- Sigstore integration time:
-
Permalink:
parthmule28/conformdag@f030065513d3f12153aeea24ad79f467eeda1d48 -
Branch / Tag:
refs/tags/v0.1.0-beta.1 - Owner: https://github.com/parthmule28
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f030065513d3f12153aeea24ad79f467eeda1d48 -
Trigger Event:
push
-
Statement type:
File details
Details for the file conformdag-0.1.0b1-py3-none-any.whl.
File metadata
- Download URL: conformdag-0.1.0b1-py3-none-any.whl
- Upload date:
- Size: 53.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4967f7b7b8c05aa8eee1212c9098c4cd1079f5e9832face00cd569c0e746f821
|
|
| MD5 |
3ac234e53262ea5fa8866f6f4991e026
|
|
| BLAKE2b-256 |
f7cf4f1bf6b6d420c83ac3533052bc87d47e6eb0d8bff48e0981d765a5e5ffa3
|
Provenance
The following attestation bundles were made for conformdag-0.1.0b1-py3-none-any.whl:
Publisher:
release.yml on parthmule28/conformdag
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
conformdag-0.1.0b1-py3-none-any.whl -
Subject digest:
4967f7b7b8c05aa8eee1212c9098c4cd1079f5e9832face00cd569c0e746f821 - Sigstore transparency entry: 2314386247
- Sigstore integration time:
-
Permalink:
parthmule28/conformdag@f030065513d3f12153aeea24ad79f467eeda1d48 -
Branch / Tag:
refs/tags/v0.1.0-beta.1 - Owner: https://github.com/parthmule28
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f030065513d3f12153aeea24ad79f467eeda1d48 -
Trigger Event:
push
-
Statement type: