{"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": "MINED109", "name": "[MINED109] Mutable default argument in `follow_line` (list): `def follow_line(... = []/{}/set())` \u2014 Python's default val", "shortDescription": {"text": "[MINED109] Mutable default argument in `follow_line` (list): `def follow_line(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for e"}, "fullDescription": {"text": "Use None as the default and create the collection inside the function: `def follow_line(x=None): x = x or []`"}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"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": "WEB003", "name": "Public web service has no security.txt", "shortDescription": {"text": "Public web service has no security.txt"}, "fullDescription": {"text": "Add /.well-known/security.txt with Contact, Expires, Canonical, Preferred-Languages, and Policy fields. Keep the contact endpoint monitored."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "WEB015", "name": "Public web app has no Content Security Policy", "shortDescription": {"text": "Public web app has no Content Security Policy"}, "fullDescription": {"text": "Add a Content-Security-Policy header through the web framework or hosting config. For static apps, add a CSP meta tag that restricts default-src, script-src, connect-src, img-src, and frame-ancestors."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "AGT007", "name": "localStorage write failures are swallowed silently", "shortDescription": {"text": "localStorage write failures are swallowed silently"}, "fullDescription": {"text": "Handle QuotaExceededError explicitly, show a toast or error state, and guide the user to export/clear old local data. Log non-quota failures for diagnostics."}, "properties": {"scanner": "repobility-agent-runtime", "category": "quality", "severity": "medium", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "AIC004", "name": "Suspicious implementation file appears unreferenced", "shortDescription": {"text": "Suspicious implementation file appears unreferenced"}, "fullDescription": {"text": "Confirm whether this file is reachable. If not, delete it; if yes, wire it through explicit imports, routes, or entry points and add a test that proves the path executes."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "SEC136", "name": "[SEC136] AI-typical over-broad exception handler swallowing all errors: Catch-all exception block that silently returns ", "shortDescription": {"text": "[SEC136] AI-typical over-broad exception handler swallowing all errors: Catch-all exception block that silently returns success or no-ops. AI agents reach for this pattern when a flaky test or an unfamiliar API throws \u2014 wrap, swallow, retur"}, "fullDescription": {"text": "Catch the specific exception type, log at error level with full exception info, and return a failure-shaped result. If the operation is genuinely best-effort, log at warning and document why in a comment so the next reader (or scanner) knows."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC012", "name": "[SEC012] ZipSlip \u2014 Archive Path Traversal: Archive extraction without path validation allows writing files outside the t", "shortDescription": {"text": "[SEC012] ZipSlip \u2014 Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory."}, "fullDescription": {"text": "Validate extracted paths with os.path.realpath() and ensure they stay within the target directory."}, "properties": {"scanner": "repobility-threat-engine", "category": "path_traversal", "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": "SEC003", "name": "[SEC003] Hardcoded Secret: Hardcoded secret key found in source code.", "shortDescription": {"text": "[SEC003] Hardcoded Secret: Hardcoded secret key found in source code."}, "fullDescription": {"text": "Never commit secrets. Use .env files with .gitignore."}, "properties": {"scanner": "repobility-threat-engine", "category": "credential_exposure", "severity": "medium", "confidence": 0.3, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `parse_zip` has cognitive complexity 22 (SonarSource scale). Cognitive com", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `parse_zip` 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"}, "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": "ERR002", "name": "[ERR002] Empty Catch Block: Empty catch blocks hide errors.", "shortDescription": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "fullDescription": {"text": "Log the error or rethrow it. Use console.error() at minimum."}, "properties": {"scanner": "repobility-threat-engine", "category": "error_handling", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_CI", "name": "No CI/CD configuration found", "shortDescription": {"text": "No CI/CD configuration found"}, "fullDescription": {"text": "Add a CI/CD pipeline: create .github/workflows/ci.yml for GitHub Actions with steps to lint, test, and build on every push and pull request."}, "properties": {"scanner": "repobility-core", "category": "practices", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "WEB011", "name": "Public web app has no humans.txt", "shortDescription": {"text": "Public web app has no humans.txt"}, "fullDescription": {"text": "Add humans.txt with team ownership, contact URL, key documentation links, and the last-updated date."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.5, "cwe": "", "owasp": ""}}, {"id": "WEB008", "name": "Public docs site has no llms.txt", "shortDescription": {"text": "Public docs site has no llms.txt"}, "fullDescription": {"text": "Add llms.txt with the product summary, canonical docs, API endpoints, security guidance, and preferred CLI workflow for AI agents."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.64, "cwe": "", "owasp": ""}}, {"id": "WEB002", "name": "Public web app has no sitemap", "shortDescription": {"text": "Public web app has no sitemap"}, "fullDescription": {"text": "Add sitemap.xml, a sitemap index, or a framework-native sitemap route and reference it from robots.txt."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "WEB001", "name": "Public web app has no robots.txt", "shortDescription": {"text": "Public web app has no robots.txt"}, "fullDescription": {"text": "Add robots.txt at the web root or a framework-native robots route. Include an explicit Sitemap directive and disallow only private paths."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.74, "cwe": "", "owasp": ""}}, {"id": "AIC005", "name": "Duplicate top-level symbol appears in a patch-style file", "shortDescription": {"text": "Duplicate top-level symbol appears in a patch-style file"}, "fullDescription": {"text": "Keep one authoritative implementation, update imports to point at it, and remove or rename the duplicate symbol."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.64, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "AIC002", "name": "Source file name looks like an AI patch artifact", "shortDescription": {"text": "Source file name looks like an AI patch artifact"}, "fullDescription": {"text": "Rename it to the domain concept it implements or merge it into the existing module it was meant to change."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_LICENSE", "name": "No LICENSE file", "shortDescription": {"text": "No LICENSE file"}, "fullDescription": {"text": "Add a LICENSE file to your repository. Use choosealicense.com to pick the right license (MIT for permissive, Apache 2.0 for patent protection, GPL for copyleft)."}, "properties": {"scanner": "repobility-core", "category": "documentation", "severity": "low", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "MINED047", "name": "[MINED047] Emoji In Source: Emoji \u2705 \u274c \ud83d\ude80 in code/comments \u2014 common AI output unless explicitly requested.", "shortDescription": {"text": "[MINED047] Emoji In Source: Emoji \u2705 \u274c \ud83d\ude80 in code/comments \u2014 common AI output unless explicitly requested."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED063", "name": "[MINED063] Toctou Os Path Exists: if os.path.exists(p): open(p) \u2014 file can be replaced/deleted between check and use.", "shortDescription": {"text": "[MINED063] Toctou Os Path Exists: if os.path.exists(p): open(p) \u2014 file can be replaced/deleted between check and use."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-367 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function (and 2 more): Same pattern found in 2 additional files. Review if needed.", "shortDescription": {"text": "[MINED050] Stub Only Function (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed.", "shortDescription": {"text": "[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "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": "SEC020", "name": "[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequen", "shortDescription": {"text": "[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequent AI-assisted coding failure: the helper exposes the exact value needed for troubleshooting."}, "fullDescription": {"text": "Log only redacted, hashed, or last-four-style metadata. Rotate any secret that may have reached logs."}, "properties": {"scanner": "repobility-threat-engine", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "cwe": "", "owasp": ""}}, {"id": "MINED073", "name": "[MINED073] Redos Greedy Quantifier: Pattern with nested quantifiers like (a+)+ applied to network/user data \u2014 denial of ", "shortDescription": {"text": "[MINED073] Redos Greedy Quantifier: Pattern with nested quantifiers like (a+)+ applied to network/user data \u2014 denial of service."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1333,CWE-400 / A06:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 5 more): Same pattern found in 5 additi", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 5 more): Same pattern found in 5 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": "MINED067", "name": "[MINED067] Python Requests No Timeout (and 87 more): Same pattern found in 87 additional files. Review if needed.", "shortDescription": {"text": "[MINED067] Python Requests No Timeout (and 87 more): Same pattern found in 87 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-400 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC078", "name": "[SEC078] Python: requests without timeout (and 87 more): Same pattern found in 87 additional files. Review if needed.", "shortDescription": {"text": "[SEC078] Python: requests without timeout (and 87 more): Same pattern found in 87 additional files. Review if needed."}, "fullDescription": {"text": "Add `timeout=10` (or appropriate value) to every requests call."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED077", "name": "[MINED077] Python Open No Context (and 2 more): Same pattern found in 2 additional files. Review if needed.", "shortDescription": {"text": "[MINED077] Python Open No Context (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-772 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 5 more): Same pattern found in 5 addit", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 5 more): Same pattern found in 5 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": "MINED134", "name": "[MINED134] Binary file `scripts/__pycache__/mosmix_kaart_temp.cpython-313.pyc` committed in source repo: `scripts/__pyca", "shortDescription": {"text": "[MINED134] Binary file `scripts/__pycache__/mosmix_kaart_temp.cpython-313.pyc` committed in source repo: `scripts/__pycache__/mosmix_kaart_temp.cpython-313.pyc` is a .pyc binary (14,018 bytes) committed to a repo that otherwise has 214 sour"}, "fullDescription": {"text": "Audit the binary's provenance. If it's vendored library code, document it in a VENDORED.md. If it's a build artifact, add the extension to .gitignore and rebuild from source."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "[MINED108] `self.lon_max` used but never assigned in __init__: Method `_on_message` of class `BlitzortungClient` reads `", "shortDescription": {"text": "[MINED108] `self.lon_max` used but never assigned in __init__: Method `_on_message` of class `BlitzortungClient` reads `self.lon_max`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the "}, "fullDescription": {"text": "Initialize `self.lon_max = <default>` in __init__, or add a class-level default."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC080", "name": "[SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-", "shortDescription": {"text": "[SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-2007-4559, fixed via PEP 706 in 3.12). Ported from bandit B202 (Apache-2.0)."}, "fullDescription": {"text": "Add `filter='data'` (Python \u2265 3.12) or manually validate member paths against `os.path.abspath`."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC103", "name": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inje", "shortDescription": {"text": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inject `*)(uid=*` style payloads to bypass auth or enumerate accounts."}, "fullDescription": {"text": "Escape with javax.naming.ldap.Rdn.escapeValue or equivalent. For python-ldap, use ldap.filter.escape_filter_chars. Better: use parameterized search APIs (Spring LdapTemplate filter encoders)."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC100", "name": "[SEC100] CORS permissive Access-Control-Allow-Origin: *: Permissive CORS policy (`*` origin) allows any website to make ", "shortDescription": {"text": "[SEC100] CORS permissive Access-Control-Allow-Origin: *: Permissive CORS policy (`*` origin) allows any website to make authenticated cross-origin requests. Especially dangerous when combined with `Access-Control-Allow-Credentials: true`."}, "fullDescription": {"text": "Allowlist specific origins. For dynamic per-request validation, validate against a known list and echo the origin back. Never combine wildcard origin with credentials."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "[MINED107] Missing import: `warnings` used but not imported: The file uses `warnings.something(...)` but never imports `", "shortDescription": {"text": "[MINED107] Missing import: `warnings` used but not imported: The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes."}, "fullDescription": {"text": "Add `import warnings` at the top of the file."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "scanner-506be2b95088f5d3", "name": "git log failed \u2014 history analysis incomplete", "shortDescription": {"text": "git log failed \u2014 history analysis incomplete"}, "fullDescription": {"text": "fatal: not a git repository (or any parent up to mount point /data)\nStopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/2480"}, "properties": {"repository": "aldused/weerkaarten", "repoUrl": "https://github.com/aldused/weerkaarten", "branch": "main"}, "results": [{"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `follow_line` (list): `def follow_line(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too."}, "properties": {"repobilityId": 210791, "scanner": "repobility-ast-engine", "fingerprint": "4a858b4d510cf2e59d524c2a4b516cf778789e986ae99f70887c3d681b7baae9", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "mutable-default-arg", "owasp": null, "cwe_ids": ["CWE-1023"], "languages": ["python"], "observations_count": 64867}, "scanner": "repobility-ast-engine", "correlation_key": "fp|4a858b4d510cf2e59d524c2a4b516cf778789e986ae99f70887c3d681b7baae9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fronts_berry.py"}, "region": {"startLine": 104}}}]}, {"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": 210789, "scanner": "repobility-ast-engine", "fingerprint": "47710c998993c8f7f962d3d3d2234602ac5b0d1396db662ef9ad931fe8692023", "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|47710c998993c8f7f962d3d3d2234602ac5b0d1396db662ef9ad931fe8692023"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/knmi_records.py"}, "region": {"startLine": 1007}}}]}, {"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": 210788, "scanner": "repobility-ast-engine", "fingerprint": "f7d9f2aa2d94b92fd7e1c5acc0d3623fed4dab41021dd237dfd731f70fdbed95", "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|f7d9f2aa2d94b92fd7e1c5acc0d3623fed4dab41021dd237dfd731f70fdbed95"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/knmi_records.py"}, "region": {"startLine": 817}}}]}, {"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": 210787, "scanner": "repobility-ast-engine", "fingerprint": "25ccba7b944af52750f357cfdb49ac8540d5480a20ec23f0b366265648b4a085", "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|25ccba7b944af52750f357cfdb49ac8540d5480a20ec23f0b366265648b4a085"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/knmi_records.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": 210786, "scanner": "repobility-ast-engine", "fingerprint": "1858d0eed92bf3d5eca825f2de45e0d8b0aa9500b641a6522c1c7fc9c5ed5507", "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|1858d0eed92bf3d5eca825f2de45e0d8b0aa9500b641a6522c1c7fc9c5ed5507"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_wind.py"}, "region": {"startLine": 87}}}]}, {"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": 210785, "scanner": "repobility-ast-engine", "fingerprint": "60cb15a2bdc21f563e08552efe1640682d0773bee7bc5f84f83c330e4c4c4eb7", "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|60cb15a2bdc21f563e08552efe1640682d0773bee7bc5f84f83c330e4c4c4eb7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_be_wind_nacht.py"}, "region": {"startLine": 106}}}]}, {"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": 210784, "scanner": "repobility-ast-engine", "fingerprint": "6c31a6c89cafa58bb883225c8f80af4ee9205f934dd305842dca71447c94dce0", "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|6c31a6c89cafa58bb883225c8f80af4ee9205f934dd305842dca71447c94dce0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/inspect_grib.py"}, "region": {"startLine": 49}}}]}, {"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": 210783, "scanner": "repobility-ast-engine", "fingerprint": "255166695ac8743afac0a97f1de60e94dcddb37c5934f38e2e5d743bbd6b280f", "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|255166695ac8743afac0a97f1de60e94dcddb37c5934f38e2e5d743bbd6b280f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/inspect_grib.py"}, "region": {"startLine": 45}}}]}, {"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": 210782, "scanner": "repobility-ast-engine", "fingerprint": "9e953fabedd8607c3ce0cebe2d8d0b450ab3cb3656ed5fb7ba851b85ee73304c", "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|9e953fabedd8607c3ce0cebe2d8d0b450ab3cb3656ed5fb7ba851b85ee73304c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/inspect_grib.py"}, "region": {"startLine": 41}}}]}, {"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": 210781, "scanner": "repobility-ast-engine", "fingerprint": "fa4e0ac865b0bc398fd72489faa6f3379784332892146d55884b3f6d0cfe9266", "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|fa4e0ac865b0bc398fd72489faa6f3379784332892146d55884b3f6d0cfe9266"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_be_zon.py"}, "region": {"startLine": 66}}}]}, {"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": 210780, "scanner": "repobility-ast-engine", "fingerprint": "70580f792b0b99746cec532b6cefd365d1aa69fe602dc7b7b44d40e5f62156e9", "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|70580f792b0b99746cec532b6cefd365d1aa69fe602dc7b7b44d40e5f62156e9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_t5cm.py"}, "region": {"startLine": 103}}}]}, {"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": 210775, "scanner": "repobility-ast-engine", "fingerprint": "1ad85cb36f8e00c4ef85e252527baf1073b6add05d959b5fc57514db9367f96b", "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|1ad85cb36f8e00c4ef85e252527baf1073b6add05d959b5fc57514db9367f96b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shell/jan_visser_ens_cache.py"}, "region": {"startLine": 202}}}]}, {"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": 210774, "scanner": "repobility-ast-engine", "fingerprint": "5b638e2839a08efe726fef8a9aa289f3ebefc9fa98aab4e6e2ef38e316605580", "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|5b638e2839a08efe726fef8a9aa289f3ebefc9fa98aab4e6e2ef38e316605580"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shell/jan_visser_ens_cache.py"}, "region": {"startLine": 189}}}]}, {"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": 210773, "scanner": "repobility-ast-engine", "fingerprint": "e9ee64b4a476ba7bdc7295d756c3d8ab6d2cfb3d4570a36048598b65110edc0e", "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|e9ee64b4a476ba7bdc7295d756c3d8ab6d2cfb3d4570a36048598b65110edc0e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "haal_golfdata.py"}, "region": {"startLine": 502}}}]}, {"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": 210772, "scanner": "repobility-ast-engine", "fingerprint": "f4740086c28bf3d0e3472b5ebf936aa20689fcac0a6f07909d1cf130f3c4d446", "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|f4740086c28bf3d0e3472b5ebf936aa20689fcac0a6f07909d1cf130f3c4d446"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "haal_golfdata.py"}, "region": {"startLine": 429}}}]}, {"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": 210771, "scanner": "repobility-ast-engine", "fingerprint": "c58bc27186fb2f24d44fd726b24ced4a0c02e7a13dc202329fced23e0187d95c", "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|c58bc27186fb2f24d44fd726b24ced4a0c02e7a13dc202329fced23e0187d95c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "feestdagen_ophalen.py"}, "region": {"startLine": 185}}}]}, {"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": 210770, "scanner": "repobility-ast-engine", "fingerprint": "5259a5bc08e1ac27a8fd212816216c731566140babdad8384f3de1d401cdede5", "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|5259a5bc08e1ac27a8fd212816216c731566140babdad8384f3de1d401cdede5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "feestdagen_ophalen.py"}, "region": {"startLine": 151}}}]}, {"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": 210769, "scanner": "repobility-ast-engine", "fingerprint": "8b1a6113968132d1b9f71d703ecf461db84ac65ec9197f2e61b41de25eb37969", "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|8b1a6113968132d1b9f71d703ecf461db84ac65ec9197f2e61b41de25eb37969"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "haal_maanddata.py"}, "region": {"startLine": 80}}}]}, {"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": 210768, "scanner": "repobility-ast-engine", "fingerprint": "ba54d3a7dc02a5a7996a89aaf2387c5aaf12feb4f45dec72e64f21111860f0cc", "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|ba54d3a7dc02a5a7996a89aaf2387c5aaf12feb4f45dec72e64f21111860f0cc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "haal_maanddata.py"}, "region": {"startLine": 153}}}]}, {"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": 210767, "scanner": "repobility-ast-engine", "fingerprint": "e01d1bd2ae9324b16a21a4df364f749fc5c84d8bcd6420393699177f75e29d6d", "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|e01d1bd2ae9324b16a21a4df364f749fc5c84d8bcd6420393699177f75e29d6d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp.py"}, "region": {"startLine": 108}}}]}, {"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": 210766, "scanner": "repobility-ast-engine", "fingerprint": "7208d3188d13cdfc7daa6077e57fcdb94eb84e4350b24c043d8176994ac902d9", "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|7208d3188d13cdfc7daa6077e57fcdb94eb84e4350b24c043d8176994ac902d9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp_dag.py"}, "region": {"startLine": 101}}}]}, {"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": 210765, "scanner": "repobility-ast-engine", "fingerprint": "7807a933eb19a796af7595e737dccf0c9aaac4772b01584082b3bdffe60ec977", "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|7807a933eb19a796af7595e737dccf0c9aaac4772b01584082b3bdffe60ec977"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_multimodel_utrecht.py"}, "region": {"startLine": 120}}}]}, {"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": 210764, "scanner": "repobility-ast-engine", "fingerprint": "6d66bef33f07842f668de21eaa95f049a4e92c36e4fcb1dfb0f3cf766ca7bbe6", "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|6d66bef33f07842f668de21eaa95f049a4e92c36e4fcb1dfb0f3cf766ca7bbe6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp_nacht.py"}, "region": {"startLine": 101}}}]}, {"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": 210763, "scanner": "repobility-ast-engine", "fingerprint": "f5cffba7e69a35df0581f663fa02065194c8d501185f49f53eb211ac34fef2d4", "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|f5cffba7e69a35df0581f663fa02065194c8d501185f49f53eb211ac34fef2d4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "maak_pluim.py"}, "region": {"startLine": 77}}}]}, {"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": 210762, "scanner": "repobility-ast-engine", "fingerprint": "5a2318f55750f7bf3b4070d7241ad0994d74fcad819e19807f1eecee9358f481", "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|5a2318f55750f7bf3b4070d7241ad0994d74fcad819e19807f1eecee9358f481"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_wind_nacht.py"}, "region": {"startLine": 87}}}]}, {"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": 210761, "scanner": "repobility-ast-engine", "fingerprint": "f037e85d37fd6623661fca163576033b973956fe3c9276febbb38ec86f94f133", "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|f037e85d37fd6623661fca163576033b973956fe3c9276febbb38ec86f94f133"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "marathon_ophalen.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 210760, "scanner": "repobility-web-presence", "fingerprint": "5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app/API but no security.txt file or route was discovered.", "evidence": {"rule_id": "WEB003", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9116", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".well-known/security.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB015", "level": "warning", "message": {"text": "Public web app has no Content Security Policy"}, "properties": {"repobilityId": 210759, "scanner": "repobility-web-presence", "fingerprint": "7eb70cae3ff63d8ed7c31706185d32b37655333b40b58ca826d740b08fb1ad63", "category": "quality", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no CSP header, framework header config, Helmet policy, or CSP meta tag was discovered.", "evidence": {"rule_id": "WEB015", "scanner": "repobility-web-presence", "references": ["https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|7eb70cae3ff63d8ed7c31706185d32b37655333b40b58ca826d740b08fb1ad63"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 1}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210754, "scanner": "repobility-agent-runtime", "fingerprint": "8d25eab050fa5561fc9415df15a6d5f9b9d517e4d0e85ee6da4b209eee5567bb", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|8d25eab050fa5561fc9415df15a6d5f9b9d517e4d0e85ee6da4b209eee5567bb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/stefan.html"}, "region": {"startLine": 140}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210753, "scanner": "repobility-agent-runtime", "fingerprint": "35c1755db9ad7c068ddfc78a4e6e5a6ebea29830e4df16ad11fe404ca9ed13db", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|35c1755db9ad7c068ddfc78a4e6e5a6ebea29830e4df16ad11fe404ca9ed13db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/satelliet.html"}, "region": {"startLine": 848}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210752, "scanner": "repobility-agent-runtime", "fingerprint": "bbf7927698c1d6639ae3b06922a529a118063714fd18d0474c285bc20cf71c9a", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|bbf7927698c1d6639ae3b06922a529a118063714fd18d0474c285bc20cf71c9a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/radar.html"}, "region": {"startLine": 1437}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210751, "scanner": "repobility-agent-runtime", "fingerprint": "ef8bea7d7dae532e411a227f71d1c29417d7a65a0dcc193b58d3bf9b65502b15", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|ef8bea7d7dae532e411a227f71d1c29417d7a65a0dcc193b58d3bf9b65502b15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/nowcast.html"}, "region": {"startLine": 799}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210750, "scanner": "repobility-agent-runtime", "fingerprint": "ecd0eee3e102f181f3ad22c78bdd9e9f8969b1bcf1a6261992b920e570218be0", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|ecd0eee3e102f181f3ad22c78bdd9e9f8969b1bcf1a6261992b920e570218be0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/janvisser.html"}, "region": {"startLine": 202}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210749, "scanner": "repobility-agent-runtime", "fingerprint": "383c99856b491073645b58cfcfa93ab48b74b70982f9080a06a8eeb56325983f", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|383c99856b491073645b58cfcfa93ab48b74b70982f9080a06a8eeb56325983f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/index_be.html"}, "region": {"startLine": 577}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210748, "scanner": "repobility-agent-runtime", "fingerprint": "014106e5c6366c6fc46c4e9738741208e08e9fc7f4ce53a7ce0274465a073a04", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|014106e5c6366c6fc46c4e9738741208e08e9fc7f4ce53a7ce0274465a073a04"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/index.html"}, "region": {"startLine": 929}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210747, "scanner": "repobility-agent-runtime", "fingerprint": "4e22faa7f8032f14f9104b44f4885db24432d78dee39c94993c737be6aedbdaa", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|4e22faa7f8032f14f9104b44f4885db24432d78dee39c94993c737be6aedbdaa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/harmonie_canvas.html"}, "region": {"startLine": 3526}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210746, "scanner": "repobility-agent-runtime", "fingerprint": "fcb04e0557cf6dc04b060d4b79d52254902ecdd4b916257f8e62b5e69d475b5a", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|fcb04e0557cf6dc04b060d4b79d52254902ecdd4b916257f8e62b5e69d475b5a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/demo_harmonie_cumulus_v3.html"}, "region": {"startLine": 3046}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210745, "scanner": "repobility-agent-runtime", "fingerprint": "2133b85d19d0835b4c1737d9f68a49ca60983a9dde0a23fdb26533fa4f9af68c", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|2133b85d19d0835b4c1737d9f68a49ca60983a9dde0a23fdb26533fa4f9af68c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/demo_ecmwf_index.html"}, "region": {"startLine": 868}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210744, "scanner": "repobility-agent-runtime", "fingerprint": "bc2bfdbe3b0ed6e1622140610202f9b1275ea82e8290b39dc495588d29db2fda", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|bc2bfdbe3b0ed6e1622140610202f9b1275ea82e8290b39dc495588d29db2fda"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/bliksem.html"}, "region": {"startLine": 697}}}]}, {"ruleId": "AGT007", "level": "warning", "message": {"text": "localStorage write failures are swallowed silently"}, "properties": {"repobilityId": 210743, "scanner": "repobility-agent-runtime", "fingerprint": "07bd3d1f3fc7e9e5623f9c7b338510951b4cc7f1fc9fd5d912e0b38a03ad9c85", "category": "quality", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File writes to localStorage and has an empty or ignore-only catch block without QuotaExceededError handling.", "evidence": {"rule_id": "AGT007", "scanner": "repobility-agent-runtime", "references": ["https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API"], "correlation_key": "fp|07bd3d1f3fc7e9e5623f9c7b338510951b4cc7f1fc9fd5d912e0b38a03ad9c85"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/_test_harmonie_canvas.html"}, "region": {"startLine": 2729}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210710, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9e998194c87ab3bd94ef008e35bb8cf41587f1c15db3b58bcad19131aefd3c6c", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "update", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|9e998194c87ab3bd94ef008e35bb8cf41587f1c15db3b58bcad19131aefd3c6c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ukmo_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210709, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b0d5840a8c89b9a93c2489459de9b1508cfb55b9173966a1d939689c09da7f98", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "temp", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|b0d5840a8c89b9a93c2489459de9b1508cfb55b9173966a1d939689c09da7f98"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210708, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f25712126d1cbf46f5fed4203706295288c515154fc43a2e8d3ae5147688b2dc", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "fixed", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|f25712126d1cbf46f5fed4203706295288c515154fc43a2e8d3ae5147688b2dc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_fixed.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210707, "scanner": "repobility-ai-code-hygiene", "fingerprint": "07ef4d990c2e3fb93f556313380850525d25de581e7f372b44ebe14c2591e19e", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "temp", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|07ef4d990c2e3fb93f556313380850525d25de581e7f372b44ebe14c2591e19e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_be_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210706, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7e58f49cfef7d97d82b23b5d57a44c9325e6e4edad6afe3035bb0c62d9651772", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "update", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|7e58f49cfef7d97d82b23b5d57a44c9325e6e4edad6afe3035bb0c62d9651772"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/icon_eu_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210705, "scanner": "repobility-ai-code-hygiene", "fingerprint": "acd5f1edcec00fefea3a1f060796211936cd9ce4284d53d885d727411044b7c1", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "update", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|acd5f1edcec00fefea3a1f060796211936cd9ce4284d53d885d727411044b7c1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ecmwf_openmeteo_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210704, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0774811115b50ff3764ecf01ba6ba2bb5e9ac7dc36d6896630b0d57fd39a28c7", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "update", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|0774811115b50ff3764ecf01ba6ba2bb5e9ac7dc36d6896630b0d57fd39a28c7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/arome_fr_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210703, "scanner": "repobility-ai-code-hygiene", "fingerprint": "87aeebcceaba74f952ec0e983bd682f75c5efc47efb36c765c2ccb23651ba008", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "temp", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|87aeebcceaba74f952ec0e983bd682f75c5efc47efb36c765c2ccb23651ba008"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC004", "level": "warning", "message": {"text": "Suspicious implementation file appears unreferenced"}, "properties": {"repobilityId": 210702, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f726c4cbae358fd9e4629ec24c990e462c0e28cda4e6afd87e9f1890cf357c60", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Patch-style source file has no detected inbound reference from other repository files.", "evidence": {"suffix": "temp", "rule_id": "AIC004", "scanner": "repobility-ai-code-hygiene", "references": ["https://knip.dev/", "https://github.com/jendrikseipp/vulture"], "correlation_key": "fp|f726c4cbae358fd9e4629ec24c990e462c0e28cda4e6afd87e9f1890cf357c60"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "knmi_jaarwisseling_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "SEC136", "level": "warning", "message": {"text": "[SEC136] AI-typical over-broad exception handler swallowing all errors: Catch-all exception block that silently returns success or no-ops. AI agents reach for this pattern when a flaky test or an unfamiliar API throws \u2014 wrap, swallow, return success. Real bugs are masked, observability is destroyed, and callers think the operation worked. CWE-396 (improperly-generalized exception). Distinct from intentional fallback because there's no log line and the success value is fabricated."}, "properties": {"repobilityId": 210691, "scanner": "repobility-threat-engine", "fingerprint": "ea57d109667e5df37c8eb7832158b71591266491ae9193e7d9c7f6dac720b205", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except:\n        return None", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC136", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ea57d109667e5df37c8eb7832158b71591266491ae9193e7d9c7f6dac720b205"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_europa_obs.py"}, "region": {"startLine": 155}}}]}, {"ruleId": "SEC012", "level": "warning", "message": {"text": "[SEC012] ZipSlip \u2014 Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory."}, "properties": {"repobilityId": 210689, "scanner": "repobility-threat-engine", "fingerprint": "0d94e9b93ba01a03aceec08d24e03ba9e3610dff28a750a4d94a3ded59de37b3", "category": "path_traversal", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".extractall(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC012", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|path_traversal|scripts/inspect_grib.py|27|sec012"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/inspect_grib.py"}, "region": {"startLine": 27}}}]}, {"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": 210687, "scanner": "repobility-threat-engine", "fingerprint": "6eadc535cf773e3c468aa58eb9a62b621919acd3caf2671723f08495ec758e1d", "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|6eadc535cf773e3c468aa58eb9a62b621919acd3caf2671723f08495ec758e1d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_verificatie_multirun.py"}, "region": {"startLine": 47}}}]}, {"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": 210686, "scanner": "repobility-threat-engine", "fingerprint": "a8e53fc7b1f695a13febacccd1f20781767112d0930800f4be5ec7e4848c36f9", "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:\n        pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|a8e53fc7b1f695a13febacccd1f20781767112d0930800f4be5ec7e4848c36f9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_pluim_lijnen.py"}, "region": {"startLine": 154}}}]}, {"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": 210685, "scanner": "repobility-threat-engine", "fingerprint": "a6d755de7b669addea2e67ca131fecf7d61506842b09fa0a0b38fcb75e99efa4", "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|a6d755de7b669addea2e67ca131fecf7d61506842b09fa0a0b38fcb75e99efa4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_satelliet.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "SEC003", "level": "warning", "message": {"text": "[SEC003] Hardcoded Secret: Hardcoded secret key found in source code."}, "properties": {"repobilityId": 210672, "scanner": "repobility-threat-engine", "fingerprint": "d63117354eef3d4ec7b5b5a825f98e1f22eef31534cba5add2b6576d086fc05f", "category": "credential_exposure", "severity": "medium", "confidence": 0.3, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Low entropy value (3.8 bits) \u2014 may be placeholder or common string", "evidence": {"match": "SECRET_KEY = \"0f33229e2e03fe7bc7f9fdf7f9fa0acd5336c40718c6e25fe0b6a631ade8ac97\"", "reason": "Low entropy value (3.8 bits) \u2014 may be placeholder or common string", "rule_id": "SEC003", "scanner": "repobility-threat-engine", "confidence": 0.3, "correlation_key": "secret|token|7|secret_key hex"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_dagdata_json.py"}, "region": {"startLine": 78}}}]}, {"ruleId": "SEC003", "level": "warning", "message": {"text": "[SEC003] Hardcoded Secret: Hardcoded secret key found in source code."}, "properties": {"repobilityId": 210671, "scanner": "repobility-threat-engine", "fingerprint": "4daeab21951eb3c7222dc0c0276d2f2e3d32d1668d7ee236b273e0cc0ae96365", "category": "credential_exposure", "severity": "medium", "confidence": 0.3, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Low entropy value (3.8 bits) \u2014 may be placeholder or common string", "evidence": {"match": "SECRET_KEY = \"0f33229e2e03fe7bc7f9fdf7f9fa0acd5336c40718c6e25fe0b6a631ade8ac97\"", "reason": "Low entropy value (3.8 bits) \u2014 may be placeholder or common string", "rule_id": "SEC003", "scanner": "repobility-threat-engine", "confidence": 0.3, "correlation_key": "secret|scripts/extend_dagdata.py|2|secret_key hex"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extend_dagdata.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "SEC003", "level": "warning", "message": {"text": "[SEC003] Hardcoded Secret: Hardcoded secret key found in source code."}, "properties": {"repobilityId": 210670, "scanner": "repobility-threat-engine", "fingerprint": "77cb76f91566778b3c1d84bfc3235b33dd6f31d9d51452e1c78897c2147d2aaa", "category": "credential_exposure", "severity": "medium", "confidence": 0.3, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Low entropy value (3.8 bits) \u2014 may be placeholder or common string", "evidence": {"match": "SECRET_KEY = \"0f33229e2e03fe7bc7f9fdf7f9fa0acd5336c40718c6e25fe0b6a631ade8ac97\"", "reason": "Low entropy value (3.8 bits) \u2014 may be placeholder or common string", "rule_id": "SEC003", "scanner": "repobility-threat-engine", "confidence": 0.3, "correlation_key": "secret|scripts/ecmwf_update.sh|2|secret_key hex"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ecmwf_update.sh"}, "region": {"startLine": 21}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `parse_zip` 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=7, except=1, for=1, if=6, nested_bonus=7."}, "properties": {"repobilityId": 210665, "scanner": "repobility-threat-engine", "fingerprint": "d4b61088d1a91bc09dda1d3c0bcf4b3bf56c238a957ce261002f9285ab79dc8c", "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": "parse_zip", "breakdown": {"if": 6, "for": 1, "except": 1, "continue": 7, "nested_bonus": 7}, "complexity": 22, "correlation_key": "fp|d4b61088d1a91bc09dda1d3c0bcf4b3bf56c238a957ce261002f9285ab79dc8c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "haal_maanddata.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "ERR002", "level": "warning", "message": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "properties": {"repobilityId": 210646, "scanner": "repobility-threat-engine", "fingerprint": "41f3ca17a1aa89eec735c1bffca7b200515e1bb838c1f354fecabc2b56844213", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "catch(e){}", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR002", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|41f3ca17a1aa89eec735c1bffca7b200515e1bb838c1f354fecabc2b56844213"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "weerbewaking_sync.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "ERR002", "level": "warning", "message": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "properties": {"repobilityId": 210645, "scanner": "repobility-threat-engine", "fingerprint": "77ac3fb3d60dedca983c4cab5a5648a2ed315a36872e56c729ba8a2fa522996b", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "catch(e){}", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR002", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|77ac3fb3d60dedca983c4cab5a5648a2ed315a36872e56c729ba8a2fa522996b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/weerbewaking_sync.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "CORE_NO_CI", "level": "warning", "message": {"text": "No CI/CD configuration found"}, "properties": {"repobilityId": 210640, "scanner": "repobility-core", "fingerprint": "ca5da3551af97272c4f099fc472740148135a15816b81b90bd862e8f91ec66ce", "category": "practices", "severity": "medium", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_CI", "scanner": "repobility-core", "correlation_key": "repo|practices|core_no_ci"}}}, {"ruleId": "WEB011", "level": "note", "message": {"text": "Public web app has no humans.txt"}, "properties": {"repobilityId": 210758, "scanner": "repobility-web-presence", "fingerprint": "bdd551fbe1ab6405480e0d5755632562c2096cb9e9a6a071ef60e4c27a6873f1", "category": "quality", "severity": "low", "confidence": 0.5, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Repository looks like a public web app but no humans.txt file or route was discovered.", "evidence": {"rule_id": "WEB011", "scanner": "repobility-web-presence", "references": ["https://github.com/Lissy93/web-check"], "correlation_key": "fp|bdd551fbe1ab6405480e0d5755632562c2096cb9e9a6a071ef60e4c27a6873f1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "humans.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB008", "level": "note", "message": {"text": "Public docs site has no llms.txt"}, "properties": {"repobilityId": 210757, "scanner": "repobility-web-presence", "fingerprint": "cdce8ed8706710d39c3e7272dad572dd639cff74fd3d2ac62d8f6f522b891d76", "category": "quality", "severity": "low", "confidence": 0.64, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Repository looks public and documentation-heavy but no llms.txt file or route was discovered.", "evidence": {"rule_id": "WEB008", "scanner": "repobility-web-presence", "references": ["https://llmstxt.org/"], "correlation_key": "fp|cdce8ed8706710d39c3e7272dad572dd639cff74fd3d2ac62d8f6f522b891d76"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llms.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB002", "level": "note", "message": {"text": "Public web app has no sitemap"}, "properties": {"repobilityId": 210756, "scanner": "repobility-web-presence", "fingerprint": "fccbe72d13ca3ba9197ec37b0daa0802fb6d5ebff54b3eb9f09b59b0f8d0acdf", "category": "quality", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no sitemap file or route was discovered.", "evidence": {"rule_id": "WEB002", "scanner": "repobility-web-presence", "references": ["https://www.sitemaps.org/protocol.html", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|fccbe72d13ca3ba9197ec37b0daa0802fb6d5ebff54b3eb9f09b59b0f8d0acdf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sitemap.xml"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB001", "level": "note", "message": {"text": "Public web app has no robots.txt"}, "properties": {"repobilityId": 210755, "scanner": "repobility-web-presence", "fingerprint": "cae3f2223945958e14d8eb90f7965fa26b47011cc5be29c2855a4054937e29c4", "category": "quality", "severity": "low", "confidence": 0.74, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no robots.txt file or route was discovered.", "evidence": {"rule_id": "WEB001", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9309", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|cae3f2223945958e14d8eb90f7965fa26b47011cc5be29c2855a4054937e29c4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "robots.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC005", "level": "note", "message": {"text": "Duplicate top-level symbol appears in a patch-style file"}, "properties": {"repobilityId": 210742, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4e39f9489a28d164d7185b22984b7904320e8b966b74328bd32ae4080c6a6da8", "category": "quality", "severity": "low", "confidence": 0.64, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Patch-style file defines a top-level symbol also defined in another source file.", "evidence": {"symbol": "parse_args", "rule_id": "AIC005", "scanner": "repobility-ai-code-hygiene", "references": ["https://github.com/jendrikseipp/vulture", "https://knip.dev/"], "duplicate_file": "scripts/ecmwf_opendata_long.py", "correlation_key": "fp|4e39f9489a28d164d7185b22984b7904320e8b966b74328bd32ae4080c6a6da8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/arome_fr_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC005", "level": "note", "message": {"text": "Duplicate top-level symbol appears in a patch-style file"}, "properties": {"repobilityId": 210741, "scanner": "repobility-ai-code-hygiene", "fingerprint": "5713cedca80edc62b12271c9ef5722e2008233dcaaed718d229047ad8e57ed10", "category": "quality", "severity": "low", "confidence": 0.64, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Patch-style file defines a top-level symbol also defined in another source file.", "evidence": {"symbol": "download_kmz", "rule_id": "AIC005", "scanner": "repobility-ai-code-hygiene", "references": ["https://github.com/jendrikseipp/vulture", "https://knip.dev/"], "duplicate_file": "mosmix_kaart_be_temp_dag.py", "correlation_key": "fp|5713cedca80edc62b12271c9ef5722e2008233dcaaed718d229047ad8e57ed10"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210740, "scanner": "repobility-ai-code-hygiene", "fingerprint": "8af2a849efb6d702afbda1730647d2e8aea271401c14bea42911973055054d5a", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_compact.py", "duplicate_line": 8, "correlation_key": "fp|8af2a849efb6d702afbda1730647d2e8aea271401c14bea42911973055054d5a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_rijnmond.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210739, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f93ca1285303c129ea9e07d3cfaf69f3519668efff5234dcc95b940371c8cbe1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_multimodel_barendrecht.py", "duplicate_line": 22, "correlation_key": "fp|f93ca1285303c129ea9e07d3cfaf69f3519668efff5234dcc95b940371c8cbe1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_multimodel_utrecht.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210738, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4a74fb31192f0614d53e773b39c7b6c6acbad204f5e024087fe19ef45ff7cd09", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_compact.py", "duplicate_line": 8, "correlation_key": "fp|4a74fb31192f0614d53e773b39c7b6c6acbad204f5e024087fe19ef45ff7cd09"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_multimodel_utrecht.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210737, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1ab6eb63eb3b7370479aca7621f8207c40bc234170808a2607f3dbad03ab292c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht.py", "duplicate_line": 16, "correlation_key": "fp|1ab6eb63eb3b7370479aca7621f8207c40bc234170808a2607f3dbad03ab292c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_multimodel_barendrecht.py"}, "region": {"startLine": 15}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210736, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c98f8264300510d9906e46d830b3549e1b3e47e5ca04460ae6759f5fa7d74a2c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_compact.py", "duplicate_line": 8, "correlation_key": "fp|c98f8264300510d9906e46d830b3549e1b3e47e5ca04460ae6759f5fa7d74a2c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_multimodel_barendrecht.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210735, "scanner": "repobility-ai-code-hygiene", "fingerprint": "eb223a73f076d3c9c72d0c532e248a47fb26932239e477dc698ad79d5f691249", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_compact.py", "duplicate_line": 8, "correlation_key": "fp|eb223a73f076d3c9c72d0c532e248a47fb26932239e477dc698ad79d5f691249"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_denhelder_icon.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210734, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b2555f8a85a1bba9b2eb880277dcac1dd2702fec1b4efb5725fb962b765fa9b1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_icon.py", "duplicate_line": 1, "correlation_key": "fp|b2555f8a85a1bba9b2eb880277dcac1dd2702fec1b4efb5725fb962b765fa9b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_denhelder_icon.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210733, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e26eeb3953483cd2fe288d615cb3d10e1b3292f66aab3ac58e6632a2f43f2690", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_compact.py", "duplicate_line": 61, "correlation_key": "fp|e26eeb3953483cd2fe288d615cb3d10e1b3292f66aab3ac58e6632a2f43f2690"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_debilt_knmi.py"}, "region": {"startLine": 58}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210732, "scanner": "repobility-ai-code-hygiene", "fingerprint": "cac0a95f300e27cc90c256b5dccdc5fc8eb3b2ecd7635afe7699faeb9cf39a4d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht_compact.py", "duplicate_line": 8, "correlation_key": "fp|cac0a95f300e27cc90c256b5dccdc5fc8eb3b2ecd7635afe7699faeb9cf39a4d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_barendrecht_icon.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210731, "scanner": "repobility-ai-code-hygiene", "fingerprint": "d7eeb369a9928006fb76e5f2c809bfe43dbe8cee350aaa85334f592982872bef", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "pluim_barendrecht.py", "duplicate_line": 16, "correlation_key": "fp|d7eeb369a9928006fb76e5f2c809bfe43dbe8cee350aaa85334f592982872bef"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pluim_barendrecht_compact.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210730, "scanner": "repobility-ai-code-hygiene", "fingerprint": "829f9cb92bd637c33128734f373a5cb29980b3a7e0adeddb61f7c7efa145178b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 80, "correlation_key": "fp|829f9cb92bd637c33128734f373a5cb29980b3a7e0adeddb61f7c7efa145178b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_wind_nacht.py"}, "region": {"startLine": 63}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210729, "scanner": "repobility-ai-code-hygiene", "fingerprint": "8c9a5648326b88c78d1c1c374f122036a247e85bcea49c99fa1fcdfa938200af", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_temp_dag.py", "duplicate_line": 30, "correlation_key": "fp|8c9a5648326b88c78d1c1c374f122036a247e85bcea49c99fa1fcdfa938200af"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_wind_nacht.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210728, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f7dbd0e87990be8371856c1e57503a943c6df4054788870ca2a19e0ab86a8c15", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/mosmix_kaart_temp.py", "duplicate_line": 10, "correlation_key": "fp|f7dbd0e87990be8371856c1e57503a943c6df4054788870ca2a19e0ab86a8c15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_wind_nacht.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210727, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c213d54c6e8cedac56dc1b6748cbd970959776b31fdbc18be28cd15427370ab9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 80, "correlation_key": "fp|c213d54c6e8cedac56dc1b6748cbd970959776b31fdbc18be28cd15427370ab9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_temp_nacht.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210726, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b733cfe38ef57e502f0974ebdcba2595808d288536fab55dac33e86fab6024d6", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/mosmix_kaart_temp.py", "duplicate_line": 10, "correlation_key": "fp|b733cfe38ef57e502f0974ebdcba2595808d288536fab55dac33e86fab6024d6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_temp_nacht.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210725, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ee8702696388f4a258a72e6021beb73ee9ca174d7c7e8cfaca3a1d6a6f1d1f6b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_temp_dag.py", "duplicate_line": 6, "correlation_key": "fp|ee8702696388f4a258a72e6021beb73ee9ca174d7c7e8cfaca3a1d6a6f1d1f6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_temp_nacht.py"}, "region": {"startLine": 6}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210724, "scanner": "repobility-ai-code-hygiene", "fingerprint": "898b6b91cc4bb507232c5ca518ad00141fee160b92db9dd2701a973e64aa415d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 80, "correlation_key": "fp|898b6b91cc4bb507232c5ca518ad00141fee160b92db9dd2701a973e64aa415d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_temp_dag.py"}, "region": {"startLine": 61}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210723, "scanner": "repobility-ai-code-hygiene", "fingerprint": "eb4a82653de58f6d63561f496cf3b10534f71b7e58c79641e1b222a85262e73f", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/mosmix_kaart_temp.py", "duplicate_line": 10, "correlation_key": "fp|eb4a82653de58f6d63561f496cf3b10534f71b7e58c79641e1b222a85262e73f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_temp_dag.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210722, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b77de5d8343a83e96e3b8d1399f3e05246da6fe5cb0a91cdd2be7ef4cb1dde0d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 14, "correlation_key": "fp|b77de5d8343a83e96e3b8d1399f3e05246da6fe5cb0a91cdd2be7ef4cb1dde0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp_nacht.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210721, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7bba57033a7534679b17d7d76d60b2dcc771024cf9a867613ebd845c1e99461d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp_dag.py", "duplicate_line": 9, "correlation_key": "fp|7bba57033a7534679b17d7d76d60b2dcc771024cf9a867613ebd845c1e99461d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp_nacht.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210720, "scanner": "repobility-ai-code-hygiene", "fingerprint": "43be0a2c1f336be6cd234913f9724bb46db26dc01b4cf46be93521e03eb6c90b", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 14, "correlation_key": "fp|43be0a2c1f336be6cd234913f9724bb46db26dc01b4cf46be93521e03eb6c90b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp_dag.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210719, "scanner": "repobility-ai-code-hygiene", "fingerprint": "5ca68f304195da61625cbba86649d252200e21c047a3aa5c8f00393fd9392f65", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "_deploy/data_status_banner.js", "duplicate_line": 1, "correlation_key": "fp|5ca68f304195da61625cbba86649d252200e21c047a3aa5c8f00393fd9392f65"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "data_status_banner.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210718, "scanner": "repobility-ai-code-hygiene", "fingerprint": "821cb305351183fc2fe9d169d676c75fbaf9d7cc6b1f90795902cf55e0e64e77", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/icon_eu_update.py", "duplicate_line": 43, "correlation_key": "fp|821cb305351183fc2fe9d169d676c75fbaf9d7cc6b1f90795902cf55e0e64e77"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ukmo_update.py"}, "region": {"startLine": 43}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210717, "scanner": "repobility-ai-code-hygiene", "fingerprint": "63d16cda9df32ff0430ff89e9e05e0ec9776dea540ab8ae28395e01a6fe4b551", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/ecmwf_openmeteo_update.py", "duplicate_line": 19, "correlation_key": "fp|63d16cda9df32ff0430ff89e9e05e0ec9776dea540ab8ae28395e01a6fe4b551"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ukmo_update.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210716, "scanner": "repobility-ai-code-hygiene", "fingerprint": "16cbcf9d60ebe7de36fb26b542a92785c4d24cd01a2b2ac5d0a3d39a8b52e56e", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/arome_fr_update.py", "duplicate_line": 16, "correlation_key": "fp|16cbcf9d60ebe7de36fb26b542a92785c4d24cd01a2b2ac5d0a3d39a8b52e56e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ukmo_update.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210715, "scanner": "repobility-ai-code-hygiene", "fingerprint": "47e6e66defb2c0e296520dc71e724fcd2136d2a4457be1fd36cb59a58c7d2884", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 100, "correlation_key": "fp|47e6e66defb2c0e296520dc71e724fcd2136d2a4457be1fd36cb59a58c7d2884"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_temp.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210714, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7ea67b4f3810cd25569151d01ee5c2a6d36781a5bc9212f8e33f74e67cd43d9d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "mosmix_kaart_be_temp.py", "duplicate_line": 12, "correlation_key": "fp|7ea67b4f3810cd25569151d01ee5c2a6d36781a5bc9212f8e33f74e67cd43d9d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_be_temp.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210713, "scanner": "repobility-ai-code-hygiene", "fingerprint": "80ff93c3f9fe22c4ddab8f167b62dee5ad06dadf190446685ee4e130628879af", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/ecmwf_openmeteo_update.py", "duplicate_line": 19, "correlation_key": "fp|80ff93c3f9fe22c4ddab8f167b62dee5ad06dadf190446685ee4e130628879af"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/icon_eu_update.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210712, "scanner": "repobility-ai-code-hygiene", "fingerprint": "51f7ff21a66460f9083a48ae0dea2037d7a700e1e42766061b04e373b4248e51", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/arome_fr_update.py", "duplicate_line": 16, "correlation_key": "fp|51f7ff21a66460f9083a48ae0dea2037d7a700e1e42766061b04e373b4248e51"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/icon_eu_update.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 210711, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e07a0e1813085377140b0d2b703a77087476f9d6e79758a2f45f51a791500049", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/arome_fr_update.py", "duplicate_line": 16, "correlation_key": "fp|e07a0e1813085377140b0d2b703a77087476f9d6e79758a2f45f51a791500049"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ecmwf_openmeteo_update.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210701, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c784014711b226b39987844c2832bb72af82974c13d8d37f04844f6790686f12", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "update", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|c784014711b226b39987844c2832bb72af82974c13d8d37f04844f6790686f12"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ukmo_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210700, "scanner": "repobility-ai-code-hygiene", "fingerprint": "493cf48ae66a87c396e3a6abd6234bef7813808a75713c20e16a7cdc3271fc88", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "temp", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|493cf48ae66a87c396e3a6abd6234bef7813808a75713c20e16a7cdc3271fc88"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_be_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210699, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ef9c0bc944834764b4f1cb14fb0790432435089ae50e98e8344b0678b187cd99", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "fixed", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|ef9c0bc944834764b4f1cb14fb0790432435089ae50e98e8344b0678b187cd99"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/mosmix_kaart_fixed.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210698, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ffb8a37c1e7c9c83950718d95b0b469bd93212d04deb009f39bb6a545c60bc36", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "update", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|ffb8a37c1e7c9c83950718d95b0b469bd93212d04deb009f39bb6a545c60bc36"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/icon_eu_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210697, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b33f0bf3ae0221e4acf7f7d2c8ad5a30224ed519018db00271a35905bf26a9ba", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "update", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|b33f0bf3ae0221e4acf7f7d2c8ad5a30224ed519018db00271a35905bf26a9ba"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ecmwf_openmeteo_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210696, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2148202f1974b57edb48d35a5b8222b2bcd6a77f40891e3803b7615e3067dd30", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "update", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|2148202f1974b57edb48d35a5b8222b2bcd6a77f40891e3803b7615e3067dd30"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/arome_fr_update.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210695, "scanner": "repobility-ai-code-hygiene", "fingerprint": "537340b1e214209c1eb1f4be12c1f329a168a03f4d3d48597fad357e1a0da502", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "temp", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|537340b1e214209c1eb1f4be12c1f329a168a03f4d3d48597fad357e1a0da502"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mosmix_kaart_be_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC002", "level": "note", "message": {"text": "Source file name looks like an AI patch artifact"}, "properties": {"repobilityId": 210694, "scanner": "repobility-ai-code-hygiene", "fingerprint": "23e73f3eeba6bfca767762946e12b4c2ecdb6b3cd0240c534a09216a1f67eb0f", "category": "quality", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Source filename contains a temporary or patch-style suffix.", "evidence": {"suffix": "temp", "rule_id": "AIC002", "scanner": "repobility-ai-code-hygiene", "references": ["https://arxiv.org/abs/2601.15195"], "correlation_key": "fp|23e73f3eeba6bfca767762946e12b4c2ecdb6b3cd0240c534a09216a1f67eb0f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "knmi_jaarwisseling_temp.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `maak_pluim` has cognitive complexity 11 (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=3, if=2, nested_bonus=5, ternary=1."}, "properties": {"repobilityId": 210667, "scanner": "repobility-threat-engine", "fingerprint": "97569725bef293904717322351f4498b25028d3c85d79b364a42f8ca6af6668f", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 11 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "maak_pluim", "breakdown": {"if": 2, "for": 3, "ternary": 1, "nested_bonus": 5}, "complexity": 11, "correlation_key": "fp|97569725bef293904717322351f4498b25028d3c85d79b364a42f8ca6af6668f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "maak_pluim_rijnmond.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "CORE_NO_LICENSE", "level": "note", "message": {"text": "No LICENSE file"}, "properties": {"repobilityId": 210639, "scanner": "repobility-core", "fingerprint": "9314e9238cd99885865b92490d1aaa96ca62b1390c9377878d5f3d99227e1c3c", "category": "documentation", "severity": "low", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_LICENSE", "scanner": "repobility-core", "correlation_key": "repo|documentation|core_no_license"}}}, {"ruleId": "MINED047", "level": "none", "message": {"text": "[MINED047] Emoji In Source: Emoji \u2705 \u274c \ud83d\ude80 in code/comments \u2014 common AI output unless explicitly requested."}, "properties": {"repobilityId": 210693, "scanner": "repobility-threat-engine", "fingerprint": "964ad09244c11cba6f44a83dd459e311238f3fccb6c0ffd021d7fe080139c2ff", "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": "emoji-in-source", "owasp": null, "cwe_ids": [], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348010+00:00", "triaged_in_corpus": 9, "observations_count": 1468364, "ai_coder_pattern_id": 29}, "scanner": "repobility-threat-engine", "correlation_key": "fp|964ad09244c11cba6f44a83dd459e311238f3fccb6c0ffd021d7fe080139c2ff"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scrape_waarschuwingen.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "MINED063", "level": "none", "message": {"text": "[MINED063] Toctou Os Path Exists: if os.path.exists(p): open(p) \u2014 file can be replaced/deleted between check and use."}, "properties": {"repobilityId": 210690, "scanner": "repobility-threat-engine", "fingerprint": "de8011450687bebaa5b3cd2637918d2d0dc16e13e0fa754ceadbd32ed3453c41", "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": "toctou-os-path-exists", "owasp": null, "cwe_ids": ["CWE-367"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348048+00:00", "triaged_in_corpus": 12, "observations_count": 90754, "ai_coder_pattern_id": 41}, "scanner": "repobility-threat-engine", "correlation_key": "fp|de8011450687bebaa5b3cd2637918d2d0dc16e13e0fa754ceadbd32ed3453c41"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_beta_verificatie.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "ERR001", "level": "none", "message": {"text": "[ERR001] Silent Exception Swallowing (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 210688, "scanner": "repobility-threat-engine", "fingerprint": "4ffea2800599adb663df46ab31003467b0a25ff84f83dd40a996e94f4d40f164", "category": "error_handling", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|4ffea2800599adb663df46ab31003467b0a25ff84f83dd40a996e94f4d40f164"}}}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 210684, "scanner": "repobility-threat-engine", "fingerprint": "b39288e529a4ab712a2d60436a688220bb6b374d59b0f4dce7184c9dc7729483", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|b39288e529a4ab712a2d60436a688220bb6b374d59b0f4dce7184c9dc7729483", "aggregated_count": 2}}}, {"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": 210683, "scanner": "repobility-threat-engine", "fingerprint": "5d07fcea0d7a2538c92a209747e55d7a5d345f2c272fab877a5792cc50e32cf6", "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|5d07fcea0d7a2538c92a209747e55d7a5d345f2c272fab877a5792cc50e32cf6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_verificatie_multirun.py"}, "region": {"startLine": 48}}}]}, {"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": 210682, "scanner": "repobility-threat-engine", "fingerprint": "71d5caec8c48f7de0844e3b7889084756ff4920f21a4503b342c2bff267a1c28", "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|71d5caec8c48f7de0844e3b7889084756ff4920f21a4503b342c2bff267a1c28"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_pluim_lijnen.py"}, "region": {"startLine": 155}}}]}, {"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": 210681, "scanner": "repobility-threat-engine", "fingerprint": "164907d7ae3e5d0de02ec1a5e4bdd4a8c36bbaee2d78ca08ac18a06f535f0504", "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|164907d7ae3e5d0de02ec1a5e4bdd4a8c36bbaee2d78ca08ac18a06f535f0504"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_satelliet.py"}, "region": {"startLine": 36}}}]}, {"ruleId": "MINED001", "level": "none", "message": {"text": "[MINED001] Bare Except Pass (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 210680, "scanner": "repobility-threat-engine", "fingerprint": "95cc9797c40c926759aaa04a4225f0a4ae4f9faafb543c58446c2f46cd9cfe9e", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|95cc9797c40c926759aaa04a4225f0a4ae4f9faafb543c58446c2f46cd9cfe9e", "aggregated_count": 2}}}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 210674, "scanner": "repobility-threat-engine", "fingerprint": "7aaeaa85b427aba04fa9bcaa515fb91135ffcb5b8c750b16147f10187639e7ff", "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|7aaeaa85b427aba04fa9bcaa515fb91135ffcb5b8c750b16147f10187639e7ff"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup_macbook.sh"}, "region": {"startLine": 73}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 210673, "scanner": "repobility-threat-engine", "fingerprint": "16fe50462fbdb5cbe8cb7063d87141a80db3a151bafed36ec70dd943a38c9e30", "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|16fe50462fbdb5cbe8cb7063d87141a80db3a151bafed36ec70dd943a38c9e30"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fetch_mosmix.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "SEC020", "level": "none", "message": {"text": "[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequent AI-assisted coding failure: the helper exposes the exact value needed for troubleshooting."}, "properties": {"repobilityId": 210669, "scanner": "repobility-threat-engine", "fingerprint": "f7d970e4653d5d8a2810ab1ac60863b003f01ef7367418af99689d2a0537294c", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Log message mentions credential-related metadata but does not print a credential-bearing value", "evidence": {"match": "print(\"   Controleer: juist jaar? API-key geldig? Collectie-naam correct?\")", "reason": "Log message mentions credential-related metadata but does not print a credential-bearing value", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.15, "correlation_key": "secret|knmi_jaarwisseling_temp.py|12|print controleer: juist jaar api-key geldig collectie-naam correct"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "knmi_jaarwisseling_temp.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 102 more): Same pattern found in 102 additional files. Review if needed."}, "properties": {"repobilityId": 210668, "scanner": "repobility-threat-engine", "fingerprint": "1667d3eff90e8546bc0e88b9a94bd5c8d27d15292fd00f3731954309b3fdfb28", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 102 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "parse_zip", "breakdown": {"if": 6, "for": 1, "except": 1, "continue": 7, "nested_bonus": 7}, "aggregated": true, "complexity": 22, "correlation_key": "fp|1667d3eff90e8546bc0e88b9a94bd5c8d27d15292fd00f3731954309b3fdfb28", "aggregated_count": 102}}}, {"ruleId": "MINED073", "level": "none", "message": {"text": "[MINED073] Redos Greedy Quantifier: Pattern with nested quantifiers like (a+)+ applied to network/user data \u2014 denial of service."}, "properties": {"repobilityId": 210664, "scanner": "repobility-threat-engine", "fingerprint": "c9070b8eb3d06643e5fced050a47f081bc0c93e17f3ff067260eef64d6a1e5cd", "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": "redos-greedy-quantifier", "owasp": "A06:2021", "cwe_ids": ["CWE-1333", "CWE-400"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348072+00:00", "triaged_in_corpus": 12, "observations_count": 12702, "ai_coder_pattern_id": 35}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c9070b8eb3d06643e5fced050a47f081bc0c93e17f3ff067260eef64d6a1e5cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fix_historisch.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 5 more): Same pattern found in 5 additional files. Review if needed."}, "properties": {"repobilityId": 210662, "scanner": "repobility-threat-engine", "fingerprint": "4a4f0807e4b2a602904c2c23d95abb6f9e09448ebf29c9e0a18b9da6a89476f2", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 5 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 5 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|4a4f0807e4b2a602904c2c23d95abb6f9e09448ebf29c9e0a18b9da6a89476f2"}}}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout (and 87 more): Same pattern found in 87 additional files. Review if needed."}, "properties": {"repobilityId": 210658, "scanner": "repobility-threat-engine", "fingerprint": "2106e8d220e2a8e295a222c7311f1467302f3103eda752d88ea976dbbf852d15", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 87 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "python-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|2106e8d220e2a8e295a222c7311f1467302f3103eda752d88ea976dbbf852d15", "aggregated_count": 87}}}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 210657, "scanner": "repobility-threat-engine", "fingerprint": "3e23c1baaea38dbd46a6f558f6371a8fdfbf97f339c93382325ec39e62088007", "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-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3e23c1baaea38dbd46a6f558f6371a8fdfbf97f339c93382325ec39e62088007"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "knmi_jaarwisseling_temp.py"}, "region": {"startLine": 58}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 210656, "scanner": "repobility-threat-engine", "fingerprint": "d04194428d39563f26b2f15599c059239a32443c6e991f872525b7d0d9ca0652", "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-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|d04194428d39563f26b2f15599c059239a32443c6e991f872525b7d0d9ca0652"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "haal_maanddata.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 210655, "scanner": "repobility-threat-engine", "fingerprint": "1a21b78442154383cb98de0ca5c311851406ebcc5c38b1a25c3209cfd293cd20", "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-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|1a21b78442154383cb98de0ca5c311851406ebcc5c38b1a25c3209cfd293cd20"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "add_zon.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "SEC078", "level": "none", "message": {"text": "[SEC078] Python: requests without timeout (and 87 more): Same pattern found in 87 additional files. Review if needed."}, "properties": {"repobilityId": 210654, "scanner": "repobility-threat-engine", "fingerprint": "cde7754f3a7ef146dc33fb35e41848e2a6cab6f87d561d22578d6362b414f041", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 87 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 87 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|cde7754f3a7ef146dc33fb35e41848e2a6cab6f87d561d22578d6362b414f041"}}}, {"ruleId": "MINED077", "level": "none", "message": {"text": "[MINED077] Python Open No Context (and 2 more): Same pattern found in 2 additional files. Review if needed."}, "properties": {"repobilityId": 210650, "scanner": "repobility-threat-engine", "fingerprint": "12141f0553d729382e117e534c176ce85f05daff29205f8951ebbf5d197c5533", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 2 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "python-open-no-context", "owasp": null, "cwe_ids": ["CWE-772"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348081+00:00", "triaged_in_corpus": 12, "observations_count": 7864, "ai_coder_pattern_id": 123}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|12141f0553d729382e117e534c176ce85f05daff29205f8951ebbf5d197c5533", "aggregated_count": 2}}}, {"ruleId": "MINED077", "level": "none", "message": {"text": "[MINED077] Python Open No Context: fp = open(path) outside with-block leaks file handles."}, "properties": {"repobilityId": 210649, "scanner": "repobility-threat-engine", "fingerprint": "222eca0f5866f03bc4d922bf8f6250fcebafff8cb04b25776799ba4d58c6bfed", "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-open-no-context", "owasp": null, "cwe_ids": ["CWE-772"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348081+00:00", "triaged_in_corpus": 12, "observations_count": 7864, "ai_coder_pattern_id": 123}, "scanner": "repobility-threat-engine", "correlation_key": "fp|222eca0f5866f03bc4d922bf8f6250fcebafff8cb04b25776799ba4d58c6bfed"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fix_be_kaartitem.py"}, "region": {"startLine": 3}}}]}, {"ruleId": "MINED077", "level": "none", "message": {"text": "[MINED077] Python Open No Context: fp = open(path) outside with-block leaks file handles."}, "properties": {"repobilityId": 210648, "scanner": "repobility-threat-engine", "fingerprint": "2b5bde403c46a2ad8be739346dd707d6510ec35c6c257596e6cad0879c6c7fc5", "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-open-no-context", "owasp": null, "cwe_ids": ["CWE-772"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348081+00:00", "triaged_in_corpus": 12, "observations_count": 7864, "ai_coder_pattern_id": 123}, "scanner": "repobility-threat-engine", "correlation_key": "fp|2b5bde403c46a2ad8be739346dd707d6510ec35c6c257596e6cad0879c6c7fc5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fix_basis.py"}, "region": {"startLine": 3}}}]}, {"ruleId": "MINED077", "level": "none", "message": {"text": "[MINED077] Python Open No Context: fp = open(path) outside with-block leaks file handles."}, "properties": {"repobilityId": 210647, "scanner": "repobility-threat-engine", "fingerprint": "b394dc2c863117560b22f083934de4aa8613e95e5a1bb9e1bbae4585f23729d2", "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-open-no-context", "owasp": null, "cwe_ids": ["CWE-772"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348081+00:00", "triaged_in_corpus": 12, "observations_count": 7864, "ai_coder_pattern_id": 123}, "scanner": "repobility-threat-engine", "correlation_key": "fp|b394dc2c863117560b22f083934de4aa8613e95e5a1bb9e1bbae4585f23729d2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "add_buttons.py"}, "region": {"startLine": 3}}}]}, {"ruleId": "SEC128", "level": "none", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 5 more): Same pattern found in 5 additional files. Review if needed."}, "properties": {"repobilityId": 210644, "scanner": "repobility-threat-engine", "fingerprint": "dfda4170aff520d17dd79e2ba83251ca47508d2ca8ba93d0fcc46ccc46e07c8c", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 5 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 5 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|dfda4170aff520d17dd79e2ba83251ca47508d2ca8ba93d0fcc46ccc46e07c8c"}}}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/mosmix_kaart_temp.cpython-313.pyc` committed in source repo: `scripts/__pycache__/mosmix_kaart_temp.cpython-313.pyc` is a .pyc binary (14,018 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210801, "scanner": "repobility-supply-chain", "fingerprint": "4e353b74770510ab196ebc6df9c9d3623f3687ea4c6c6928f675e4770b21d315", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|4e353b74770510ab196ebc6df9c9d3623f3687ea4c6c6928f675e4770b21d315"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/mosmix_kaart_temp.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/knmi_p13.cpython-313.pyc` committed in source repo: `scripts/__pycache__/knmi_p13.cpython-313.pyc` is a .pyc binary (21,859 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210800, "scanner": "repobility-supply-chain", "fingerprint": "80b3999d67f65ae56506dfd10c6c0278e73e57710ddc4e64d747a81e3b8b37fc", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|80b3999d67f65ae56506dfd10c6c0278e73e57710ddc4e64d747a81e3b8b37fc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/knmi_p13.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/knmi_records.cpython-310.pyc` committed in source repo: `scripts/__pycache__/knmi_records.cpython-310.pyc` is a .pyc binary (25,236 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210799, "scanner": "repobility-supply-chain", "fingerprint": "81867f54f20af0852b320d29fe5f178a737a1bfec4f931a27f34ce8cf20eff22", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|81867f54f20af0852b320d29fe5f178a737a1bfec4f931a27f34ce8cf20eff22"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/knmi_records.cpython-310.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/maak_toplijst.cpython-313.pyc` committed in source repo: `scripts/__pycache__/maak_toplijst.cpython-313.pyc` is a .pyc binary (33,983 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210798, "scanner": "repobility-supply-chain", "fingerprint": "53b11a70537dd70ca51e3c619e6aa398c48d3507ee38f4fbbab97e007627a6b1", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|53b11a70537dd70ca51e3c619e6aa398c48d3507ee38f4fbbab97e007627a6b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/maak_toplijst.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/verificatie.cpython-313.pyc` committed in source repo: `scripts/__pycache__/verificatie.cpython-313.pyc` is a .pyc binary (14,450 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210797, "scanner": "repobility-supply-chain", "fingerprint": "ccb0264022ec6df06badb7f1fc9221fa01b35a4d8d46fcb93be8f91fbaf318ad", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ccb0264022ec6df06badb7f1fc9221fa01b35a4d8d46fcb93be8f91fbaf318ad"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/verificatie.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/harmonie_neerslag.cpython-313.pyc` committed in source repo: `scripts/__pycache__/harmonie_neerslag.cpython-313.pyc` is a .pyc binary (50,671 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210796, "scanner": "repobility-supply-chain", "fingerprint": "784cac4734b811a1ce015f3d648c1145fe40ac26261815dff74b80fc54ead1e3", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|784cac4734b811a1ce015f3d648c1145fe40ac26261815dff74b80fc54ead1e3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/harmonie_neerslag.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/knmi_api.cpython-313.pyc` committed in source repo: `scripts/__pycache__/knmi_api.cpython-313.pyc` is a .pyc binary (2,977 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210795, "scanner": "repobility-supply-chain", "fingerprint": "a05e19c4a273bfa759beefee908bacfae90c07970644bf3807c44c5082c7ed32", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|a05e19c4a273bfa759beefee908bacfae90c07970644bf3807c44c5082c7ed32"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/knmi_api.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/knmi_records.cpython-313.pyc` committed in source repo: `scripts/__pycache__/knmi_records.cpython-313.pyc` is a .pyc binary (48,596 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210794, "scanner": "repobility-supply-chain", "fingerprint": "555a0b02db3c6e06f0c451f681b7f14d05754a0b4e0fb2692bf5bcb932b305cb", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|555a0b02db3c6e06f0c451f681b7f14d05754a0b4e0fb2692bf5bcb932b305cb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/knmi_records.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED134", "level": "error", "message": {"text": "[MINED134] Binary file `scripts/__pycache__/open_meteo.cpython-313.pyc` committed in source repo: `scripts/__pycache__/open_meteo.cpython-313.pyc` is a .pyc binary (9,495 bytes) committed to a repo that otherwise has 214 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts."}, "properties": {"repobilityId": 210793, "scanner": "repobility-supply-chain", "fingerprint": "d4d86080749f6a3f2413f755f80f7a23d96ed50323bb91510fc9113a927a0ab8", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "suspicious-binary-in-src", "owasp": null, "cwe_ids": ["CWE-506"], "languages": ["any"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|d4d86080749f6a3f2413f755f80f7a23d96ed50323bb91510fc9113a927a0ab8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/__pycache__/open_meteo.cpython-313.pyc"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.lon_max` used but never assigned in __init__: Method `_on_message` of class `BlitzortungClient` reads `self.lon_max`, 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": 210779, "scanner": "repobility-ast-engine", "fingerprint": "816cecd3555315ac181ba8f48cc6d1b49e2db9bb7aa83469a7a0175193747fee", "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|816cecd3555315ac181ba8f48cc6d1b49e2db9bb7aa83469a7a0175193747fee"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shell/bliksem_ingest.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.lon_min` used but never assigned in __init__: Method `_on_message` of class `BlitzortungClient` reads `self.lon_min`, 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": 210778, "scanner": "repobility-ast-engine", "fingerprint": "9b23ceccf7cdf76736f7baba664a4f2dbb3a4d32feaaedaf1e91520c132dd894", "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|9b23ceccf7cdf76736f7baba664a4f2dbb3a4d32feaaedaf1e91520c132dd894"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shell/bliksem_ingest.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.lat_max` used but never assigned in __init__: Method `_on_message` of class `BlitzortungClient` reads `self.lat_max`, 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": 210777, "scanner": "repobility-ast-engine", "fingerprint": "dd31c86b9e5fbbabb32cc104186604b9228fb7ef7381d6a11ce780630569ee88", "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|dd31c86b9e5fbbabb32cc104186604b9228fb7ef7381d6a11ce780630569ee88"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shell/bliksem_ingest.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.lat_min` used but never assigned in __init__: Method `_on_message` of class `BlitzortungClient` reads `self.lat_min`, 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": 210776, "scanner": "repobility-ast-engine", "fingerprint": "23170a282b406fb921f358d264d4d523921524d3784f04eebde7b4298e98763b", "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|23170a282b406fb921f358d264d4d523921524d3784f04eebde7b4298e98763b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shell/bliksem_ingest.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "SEC080", "level": "error", "message": {"text": "[SEC080] Python: tarfile.extractall without filter: tarfile.extract*() without filter='data' allows path-traversal (CVE-2007-4559, fixed via PEP 706 in 3.12). Ported from bandit B202 (Apache-2.0)."}, "properties": {"repobilityId": 210692, "scanner": "repobility-threat-engine", "fingerprint": "f1a1d9677dc453c2fc3749573fbef9d2dbb06c2ba6fb61439747cff0429f46f2", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "tar.extract(member, tmp)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC080", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f1a1d9677dc453c2fc3749573fbef9d2dbb06c2ba6fb61439747cff0429f46f2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_harmonie_lsm.py"}, "region": {"startLine": 44}}}]}, {"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": 210679, "scanner": "repobility-threat-engine", "fingerprint": "ca646be44b4f04e504c762606b7d0e879af074bb364044c9b400c5df19f8aeb9", "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|ca646be44b4f04e504c762606b7d0e879af074bb364044c9b400c5df19f8aeb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_verificatie_multirun.py"}, "region": {"startLine": 47}}}]}, {"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": 210678, "scanner": "repobility-threat-engine", "fingerprint": "c113effa6b693a240133a59c5aea1f01e8e13dcd4f62e7e740cb45ae22d35bd4", "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|c113effa6b693a240133a59c5aea1f01e8e13dcd4f62e7e740cb45ae22d35bd4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/maak_pluim_lijnen.py"}, "region": {"startLine": 154}}}]}, {"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": 210677, "scanner": "repobility-threat-engine", "fingerprint": "92f0632b205e1eddb0dc080932ab9315a21cf9d42c9b66fd46feac4204ee2866", "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|92f0632b205e1eddb0dc080932ab9315a21cf9d42c9b66fd46feac4204ee2866"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_satelliet.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "SEC103", "level": "error", "message": {"text": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inject `*)(uid=*` style payloads to bypass auth or enumerate accounts."}, "properties": {"repobilityId": 210676, "scanner": "repobility-threat-engine", "fingerprint": "b8175895ffc6fe94b2c8cd0a950122f1315956e68324e65329856e88b662c69f", "category": "injection", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".search(r\"wind-direction-(\\w+)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC103", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|113|sec103"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_knmi_verwachting.py"}, "region": {"startLine": 113}}}]}, {"ruleId": "SEC103", "level": "error", "message": {"text": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inject `*)(uid=*` style payloads to bypass auth or enumerate accounts."}, "properties": {"repobilityId": 210675, "scanner": "repobility-threat-engine", "fingerprint": "568d50f0c21c4747d1826bf61540e7c1c3cf84ff8649f398ecdcd7dbeab31e98", "category": "injection", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".search(r'ausgegeben am\\s+(.*?)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC103", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|120|sec103"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_dwd_guidance.py"}, "region": {"startLine": 120}}}]}, {"ruleId": "COMP001", "level": "error", "message": {"text": "[COMP001] High cognitive complexity: Function `teken_geojson` has cognitive complexity 39 (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=4, elif=4, else=1, for=3, if=6, nested_bonus=18, or=2, ternary=1."}, "properties": {"repobilityId": 210666, "scanner": "repobility-threat-engine", "fingerprint": "1ae9dd409fdb0f2689e0c07b9033328a97d275b430ce9dfab18214de4d214a1b", "category": "quality", "severity": "high", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 39 (severity threshold for high: 25+).", "evidence": {"scanner": "repobility-threat-engine", "function": "teken_geojson", "breakdown": {"if": 6, "or": 2, "for": 3, "elif": 4, "else": 1, "ternary": 1, "continue": 4, "nested_bonus": 18}, "complexity": 39, "correlation_key": "fp|1ae9dd409fdb0f2689e0c07b9033328a97d275b430ce9dfab18214de4d214a1b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "maak_basiskaart_nweuropa.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "SEC100", "level": "error", "message": {"text": "[SEC100] CORS permissive Access-Control-Allow-Origin: *: Permissive CORS policy (`*` origin) allows any website to make authenticated cross-origin requests. Especially dangerous when combined with `Access-Control-Allow-Credentials: true`."}, "properties": {"repobilityId": 210663, "scanner": "repobility-threat-engine", "fingerprint": "946ab5972ad9838a65c32c91c199cceb2a95958b6504f20c8c153d2e83fb054a", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "'Access-Control-Allow-Origin':  '*'", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC100", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|946ab5972ad9838a65c32c91c199cceb2a95958b6504f20c8c153d2e83fb054a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cloudflare-worker/open-meteo-proxy.js"}, "region": {"startLine": 34}}}]}, {"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": 210661, "scanner": "repobility-threat-engine", "fingerprint": "8e74563654eef680755e6cf74b0b07909bceb23184a9ca5fd7a2549eef9b2a86", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(download_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|8e74563654eef680755e6cf74b0b07909bceb23184a9ca5fd7a2549eef9b2a86"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/inspect_grib.py"}, "region": {"startLine": 22}}}]}, {"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": 210660, "scanner": "repobility-threat-engine", "fingerprint": "23d7bbb2e7f74db8ee85d1e6ebd4c565c1a0cc280aca5b0d8ef88f0e1b24cee1", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(download_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|23d7bbb2e7f74db8ee85d1e6ebd4c565c1a0cc280aca5b0d8ef88f0e1b24cee1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_marifoon.py"}, "region": {"startLine": 71}}}]}, {"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": 210659, "scanner": "repobility-threat-engine", "fingerprint": "3d0da645021ab6d1cd216d45c18781b015f18c11177e4d8f5b00c315fd70c2ab", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new URL(r", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|3d0da645021ab6d1cd216d45c18781b015f18c11177e4d8f5b00c315fd70c2ab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cloudflare-worker/open-meteo-proxy.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 210653, "scanner": "repobility-threat-engine", "fingerprint": "89c76939e90783964ef206867469fa9d32e5b60e06f5d40ab9c2cb714cefbd20", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|89c76939e90783964ef206867469fa9d32e5b60e06f5d40ab9c2cb714cefbd20"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_marifoon.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 210652, "scanner": "repobility-threat-engine", "fingerprint": "1e31f1e43c8618c1e2a71a1941ae8044d3b7e17f7c9047ee933d9cf0b21bd1d0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|1e31f1e43c8618c1e2a71a1941ae8044d3b7e17f7c9047ee933d9cf0b21bd1d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extend_dagdata.py"}, "region": {"startLine": 58}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 210651, "scanner": "repobility-threat-engine", "fingerprint": "769c0aa6269e5425509514961b5e644c63ef0203501ab87628af88c875383168", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|769c0aa6269e5425509514961b5e644c63ef0203501ab87628af88c875383168"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "maak_paaspluim_rotterdam.py"}, "region": {"startLine": 16}}}]}, {"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": 210643, "scanner": "repobility-threat-engine", "fingerprint": "6c1c3a7127a353bc8d9cf2858be6b2215da90ce56cc13260512f939f642eab33", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Promise.all(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6c1c3a7127a353bc8d9cf2858be6b2215da90ce56cc13260512f939f642eab33"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "data_status_banner.js"}, "region": {"startLine": 88}}}]}, {"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": 210642, "scanner": "repobility-threat-engine", "fingerprint": "93e217de83ac457d35d1f0b1df8b51b2b761ea29a645eed467e07469d2f89835", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "response.headers.delete('Server');", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|93e217de83ac457d35d1f0b1df8b51b2b761ea29a645eed467e07469d2f89835"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cloudflare-worker/open-meteo-proxy.js"}, "region": {"startLine": 113}}}]}, {"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": 210641, "scanner": "repobility-threat-engine", "fingerprint": "bc013a214f40ad42b5079b5223f24ba4d90f1e1b47a109e3412c2dfcf28c0621", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Promise.all(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|bc013a214f40ad42b5079b5223f24ba4d90f1e1b47a109e3412c2dfcf28c0621"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_deploy/data_status_banner.js"}, "region": {"startLine": 88}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `warnings` used but not imported: The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 210792, "scanner": "repobility-ast-engine", "fingerprint": "1a686c47f210cfee170d875bd8fee6281d2570efd6992fe240082ce3c5200ff8", "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|1a686c47f210cfee170d875bd8fee6281d2570efd6992fe240082ce3c5200ff8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scrape_waarschuwingen.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `stat` used but not imported: The file uses `stat.something(...)` but never imports `stat`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 210790, "scanner": "repobility-ast-engine", "fingerprint": "87966f3f1a03873cf6e92b3732392ea397c52514d97f18d1e1535b04a4fbab91", "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|87966f3f1a03873cf6e92b3732392ea397c52514d97f18d1e1535b04a4fbab91"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/haal_knmi_verwachting.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-506be2b95088f5d3", "level": "none", "message": {"text": "git log failed \u2014 history analysis incomplete"}, "properties": {"repobilityId": "b424308a11bb9b22", "scanner": "scanner-primary", "fingerprint": "506be2b95088f5d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["git", "tooling"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}]}]}