hermes-labs-ai/csv-quality-gate
CSV preflight validation and batch CSV quality checks that fail fast before pipeline runs.
Changelog
Unreleased
- The composite GitHub Action now accepts newline-separated
csv-pathsfor a batch check.csv-pathremains supported for one file; exactly one path input is required. Batch receipts are JSON arrays and retain the CLI's worst-status exit behavior. - Opt-in Action summaries now aggregate batch receipts without exposing paths or issue messages.
0.3.1 - 2026-09-12
-
The repository root is now a portable Agent Plugin (
plugin.json, Agent Plugins 1.0.0) with Claude Code, Codex CLI, and Gemini CLI manifests that all resolve one skill,skills/csv-quality-gate/SKILL.md. Runtime code is unchanged. -
Added an opt-in composite Action job summary with status, profile, row count, issue counts, and an opt-in bounded evidence-column list. The JSON receipt and CLI exit codes are unchanged; the Action also exposes an additive
tool-versionoutput. -
The composite Action declares
authorand Marketplacebrandinginaction.yml; inputs, outputs, and behavior are unchanged. -
Added ecosystem recipes with one passing and one failing fixture each:
examples/dbt-seed.md(gateseeds/*.csvbeforedbt seed) andexamples/promptfoo-dataset.md(gate a CSV test set beforepromptfoo eval). -
Documented the release and Marketplace-listing steps in
CONTRIBUTING.md.
0.3.0 - 2026-09-05
- Added project-specific profiles:
check --config FILE --profile NAMEloads TOML (Python 3.11+) or JSON profiles declared under[profiles]. Profiles are data only (column names, thresholds, regex strings) and mayextendsa built-in. Invalid files are rejected with a precise message and a normalfailreceipt. Built-in profiles and their behavior are unchanged. - Added bounded evidence to issues: each empty-rate, duplicate-rate, and
suspicious-value issue now carries the affected column, the count of affected
rows, and up to
--max-examples(default 5) physical line numbers. Cell values are never emitted. JSON issues gain an optionalevidenceobject; issues without evidence keep the 0.2.0 shape. - The
checkcommand accepts several CSV paths; text output prints one block per file, JSON output becomes an array, and the exit code is the worst status. - Added a pre-commit hook (
.pre-commit-hooks.yaml, idcsv-quality-gate) so the same gate runs on staged CSV files before commit. - The composite Action accepts an optional
configinput;csv-pathandprofilebehave exactly as before. - Exposed
suspicious_warning_rateandsuspicious_fail_rateonProfile(defaults keep the previous fixed 10% / 30%). Public API additions:Profile,Evidence,ConfigError,load_config, and keyword-onlyprofile,max_examples, andconfigparameters onvalidate_csv. - CI now tests Python 3.10 and 3.11 and exercises the pre-commit hook.
- Fixed: a file that is not valid UTF-8 now yields a normal
failreceipt instead of a traceback (which the Action previously reported aswarn). - Fixed: a header with surrounding whitespace (for example
company) is now matched and read as that column instead of being counted as fully empty. - Fixed: a header-only file no longer adds a false
missing required columnerror next tocsv has no data rows; the status is stillfail. - A warning or fail rate of
0.0now means "any occurrence"; a check with no affected rows never raises an issue. Built-in thresholds are unaffected. - Options may appear between CSV paths (
check a.csv --json b.csv).
0.2.0 - 2026-09-05
- Added a root composite GitHub Action with typed CSV path and profile inputs.
- The Action writes a JSON receipt and exposes its status and receipt path while preserving the CLI's pass/warn/fail exit codes.
0.1.2 - 2026-08-04
- Clarified the README, limitations, and outreach-profile heuristic without changing validation behavior.
- Added canonical package links and modernized license metadata.
- Added a tag-bound OIDC Trusted Publishing workflow for PyPI.
0.1.1 - 2026-05-30
- Added citation and Zenodo metadata.
- Aligned the public repository and Hermes Labs identity surfaces.
0.1.0
- Initial public release.
- Added
genericandoutreachvalidation profiles. - Added text and JSON output modes.
- Added fixture-based tests for pass, warning, and fail cases.