Linting Cutoff Policy
Overview
The CI Quality workflow includes linting checks for commit messages (commitlint) and markdown files (markdownlint). These checks were introduced to maintain code quality going forward, but they run in informational mode rather than blocking mode.
Cutoff Date
Cutoff Date: 2026-02-25T00:00:00Z
This date corresponds to when the linting infrastructure was introduced into the codebase.
Behavior
Commit Message Linting (commitlint)
- Only commits created after the cutoff date are checked
- Commits before the cutoff date are ignored
- Non-compliant commits trigger a PR comment but do not fail the workflow
Markdown Linting (markdownlint)
- Only markdown files last modified after the cutoff date are checked
- Files last modified before the cutoff date are ignored
- Non-compliant files trigger a PR comment but do not fail the workflow
Workflow Integration
When linting failures are detected on a pull request:
- The linting steps complete with
continue-on-error: true - A PR comment is posted with:
- List of non-compliant commits (with commit hash and message)
- List of non-compliant markdown files
- A note that these are informational warnings
- The workflow continues and does not fail due to linting issues
Non-Blocking Checks
The following checks remain blocking (will fail the workflow):
- Unit tests
- Integration tests
- Python linting (ruff)
- Type checking (mypy)
- Security scans (bandit, pip-audit)
The following checks are informational (will not fail the workflow):
- Commit message linting (commitlint)
- Markdown style linting (markdownlint)
Updating the Cutoff Date
If you need to update the cutoff date:
- Edit
.github/workflows/ci-quality.yml - Find the "Determine commit range and cutoff date" step
- Update the
CUTOFF_DATEvariable - Commit and push the change
- name: Determine commit range and cutoff date
id: commit_range
run: |
# Set cutoff date for linting (when linting was introduced)
CUTOFF_DATE="2026-02-25T00:00:00Z" # <-- Update this line
echo "cutoff_date=$CUTOFF_DATE" >> "$GITHUB_OUTPUT"
Rationale
This approach allows the project to:
- Avoid blocking existing work: Historical commits and files are not affected
- Encourage best practices: New commits and files are checked
- Provide visibility: Developers are informed of issues without workflow failures
- Maintain flexibility: The cutoff date can be adjusted as needed
- Preserve workflow structure: The tiered workflow (lint → tests → sonar) remains intact
Best Practices
While linting failures are informational, developers should still:
- Follow conventional commit message format for new commits
- Ensure markdown files follow the project's style guide
- Address linting issues when convenient
- Review PR comments for guidance on compliance