headroom/.commitlintrc.json

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

26 lines
441 B
JSON
Raw Normal View History

{
"extends": ["@commitlint/config-conventional"],
"rules": {
ci: fix smart_crusher branch CI failures + add make ci-precheck pre-push gate Five gates broke on the 2026-04-27 push of the smart_crusher branch. Each is fixed below; the second half adds a `make ci-precheck` target (plus an installable git pre-push hook) so the same dance never happens again. Failures fixed: 1. cargo fmt — 22 files had formatting drift introduced over the stage 3c.1 work. `cargo fmt --all` reformatted them; no semantic changes. `cargo test --workspace` still green (388 + supporting). 2. wheels job (macOS x86_64) — `fastembed -> ort -> ort-sys` does not publish prebuilt ONNX Runtime binaries for `x86_64-apple-darwin`. Removed that target from `.github/workflows/rust.yml`'s wheels matrix. Apple Silicon (`aarch64-apple-darwin`) covers macOS distribution; Intel macOS users can build from source. The matrix now has 2 targets: linux x86_64 + macOS aarch64. 3. test-extras (relevance.py) — `tests/test_relevance.py::TestSmartCrusherIntegration` constructs a `SmartCrusher`, which hard-imports `headroom._core` since the python implementation was retired in stage 3c.1b. The test-extras job didn't build the rust extension. Added the same `maturin build + symlink` block the main `test` job uses. 4. smoke-test (eval.yml) — same root cause: `compression_only.evaluate_ccr_lossless` instantiates a SmartCrusher. Same fix: build the rust extension before the smoke test runs. 5. commitlint — three rules tripped: - `subject-case` rejects PascalCase identifiers in subjects, but the project deliberately names classes (SmartCrusher, HfTokenizer, ContentRouter, DiffCompressor) in commit subjects. Disabled. - `footer-leading-blank` is a warning that the wagoid action turns into a CI failure; lines like `Module: foo.rs` in our bodies match the conventional footer pattern and trip it. Disabled. - `type-enum` doesn't include `parity`, but the project ships parity-test infrastructure as its own concern (separate from `test:`); added `parity` to the allowed types. Pre-push verification — the prevention half: `make ci-precheck` runs all of the above CI gates locally: - `ci-precheck-rust`: cargo fmt --check + clippy + test --workspace. - `ci-precheck-python`: builds the rust extension via maturin, then runs the smart_crusher-affected python test files (185 tests across test_transforms/, test_relevance*, test_ccr, test_acceptance, test_critical_fixes, test_quality_retention). - `ci-precheck-commitlint`: `npx commitlint --from origin/main --to HEAD` against the same config CI uses. Skipped silently if npx is not on PATH (install Node 18+ to enable). `make install-git-hooks` (or `scripts/install-git-hooks.sh`) installs a git pre-push hook that runs `make ci-precheck` automatically. Bypass with `--no-verify` only when truly needed. When new CI gates land in `.github/workflows/`, mirror them into a `make ci-precheck-*` target. The Makefile is the local mirror of the CI configuration; keeping them in sync is a load-bearing invariant. Verification: `make ci-precheck` runs green on this commit.
2026-04-27 11:13:47 -07:00
"body-max-line-length": [2, "always", 200],
"footer-leading-blank": [0],
"subject-case": [0],
"type-enum": [
2,
"always",
[
"build",
"chore",
"ci",
"docs",
"feat",
"fix",
"parity",
"perf",
"refactor",
"revert",
"style",
"test"
]
]
}
}