ci(sonar): declare the qualified 3.13 and 3.14 interpreters to the analyzer - #1160
Open
doublewhy wants to merge 8 commits into
Open
ci(sonar): declare the qualified 3.13 and 3.14 interpreters to the analyzer#1160doublewhy wants to merge 8 commits into
doublewhy wants to merge 8 commits into
Conversation
The dev branch sonar job has been red since tools/ became a Sonar source root (#54) under the raes-strict gate (#527): branch analysis reports 215 new-code violations while PR analysis only scans changed lines. This slice removes every mechanical violation in tools/ and exempts the three false positives driving the security rating. Code fixes, all behavior-preserving (each checker emits identical output and exit status on this repo before and after): - parameterize bare generic annotations (S6543/S6538/S6540/S6542), using dict[str, object] for parsed JSON/YAML payloads - extract duplicated string literals into module constants (S1192), following the existing _SEMANTIC/_DANGLING idiom in the parity checker - drop exception classes already covered by a caught base class (S5713): HTTPError/URLError/TimeoutError under OSError, JSONDecodeError under ValueError - classify markdown link targets by scheme prefix (http:) instead of protocol literal (S5332), and collapse chained startswith calls (S8513) - make _is_sequence a TypeGuard so flow analysis understands the iteration that follows it (S5864) - restructure nested conditional expressions (S3358), remove a dead if/pass wrapper (S108), drop an unused unpack target (S1481) and an unused parameter (S1172), move trailing comments (S139), use a dict literal (S7498), fix noqa comment syntax (S7632), and wrap two overlong lines sonar-project.properties exemptions, each with recorded justification: - e6: S5443 on tools/isabelle_tool.py - the /tmp literal is a private bubblewrap tmpfs target inside the proof sandbox - e7: S1309 - the repo lint contract requires justified noqa suppressions, so tracking each as a violation conflicts with policy - e8: S1313 on tools/real-daemon/ - authored RFC-1918 lab addresses in the hardware smoke scenario Closes #1152 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The first commit's cosmetic edits to tools/isabelle_tool.py invalidated the participant-opacity proof evidence manifest, which digest-pins that file's exact bytes, and the sonar-project.properties edit invalidated the identity-cutover registry's classified content digest. - revert tools/isabelle_tool.py to its pinned bytes and exempt its two residual style findings in sonar-project.properties instead (e9: S5713, e10: S7632), with the pin recorded as justification - reclassify sonar-project.properties in tools/policy/historical_identity_records.json with its new content digest; the retained retired-identity occurrence count is unchanged Verification: nox -s tests green (includes the opacity-proof and identity-cutover policy suites), tools/check_repo_policy.py pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… packages The three checkers that predate the 500-line policy carried the remaining structural Sonar violations on dev (S104 file length, S138 function length, cyclomatic/cognitive complexity up to 70/66, S1142 return counts, S107 parameter counts). Each is now an import-stable entry point over a support package of focused modules, all under the 500-line cap: - tools/check_sdl_catalog_parity.py (2,039 lines) -> tools/sdl_catalog_parity/ (paths, expectation registry split at section boundaries with a merged-registry overlap guard, table rows, expected classifications, typed-model traversal, checks) - tools/check_specification_coverage.py (1,640 lines) -> tools/specification_coverage/ (keys, primitives, protocol, concepts, artifacts, snapshot, analysis) - tools/check_formal_semantic_validation.py (3,121 lines) -> tools/formal_semantic_validation/ (types, shape, replay, claims, protocol, corpus, snapshot, analysis, loading, releases, baseline, retest, production, satisfiability, supplement loading) Mega-functions are decomposed into single-responsibility helpers under the thresholds (complexity <= 10, <= 100 lines, <= 3 returns, <= 7 parameters); the two 8-parameter snapshot validators now take frozen scope dataclasses. Pure restructuring: no validation rule changes. Test updates: the three monkeypatch sites that patched replay_case, load_bounded_json_object, and subprocess.run through the old monolithic module now patch the consumer modules, preserving what each test proves (the no-replay-of-historical-evidence guarantee now pins both consumer modules). Verification: each checker produces identical output and exit status on this repo before and after (the formal checker's full offline integrity and replay pass included); nox -s tests green (7,005+ tests incl. the 80-test formal-validation suite and 25-test parity suite); ruff format and lint clean; tools/check_repo_policy.py pass. Closes #1154 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tools/real-daemon/ scripts run only against a real libvirtd/QEMU host, so the hermetic CI coverage report can never execute their lines; the mechanical type-hint edits there were dragging new-code coverage below the 80% gate. Exclude the directory from coverage measurement only (it stays fully analyzed for issues) and reclassify the properties file's identity digest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The PR quality-gate scan counted 22 residual findings on the new support-package code (Sonar's complexity counter is stricter than the hand-estimates, moved-but-unchanged functions count as new code, and its flow analysis does not honor TypeGuard narrowing): - inline the sequence isinstance-narrowing where iteration follows a guard (S5864), and annotate Sequence parameters where callers already guarantee it - decompose the remaining over-threshold functions: markdown table parsing, internal-link scanning, model-field alias walking, field classification, source/request/concept entry checks, stage outcome vs classification coupling, occurrence entries, corpus polarity coverage, the retest observation sweep, and the satisfiability head - parameterize the last bare list annotations (S6543) and reduce _pointer_step to three exits (S1142) - split prose-level checks out of sdl_catalog_parity._checks to stay under the 500-line cap All three checkers still emit byte-identical output on this repo; nox -s tests and check_repo_policy pass; ruff clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sonar counts the eight-term snapshot-binding or-chain and the concept-results sweep loop above the complexity threshold; hoist the binding predicate and the sweep into named helpers. Checker output remains byte-identical; tests and policy pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…alyzer sonar.python.version still said 3.11-3.12 after CI qualified CPython 3.13 and 3.14 (#1134), so the strictest gate analyzed the code with 3.12-era rules. Declare the full supported range; the 3.11 floor keeps newer-syntax suggestions gated on the lint contract. The properties file's identity digest is reclassified accordingly. Note for the merge: the next dev branch scan may surface findings the newer-interpreter rules detect on existing code; they would appear on the dev analysis, not on this PR's changed-line scan. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts: # tools/policy/historical_identity_records.json
Collaborator
|
Merged current |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plain-language summary
Issue tracking
No issue: this is a narrow analyzer-configuration alignment.
Verification
Notes for review
The next dev branch analysis may report version-sensitive findings on existing code.