feat(SIG-107): add language and config tool batch - #28
Conversation
Sigilix OverviewEffort: 4/5 (large) Quality gates
Summary — latest pushAdds default-on wrappers for Flake8, golangci-lint, HTMLHint, Stylelint, and TFLint, enforcing runner-owned configs and pinned integrity checks to keep caller CI safe, alongside SARIF converters and a comprehensive test suite. The TFLint wrapper has a control-flow bug where a failed discovery command writes an empty file list that passes the subsequent non-empty check, causing the script to proceed into the download/execution path instead of emitting empty SARIF early. Important files
Confidence: 2/5The TFLint discovery failure fallthrough bug is a logic error that will cause the wrapper to attempt a download and scan in a repository with no Terraform files when discovery commands fail, undermining the safety guarantees.
Suggested labels: |
|
Warning Review limit reached
More reviews will be available in 1 hour, 47 minutes, and 12 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (18)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
1 high-severity finding + 1 lower-severity inline · coverage: logic · security · performance · tests
⚠️ 6 files not reviewed — the diff exceeded this review's size budget, so they were not analyzed:.github/scripts/sigilix_sarif_test.py,.github/scripts/stylelint_to_sarif.py,.github/scripts/trufflehog_converter_test.py,.github/workflows/ci.yml,.github/workflows/scan.yml,README.md. Split the PR or re-run to cover them.
2 findings · 1 inline · 1 PR-level · Proof: 1 grounded · Quiet: 1 demoted to body
The PR introduces several new deterministic tool wrappers with robust version pinning and integrity checks. However, the Flake8 wrapper contains a logic bug in its rule selection that causes intended PyFlakes checks to be skipped.
| Severity | Location | Issue |
|---|---|---|
| High (4) | .github/scripts/run_flake8.sh:82 |
logic: Flake8 --select includes F7 which is not a valid Flake8 code prefix — intended F7xx checks are silently skipped |
Severity ≥ 4 only. Rows without a line number are file-level or PR-level findings that cannot be posted as inline review comments.
Evidence & suggested changes for body-only blockers (score ≥ 4)
-
.github/scripts/run_flake8.sh:82: Flake8
--selectincludesF7which is not a valid Flake8 code prefix — intended F7xx checks are silently skipped score 4 · MODEL
The wrapper's--select=E9,F63,F7,F82includesF7as a standalone prefix, but Flake8 error codes use a letter followed by three digits (e.g.F701,F702,F811). The stringF7matches no real code, so the intendedF7*family of PyFlakes checks is silently excluded. The PR body states the wrapper runs 'high-confidence PyFlakes/parse checks' via--select=E9,F63,F7,F82; theF7entry is a no-op. Fix: replaceF7with the specific F7xx codes intended (e.g.F701,F702,F704,F706,F707,F811,F821,F822,F823,F831,F841), or useF7as a prefix wildcard if Flake8 supports it (it does not — Flake8--selectrequires full codes).Example:
input: a Python file with `for i in range(10): pass` (redefined built-in `range`) actual: Flake8 with `--select=E9,F63,F7,F82` emits no finding for F811 (redefinition of unused name) expected: Flake8 emits F811 because `F811` is a high-confidence PyFlakes check the wrapper intends to includeSuggested fix:
--select=E9,F63,F701,F702,F704,F706,F707,F811,F821,F822,F823,F831,F841,F82
Dismiss: @sigilix dismiss <reason> in thread (not-a-bug|bad-anchor|already-covered|too-minor|wrong-context) · Re-run: /sigilix review · Review #1 · 03c5deb
There was a problem hiding this comment.
1 finding posted inline · since last review: +1 new · 2 carried-over · coverage: logic · security · performance · tests
⚠️ 6 files not reviewed — the diff exceeded this review's size budget, so they were not analyzed:.github/scripts/sigilix_sarif_test.py,.github/scripts/stylelint_to_sarif.py,.github/scripts/trufflehog_converter_test.py,.github/workflows/ci.yml,.github/workflows/scan.yml,README.md. Split the PR or re-run to cover them.
1 finding · 1 inline · Proof: 1 grounded
The PR adds five new deterministic tool wrappers (Flake8, golangci-lint, HTMLHint, Stylelint, TFLint) with pinned versions and integrity checks, along with comprehensive workflow and converter tests.
Dismiss: @sigilix dismiss <reason> in thread (not-a-bug|bad-anchor|already-covered|too-minor|wrong-context) · Re-run: /sigilix review · Review #2 · 03c5deb
|
@Sigilix dismiss not-a-bug The review-body Flake8 So |
There was a problem hiding this comment.
1 non-blocking finding posted inline · since last review: +1 new · 2 likely-fixed · coverage: logic · security · performance · tests
⚠️ 6 files not reviewed — the diff exceeded this review's size budget, so they were not analyzed:.github/scripts/sigilix_sarif_test.py,.github/scripts/stylelint_to_sarif.py,.github/scripts/trufflehog_converter_test.py,.github/workflows/ci.yml,.github/workflows/scan.yml,README.md. Split the PR or re-run to cover them.
1 finding · 1 inline · Proof: 1 grounded
The PR adds five new language and configuration tool wrappers with robust integrity checks and SARIF conversion. The implementation is secure and logically sound, with one minor gap in unit test coverage for the Flake8 error classification logic.
Re-run: /sigilix review · fb65d0e
|
Dismissed — not a bug. The |
There was a problem hiding this comment.
1 high-severity finding · since last review: +1 new · 1 likely-fixed · coverage: logic · security · performance · tests
⚠️ 6 files not reviewed — the diff exceeded this review's size budget, so they were not analyzed:.github/scripts/sigilix_sarif_test.py,.github/scripts/stylelint_to_sarif.py,.github/scripts/trufflehog_converter_test.py,.github/workflows/ci.yml,.github/workflows/scan.yml,README.md. Split the PR or re-run to cover them.
1 finding · 1 inline · Proof: 1 grounded
The PR introduces five new language and configuration tool wrappers with strong integrity guards and version pinning. However, there is a logic bug in the Flake8 SARIF converter that misclassifies certain critical parse errors as warnings.
| Severity | Location | Issue |
|---|---|---|
| High (4) | .github/scripts/flake8_to_sarif.py:40-42 |
logic: Flake8 _level_for_code misclassifies E9xx codes that do not start with E9 (e.g. E901) as warnings instead of errors |
Dismiss: @sigilix dismiss <reason> in thread (not-a-bug|bad-anchor|already-covered|too-minor|wrong-context) · Re-run: /sigilix review · Review #3 · 7d2ce2b
Dismissed after Sigilix acknowledged this as not-a-bug in PR comment: Flake8 7.3.0 accepts F7 as a select prefix and direct reproduction reports F701.
What
Why
SIG-107 is moving the runner toward CodeRabbit-style deterministic tool coverage while keeping caller CI safe. This batch adds tools that should improve useful recall today for language/config review signal without executing caller configs/plugins by default.
Safety notes
.flake8, but ignores config content via--isolatedand only runs high-confidence PyFlakes/parse checks.go.mod, uses--no-config --default=standard, and verifies the downloaded Linux artifact SHA256.Verified
sigilix_sarif_test,eslint_ts_workflow_test,tsc_workflow_test,pylint_workflow_test,trufflehog_converter_test,language_config_tools_workflow_test,knip_workflow_test,biome_workflow_test,docs_config_tools_test,oxlint_workflow_test,ast_grep_workflow_testpython3 -m py_compile .github/scripts/*.py.github/workflows/ci.ymland.github/workflows/scan.ymlactionlintv1.7.12git diff --checkLinear: SIG-107