secure-code-agent 0.11.0__tar.gz → 0.11.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. {secure_code_agent-0.11.0/src/secure_code_agent.egg-info → secure_code_agent-0.11.1}/PKG-INFO +2 -2
  2. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/README.md +1 -1
  3. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1/src/secure_code_agent.egg-info}/PKG-INFO +2 -2
  4. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/__init__.py +1 -1
  5. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/cli.py +13 -0
  6. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/demo.py +5 -5
  7. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/LICENSE +0 -0
  8. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/pyproject.toml +0 -0
  9. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/setup.cfg +0 -0
  10. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_agent.egg-info/SOURCES.txt +0 -0
  11. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_agent.egg-info/dependency_links.txt +0 -0
  12. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_agent.egg-info/entry_points.txt +0 -0
  13. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_agent.egg-info/requires.txt +0 -0
  14. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_agent.egg-info/top_level.txt +0 -0
  15. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/baseline.py +0 -0
  16. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/config.py +0 -0
  17. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/data/semgrep-offline.yaml +0 -0
  18. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/findings.py +0 -0
  19. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/git_tools.py +0 -0
  20. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/history.py +0 -0
  21. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/instructions.py +0 -0
  22. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/pillar.py +0 -0
  23. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/practice.py +0 -0
  24. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/remediation.py +0 -0
  25. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/renderers.py +0 -0
  26. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/ruleset.py +0 -0
  27. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/sarif.py +0 -0
  28. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanner_status.py +0 -0
  29. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/__init__.py +0 -0
  30. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/bandit_scanner.py +0 -0
  31. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/base.py +0 -0
  32. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/builtin_rules.py +0 -0
  33. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/checkov_scanner.py +0 -0
  34. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/floor.py +0 -0
  35. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/gitleaks_scanner.py +0 -0
  36. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/gosec_scanner.py +0 -0
  37. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/hadolint_scanner.py +0 -0
  38. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/njsscan_scanner.py +0 -0
  39. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/npm_audit_scanner.py +0 -0
  40. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/osv_scanner.py +0 -0
  41. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/pip_audit_scanner.py +0 -0
  42. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/rubocop_scanner.py +0 -0
  43. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/scorecard_scanner.py +0 -0
  44. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/semgrep_scanner.py +0 -0
  45. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/trivy_scanner.py +0 -0
  46. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scanners/trufflehog_scanner.py +0 -0
  47. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/scoring.py +0 -0
  48. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/standards.py +0 -0
  49. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/suppressions.py +0 -0
  50. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/triage.py +0 -0
  51. {secure_code_agent-0.11.0 → secure_code_agent-0.11.1}/src/secure_code_audit/verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: secure-code-agent
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: Deterministic security gate + bounded AI remediation prompt generator. NIST SSDF / OWASP ASVS / CWE Top 25 anchored.
5
5
  Author: Marshall Guillory
6
6
  License: MIT
@@ -470,7 +470,7 @@ For agents that support invokable skills, this repo ships a portable skill under
470
470
  ## GitHub Action
471
471
 
472
472
  ```yaml
473
- - uses: marshallguillory86/secure-code-agent@v0.11.0
473
+ - uses: marshallguillory86/secure-code-agent@v0.11.1
474
474
  with:
475
475
  config: secure-code-agent.json
476
476
  fail-on-gate: true
@@ -424,7 +424,7 @@ For agents that support invokable skills, this repo ships a portable skill under
424
424
  ## GitHub Action
425
425
 
426
426
  ```yaml
427
- - uses: marshallguillory86/secure-code-agent@v0.11.0
427
+ - uses: marshallguillory86/secure-code-agent@v0.11.1
428
428
  with:
429
429
  config: secure-code-agent.json
430
430
  fail-on-gate: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: secure-code-agent
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: Deterministic security gate + bounded AI remediation prompt generator. NIST SSDF / OWASP ASVS / CWE Top 25 anchored.
5
5
  Author: Marshall Guillory
6
6
  License: MIT
@@ -470,7 +470,7 @@ For agents that support invokable skills, this repo ships a portable skill under
470
470
  ## GitHub Action
471
471
 
472
472
  ```yaml
473
- - uses: marshallguillory86/secure-code-agent@v0.11.0
473
+ - uses: marshallguillory86/secure-code-agent@v0.11.1
474
474
  with:
475
475
  config: secure-code-agent.json
476
476
  fail-on-gate: true
@@ -12,4 +12,4 @@
12
12
  #:
13
13
  #: PyPI is immutable, so 0.4.0 stays wrong. 0.5.0 is the first build whose
14
14
  #: artifacts name their own producer correctly.
15
- __version__ = "0.11.0"
15
+ __version__ = "0.11.1"
@@ -400,6 +400,19 @@ def _do_audit(args: argparse.Namespace) -> int:
400
400
  root_for_tests = target if target.is_dir() else target.parent
401
401
 
402
402
  def _classify(finding: Finding) -> str:
403
+ # A dependency advisory is about the dependency, not about the file
404
+ # that happened to declare it. Classified by category before path,
405
+ # because the path routing gets it wrong: `requirements.txt` matches
406
+ # the documentation pattern `**/*.txt`, so every CVE in a pip
407
+ # manifest was filed under **documentation** — eighteen of them on a
408
+ # six-file demo tree. A dependency finding is not documentation
409
+ # whatever the manifest is called.
410
+ #
411
+ # Returning "primary" hands it to `split_side_axes` below, which is
412
+ # what moves it onto the dependencies axis. Neither axis is scored,
413
+ # so this changes where a finding is *reported*, not the grade.
414
+ if finding.category is Category.DEPENDENCIES:
415
+ return "primary"
403
416
  if is_test_path(finding.file_path, root_for_tests, cfg.test_patterns):
404
417
  return "test tree"
405
418
  if is_test_path(finding.file_path, root_for_tests, cfg.docs_patterns):
@@ -101,11 +101,11 @@ def build(destination: Path | None = None) -> Path:
101
101
  (root / "README.md").write_text(README, encoding="utf-8")
102
102
  # No dependency manifest. A pinned-vulnerable `requirements.txt` was here
103
103
  # and it made the demo worse, not better: eighteen pip-audit CVEs drowned
104
- # the seven code defects the demo exists to show. It also surfaced a
105
- # separate defect worth its own fix — those CVEs were filed on the
106
- # **documentation** axis, because the manifest is a `.txt` file and the
107
- # axis split reads the extension. A dependency finding is not
108
- # documentation whatever the manifest is called.
104
+ # the seven code defects the demo exists to show.
105
+ #
106
+ # It also surfaced a real defect, since fixed: those CVEs were filed on
107
+ # the **documentation** axis, because the manifest is a `.txt` file and
108
+ # the axis split read the extension before the category.
109
109
  return root
110
110
 
111
111