Generated 2026-10-03T18:28:17+00:00 · commit 398ed6f2358ee535eea6cc5adc72aa7ffc398d25 · branch main · root /Users/marshallguillory/repos/secure-code-agent · standard ISO/IEC 25010 maintainability-inspired 0-5 scale, rate-based
| Severity | Findings |
|---|---|
| Severe | 8 |
| High | 39 |
| Medium | 7 |
| Low | 0 |
| Total findings | 54 |
11 of 17 tools contributed — concerns all, depth heavy, license policy copyleft-any. Plus 8 built-in detectors.
| Source | Tier | Outcome | Version | Measurements | Findings |
|---|---|---|---|---|---|
| cohesion | analyzer | failed | — | — | — |
| eslint | analyzer | not-applicable | — | — | — |
| fortitude | analyzer | not-applicable | — | — | — |
| spotbugs | analyzer | not-applicable | — | — | — |
| interrogate | analyzer | parse-error | interrogate, version 1.7.0 | — | — |
| pylint | analyzer | parse-error | pylint 4.0.7 | — | — |
| checkstyle | analyzer | ran | Checkstyle version: 14.0.0 | 0 | 37 |
| complexipy | analyzer | ran | 7.0.1 | 1419 | 0 |
| jscpd | analyzer | ran | cpd 5.1.1 | 1 | 142 |
| lizard | analyzer | ran | 1.24.0 | 4551 | 0 |
| multimetric | analyzer | ran | usage: multimetric [-h] [--warn_compiler WARN_COMPILER] | 556 | 0 |
| mypy | analyzer | ran | mypy 2.3.1 (compiled: yes) | 0 | 0 |
| pmd | analyzer | ran | PMD 7.26.0 (8fd38edf285a33e1164f66205ebe243441db9557, 2026-06-29T08:22:36Z) | 0 | 0 |
| pydocstyle | analyzer | ran | 6.3.0 | 0 | 207 |
| radon | analyzer | ran | 6.0.1 | 131 | 0 |
| ruff | analyzer | ran | ruff 0.16.5 | 0 | 0 |
| vulture | analyzer | ran | vulture 2.16 | 0 | 0 |
| competing-libraries | built-in | ran | — | 195 | 0 |
| dead-code | built-in | ran | — | 1590 | 0 |
| declaration-size | built-in | ran | — | 1590 | 72 |
| duplicate-blocks | built-in | ran | — | 195 | 44 |
| file-size | built-in | ran | — | 195 | 31 |
| history | built-in | ran | — | 195 | 24 |
| near-duplicates | built-in | ran | — | 1590 | 1 |
| risk-patterns | built-in | ran | — | 195 | 8 |
One source only: complexity, dead-code, metrics.
A built-in detector examined these and no external tool did, so nothing corroborates them. Install a tool covering the concern to get a second opinion.
declarations measured by analyzers, completed by built-in detectors: no analyzer supplies cognitive_complexity for Go, Java, JavaScript, Ruby, so the built-in scanner supplied it for those declarations and the analyzers supplied the rest; the criterion set is complete per declaration, which is what makes the rate comparable to the rubric's.
Nothing examined: documentation, structure, style, testing, types.
These concerns are unmeasured, not clean. Install a tool that covers them, or widen analyzers.depth, to have them reported.
Analyzer children are not network-isolated. 11 external tools ran as local child processes. This agent does not transmit the audited source and opens no socket of its own, but it does not sandbox what it spawns: a third-party analyzer that reaches the network is outside what this run controls or observes. Determinism and no upload are the promise; a kernel air-gap is not.
| Recorded | Commit | Estimate | Findings |
|---|---|---|---|
| 2026-10-02T18:05:36Z | 16b46248 | 3.9 | 47 |
| 2026-10-02T21:23:10Z | 808ca7ca | 3.9 | 47 |
| 2026-10-02T21:31:16Z | 808ca7ca | 4.0 | 43 |
| 2026-10-02T21:42:02Z | bb5c9db0 | 4.0 | 43 |
| 2026-10-02T22:21:49Z | 7fb8b976 | 4.0 | 44 |
| 2026-10-02T22:35:49Z | b9f9b788 | 4.1 | 44 |
| 2026-10-02T22:45:23Z | 4603288a | 4.1 | 44 |
| 2026-10-02T23:02:22Z | 85722855 | 4.0 | 43 |
| 2026-10-02T23:52:25Z | 9b16aaba | 4.1 | 43 |
| 2026-10-03T00:45:48Z | de4a7800 | 4.1 | 43 |
| 2026-10-03T00:52:31Z | a60ee09b | 4.1 | 43 |
| 2026-10-03T01:17:03Z | 81533498 | 4.1 | 47 |
| 2026-10-03T18:30:02Z | 398ed6f2 | 4.1 | 53 |
13 scans, 2026-10-02T18:05:36Z to 2026-10-03T18:30:02Z.
Every figure describes scans that happened; nothing forecasts.
3,608 – 61,050 USD over 12 months (base 18,315 USD), across 54 work-order item(s).
This is a scenario, not a prediction.
Assumptions:
TDD-shaped tests: detected beside 45 of 46 production source files (path pairing). Constructs: pytest in 81 file(s), unittest in 1 file(s), describe_it in 2 file(s), parametrize in 32 file(s), given_when_then in 2 file(s).
Chronology is not measured. Effectiveness is unscored unless the operator opted into suite execution.
The operator opted in to running the repository's test command; it did not run (exit 2).
Command: pytest
Program run: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/pytest
Coverage: no coverage reported by the run
Detail: pytest exited 2: ['==================================== ERRORS ====================================']
Practice level 4 of 5 — CI holds a numeric quality gate.
| Pillar | Scope | Practice | Condition | Reading |
|---|---|---|---|---|
| readability | partial | 4 | 4.5 | healthy: enforced, and the code reflects it |
| maintainability | owned | 4 | 3.9 | healthy: enforced, and the code reflects it |
| efficiency | out-of-scope | — | — | not measured — see below |
| security | delegated | 5 | — | unverified: not graded — scanner coverage is failed; findings: no findings |
| testability | partial | 4 | 5.0 | healthy: enforced, and the code reflects it |
Not measured here, and why:
Enforcement found: linter-config, recorded-decisions, lint-in-ci, coverage-gate.
| Category | Score |
|---|---|
| modularity | 3.5 |
| reusability | 4.4 |
| analyzability | 4.1 |
| modifiability | 3.7 |
| testability | 4.6 |
| Aspect | Score |
|---|---|
| file size | 3.6 |
| declaration size | 3.6 |
| duplication | 4.3 |
| risk patterns | 3.6 |
| policy gates | 5.0 |
| test presence | 5.0 |
| dead code | 5.0 |
| near duplication | 4.5 |
| idiom consistency | 5.0 |
| documentation | 5.0 |
| churn hotspots | 3.0 |
| change coupling | 3.0 |
| knowledge concentration | 4.0 |
| test effectiveness | not measurable |
| Aspect | Why |
|---|---|
| naming quality | no static proxy survives contact; a wrong-name detector needs semantics |
| comment accuracy | comments are deliberately unparsed; staleness needs meaning, not structure |
| indirection depth | call-graph construction is not implemented for the supported languages |
| architectural coherence | no measurement distinguishes a wrong boundary from an unusual one statically |
| File | Lines | Status |
|---|---|---|
docs/html/docs-decisions.html | 2108 | fail |
docs/decisions.md | 2023 | fail |
src/secure_code_audit/cli.py | 1667 | fail |
docs/html/changelog.html | 1464 | fail |
CHANGELOG.md | 1463 | fail |
src/secure_code_audit/scoring.py | 951 | fail |
tests/unit/test_calibrate.py | 771 | warn |
src/secure_code_audit/config.py | 699 | warn |
docs/html/docs-calibration.html | 657 | warn |
docs/html/readme.html | 652 | warn |
README.md | 607 | warn |
src/secure_code_audit/renderers.py | 590 | warn |
calibration/calibrate.py | 574 | warn |
docs/html/docs-scanners.html | 558 | warn |
src/secure_code_audit/standards.py | 550 | warn |
docs/html/docs-product-intent.html | 534 | warn |
src/secure_code_audit/sarif.py | 500 | warn |
tests/unit/test_cli_coverage.py | 493 | warn |
docs/product-intent.md | 484 | warn |
tests/unit/test_tier2_scanners.py | 484 | warn |
tests/unit/test_suppressions.py | 458 | warn |
src/secure_code_audit/suppressions.py | 442 | warn |
docs/html/docs-design.html | 433 | warn |
tests/unit/test_offline_ruleset.py | 430 | warn |
tests/unit/test_plan_features.py | 430 | warn |
| File | Declaration | Line | Lines | Complexity | Cognitive | Status |
|---|---|---|---|---|---|---|
calibration/calibrate.py | summarize | 366 | 70 | 31 | 12 | fail |
src/secure_code_audit/cli.py | _do_audit | 496 | 289 | 30 | 19 | fail |
src/secure_code_audit/practice.py | assess | 207 | 94 | 28 | 35 | fail |
src/secure_code_audit/verify.py | compare | 294 | 79 | 25 | 7 | fail |
src/secure_code_audit/scanners/semgrep_scanner.py | _parse_sarif | 148 | 56 | 24 | 32 | fail |
src/secure_code_audit/config.py | _validate_gates | 663 | 32 | 21 | 21 | fail |
calibration/calibrate.py | main | 438 | 133 | 20 | 20 | fail |
src/secure_code_audit/cli.py | _print_summary | 1424 | 76 | 19 | 19 | fail |
src/secure_code_audit/config.py | _apply_scanners | 484 | 36 | 17 | 21 | fail |
src/secure_code_audit/scanners/pip_audit_scanner.py | _audit_inputs | 106 | 33 | 17 | 13 | fail |
src/secure_code_audit/scanners/bandit_scanner.py | scan | 55 | 60 | 16 | 16 | fail |
src/secure_code_audit/scanners/_finding_builder.py | _resolve_standards | 41 | 82 | 12 | 14 | fail |
src/secure_code_audit/cli.py | _split_axes | 386 | 108 | 8 | 14 | fail |
src/secure_code_audit/cli.py | _parser | 71 | 159 | 2 | 0 | fail |
src/secure_code_audit/git_tools.py | loc_under | 169 | 61 | 15 | 19 | warn |
src/secure_code_audit/pillar.py | build | 135 | 48 | 15 | 13 | warn |
src/secure_code_audit/scanners/gosec_scanner.py | _finding_for | 112 | 24 | 15 | 19 | warn |
calibration/calibrate.py | variants | 244 | 59 | 14 | 7 | warn |
src/secure_code_audit/scoring.py | score | 687 | 55 | 14 | 14 | warn |
src/secure_code_audit/renderers.py | _findings_sections | 449 | 47 | 14 | 17 | warn |
src/secure_code_audit/renderers.py | _pr_comment | 547 | 44 | 14 | 16 | warn |
src/secure_code_audit/scanners/npm_audit_scanner.py | _parse | 86 | 43 | 14 | 11 | warn |
src/secure_code_audit/sarif.py | _finding_from_result | 433 | 41 | 14 | 21 | warn |
tests/integration/test_finding_paths_are_repository_relative.py | test_no_written_output_names_the_checkout | 243 | 34 | 14 | 3 | warn |
src/secure_code_audit/scanners/njsscan_scanner.py | _findings_for_rule | 76 | 31 | 14 | 19 | warn |
src/secure_code_audit/sarif.py | ingest_with_coverage | 262 | 72 | 13 | 14 | warn |
src/secure_code_audit/scanners/pip_audit_scanner.py | scan | 45 | 60 | 13 | 17 | warn |
src/secure_code_audit/renderers.py | _summary_section | 287 | 59 | 13 | 21 | warn |
src/secure_code_audit/renderers.py | _scanners_section | 408 | 39 | 13 | 16 | warn |
src/secure_code_audit/scanners/_resolution.py | _resolve_candidate | 100 | 24 | 13 | 19 | warn |
src/secure_code_audit/renderers.py | to_json | 24 | 59 | 12 | 13 | warn |
src/secure_code_audit/cli.py | _do_preflight | 281 | 56 | 12 | 13 | warn |
src/secure_code_audit/cli.py | _measurable_categories | 900 | 48 | 12 | 11 | warn |
src/secure_code_audit/findings.py | merge_corroborating | 364 | 45 | 12 | 17 | warn |
src/secure_code_audit/scanners/rubocop_scanner.py | scan | 59 | 38 | 12 | 15 | warn |
src/secure_code_audit/suppressions.py | _narrow_keys | 219 | 35 | 12 | 13 | warn |
src/secure_code_audit/history.py | read | 102 | 31 | 12 | 14 | warn |
src/secure_code_audit/renderers.py | _one_finding_md | 498 | 31 | 12 | 15 | warn |
src/secure_code_audit/suppressions.py | matches | 70 | 31 | 12 | 10 | warn |
src/secure_code_audit/scanners/gitleaks_scanner.py | _parse | 130 | 24 | 12 | 11 | warn |
src/secure_code_audit/scanners/gosec_scanner.py | _load_failure | 87 | 24 | 12 | 18 | warn |
src/secure_code_audit/sarif.py | _location_from_result | 491 | 10 | 12 | 14 | warn |
src/secure_code_audit/verify.py | measure_scope | 97 | 56 | 11 | 10 | warn |
src/secure_code_audit/scanners/trufflehog_scanner.py | scan | 36 | 54 | 11 | 15 | warn |
src/secure_code_audit/scanners/hadolint_scanner.py | scan | 50 | 29 | 11 | 7 | warn |
src/secure_code_audit/scanners/osv_scanner.py | _parse | 85 | 28 | 11 | 15 | warn |
src/secure_code_audit/cli.py | _print_preflight | 339 | 24 | 11 | 16 | warn |
src/secure_code_audit/scanners/semgrep_scanner.py | _cwe_from_rule | 33 | 19 | 11 | 11 | warn |
src/secure_code_audit/cli.py | _do_verify | 1555 | 62 | 10 | 18 | warn |
src/secure_code_audit/cli.py | _write_outputs | 1093 | 53 | 10 | 9 | warn |
| Severity | Band | Finding | Location | Do |
|---|---|---|---|---|
| High | quick-win | _do_audit in src/secure_code_audit/cli.py | src/secure_code_audit/cli.py:496 | reduce below the configured limits (currently 289 lines against 80, complexity 30 against 15, cognitive 19 against 25) |
| High | quick-win | _parser in src/secure_code_audit/cli.py | src/secure_code_audit/cli.py:71 | reduce below the configured limits (currently 159 lines against 80, complexity 2 against 15, cognitive 0 against 25) |
| High | quick-win | _print_summary in src/secure_code_audit/cli.py | src/secure_code_audit/cli.py:1424 | reduce below the configured limits (currently 76 lines against 80, complexity 19 against 15, cognitive 19 against 25) |
| High | quick-win | _split_axes in src/secure_code_audit/cli.py | src/secure_code_audit/cli.py:386 | reduce below the configured limits (currently 108 lines against 80, complexity 8 against 15, cognitive 14 against 25) |
| High | quick-win | _apply_scanners in src/secure_code_audit/config.py | src/secure_code_audit/config.py:484 | reduce below the configured limits (currently 36 lines against 80, complexity 17 against 15, cognitive 21 against 25) |
| High | quick-win | _validate_gates in src/secure_code_audit/config.py | src/secure_code_audit/config.py:663 | reduce below the configured limits (currently 32 lines against 80, complexity 21 against 15, cognitive 21 against 25) |
| High | quick-win | _parse_sarif in src/secure_code_audit/scanners/semgrep_scanner.py | src/secure_code_audit/scanners/semgrep_scanner.py:148 | reduce below the configured limits (currently 56 lines against 80, complexity 24 against 15, cognitive 32 against 25) |
| Severe | quick-win | configured risk pattern in src/secure_code_audit/findings.py | src/secure_code_audit/findings.py:181 | act on what the `silent-truncation` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| Severe | quick-win | configured risk pattern in src/secure_code_audit/remediation.py | src/secure_code_audit/remediation.py:37 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| High | quick-win | scan in src/secure_code_audit/scanners/bandit_scanner.py | src/secure_code_audit/scanners/bandit_scanner.py:55 | reduce below the configured limits (currently 60 lines against 80, complexity 16 against 15, cognitive 16 against 25) |
| High | quick-win | _audit_inputs in src/secure_code_audit/scanners/pip_audit_scanner.py | src/secure_code_audit/scanners/pip_audit_scanner.py:106 | reduce below the configured limits (currently 33 lines against 80, complexity 17 against 15, cognitive 13 against 25) |
| High | quick-win | main in calibration/calibrate.py | calibration/calibrate.py:438 | reduce below the configured limits (currently 133 lines against 80, complexity 20 against 15, cognitive 20 against 25) |
| High | quick-win | summarize in calibration/calibrate.py | calibration/calibrate.py:366 | reduce below the configured limits (currently 70 lines against 80, complexity 31 against 15, cognitive 12 against 25) |
| High | quick-win | compare in src/secure_code_audit/verify.py | src/secure_code_audit/verify.py:294 | reduce below the configured limits (currently 79 lines against 80, complexity 25 against 15, cognitive 7 against 25) |
| High | quick-win | _resolve_standards in src/secure_code_audit/scanners/_finding_builder.py | src/secure_code_audit/scanners/_finding_builder.py:41 | reduce below the configured limits (currently 82 lines against 80, complexity 12 against 15, cognitive 14 against 25) |
| High | quick-win | assess in src/secure_code_audit/practice.py | src/secure_code_audit/practice.py:207 | reduce below the configured limits (currently 94 lines against 80, complexity 28 against 15, cognitive 35 against 25) |
| Severe | quick-win | configured risk pattern in README.md | README.md:139 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| Severe | quick-win | configured risk pattern in docs/html/docs-remediation.html | docs/html/docs-remediation.html:65 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| Severe | quick-win | configured risk pattern in docs/html/readme.html | docs/html/readme.html:171 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| Severe | quick-win | configured risk pattern in docs/html/skills-secure-code-agent-references-finding-taxonomy.html | docs/html/skills-secure-code-agent-references-finding-taxonomy.html:153 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| Severe | quick-win | configured risk pattern in docs/remediation.md | docs/remediation.md:57 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| Severe | quick-win | configured risk pattern in skills/secure-code-agent/references/finding-taxonomy.md | skills/secure-code-agent/references/finding-taxonomy.md:75 | act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it |
| High | major-project | duplicated block in src/secure_code_audit/cli.py | src/secure_code_audit/cli.py:163 | remove the duplicated block |
| Medium | major-project | src/secure_code_audit/cli.py is 1667 lines | src/secure_code_audit/cli.py | split below the configured file-length limit |
| Medium | major-project | near-duplicate declaration in src/secure_code_audit/scoring.py | src/secure_code_audit/scoring.py:842 | consolidate the two into one declaration, or say why they are deliberately separate; editing one alone leaves the other |
| Medium | major-project | src/secure_code_audit/scoring.py is 951 lines | src/secure_code_audit/scoring.py | split below the configured file-length limit |
| High | major-project | duplicated block in src/secure_code_audit/suppressions.py | src/secure_code_audit/suppressions.py:365 | remove the duplicated block |
| High | major-project | duplicated block in src/secure_code_audit/scanners/bandit_scanner.py | src/secure_code_audit/scanners/bandit_scanner.py:11 | extract the shared block so its 3 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in src/secure_code_audit/scanners/npm_audit_scanner.py | src/secure_code_audit/scanners/npm_audit_scanner.py:101 | extract the shared block so its 2 copies become one; editing one copy alone leaves the rest |
| Medium | major-project | CHANGELOG.md is 1463 lines | CHANGELOG.md | split below the configured file-length limit |
| Medium | major-project | docs/decisions.md is 2023 lines | docs/decisions.md | split below the configured file-length limit |
| Medium | major-project | docs/html/changelog.html is 1464 lines | docs/html/changelog.html | split below the configured file-length limit |
| Medium | major-project | docs/html/docs-decisions.html is 2108 lines | docs/html/docs-decisions.html | split below the configured file-length limit |
| High | major-project | duplicated block in README.md | README.md:252 | extract the shared block so its 2 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in README.md | README.md:112 | extract the shared block so its 4 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in docs/design.md | docs/design.md:36 | extract the shared block so its 2 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in docs/html/calibration-readme.html | docs/html/calibration-readme.html:144 | extract the shared block so its 4 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in docs/html/calibration-readme.html | docs/html/calibration-readme.html:110 | extract the shared block so its 3 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in docs/html/docs-calibration.html | docs/html/docs-calibration.html:307 | remove the duplicated block |
| High | major-project | duplicated block in docs/html/docs-design.html | docs/html/docs-design.html:208 | extract the shared block so its 2 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in docs/html/docs-remediation.html | docs/html/docs-remediation.html:66 | extract the shared block so its 2 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in docs/html/docs-scanners.html | docs/html/docs-scanners.html:174 | remove the duplicated block |
| High | major-project | duplicated block in docs/html/style.css | docs/html/style.css:2 | extract the shared block so its 2 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in tests/integration/test_gated_findings_are_reportable.py | tests/integration/test_gated_findings_are_reportable.py:99 | remove the duplicated block |
| High | major-project | duplicated block in tests/integration/test_target_shapes.py | tests/integration/test_target_shapes.py:136 | extract the shared block so its 3 copies become one; editing one copy alone leaves the rest |
| High | major-project | duplicated block in tests/unit/test_calibrate.py | tests/unit/test_calibrate.py:508 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_offline_ruleset.py | tests/unit/test_offline_ruleset.py:63 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_offline_ruleset.py | tests/unit/test_offline_ruleset.py:218 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_plan_features.py | tests/unit/test_plan_features.py:37 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_sarif_roundtrip.py | tests/unit/test_sarif_roundtrip.py:255 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_sarif_roundtrip.py | tests/unit/test_sarif_roundtrip.py:135 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_standards_overlay.py | tests/unit/test_standards_overlay.py:163 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_tier1_scanners.py | tests/unit/test_tier1_scanners.py:30 | remove the duplicated block |
| High | major-project | duplicated block in tests/unit/test_tier2_scanners.py | tests/unit/test_tier2_scanners.py:145 | remove the duplicated block |
One self-contained prompt per item — copy any block into a coding agent. A block for an item that needs a design decision asks for that decision, not a patch.
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 289 lines against 80, complexity 30 against 15, cognitive 19 against 25). Location: src/secure_code_audit/cli.py:496 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 159 lines against 80, complexity 2 against 15, cognitive 0 against 25). Location: src/secure_code_audit/cli.py:71 Why: a long function is where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 76 lines against 80, complexity 19 against 15, cognitive 19 against 25). Location: src/secure_code_audit/cli.py:1424 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 108 lines against 80, complexity 8 against 15, cognitive 14 against 25). Location: src/secure_code_audit/cli.py:386 Why: a long function is where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 36 lines against 80, complexity 17 against 15, cognitive 21 against 25). Location: src/secure_code_audit/config.py:484 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 32 lines against 80, complexity 21 against 15, cognitive 21 against 25). Location: src/secure_code_audit/config.py:663 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 56 lines against 80, complexity 24 against 15, cognitive 32 against 25). Location: src/secure_code_audit/scanners/semgrep_scanner.py:148 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `silent-truncation` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: src/secure_code_audit/findings.py:181 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: src/secure_code_audit/remediation.py:37 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 60 lines against 80, complexity 16 against 15, cognitive 16 against 25). Location: src/secure_code_audit/scanners/bandit_scanner.py:55 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 33 lines against 80, complexity 17 against 15, cognitive 13 against 25). Location: src/secure_code_audit/scanners/pip_audit_scanner.py:106 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 133 lines against 80, complexity 20 against 15, cognitive 20 against 25). Location: calibration/calibrate.py:438 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 70 lines against 80, complexity 31 against 15, cognitive 12 against 25). Location: calibration/calibrate.py:366 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 79 lines against 80, complexity 25 against 15, cognitive 7 against 25). Location: src/secure_code_audit/verify.py:294 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 82 lines against 80, complexity 12 against 15, cognitive 14 against 25). Location: src/secure_code_audit/scanners/_finding_builder.py:41 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: reduce below the configured limits (currently 94 lines against 80, complexity 28 against 15, cognitive 35 against 25). Location: src/secure_code_audit/practice.py:207 Why: a long, branching function is where defects concentrate and where every future change has to be understood first Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: README.md:139 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: docs/html/docs-remediation.html:65 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: docs/html/readme.html:171 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: docs/html/skills-secure-code-agent-references-finding-taxonomy.html:153 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: docs/remediation.md:57 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Task: act on what the `debt-marker` rule matched here, or say why it stays; deleting the matched text alone hides the finding without resolving it. Location: skills/secure-code-agent/references/finding-taxonomy.md:75 Why: a risk pattern is a rule the active configuration enforces, and each hit is a single located line Make one small, reviewable change. Do not alter public behavior or refactor unrelated code. If this is a false positive, say so and leave it unchanged; add or update a test when behavior changes. Verify when done: /Users/marshallguillory/.local/share/maintainability-agent/venv/bin/python -m maintainability_audit --root . --format json
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in src/secure_code_audit/cli.py. Location: src/secure_code_audit/cli.py:163 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: src/secure_code_audit/cli.py is 1667 lines. Location: src/secure_code_audit/cli.py Why: a file past the limit hides its own structure, but splitting one touches every importer and is a change worth reviewing on its own Direction once decided: split below the configured file-length limit. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: near-duplicate declaration in src/secure_code_audit/scoring.py. Location: src/secure_code_audit/scoring.py:842 Also at: src/secure_code_audit/scoring.py:858 Why: near-copies drift apart silently, which is worse than exact duplication; reconciling them requires deciding which behaviour was intended Direction once decided: consolidate the two into one declaration, or say why they are deliberately separate; editing one alone leaves the other. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: src/secure_code_audit/scoring.py is 951 lines. Location: src/secure_code_audit/scoring.py Why: a file past the limit hides its own structure, but splitting one touches every importer and is a change worth reviewing on its own Direction once decided: split below the configured file-length limit. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in src/secure_code_audit/suppressions.py. Location: src/secure_code_audit/suppressions.py:365 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in src/secure_code_audit/scanners/bandit_scanner.py. Location: src/secure_code_audit/scanners/bandit_scanner.py:11 Also at: src/secure_code_audit/scanners/gosec_scanner.py:32, src/secure_code_audit/scanners/njsscan_scanner.py:26 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 3 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in src/secure_code_audit/scanners/npm_audit_scanner.py. Location: src/secure_code_audit/scanners/npm_audit_scanner.py:101 Also at: src/secure_code_audit/scanners/osv_scanner.py:104 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 2 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: CHANGELOG.md is 1463 lines. Location: CHANGELOG.md Why: a file past the limit hides its own structure, but splitting one touches every importer and is a change worth reviewing on its own Direction once decided: split below the configured file-length limit. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: docs/decisions.md is 2023 lines. Location: docs/decisions.md Why: a file past the limit hides its own structure, but splitting one touches every importer and is a change worth reviewing on its own Direction once decided: split below the configured file-length limit. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: docs/html/changelog.html is 1464 lines. Location: docs/html/changelog.html Why: a file past the limit hides its own structure, but splitting one touches every importer and is a change worth reviewing on its own Direction once decided: split below the configured file-length limit. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: docs/html/docs-decisions.html is 2108 lines. Location: docs/html/docs-decisions.html Why: a file past the limit hides its own structure, but splitting one touches every importer and is a change worth reviewing on its own Direction once decided: split below the configured file-length limit. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in README.md. Location: README.md:252 Also at: docs/html/readme.html:302 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 2 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in README.md. Location: README.md:112 Also at: docs/html/docs-remediation.html:35, docs/html/readme.html:144, docs/remediation.md:27 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 4 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/design.md. Location: docs/design.md:36 Also at: docs/html/docs-design.html:62 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 2 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/calibration-readme.html. Location: docs/html/calibration-readme.html:144 Also at: docs/html/changelog.html:715, docs/html/docs-calibration.html:613, docs/html/docs-decisions.html:1257 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 4 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/calibration-readme.html. Location: docs/html/calibration-readme.html:110 Also at: docs/html/docs-calibration.html:495, docs/html/docs-decisions.html:463 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 3 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/docs-calibration.html. Location: docs/html/docs-calibration.html:307 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/docs-design.html. Location: docs/html/docs-design.html:208 Also at: docs/html/skills-secure-code-agent-references-finding-taxonomy.html:84 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 2 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/docs-remediation.html. Location: docs/html/docs-remediation.html:66 Also at: docs/remediation.md:58 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 2 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/docs-scanners.html. Location: docs/html/docs-scanners.html:174 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in docs/html/style.css. Location: docs/html/style.css:2 Also at: tools/render_docs.css:2 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 2 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/integration/test_gated_findings_are_reportable.py. Location: tests/integration/test_gated_findings_are_reportable.py:99 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/integration/test_target_shapes.py. Location: tests/integration/test_target_shapes.py:136 Also at: tests/unit/test_cli_coverage.py:226, tests/unit/test_declared_capabilities.py:220 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: extract the shared block so its 3 copies become one; editing one copy alone leaves the rest. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_calibrate.py. Location: tests/unit/test_calibrate.py:508 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_offline_ruleset.py. Location: tests/unit/test_offline_ruleset.py:63 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_offline_ruleset.py. Location: tests/unit/test_offline_ruleset.py:218 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_plan_features.py. Location: tests/unit/test_plan_features.py:37 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_sarif_roundtrip.py. Location: tests/unit/test_sarif_roundtrip.py:255 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_sarif_roundtrip.py. Location: tests/unit/test_sarif_roundtrip.py:135 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_standards_overlay.py. Location: tests/unit/test_standards_overlay.py:163 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_tier1_scanners.py. Location: tests/unit/test_tier1_scanners.py:30 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Repository: /Users/marshallguillory/repos/secure-code-agent Design decision needed, not a patch: duplicated block in tests/unit/test_tier2_scanners.py. Location: tests/unit/test_tier2_scanners.py:145 Why: duplicated logic means a fix applied in one place and missed in the others; deduplicating across a codebase is a design change, not a tidy-up Direction once decided: remove the duplicated block. Do not change code for this item, because it is a Major Project — the change it needs is a design decision before code moves, not one reviewable patch. Lay out the options for the surrounding design — what each would change, and where — then stop for a human decision. If this is a false positive, say so.
Written by secure-code-agent 0.12.10 and reproduced as it wrote it. It is that tool's work order, not this one's: its findings are not re-ranked or merged into the maintainability work order above.
0 to fix · 0 to review · 1875 suppression candidates.
TypeScript semantic coverage: unknown — no recorded type analysis and no local type checker: semantic coverage for TypeScript is unknown. Absence of analysis is not absence of findings.