{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "MINED111", "name": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or ", "shortDescription": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "fullDescription": {"text": "Either narrow the exception type, log the exception with `logger.exception(...)`, or re-raise after handling."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "AGT015", "name": "Remote install command pipes network code directly to a shell", "shortDescription": {"text": "Remote install command pipes network code directly to a shell"}, "fullDescription": {"text": "Publish a package-manager install path or add checksum/signature verification before execution. For docs, show the inspect-then-run flow and pin the downloaded artifact version."}, "properties": {"scanner": "repobility-agent-runtime", "category": "dependency", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "SEC123", "name": "[SEC123] Production stack trace / debug output exposed: Debug mode left on in production exposes stack traces, environme", "shortDescription": {"text": "[SEC123] Production stack trace / debug output exposed: Debug mode left on in production exposes stack traces, environment variables, framework internals \u2014 sometimes triggers RCE (Django debug page with arbitrary template eval)."}, "fullDescription": {"text": "Set DEBUG=False / APP_DEBUG=false in production. Provide a generic 500 handler that logs to backend but returns a sanitized page to clients."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `_scan_balanced` has cognitive complexity 22 (SonarSource scale). Cognitiv", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `_scan_balanced` has cognitive complexity 22 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursio"}, "fullDescription": {"text": "Extract nested branches into named helper functions; flatten early-return / guard clauses; replace long if/elif chains with dispatch dicts or polymorphism. SonarQube's threshold for 'should refactor' is 15 \u2014 yours is 22."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "CFG006", "name": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts.", "shortDescription": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "fullDescription": {"text": "Add a .gitignore appropriate for your language/framework."}, "properties": {"scanner": "repobility-threat-engine", "category": "practices", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "ERR001", "name": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG ", "shortDescription": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "fullDescription": {"text": "Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types."}, "properties": {"scanner": "repobility-threat-engine", "category": "error_handling", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC031", "name": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternati", "shortDescription": {"text": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternation with overlapping branches. On adversarial input these patterns exhibit exponential backtracking, freezing the process"}, "fullDescription": {"text": "Three options, pick one:\n  1. Rewrite the pattern to avoid nested quantifiers. E.g. `(a+)+` is      functionally equivalent to `a+` for matching purposes.\n  2. Use Google's re2 (`pip install google-re2`): linear-time, drop-in      replacement for `re` for most use cases.\n  3. Set a hard timeout: `signal.alarm(1)` before regex eval.\nTest patterns against `safe-regex` or `redos-detector` before shipping."}, "properties": {"scanner": "repobility-threat-engine", "category": "redos", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED069", "name": "[MINED069] Debug True Prod: Django/Flask DEBUG=True or app.debug=True in non-test files.", "shortDescription": {"text": "[MINED069] Debug True Prod: Django/Flask DEBUG=True or app.debug=True in non-test files."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-489 / A05:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED043", "name": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.", "shortDescription": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO ", "shortDescription": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED064", "name": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services.", "shortDescription": {"text": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 3 more): Same pattern found in 3 addit", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "fullDescription": {"text": "Add `await` before each async call, or chain with `.then`. If you intentionally want fire-and-forget, prefix with `void` (TS) or assign to `_` (Python with `asyncio.create_task`) to make the intent explicit and survive lint."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 3 more): Same pattern found in 3 additi", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "fullDescription": {"text": "Validate the URL against an allowlist BEFORE fetching:\n  ALLOWED = {'images.example.com', 'cdn.example.com'}\n  host = urlparse(url).hostname\n  if host not in ALLOWED: abort(400)\nOr use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request handler.\nBlock private CIDRs explicitly: 10/8, 172.16/12, 192.168/16, 169.254/16."}, "properties": {"scanner": "repobility-threat-engine", "category": "ssrf", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_TESTS", "name": "No test files found in a documentation, catalog, or template-heavy repository", "shortDescription": {"text": "No test files found in a documentation, catalog, or template-heavy repository"}, "fullDescription": {"text": "If this repository ships runnable code, add focused tests for those examples or templates. If it is documentation/catalog content only, mark the finding as accepted or add a .repobilityignore note."}, "properties": {"scanner": "repobility-core", "category": "testing", "severity": "info", "confidence": 0.35, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "[MINED108] `self._api_key` used but never assigned in __init__: Method `api_key` of class `OpenAIImageGenerationClient` ", "shortDescription": {"text": "[MINED108] `self._api_key` used but never assigned in __init__: Method `api_key` of class `OpenAIImageGenerationClient` reads `self._api_key`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeEr"}, "fullDescription": {"text": "Initialize `self._api_key = <default>` in __init__, or add a class-level default."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "[MINED115] Action `marocchino/sticky-pull-request-comment` pinned to mutable ref `@v2`: `uses: marocchino/sticky-pull-re", "shortDescription": {"text": "[MINED115] Action `marocchino/sticky-pull-request-comment` pinned to mutable ref `@v2`: `uses: marocchino/sticky-pull-request-comment@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the t"}, "fullDescription": {"text": "Replace with: `uses: marocchino/sticky-pull-request-comment@<40-char-sha>  # v2` and let Dependabot bump it on a scheduled cadence."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInt", "shortDescription": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. T", "shortDescription": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "fullDescription": {"text": "Add `import html` at the top of the file."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED013", "name": "[MINED013] Password In Url: https://user:password@host \u2014 leaks creds via logs, referrer, error messages.", "shortDescription": {"text": "[MINED013] Password In Url: https://user:password@host \u2014 leaks creds via logs, referrer, error messages."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-200 / A07:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/468"}, "properties": {"repository": "OpenSenseNova/SenseNova-Skills", "repoUrl": "https://github.com/OpenSenseNova/SenseNova-Skills", "branch": "main"}, "results": [{"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 56820, "scanner": "repobility-ast-engine", "fingerprint": "d7d77010ca4a5966be92d15886e17bafade00a91fa2233b2b0b2a2070fc37f79", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d7d77010ca4a5966be92d15886e17bafade00a91fa2233b2b0b2a2070fc37f79"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 1294}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 56819, "scanner": "repobility-ast-engine", "fingerprint": "7cc35eb8815a1ad3455d25f09889e91e3fcacdbb134dc701111d6c4746326a2f", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7cc35eb8815a1ad3455d25f09889e91e3fcacdbb134dc701111d6c4746326a2f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 834}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 56818, "scanner": "repobility-ast-engine", "fingerprint": "d76b8960f584fdb01fa7994fdc58e23744185d2973ff272f918a24c19f5b5f7d", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d76b8960f584fdb01fa7994fdc58e23744185d2973ff272f918a24c19f5b5f7d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 766}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 56817, "scanner": "repobility-ast-engine", "fingerprint": "f36cfc05b4a2e73824ab8cdff6cdbd7c4e54265f7d2735021515512235c0b892", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f36cfc05b4a2e73824ab8cdff6cdbd7c4e54265f7d2735021515512235c0b892"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 642}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 56816, "scanner": "repobility-ast-engine", "fingerprint": "9a0de52dec545c43c664df9e15f26968a7f6fabdb41c3d5d053465da8f82d302", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9a0de52dec545c43c664df9e15f26968a7f6fabdb41c3d5d053465da8f82d302"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 267}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 56815, "scanner": "repobility-ast-engine", "fingerprint": "3aea1539b684bbc1198b8181315b8264aa702a77e9671e02e9c549347f75fd4d", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3aea1539b684bbc1198b8181315b8264aa702a77e9671e02e9c549347f75fd4d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 155}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 44204, "scanner": "repobility-ast-engine", "fingerprint": "7f558611c27ad41c9c6c5665f5a6c9dda6afde3643f4e3a49c259452bd02538f", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7f558611c27ad41c9c6c5665f5a6c9dda6afde3643f4e3a49c259452bd02538f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_agent_runner.py"}, "region": {"startLine": 396}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 44203, "scanner": "repobility-ast-engine", "fingerprint": "ca8c619bd6be77ea0e4a538096f72eacad88e319c0968ee0d97cac5b3c5bc434", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ca8c619bd6be77ea0e4a538096f72eacad88e319c0968ee0d97cac5b3c5bc434"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_agent_runner.py"}, "region": {"startLine": 350}}}]}, {"ruleId": "AGT015", "level": "warning", "message": {"text": "Remote install command pipes network code directly to a shell"}, "properties": {"repobilityId": 44202, "scanner": "repobility-agent-runtime", "fingerprint": "f2f1ec8fccd57ba55930f77bf028e60b567ce8e98bef824a871ac78cdb5f4858", "category": "dependency", "severity": "medium", "confidence": 0.7, "triageState": "fixed", "verdict": "likely", "isResolved": true, "reason": "File contains a remote download piped directly to a shell without visible checksum or signature verification.", "evidence": {"rule_id": "AGT015", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|f2f1ec8fccd57ba55930f77bf028e60b567ce8e98bef824a871ac78cdb5f4858"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "INSTALL_CN.md"}, "region": {"startLine": 117}}}]}, {"ruleId": "SEC123", "level": "warning", "message": {"text": "[SEC123] Production stack trace / debug output exposed: Debug mode left on in production exposes stack traces, environment variables, framework internals \u2014 sometimes triggers RCE (Django debug page with arbitrary template eval)."}, "properties": {"repobilityId": 44198, "scanner": "repobility-threat-engine", "fingerprint": "0e166f3940e98f7e4b56421c6b5c49f0ec5c423817f8d17ef70acafecad4e846", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "debug = true", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC123", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|0e166f3940e98f7e4b56421c6b5c49f0ec5c423817f8d17ef70acafecad4e846"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/export_pptx/html_to_pptx.mjs"}, "region": {"startLine": 83}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `_scan_balanced` has cognitive complexity 22 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: continue=1, elif=4, for=1, if=4, nested_bonus=12."}, "properties": {"repobilityId": 44192, "scanner": "repobility-threat-engine", "fingerprint": "0a3e2f9d7ab1498d480cc662444b016995b3a210c04b998d9a4eed95ae3f6543", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 22 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_scan_balanced", "breakdown": {"if": 4, "for": 1, "elif": 4, "continue": 1, "nested_bonus": 12}, "complexity": 22, "correlation_key": "fp|0a3e2f9d7ab1498d480cc662444b016995b3a210c04b998d9a4eed95ae3f6543"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/extract_json.py"}, "region": {"startLine": 44}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 42927, "scanner": "repobility-ast-engine", "fingerprint": "b557f3fcbcfaa909da831a01967f547c76abd7caec90f2856229703daa491b92", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b557f3fcbcfaa909da831a01967f547c76abd7caec90f2856229703daa491b92"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 1249}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 42926, "scanner": "repobility-ast-engine", "fingerprint": "ae9b1fde7ab68c299d6393f67fe0c2a1f2c218f58c3690ec8712a9c03743ac1d", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ae9b1fde7ab68c299d6393f67fe0c2a1f2c218f58c3690ec8712a9c03743ac1d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-doctor/ppt_doctor/check_environment.py"}, "region": {"startLine": 411}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39161, "scanner": "repobility-ast-engine", "fingerprint": "79109098c35e4f25061cd2b09f03ab70e2ad8294d4f9ba805935c3666c1aca0d", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|79109098c35e4f25061cd2b09f03ab70e2ad8294d4f9ba805935c3666c1aca0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-social-cn/scripts/bilibili_search.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39160, "scanner": "repobility-ast-engine", "fingerprint": "e04cdc1731f8c111bdba699016384e401c6ebf7283eb8a7b7d7e2e89c50194cf", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e04cdc1731f8c111bdba699016384e401c6ebf7283eb8a7b7d7e2e89c50194cf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-social-cn/scripts/douyin_search.py"}, "region": {"startLine": 84}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39159, "scanner": "repobility-ast-engine", "fingerprint": "eeb8563588dc458a50069360f6cec72d246716ea23570edfb89ba1dbe1b32ca9", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|eeb8563588dc458a50069360f6cec72d246716ea23570edfb89ba1dbe1b32ca9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 1241}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39158, "scanner": "repobility-ast-engine", "fingerprint": "00d15e43d030c56fef5a25e375744f8e601109fc44107f980f1c8823933bf8a9", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|00d15e43d030c56fef5a25e375744f8e601109fc44107f980f1c8823933bf8a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 805}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39157, "scanner": "repobility-ast-engine", "fingerprint": "05809a2b1ba11eed4f7400b8b137b2603ebbd95737d25eeeca63bf4aacdcaf16", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|05809a2b1ba11eed4f7400b8b137b2603ebbd95737d25eeeca63bf4aacdcaf16"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 737}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39156, "scanner": "repobility-ast-engine", "fingerprint": "ed5e975f141fb34af4f74d7dde7345646b6f170af58e0587f406d02f4932e695", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ed5e975f141fb34af4f74d7dde7345646b6f170af58e0587f406d02f4932e695"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 613}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39155, "scanner": "repobility-ast-engine", "fingerprint": "e3149fe209f33420dfd16a5514c123d4fb613f6ba8b25465b3b13de5cb415ff6", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e3149fe209f33420dfd16a5514c123d4fb613f6ba8b25465b3b13de5cb415ff6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 253}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39154, "scanner": "repobility-ast-engine", "fingerprint": "9fc764f0d2f05f1ee2cae867a26fda58b6ac641bb189920db3fa48e3d1013493", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9fc764f0d2f05f1ee2cae867a26fda58b6ac641bb189920db3fa48e3d1013493"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 141}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39152, "scanner": "repobility-ast-engine", "fingerprint": "3400985143d35e95e877b25d37e97952272bb9069aa4e7a1b86dd1af7f73e9c9", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3400985143d35e95e877b25d37e97952272bb9069aa4e7a1b86dd1af7f73e9c9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/lib/model_client.py"}, "region": {"startLine": 334}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39127, "scanner": "repobility-ast-engine", "fingerprint": "e91e8239f6127e56e9338edb8d73bd973ba7a0fc3dce7183a16130c2c8d495cb", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e91e8239f6127e56e9338edb8d73bd973ba7a0fc3dce7183a16130c2c8d495cb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/configs.py"}, "region": {"startLine": 309}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39125, "scanner": "repobility-ast-engine", "fingerprint": "cc09ce204ada3c02d56a9324c9f55247b2b9dbdcfafeab224ce2bb5271abfd43", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|cc09ce204ada3c02d56a9324c9f55247b2b9dbdcfafeab224ce2bb5271abfd43"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_agent_runner.py"}, "region": {"startLine": 369}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39124, "scanner": "repobility-ast-engine", "fingerprint": "3c695cc682b2ef17e362c099d76ae4e069cb357402bf75371bb63ad2e3736b00", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3c695cc682b2ef17e362c099d76ae4e069cb357402bf75371bb63ad2e3736b00"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_agent_runner.py"}, "region": {"startLine": 323}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39123, "scanner": "repobility-ast-engine", "fingerprint": "7cfa9e780c4ff3c65d8a8dc6421ad9d0e90da750d7f2ee6fc259d7f7e431bf07", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7cfa9e780c4ff3c65d8a8dc6421ad9d0e90da750d7f2ee6fc259d7f7e431bf07"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-code/scripts/stackoverflow_search.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39122, "scanner": "repobility-ast-engine", "fingerprint": "ab1fd65ea5e34bbfa3cc53aeb7557833d366111f48b47f880841fd17784fea7f", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ab1fd65ea5e34bbfa3cc53aeb7557833d366111f48b47f880841fd17784fea7f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-code/scripts/huggingface_search.py"}, "region": {"startLine": 132}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39121, "scanner": "repobility-ast-engine", "fingerprint": "7470534ffd5f803d1eb2af47c1e77c767b12a16f54e98cf72a50ddeda79530ca", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7470534ffd5f803d1eb2af47c1e77c767b12a16f54e98cf72a50ddeda79530ca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-code/scripts/hackernews_search.py"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39120, "scanner": "repobility-ast-engine", "fingerprint": "b7e77f9306cd9e2d51f7f17ac801d1a0c67ec8c171d6dc3536c4578f360db9fb", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b7e77f9306cd9e2d51f7f17ac801d1a0c67ec8c171d6dc3536c4578f360db9fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-code/scripts/search_utils.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39119, "scanner": "repobility-ast-engine", "fingerprint": "0f290ff72a916c848a09fe10bfbd00cdf0ea26c96f2fa7287da4b8aacff6087b", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0f290ff72a916c848a09fe10bfbd00cdf0ea26c96f2fa7287da4b8aacff6087b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-code/scripts/github_search.py"}, "region": {"startLine": 90}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39118, "scanner": "repobility-ast-engine", "fingerprint": "8d3149cb7444d6ebcd3ce32c04be5d4e3ac4e77147455e2ef27a027a3966b126", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8d3149cb7444d6ebcd3ce32c04be5d4e3ac4e77147455e2ef27a027a3966b126"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/semantic_scholar_search.py"}, "region": {"startLine": 98}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39117, "scanner": "repobility-ast-engine", "fingerprint": "d6189f4f5027583a5045b426d2956ac9a753443666f5f12f7f8255a0f9e76f2f", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d6189f4f5027583a5045b426d2956ac9a753443666f5f12f7f8255a0f9e76f2f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/arxiv_paper.py"}, "region": {"startLine": 294}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39116, "scanner": "repobility-ast-engine", "fingerprint": "24d043fc3ae02f13073b93d87de67ecd4a5ad4e2f16905332dd100221550fcfd", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|24d043fc3ae02f13073b93d87de67ecd4a5ad4e2f16905332dd100221550fcfd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/wikipedia_search.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39115, "scanner": "repobility-ast-engine", "fingerprint": "50b9eb828ac5cbe98321072a103f55c26b32cb816b28f07084544cacb22b43c0", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|50b9eb828ac5cbe98321072a103f55c26b32cb816b28f07084544cacb22b43c0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/search_utils.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39114, "scanner": "repobility-ast-engine", "fingerprint": "f403e98a852668ff15b8e6cbc2dd7b45caf2e94ea9cde6b3eed863abf0226876", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f403e98a852668ff15b8e6cbc2dd7b45caf2e94ea9cde6b3eed863abf0226876"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/semantic_scholar_refs.py"}, "region": {"startLine": 225}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39113, "scanner": "repobility-ast-engine", "fingerprint": "6aa521fe074e5c7f70724deec6973f6d37567721d7cbe068c3264d6beb997161", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6aa521fe074e5c7f70724deec6973f6d37567721d7cbe068c3264d6beb997161"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/pubmed_search.py"}, "region": {"startLine": 159}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39112, "scanner": "repobility-ast-engine", "fingerprint": "fc3192c57d82b912f73de7d2fd76d8d3777db681d486911b3f061b82f0b22f2c", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|fc3192c57d82b912f73de7d2fd76d8d3777db681d486911b3f061b82f0b22f2c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/arxiv_search.py"}, "region": {"startLine": 233}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 39111, "scanner": "repobility-ast-engine", "fingerprint": "ffd7552f1cfd62762df3c80ca8512ad0e585bf8779bf6af01b0e3f355d4e8a8c", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "bare-except-without-pass", "owasp": null, "cwe_ids": [], "languages": ["python"], "observations_count": 21610}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ffd7552f1cfd62762df3c80ca8512ad0e585bf8779bf6af01b0e3f355d4e8a8c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/pmc_paper.py"}, "region": {"startLine": 444}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `_parse_response` has cognitive complexity 25 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, for=2, if=9, nested_bonus=11, or=2."}, "properties": {"repobilityId": 39096, "scanner": "repobility-threat-engine", "fingerprint": "e7ddcfdfec82eca04992f1dcc213580f0386fadb84790a9e09eeb5bb61625794", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "AST-derived cognitive complexity score = 25 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_parse_response", "breakdown": {"if": 9, "or": 2, "for": 2, "elif": 1, "nested_bonus": 11}, "complexity": 25, "correlation_key": "fp|e7ddcfdfec82eca04992f1dcc213580f0386fadb84790a9e09eeb5bb61625794"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "CFG006", "level": "warning", "message": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "properties": {"repobilityId": 27575, "scanner": "repobility-threat-engine", "fingerprint": "c65fc71ce58c37a0e07837c0fe294108b731c43ef16027a2f0971c757bbe9a16", "category": "practices", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "No .gitignore file found in repository root", "evidence": {"reason": "No .gitignore file found in repository root", "rule_id": "CFG006", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "repo|practices|cfg006"}}}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 27574, "scanner": "repobility-threat-engine", "fingerprint": "4e767a25400dc50fc77440d9c19a4d6585a67275ad24c7be37b905db42348b27", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n            pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|4e767a25400dc50fc77440d9c19a4d6585a67275ad24c7be37b905db42348b27"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/semantic_scholar_refs.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 27573, "scanner": "repobility-threat-engine", "fingerprint": "f1361acc9af342320eac3017495e1a9bcd14fbcc8c523d85e65182dc69614cb9", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n            pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f1361acc9af342320eac3017495e1a9bcd14fbcc8c523d85e65182dc69614cb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 548}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 27572, "scanner": "repobility-threat-engine", "fingerprint": "6b45ad445238a682dc410ea7dda2f587f3188d56ac85e5f22fcd9966a8b48eec", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n        pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6b45ad445238a682dc410ea7dda2f587f3188d56ac85e5f22fcd9966a8b48eec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "SEC031", "level": "warning", "message": {"text": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternation with overlapping branches. On adversarial input these patterns exhibit exponential backtracking, freezing the process. CWE-1333. Real CVEs: CVE-2017-16129 (minimatch), CVE-2021-3807 (ansi-regex), and dozens more."}, "properties": {"repobilityId": 27571, "scanner": "repobility-threat-engine", "fingerprint": "e706a96c85e38a0f53b0c6cc8d82b59848121c653807e8c0a0d2ef0bee15d25d", "category": "redos", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "re.compile(r\"^\\s*\\|?\\s*:?-+:?\\s*(\\|\\s*:?-+:?\\s*)+", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC031", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e706a96c85e38a0f53b0c6cc8d82b59848121c653807e8c0a0d2ef0bee15d25d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 56}}}]}, {"ruleId": "CFG006", "level": "warning", "message": {"text": "[CFG006] Missing .gitignore: No .gitignore file. Risk of committing secrets and build artifacts."}, "properties": {"repobilityId": 27566, "scanner": "repobility-threat-engine", "fingerprint": "c65fc71ce58c37a0e07837c0fe294108b731c43ef16027a2f0971c757bbe9a16", "category": "practices", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "No .gitignore file found in repository root", "evidence": {"reason": "No .gitignore file found in repository root", "rule_id": "CFG006", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "repo|practices|cfg006"}}}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 27565, "scanner": "repobility-threat-engine", "fingerprint": "4e767a25400dc50fc77440d9c19a4d6585a67275ad24c7be37b905db42348b27", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n            pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|4e767a25400dc50fc77440d9c19a4d6585a67275ad24c7be37b905db42348b27"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/semantic_scholar_refs.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 27563, "scanner": "repobility-threat-engine", "fingerprint": "f1361acc9af342320eac3017495e1a9bcd14fbcc8c523d85e65182dc69614cb9", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n            pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f1361acc9af342320eac3017495e1a9bcd14fbcc8c523d85e65182dc69614cb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 548}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 27562, "scanner": "repobility-threat-engine", "fingerprint": "6b45ad445238a682dc410ea7dda2f587f3188d56ac85e5f22fcd9966a8b48eec", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n        pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6b45ad445238a682dc410ea7dda2f587f3188d56ac85e5f22fcd9966a8b48eec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "SEC031", "level": "warning", "message": {"text": "[SEC031] Catastrophic Backtracking Regex (ReDoS): Regex contains nested quantifiers like `(a+)+` or quantified alternation with overlapping branches. On adversarial input these patterns exhibit exponential backtracking, freezing the process. CWE-1333. Real CVEs: CVE-2017-16129 (minimatch), CVE-2021-3807 (ansi-regex), and dozens more."}, "properties": {"repobilityId": 27561, "scanner": "repobility-threat-engine", "fingerprint": "e706a96c85e38a0f53b0c6cc8d82b59848121c653807e8c0a0d2ef0bee15d25d", "category": "redos", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "re.compile(r\"^\\s*\\|?\\s*:?-+:?\\s*(\\|\\s*:?-+:?\\s*)+", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC031", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e706a96c85e38a0f53b0c6cc8d82b59848121c653807e8c0a0d2ef0bee15d25d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 56}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `_balanced_spans` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: continue=1, elif=1, else=1, for=1, if=2, nested_bonus=3."}, "properties": {"repobilityId": 44193, "scanner": "repobility-threat-engine", "fingerprint": "497af4e8a3bcb1bc0c5827bdaeb3cda93c857d63f4bc6c75edeceb59eec5efd4", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 9 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_balanced_spans", "breakdown": {"if": 2, "for": 1, "elif": 1, "else": 1, "continue": 1, "nested_bonus": 3}, "complexity": 9, "correlation_key": "fp|497af4e8a3bcb1bc0c5827bdaeb3cda93c857d63f4bc6c75edeceb59eec5efd4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/extract_json.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `parse_response` has cognitive complexity 12 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: for=2, if=2, nested_bonus=4, or=3, recursion=1."}, "properties": {"repobilityId": 39095, "scanner": "repobility-threat-engine", "fingerprint": "dc8ca2fd8226675f8da62c8998c8c4474edd9f173216626fdd4ffbb216760e3e", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "AST-derived cognitive complexity score = 12 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "parse_response", "breakdown": {"if": 2, "or": 3, "for": 2, "recursion": 1, "nested_bonus": 4}, "complexity": 12, "correlation_key": "fp|dc8ca2fd8226675f8da62c8998c8c4474edd9f173216626fdd4ffbb216760e3e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/nano_banana.py"}, "region": {"startLine": 267}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 39 more): Same pattern found in 39 additional files. Review if needed."}, "properties": {"repobilityId": 52328, "scanner": "repobility-threat-engine", "fingerprint": "0b7fe54636352719cbc4711a7a74d6c7c2a5986f9272e22fb517084b56a61a3c", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 39 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "_scan_balanced", "breakdown": {"if": 4, "for": 1, "elif": 4, "continue": 1, "nested_bonus": 12}, "aggregated": true, "complexity": 22, "correlation_key": "fp|0b7fe54636352719cbc4711a7a74d6c7c2a5986f9272e22fb517084b56a61a3c", "aggregated_count": 39}}}, {"ruleId": "MINED069", "level": "none", "message": {"text": "[MINED069] Debug True Prod: Django/Flask DEBUG=True or app.debug=True in non-test files."}, "properties": {"repobilityId": 44201, "scanner": "repobility-threat-engine", "fingerprint": "6be64f9a0db3fc99355505734cc0f737baf84012ce3bd2f050f8f6aef44cb9eb", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "debug-true-prod", "owasp": "A05:2021", "cwe_ids": ["CWE-489"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348063+00:00", "triaged_in_corpus": 12, "observations_count": 37393, "ai_coder_pattern_id": 17}, "scanner": "repobility-threat-engine", "correlation_key": "fp|6be64f9a0db3fc99355505734cc0f737baf84012ce3bd2f050f8f6aef44cb9eb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/export_pptx/html_to_pptx.mjs"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 44200, "scanner": "repobility-threat-engine", "fingerprint": "595aab384ff5d390234d43126018ee5ead714b51df8036bb73850b0177fa7264", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|595aab384ff5d390234d43126018ee5ead714b51df8036bb73850b0177fa7264"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/export_pptx/screenshot.mjs"}, "region": {"startLine": 31}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 44199, "scanner": "repobility-threat-engine", "fingerprint": "24535fceb28d7d25ceb14a3001557b8437b4f93b51b0cacdd7203e31a59d0c11", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|24535fceb28d7d25ceb14a3001557b8437b4f93b51b0cacdd7203e31a59d0c11"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/export_pptx/html_to_pptx.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 44197, "scanner": "repobility-threat-engine", "fingerprint": "3b7c7d1cfe00a747c9fb4a3c63a43fdb52ab94f379655a728641152701668016", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3b7c7d1cfe00a747c9fb4a3c63a43fdb52ab94f379655a728641152701668016"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/utils/httpx_client.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 37 more): Same pattern found in 37 additional files. Review if needed."}, "properties": {"repobilityId": 44195, "scanner": "repobility-threat-engine", "fingerprint": "7aa5b749e2beb16a32c597696986fa2fc88f84ef76bf450bd8f4e8ec97eba706", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 37 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "_scan_balanced", "breakdown": {"if": 4, "for": 1, "elif": 4, "continue": 1, "nested_bonus": 12}, "aggregated": true, "complexity": 22, "correlation_key": "fp|7aa5b749e2beb16a32c597696986fa2fc88f84ef76bf450bd8f4e8ec97eba706", "aggregated_count": 37}}}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "properties": {"repobilityId": 39110, "scanner": "repobility-threat-engine", "fingerprint": "8359cb5c6c2721822e13a4129e008e5a02a5221f2bd96a5750e0d6c9de724fa2", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "correlation_key": "fp|8359cb5c6c2721822e13a4129e008e5a02a5221f2bd96a5750e0d6c9de724fa2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/semantic_scholar_refs.py"}, "region": {"startLine": 107}}}]}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "properties": {"repobilityId": 39109, "scanner": "repobility-threat-engine", "fingerprint": "a0cf08a7b47a809428f58ddf815e82e5fa456d8ea73f2a75eb20ab4ea199a6c4", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "correlation_key": "fp|a0cf08a7b47a809428f58ddf815e82e5fa456d8ea73f2a75eb20ab4ea199a6c4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 224}}}]}, {"ruleId": "MINED064", "level": "none", "message": {"text": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services."}, "properties": {"repobilityId": 39106, "scanner": "repobility-threat-engine", "fingerprint": "af00697f8f2d3299c3ea031c6dca6c08c46044af2e959be4681cd913a405999d", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-input-call", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348050+00:00", "triaged_in_corpus": 12, "observations_count": 66378, "ai_coder_pattern_id": 124}, "scanner": "repobility-threat-engine", "correlation_key": "fp|af00697f8f2d3299c3ea031c6dca6c08c46044af2e959be4681cd913a405999d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-doctor/ppt_doctor/interactive.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "SEC128", "level": "none", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "properties": {"repobilityId": 39105, "scanner": "repobility-threat-engine", "fingerprint": "7a4b0f5540cad034a1707c0e9f6ef94d621d463e55602684599877ea4071a670", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|7a4b0f5540cad034a1707c0e9f6ef94d621d463e55602684599877ea4071a670"}}}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 39101, "scanner": "repobility-threat-engine", "fingerprint": "4dc0ec3deb751be958acb56a9c46e1644913cf99442e7af55d5faca72de32dc8", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|4dc0ec3deb751be958acb56a9c46e1644913cf99442e7af55d5faca72de32dc8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/arxiv_search.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 39100, "scanner": "repobility-threat-engine", "fingerprint": "ed2546ac79fb574850d0cd5d1623c5bd5ceb46f0c24c6fc72cb5bf4934c5ab88", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ed2546ac79fb574850d0cd5d1623c5bd5ceb46f0c24c6fc72cb5bf4934c5ab88"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 99}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 39099, "scanner": "repobility-threat-engine", "fingerprint": "074f9580a11c0e9d584292c88f522f04b415bb1178fffa75b9f148c0b78139f4", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|074f9580a11c0e9d584292c88f522f04b415bb1178fffa75b9f148c0b78139f4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/utils/httpx_client.py"}, "region": {"startLine": 63}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 35 more): Same pattern found in 35 additional files. Review if needed."}, "properties": {"repobilityId": 39097, "scanner": "repobility-threat-engine", "fingerprint": "60aadc37f99344f8f56cc5876ea4a2ccdc8f906a0a147b2409400ab5502ba041", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 35 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "generate", "breakdown": {"if": 7, "or": 2, "elif": 1, "else": 1, "except": 3, "ternary": 1, "nested_bonus": 15}, "aggregated": true, "complexity": 30, "correlation_key": "fp|60aadc37f99344f8f56cc5876ea4a2ccdc8f906a0a147b2409400ab5502ba041", "aggregated_count": 35}}}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "properties": {"repobilityId": 39093, "scanner": "repobility-threat-engine", "fingerprint": "29f418f0b32afce9ff9545bb3e439c1b302cb3c41f56d413b872dcb5fe0b02fc", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|29f418f0b32afce9ff9545bb3e439c1b302cb3c41f56d413b872dcb5fe0b02fc"}}}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 7 more): Same pattern found in 7 additional files. Review if needed."}, "properties": {"repobilityId": 27570, "scanner": "repobility-threat-engine", "fingerprint": "ca5810ac6a2691831acbb4a51605672ba83c57f5592204a59181f6375036bfee", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 7 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 7 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|ca5810ac6a2691831acbb4a51605672ba83c57f5592204a59181f6375036bfee"}}}, {"ruleId": "CORE_NO_TESTS", "level": "none", "message": {"text": "No test files found in a documentation, catalog, or template-heavy repository"}, "properties": {"repobilityId": 27564, "scanner": "repobility-core", "fingerprint": "69cfb3536a8ccff500ccafcd681fc8d4bc9f4eda6689da02ddec81654bd9fd15", "category": "testing", "severity": "info", "confidence": 0.35, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Repository shape is documentation, catalog, skill, or template-heavy rather than a conventional runnable application.", "evidence": {"reason": "Repository shape is documentation, catalog, skill, or template-heavy rather than a conventional runnable application.", "rule_id": "CORE_NO_TESTS", "scanner": "repobility-core", "confidence": 0.35, "correlation_key": "repo|testing|core_no_tests"}}}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 7 more): Same pattern found in 7 additional files. Review if needed."}, "properties": {"repobilityId": 27560, "scanner": "repobility-threat-engine", "fingerprint": "ca5810ac6a2691831acbb4a51605672ba83c57f5592204a59181f6375036bfee", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 7 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 7 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|ca5810ac6a2691831acbb4a51605672ba83c57f5592204a59181f6375036bfee"}}}, {"ruleId": "CORE_NO_TESTS", "level": "none", "message": {"text": "No test files found in a documentation, catalog, or template-heavy repository"}, "properties": {"repobilityId": 27556, "scanner": "repobility-core", "fingerprint": "69cfb3536a8ccff500ccafcd681fc8d4bc9f4eda6689da02ddec81654bd9fd15", "category": "testing", "severity": "info", "confidence": 0.35, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Repository shape is documentation, catalog, skill, or template-heavy rather than a conventional runnable application.", "evidence": {"reason": "Repository shape is documentation, catalog, skill, or template-heavy rather than a conventional runnable application.", "rule_id": "CORE_NO_TESTS", "scanner": "repobility-core", "confidence": 0.35, "correlation_key": "repo|testing|core_no_tests"}}}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._api_key` used but never assigned in __init__: Method `api_key` of class `OpenAIImageGenerationClient` reads `self._api_key`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44212, "scanner": "repobility-ast-engine", "fingerprint": "52eb7b806a411d5a139f240a0d8a091b8e98bd30eaf268f0addf34eab4798f59", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|52eb7b806a411d5a139f240a0d8a091b8e98bd30eaf268f0addf34eab4798f59"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.parse_response` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.parse_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44211, "scanner": "repobility-ast-engine", "fingerprint": "46516ad6d12bc5eefcc5226fb690df48f72fbb10004c1d1db5582e4738f9ddde", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|46516ad6d12bc5eefcc5226fb690df48f72fbb10004c1d1db5582e4738f9ddde"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 147}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_client` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self._get_client`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44210, "scanner": "repobility-ast-engine", "fingerprint": "f6b5e1ac0f554b7c985a17095ec5dea8707c1d70bb8971b4f206ace7414a92a1", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f6b5e1ac0f554b7c985a17095ec5dea8707c1d70bb8971b4f206ace7414a92a1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 139}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._resolve_size` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self._resolve_size`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44209, "scanner": "repobility-ast-engine", "fingerprint": "bc558806468d1488f2527e2eec9144f7c34135573a80db7689a664f8bce9400f", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|bc558806468d1488f2527e2eec9144f7c34135573a80db7689a664f8bce9400f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.get_api_url` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.get_api_url`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44208, "scanner": "repobility-ast-engine", "fingerprint": "e657667174e56e30098992a1f7bdc29c3a6145cba88a1c3d36fec8a728bf3237", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e657667174e56e30098992a1f7bdc29c3a6145cba88a1c3d36fec8a728bf3237"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.build_payload` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.build_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44207, "scanner": "repobility-ast-engine", "fingerprint": "1ac05f0baa7b9857d110a0a30dfeeebc84c20cc0e99830e41d7f7be5352384b9", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|1ac05f0baa7b9857d110a0a30dfeeebc84c20cc0e99830e41d7f7be5352384b9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.model` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.model`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44206, "scanner": "repobility-ast-engine", "fingerprint": "6723c68955b30b610dcfb130922178c884373d61ad91aa0cdf5e05935c2b34ca", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6723c68955b30b610dcfb130922178c884373d61ad91aa0cdf5e05935c2b34ca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 107}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.headers` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 44205, "scanner": "repobility-ast-engine", "fingerprint": "8667d738b91dd4930306157c93f60b4a874596b3da8ecfd278110b57741513e3", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8667d738b91dd4930306157c93f60b4a874596b3da8ecfd278110b57741513e3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "COMP001", "level": "error", "message": {"text": "[COMP001] High cognitive complexity: Function `generate` has cognitive complexity 32 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, else=1, except=3, if=7, nested_bonus=16, or=2, ternary=2."}, "properties": {"repobilityId": 44194, "scanner": "repobility-threat-engine", "fingerprint": "aa069f7465bc4a9919ac9f576daa1af4e33e9d6dc5d773a6314769fc6e188b43", "category": "quality", "severity": "high", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 32 (severity threshold for high: 25+).", "evidence": {"scanner": "repobility-threat-engine", "function": "generate", "breakdown": {"if": 7, "or": 2, "elif": 1, "else": 1, "except": 3, "ternary": 2, "nested_bonus": 16}, "complexity": 32, "correlation_key": "fp|aa069f7465bc4a9919ac9f576daa1af4e33e9d6dc5d773a6314769fc6e188b43"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/nano_banana.py"}, "region": {"startLine": 72}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `marocchino/sticky-pull-request-comment` pinned to mutable ref `@v2`: `uses: marocchino/sticky-pull-request-comment@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 39164, "scanner": "repobility-supply-chain", "fingerprint": "79b673ddb388c47eb27a91d46a052efa7721f81b70a03acaab9d4afee5017192", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|79b673ddb388c47eb27a91d46a052efa7721f81b70a03acaab9d4afee5017192"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr_check.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `marocchino/sticky-pull-request-comment` pinned to mutable ref `@v2`: `uses: marocchino/sticky-pull-request-comment@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 39163, "scanner": "repobility-supply-chain", "fingerprint": "ff186cfa998fcea4374132914b3adc327cf05490062b46a869022000d950094d", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ff186cfa998fcea4374132914b3adc327cf05490062b46a869022000d950094d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr_check.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `amannn/action-semantic-pull-request` pinned to mutable ref `@v6`: `uses: amannn/action-semantic-pull-request@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 39162, "scanner": "repobility-supply-chain", "fingerprint": "58167e51f4a02a4c823fc85b8e88e9856c33536959ede4deb0b165c4bfc66cf4", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|58167e51f4a02a4c823fc85b8e88e9856c33536959ede4deb0b165c4bfc66cf4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr_check.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._api_key` used but never assigned in __init__: Method `api_key` of class `OpenAIImageGenerationClient` reads `self._api_key`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39151, "scanner": "repobility-ast-engine", "fingerprint": "af3d93afb14373253c8d64b7930022d2d99f8d7125e3f32c313be2e0935ce1ba", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|af3d93afb14373253c8d64b7930022d2d99f8d7125e3f32c313be2e0935ce1ba"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 203}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.parse_response` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.parse_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39150, "scanner": "repobility-ast-engine", "fingerprint": "9afff7afb92018b093863df863268b5a0a9fde9bb7b00616f32f7862cd0a82fb", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9afff7afb92018b093863df863268b5a0a9fde9bb7b00616f32f7862cd0a82fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_client` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self._get_client`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39149, "scanner": "repobility-ast-engine", "fingerprint": "2831d492d482935aeab73f3624e27cf36dd99d896ac0fac70fe7bd7981fc6e17", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|2831d492d482935aeab73f3624e27cf36dd99d896ac0fac70fe7bd7981fc6e17"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 138}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._resolve_size` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self._resolve_size`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39148, "scanner": "repobility-ast-engine", "fingerprint": "7b7257220115d94af59720f098562b0ba4eea1eece41eda7237dfdddc4851aab", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|7b7257220115d94af59720f098562b0ba4eea1eece41eda7237dfdddc4851aab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 120}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.get_api_url` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.get_api_url`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39147, "scanner": "repobility-ast-engine", "fingerprint": "f441378b5333dea80ca44d32dcf313a90fdafc61b3e5bb586b63a69d439dfbcc", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f441378b5333dea80ca44d32dcf313a90fdafc61b3e5bb586b63a69d439dfbcc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.build_payload` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.build_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39146, "scanner": "repobility-ast-engine", "fingerprint": "c5fb72d803088358a7a6a927b603f89e6ad5c9fae234a1062951c3ef27489267", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|c5fb72d803088358a7a6a927b603f89e6ad5c9fae234a1062951c3ef27489267"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 124}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.model` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.model`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39145, "scanner": "repobility-ast-engine", "fingerprint": "a95284a20635af31b0ee600e0bc872edfbe3fe80f91595dc6486263b6b08f040", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|a95284a20635af31b0ee600e0bc872edfbe3fe80f91595dc6486263b6b08f040"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.headers` used but never assigned in __init__: Method `generate` of class `OpenAIImageGenerationClient` reads `self.headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39144, "scanner": "repobility-ast-engine", "fingerprint": "6dbfe8c9b73f5a587e94143847fdc29eb7b02bb0d97ac0106e9e38d30e768ae0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6dbfe8c9b73f5a587e94143847fdc29eb7b02bb0d97ac0106e9e38d30e768ae0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._post_payload` used but never assigned in __init__: Method `vision_completion` of class `OpenAIChatAdapter` reads `self._post_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39143, "scanner": "repobility-ast-engine", "fingerprint": "b451e384ad317b4270675ca823038425bd758d12e15cb19f775daf6f67033b7f", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b451e384ad317b4270675ca823038425bd758d12e15cb19f775daf6f67033b7f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 216}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._build_payload` used but never assigned in __init__: Method `vision_completion` of class `OpenAIChatAdapter` reads `self._build_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39142, "scanner": "repobility-ast-engine", "fingerprint": "3f5336a8e1c81cbc5a403f3e1aa17f62d85cb84cb21f9c18bb90b2ee3296b353", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3f5336a8e1c81cbc5a403f3e1aa17f62d85cb84cb21f9c18bb90b2ee3296b353"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 210}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._post_payload` used but never assigned in __init__: Method `text_completion` of class `OpenAIChatAdapter` reads `self._post_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39141, "scanner": "repobility-ast-engine", "fingerprint": "68ca427da8d33361b91cd2a1964f68b636d1296590f2f3493cee4fe78419502b", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|68ca427da8d33361b91cd2a1964f68b636d1296590f2f3493cee4fe78419502b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 200}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._build_payload` used but never assigned in __init__: Method `text_completion` of class `OpenAIChatAdapter` reads `self._build_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39140, "scanner": "repobility-ast-engine", "fingerprint": "d3dc07162f951a998b4373987ac1e45ed79fcc7dcb3a2553e20babf0dd7a8f53", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d3dc07162f951a998b4373987ac1e45ed79fcc7dcb3a2553e20babf0dd7a8f53"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 199}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_client` used but never assigned in __init__: Method `_post_payload` of class `OpenAIChatAdapter` reads `self._get_client`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39139, "scanner": "repobility-ast-engine", "fingerprint": "8030e8e310a9794f5198ac1245ddabcee40f01ca7ae9d69b5e3cd9be87fc7555", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8030e8e310a9794f5198ac1245ddabcee40f01ca7ae9d69b5e3cd9be87fc7555"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 176}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._headers` used but never assigned in __init__: Method `_post_payload` of class `OpenAIChatAdapter` reads `self._headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39138, "scanner": "repobility-ast-engine", "fingerprint": "d2c4a77d5f3c2967205831c150f1a1c5f2304f8e9af93b78fe5f9dc36be69dae", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d2c4a77d5f3c2967205831c150f1a1c5f2304f8e9af93b78fe5f9dc36be69dae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 176}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._parse_response` used but never assigned in __init__: Method `_post_payload` of class `OpenAIChatAdapter` reads `self._parse_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39137, "scanner": "repobility-ast-engine", "fingerprint": "077af8abcc38f5c6e68c08b809e4d6e2dc21e8752e70f27e85530300640b1fd0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|077af8abcc38f5c6e68c08b809e4d6e2dc21e8752e70f27e85530300640b1fd0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._build_vision_content` used but never assigned in __init__: Method `_build_payload` of class `OpenAIChatAdapter` reads `self._build_vision_content`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39136, "scanner": "repobility-ast-engine", "fingerprint": "f72c4244e565d513603c41349b5eff39f437e0f4fc8878593d79ce17b7d1afbe", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f72c4244e565d513603c41349b5eff39f437e0f4fc8878593d79ce17b7d1afbe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 99}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._post_payload` used but never assigned in __init__: Method `vision_completion` of class `AnthropicMessagesAdapter` reads `self._post_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39135, "scanner": "repobility-ast-engine", "fingerprint": "82e9c6f2902503dc6022ad848fe19d5d8aadd817225aaa97cdecfacbd69d46a2", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|82e9c6f2902503dc6022ad848fe19d5d8aadd817225aaa97cdecfacbd69d46a2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 156}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._build_payload` used but never assigned in __init__: Method `vision_completion` of class `AnthropicMessagesAdapter` reads `self._build_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39134, "scanner": "repobility-ast-engine", "fingerprint": "52e0cd9adcdc45fc260198b2638f2e891c3415a257291ddb33a5ef5b8798c81c", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|52e0cd9adcdc45fc260198b2638f2e891c3415a257291ddb33a5ef5b8798c81c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 150}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._post_payload` used but never assigned in __init__: Method `text_completion` of class `AnthropicMessagesAdapter` reads `self._post_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39133, "scanner": "repobility-ast-engine", "fingerprint": "dcb874b4e5cc99358cedf2b47bd71adaba60f88d96f65488595c1deacc7106be", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|dcb874b4e5cc99358cedf2b47bd71adaba60f88d96f65488595c1deacc7106be"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 141}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._build_payload` used but never assigned in __init__: Method `text_completion` of class `AnthropicMessagesAdapter` reads `self._build_payload`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39132, "scanner": "repobility-ast-engine", "fingerprint": "b33b79615b7fffcb7efd7ef4d536c35e9cd8c37d1c5e295dc8fe24180485bed4", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|b33b79615b7fffcb7efd7ef4d536c35e9cd8c37d1c5e295dc8fe24180485bed4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 140}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_client` used but never assigned in __init__: Method `_post_payload` of class `AnthropicMessagesAdapter` reads `self._get_client`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39131, "scanner": "repobility-ast-engine", "fingerprint": "cd82fa901c9bfcfbdaad4be41b79cf9d98e1d3113a0a0faed21a7e43e78302af", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|cd82fa901c9bfcfbdaad4be41b79cf9d98e1d3113a0a0faed21a7e43e78302af"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 123}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._headers` used but never assigned in __init__: Method `_post_payload` of class `AnthropicMessagesAdapter` reads `self._headers`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39130, "scanner": "repobility-ast-engine", "fingerprint": "319c07dfa2485993d792f34c99496704cdadd402e9fc8d48e943bbdc13fbf652", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|319c07dfa2485993d792f34c99496704cdadd402e9fc8d48e943bbdc13fbf652"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 123}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._parse_response` used but never assigned in __init__: Method `_post_payload` of class `AnthropicMessagesAdapter` reads `self._parse_response`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39129, "scanner": "repobility-ast-engine", "fingerprint": "d11a80e9570682213e18fdbfe84235f6a815beeec15f7478cae14787c559c2d2", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d11a80e9570682213e18fdbfe84235f6a815beeec15f7478cae14787c559c2d2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 132}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._build_vision_content` used but never assigned in __init__: Method `_build_payload` of class `AnthropicMessagesAdapter` reads `self._build_vision_content`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39128, "scanner": "repobility-ast-engine", "fingerprint": "f3c7a6995e64ca45ff9f76e529169726631e1f7225de09bb4ebfb5653263318f", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f3c7a6995e64ca45ff9f76e529169726631e1f7225de09bb4ebfb5653263318f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.get_annotated_field` used but never assigned in __init__: Method `get_env_var_help` of class `Configs` reads `self.get_annotated_field`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 39126, "scanner": "repobility-ast-engine", "fingerprint": "56e288cb1fe59b5b334d1e5d9996bb5ecbd2aa571cc98e4a69d01e45f4f27faa", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "self-attr-never-set", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["python"], "observations_count": 25998}, "scanner": "repobility-ast-engine", "correlation_key": "fp|56e288cb1fe59b5b334d1e5d9996bb5ecbd2aa571cc98e4a69d01e45f4f27faa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/configs.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "MINED001", "level": "error", "message": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "properties": {"repobilityId": 39108, "scanner": "repobility-threat-engine", "fingerprint": "b4eff3cc0d826ba5da8c18b01a35187fa853a71f3b05bedad1953d9fc863c194", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "bare-except-pass", "owasp": null, "cwe_ids": ["CWE-755"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347744+00:00", "triaged_in_corpus": 15, "observations_count": 1550824, "ai_coder_pattern_id": 6}, "scanner": "repobility-threat-engine", "correlation_key": "fp|b4eff3cc0d826ba5da8c18b01a35187fa853a71f3b05bedad1953d9fc863c194"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/semantic_scholar_refs.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED001", "level": "error", "message": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "properties": {"repobilityId": 39107, "scanner": "repobility-threat-engine", "fingerprint": "0fcabaaaa0a6a09fd50b1d12065040a987c894eec62101520f9d734ed1e1c152", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "bare-except-pass", "owasp": null, "cwe_ids": ["CWE-755"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347744+00:00", "triaged_in_corpus": 15, "observations_count": 1550824, "ai_coder_pattern_id": 6}, "scanner": "repobility-threat-engine", "correlation_key": "fp|0fcabaaaa0a6a09fd50b1d12065040a987c894eec62101520f9d734ed1e1c152"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/parse_user_docs.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 39104, "scanner": "repobility-threat-engine", "fingerprint": "32e7503232d9d4115df4606925e3eda9ecd286884eac394c733706d892f7bc09", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "default_headers.update(headers)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|32e7503232d9d4115df4606925e3eda9ecd286884eac394c733706d892f7bc09"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-search-academic/scripts/search_utils.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 39103, "scanner": "repobility-threat-engine", "fingerprint": "03d884ad5108fdb7b2c338c7b131275996fadc448aeec8d6a512f15c6badcf5d", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "fail.update({\"doc\": t[\"doc\"], \"i\": t[\"i\"]})", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|03d884ad5108fdb7b2c338c7b131275996fadc448aeec8d6a512f15c6badcf5d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-entry/scripts/caption_images.py"}, "region": {"startLine": 181}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 39102, "scanner": "repobility-threat-engine", "fingerprint": "807b05a386fa678fd22a6f0db81484ab44720689a4d291eb2a84b566383475ea", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "img.save(buf, format=\"PNG\")", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|807b05a386fa678fd22a6f0db81484ab44720689a4d291eb2a84b566383475ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/vlm/utils.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "COMP001", "level": "error", "message": {"text": "[COMP001] High cognitive complexity: Function `generate` has cognitive complexity 30 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, else=1, except=3, if=7, nested_bonus=15, or=2, ternary=1."}, "properties": {"repobilityId": 39094, "scanner": "repobility-threat-engine", "fingerprint": "07837870e3c1e89854115b6795ce417aba5eb8b69c393b3a8905d5fcd3994154", "category": "quality", "severity": "high", "confidence": 0.95, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "AST-derived cognitive complexity score = 30 (severity threshold for high: 25+).", "evidence": {"scanner": "repobility-threat-engine", "function": "generate", "breakdown": {"if": 7, "or": 2, "elif": 1, "else": 1, "except": 3, "ternary": 1, "nested_bonus": 15}, "complexity": 30, "correlation_key": "fp|07837870e3c1e89854115b6795ce417aba5eb8b69c393b3a8905d5fcd3994154"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/nano_banana.py"}, "region": {"startLine": 72}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 39092, "scanner": "repobility-threat-engine", "fingerprint": "a171ba4a618abedee0f9d71398089145ca59a328b5a64e0484363e9bd61f7dfc", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url(i", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|a171ba4a618abedee0f9d71398089145ca59a328b5a64e0484363e9bd61f7dfc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 39091, "scanner": "repobility-threat-engine", "fingerprint": "5abdc6ed24ee353b68c5501c48435743640b12a97b909385e2b14e6da1eb48de", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url (s", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|5abdc6ed24ee353b68c5501c48435743640b12a97b909385e2b14e6da1eb48de"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/nano_banana.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 27569, "scanner": "repobility-threat-engine", "fingerprint": "2ce9d3761e620da6826238e7abff21b9a80cffa189f343af27771852fbdcd9aa", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url(s", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|2ce9d3761e620da6826238e7abff21b9a80cffa189f343af27771852fbdcd9aa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/core/client_base.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 27568, "scanner": "repobility-threat-engine", "fingerprint": "e0465a33b6da4dbf7abe154a484b83d2e9fc0ed1cefb50690487169e51faf84c", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url(g", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e0465a33b6da4dbf7abe154a484b83d2e9fc0ed1cefb50690487169e51faf84c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/configs.py"}, "region": {"startLine": 238}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 27567, "scanner": "repobility-threat-engine", "fingerprint": "18a041ebbcf3a4db9d2851bfef412504a1bbb94b9f32aa874b2c2bcb2feac7ea", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "URL (C", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|18a041ebbcf3a4db9d2851bfef412504a1bbb94b9f32aa874b2c2bcb2feac7ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_agent_runner.py"}, "region": {"startLine": 113}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 27559, "scanner": "repobility-threat-engine", "fingerprint": "2ce9d3761e620da6826238e7abff21b9a80cffa189f343af27771852fbdcd9aa", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url(s", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|2ce9d3761e620da6826238e7abff21b9a80cffa189f343af27771852fbdcd9aa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/generation/core/client_base.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 27558, "scanner": "repobility-threat-engine", "fingerprint": "e0465a33b6da4dbf7abe154a484b83d2e9fc0ed1cefb50690487169e51faf84c", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "url(g", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e0465a33b6da4dbf7abe154a484b83d2e9fc0ed1cefb50690487169e51faf84c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/configs.py"}, "region": {"startLine": 238}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 27557, "scanner": "repobility-threat-engine", "fingerprint": "18a041ebbcf3a4db9d2851bfef412504a1bbb94b9f32aa874b2c2bcb2feac7ea", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "URL (C", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|18a041ebbcf3a4db9d2851bfef412504a1bbb94b9f32aa874b2c2bcb2feac7ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_agent_runner.py"}, "region": {"startLine": 113}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 56814, "scanner": "repobility-ast-engine", "fingerprint": "8891a88a96a62623d61eb0015ba3ee72857ddf0153cddb4f448bd9d0f05ef436", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8891a88a96a62623d61eb0015ba3ee72857ddf0153cddb4f448bd9d0f05ef436"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 1052}}}]}, {"ruleId": "MINED013", "level": "error", "message": {"text": "[MINED013] Password In Url: https://user:password@host \u2014 leaks creds via logs, referrer, error messages."}, "properties": {"repobilityId": 44196, "scanner": "repobility-threat-engine", "fingerprint": "ec5fd34f16afb23c6be525e4671f62a1c995f6e01930ce254238e68fc0e5c3d0", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "password-in-url", "owasp": "A07:2021", "cwe_ids": ["CWE-200"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347928+00:00", "triaged_in_corpus": 20, "observations_count": 121646, "ai_coder_pattern_id": 37}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ec5fd34f16afb23c6be525e4671f62a1c995f6e01930ce254238e68fc0e5c3d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/utils/httpx_client.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 39153, "scanner": "repobility-ast-engine", "fingerprint": "8ca30f881fe6175527947987b34279bcb7e17bab2c00a72fa637ccfbaf34e1bb", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "fixed", "verdict": "", "isResolved": true, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8ca30f881fe6175527947987b34279bcb7e17bab2c00a72fa637ccfbaf34e1bb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-ppt-standard/scripts/run_stage.py"}, "region": {"startLine": 1009}}}]}, {"ruleId": "MINED013", "level": "error", "message": {"text": "[MINED013] Password In Url: https://user:password@host \u2014 leaks creds via logs, referrer, error messages."}, "properties": {"repobilityId": 39098, "scanner": "repobility-threat-engine", "fingerprint": "8665a578fd495810c79f72f2ac5519e5d650cf54f329407890c8060bbe93137c", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "fixed", "verdict": "confirmed", "isResolved": true, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "password-in-url", "owasp": "A07:2021", "cwe_ids": ["CWE-200"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347928+00:00", "triaged_in_corpus": 20, "observations_count": 121646, "ai_coder_pattern_id": 37}, "scanner": "repobility-threat-engine", "correlation_key": "fp|8665a578fd495810c79f72f2ac5519e5d650cf54f329407890c8060bbe93137c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/sn-image-base/scripts/sn_image_base/utils/httpx_client.py"}, "region": {"startLine": 63}}}]}]}]}