{"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": "AUC001", "name": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobilit", "shortDescription": {"text": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "fullDescription": {"text": "The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.92, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"id": "DKR007", "name": "Docker build context has no .dockerignore", "shortDescription": {"text": "Docker build context has no .dockerignore"}, "fullDescription": {"text": "Without .dockerignore, build context can include source history, local env files, dependencies, and generated artifacts."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "DKR001", "name": "Docker final stage has no non-root USER", "shortDescription": {"text": "Docker final stage has no non-root USER"}, "fullDescription": {"text": "Docker images run as root unless the image or Dockerfile switches to a non-root user."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.82, "cwe": "", "owasp": ""}}, {"id": "DKR009", "name": "Dockerfile separates apt update from install", "shortDescription": {"text": "Dockerfile separates apt update from install"}, "fullDescription": {"text": "Splitting apt update and install across layers can reuse stale package indexes and make builds less reliable."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "DKR003", "name": "Dockerfile base image uses the latest tag", "shortDescription": {"text": "Dockerfile base image uses the latest tag"}, "fullDescription": {"text": "The latest tag is mutable and can change without a code review, producing different images from the same source."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.94, "cwe": "", "owasp": ""}}, {"id": "SEC123", "name": "[SEC123] Production stack trace / debug output exposed: Debug mode left on in production exposes stack traces, environme", "shortDescription": {"text": "[SEC123] Production stack trace / debug output exposed: Debug mode left on in production exposes stack traces, environment variables, framework internals \u2014 sometimes triggers RCE (Django debug page with arbitrary template eval)."}, "fullDescription": {"text": "Set DEBUG=False / APP_DEBUG=false in production. Provide a generic 500 handler that logs to backend but returns a sanitized page to clients."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `collect_public` has cognitive complexity 17 (SonarSource scale). Cognitiv", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `collect_public` has cognitive complexity 17 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursio"}, "fullDescription": {"text": "Extract nested branches into named helper functions; flatten early-return / guard clauses; replace long if/elif chains with dispatch dicts or polymorphism. SonarQube's threshold for 'should refactor' is 15 \u2014 yours is 17."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-NPM", "name": "npm package `vscode-languageclient` is 2 major version(s) behind (8.1.0 -> 10.0.0)", "shortDescription": {"text": "npm package `vscode-languageclient` is 2 major version(s) behind (8.1.0 -> 10.0.0)"}, "fullDescription": {"text": "`vscode-languageclient` is pinned/resolved at 8.1.0 but the latest stable release on the npm registry is 10.0.0 (2 major version(s) behind). Outdated dependencies accumulate unpatched bugs and make future security upgrades harder. This is the version-currency signal Dependabot version-update PRs raise."}, "properties": {"scanner": "repobility-dependency-currency", "category": "dependency", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-PY", "name": "Python package `flask` is 1 major version(s) behind (2.3.3 -> 3.1.3)", "shortDescription": {"text": "Python package `flask` is 1 major version(s) behind (2.3.3 -> 3.1.3)"}, "fullDescription": {"text": "`flask==2.3.3` is 1 major version(s) behind the latest stable release on PyPI (3.1.3). Pinned-but-stale Python dependencies drift away from upstream security and bugfix releases. This is the version-currency signal Dependabot raises."}, "properties": {"scanner": "repobility-dependency-currency", "category": "dependency", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED111", "name": "Bare except continues silently", "shortDescription": {"text": "Bare except continues silently"}, "fullDescription": {"text": "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": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED109", "name": "Mutable default argument in `deduce_directory` (list)", "shortDescription": {"text": "Mutable default argument in `deduce_directory` (list)"}, "fullDescription": {"text": "`def deduce_directory(... = []/{}/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": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "GHSA-68rp-wp8r-4726", "name": "flask: GHSA-68rp-wp8r-4726", "shortDescription": {"text": "flask: GHSA-68rp-wp8r-4726"}, "fullDescription": {"text": "Flask session does not add `Vary: Cookie` header when accessed in some ways"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "DKR011", "name": "Dockerfile installs recommended OS packages", "shortDescription": {"text": "Dockerfile installs recommended OS packages"}, "fullDescription": {"text": "Installing recommended packages often pulls in unnecessary runtime surface area."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "SEC124", "name": "[SEC124] TOCTOU file access (os.access then open): Check-then-use file pattern (access/exists then open) lets an attacke", "shortDescription": {"text": "[SEC124] TOCTOU file access (os.access then open): Check-then-use file pattern (access/exists then open) lets an attacker swap the file between check and use (symlink attack). `mktemp` is deprecated for the same reason."}, "fullDescription": {"text": "Use `os.open(path, os.O_CREAT | os.O_EXCL | os.O_WRONLY)` for atomic create-only. Use `tempfile.NamedTemporaryFile()` (not `mktemp`). For locking, use `fcntl.flock`."}, "properties": {"scanner": "repobility-threat-engine", "category": "race_condition", "severity": "low", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC006", "name": "[SEC006] XSS Risk: Direct HTML injection without sanitization.", "shortDescription": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "fullDescription": {"text": "Use textContent instead of innerHTML. Sanitize with DOMPurify."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "low", "confidence": 0.4, "cwe": "", "owasp": ""}}, {"id": "SEC132", "name": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the la", "shortDescription": {"text": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template literals since ES6). Not a vulnerability on it"}, "fullDescription": {"text": "Python: `f\"prefix {var} suffix\"`. JS/TS: `` `prefix ${var} suffix` ``. Add a lint rule (pyupgrade UP032, eslint prefer-template) so future PRs catch this automatically."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "low", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Duplicated blocks are a common artifact when generated code is pasted or recreated instead of reused. They increase maintenance cost because every future bug fix must be found in multiple locations."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "MINED062", "name": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model.", "shortDescription": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED069", "name": "[MINED069] Debug True Prod: Django/Flask DEBUG=True or app.debug=True in non-test files.", "shortDescription": {"text": "[MINED069] Debug True Prod: Django/Flask DEBUG=True or app.debug=True in non-test files."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-489 / A05:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED049", "name": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout.", "shortDescription": {"text": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 / A09: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.1, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO ", "shortDescription": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-89", "name": "markdown: PYSEC-2026-89", "shortDescription": {"text": "markdown: PYSEC-2026-89"}, "fullDescription": {"text": "Python-Markdown version 3.8 contain a vulnerability where malformed HTML-like sequences can cause html.parser.HTMLParser to raise an unhandled AssertionError during Markdown parsing. Because Python-Markdown does not catch this exception, any application that processes attacker-controlled Markdown may crash. This enables remote, unauthenticated Denial of Service in web applications, documentation systems, CI/CD pipelines, and any service that renders untrusted Markdown. The issue was acknowledged by the vendor and fixed in version 3.8.1. This issue causes a remote Denial of Service in any application parsing untrusted Markdown, and can lead to Information Disclosure through uncaught exceptions."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns", "shortDescription": {"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, ra"}, "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": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC135", "name": "[SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint generated by an AI agent without", "shortDescription": {"text": "[SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint generated by an AI agent without an auth decorator or middleware. The number-one production-incident pattern we see in AI-generated SaaS code: the AI bu"}, "fullDescription": {"text": "Add the project's auth decorator/middleware: `@login_required` (Django/Flask), `@permission_classes([IsAuthenticated])` (DRF), `Depends(get_current_user)` (FastAPI), `requireAuth` middleware (Express). For genuinely public endpoints, add a `# public-endpoint` marker comment so future scans skip them."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC083", "name": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported fr", "shortDescription": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "fullDescription": {"text": "Use a literal RegExp or whitelist-validate user input before constructing patterns."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC040", "name": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that int", "shortDescription": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTM"}, "fullDescription": {"text": "For plain text: use el.textContent = data.value (auto-escapes).\nFor HTML you need to render: el.innerHTML = DOMPurify.sanitize(html).\nFor React/Vue/Svelte: stop using innerHTML; use the framework's binding.\nWhen data comes from CV/PDF parsers, sanitize at the parser boundary too."}, "properties": {"scanner": "repobility-threat-engine", "category": "xss", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED021", "name": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape.", "shortDescription": {"text": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-22 / A01:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC035", "name": "[SEC035] Unbounded Resource Allocation \u2014 DoS risk: Allocating resources (buffers, recursion stack, large ranges) based o", "shortDescription": {"text": "[SEC035] Unbounded Resource Allocation \u2014 DoS risk: Allocating resources (buffers, recursion stack, large ranges) based on user input without an upper bound. Attackers send `size=10000000` to exhaust memory, or trigger expensive computation."}, "fullDescription": {"text": "Cap user-controlled sizes BEFORE allocation:\n  size = min(int(request.args.get('n', 100)), MAX_SIZE)\nSet framework-level limits:\n  Flask:    app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024\n  FastAPI:  use middleware to enforce request size\n  Django:   DATA_UPLOAD_MAX_MEMORY_SIZE in settings.py\nNever raise `sys.setrecursionlimit` past 10K without a deeper review."}, "properties": {"scanner": "repobility-threat-engine", "category": "resource_exhaustion", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC013", "name": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows ", "shortDescription": {"text": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files."}, "fullDescription": {"text": "Use os.path.realpath() and verify the path starts with your expected base directory. Use secure_filename() for uploads."}, "properties": {"scanner": "repobility-threat-engine", "category": "path_traversal", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInt", "shortDescription": {"text": "[MINED001] Bare Except Pass: except: pass or except Exception: pass \u2014 silently swallows everything including KeyboardInterrupt and bugs."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "Action `actions/setup-python` pinned to mutable ref `@v5`", "shortDescription": {"text": "Action `actions/setup-python` pinned to mutable ref `@v5`"}, "fullDescription": {"text": "`uses: actions/setup-python@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED118", "name": "Dockerfile FROM `eecsautograder/ubuntu24:latest` not pinned by digest", "shortDescription": {"text": "Dockerfile FROM `eecsautograder/ubuntu24:latest` not pinned by digest"}, "fullDescription": {"text": "`FROM eecsautograder/ubuntu24:latest` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is potentially different. Production images should pin to `image@sha256:...` for reproducibility + supply-chain integrity."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED106", "name": "Phantom test coverage: test_specimen_coverage_report", "shortDescription": {"text": "Phantom test coverage: test_specimen_coverage_report"}, "fullDescription": {"text": "Test function `test_specimen_coverage_report` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "`self._current_env` used but never assigned in __init__", "shortDescription": {"text": "`self._current_env` used but never assigned in __init__"}, "fullDescription": {"text": "Method `evaluate` of class `_DAPDebugger` reads `self._current_env`, 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": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "Missing import: `html` used but not imported", "shortDescription": {"text": "Missing import: `html` used but not imported"}, "fullDescription": {"text": "The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/1054"}, "properties": {"repository": "jsiek/deduce", "repoUrl": "https://github.com/jsiek/deduce", "branch": "main"}, "results": [{"ruleId": "AUC001", "level": "warning", "message": {"text": "[AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks but does not define .repobility/access.yml or equivalent authorization documentation."}, "properties": {"repobilityId": 103422, "scanner": "repobility-access-control", "fingerprint": "f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10", "category": "auth", "severity": "medium", "confidence": 0.92, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "frameworks": ["Django"], "expected_files": [".repobility/access.yml", ".repobility/access.yaml", ".repobility/access.json", ".repobility/authorization.yml"], "correlation_key": "fp|f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10"}}}, {"ruleId": "DKR007", "level": "warning", "message": {"text": "Docker build context has no .dockerignore"}, "properties": {"repobilityId": 103419, "scanner": "repobility-docker", "fingerprint": "c98378cf8c37e4866e89d6ca06a24b7e8c44654aa34e6e4bf1367c4a4c0c5b44", "category": "docker", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Dockerfile exists but repository root has no .dockerignore.", "evidence": {"rule_id": "DKR007", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|c98378cf8c37e4866e89d6ca06a24b7e8c44654aa34e6e4bf1367c4a4c0c5b44"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".dockerignore"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 103418, "scanner": "repobility-docker", "fingerprint": "17936e089be7e3703fc196a9b16c84c1753558e2f2adfa98b523ef6cbadf8649", "category": "docker", "severity": "medium", "confidence": 0.82, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "No USER directive was found in the final runtime stage.", "evidence": {"rule_id": "DKR001", "scanner": "repobility-docker", "final_base": "eecsautograder/ubuntu24:latest", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|17936e089be7e3703fc196a9b16c84c1753558e2f2adfa98b523ef6cbadf8649"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR009", "level": "warning", "message": {"text": "Dockerfile separates apt update from install"}, "properties": {"repobilityId": 103413, "scanner": "repobility-docker", "fingerprint": "b415ad752dbff5fe3df94e147e924f4293cce9b996188af3ef6d497573bfa01d", "category": "docker", "severity": "medium", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Package index update appears without package installation in the same layer.", "evidence": {"rule_id": "DKR009", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|b415ad752dbff5fe3df94e147e924f4293cce9b996188af3ef6d497573bfa01d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 3}}}]}, {"ruleId": "DKR003", "level": "warning", "message": {"text": "Dockerfile base image uses the latest tag"}, "properties": {"repobilityId": 103412, "scanner": "repobility-docker", "fingerprint": "f273ecb0a0e7350f5ca286623cfdcb9cd47efe65ac09737747f6122bcbbddf56", "category": "docker", "severity": "medium", "confidence": 0.94, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Image tag is latest.", "evidence": {"image": "eecsautograder/ubuntu24:latest", "rule_id": "DKR003", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://docs.docker.com/scout/policy/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|f273ecb0a0e7350f5ca286623cfdcb9cd47efe65ac09737747f6122bcbbddf56"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "SEC123", "level": "warning", "message": {"text": "[SEC123] Production stack trace / debug output exposed: Debug mode left on in production exposes stack traces, environment variables, framework internals \u2014 sometimes triggers RCE (Django debug page with arbitrary template eval)."}, "properties": {"repobilityId": 103402, "scanner": "repobility-threat-engine", "fingerprint": "d9762b1f2a45d504277297c1115f273bd67780f4f6f46ab24497725081c3241d", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "debug=True", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC123", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d9762b1f2a45d504277297c1115f273bd67780f4f6f46ab24497725081c3241d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/keywords.py"}, "region": {"startLine": 173}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `collect_public` has cognitive complexity 17 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=4, for=1, if=5, nested_bonus=6, recursion=1."}, "properties": {"repobilityId": 103381, "scanner": "repobility-threat-engine", "fingerprint": "a0905781185de76a545f8b17954cce352336d49f2a341b12c68d1f9bac887196", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 17 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "collect_public", "breakdown": {"if": 5, "for": 1, "elif": 4, "recursion": 1, "nested_bonus": 6}, "complexity": 17, "correlation_key": "fp|a0905781185de76a545f8b17954cce352336d49f2a341b12c68d1f9bac887196"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "abstract_syntax/theorems.py"}, "region": {"startLine": 54}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `_collect_private_proof_names` has cognitive complexity 21 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: continue=1, elif=2, for=1, if=5, nested_bonus=11, recursion=1."}, "properties": {"repobilityId": 103380, "scanner": "repobility-threat-engine", "fingerprint": "72146927a5d21179d44f6c2067a3147dac5e3be2d59d9652051752538a9e8810", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 21 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_collect_private_proof_names", "breakdown": {"if": 5, "for": 1, "elif": 2, "continue": 1, "recursion": 1, "nested_bonus": 11}, "complexity": 21, "correlation_key": "fp|72146927a5d21179d44f6c2067a3147dac5e3be2d59d9652051752538a9e8810"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "abstract_syntax/theorems.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "DEPCUR-NPM", "level": "warning", "message": {"text": "npm package `vscode-languageclient` is 2 major version(s) behind (8.1.0 -> 10.0.0)"}, "properties": {"repobilityId": 103378, "scanner": "repobility-dependency-currency", "fingerprint": "3ab65e33fbb68dbc78fb000af7d7afcbd5684f1e9d3241a1808e617dfd7b0dd5", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "2 major version(s) behind", "signal": "currency", "cwe_ids": [], "package": "vscode-languageclient", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "10.0.0", "correlation_key": "fp|3ab65e33fbb68dbc78fb000af7d7afcbd5684f1e9d3241a1808e617dfd7b0dd5", "current_version": "8.1.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "editor/vscode/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-PY", "level": "warning", "message": {"text": "Python package `flask` is 1 major version(s) behind (2.3.3 -> 3.1.3)"}, "properties": {"repobilityId": 103374, "scanner": "repobility-dependency-currency", "fingerprint": "8f78d394e5ba92340a131f29fd3d05d79272bfde2acb0382826fc69f9148a2c7", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "1 major version(s) behind", "signal": "currency", "cwe_ids": [], "package": "flask", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "3.1.3", "correlation_key": "fp|8f78d394e5ba92340a131f29fd3d05d79272bfde2acb0382826fc69f9148a2c7", "current_version": "2.3.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "live_code_vercel_api/requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103311, "scanner": "repobility-ast-engine", "fingerprint": "fbe05b4fa15d0f3b82ff1661d8095cfaa441e0823db2d7692717429b6da8ae4c", "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|fbe05b4fa15d0f3b82ff1661d8095cfaa441e0823db2d7692717429b6da8ae4c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 3377}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103310, "scanner": "repobility-ast-engine", "fingerprint": "f8da5d62917e1b8c193116d4bddfc992114d8925e94e9d5d04a34a28f71dd2ec", "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|f8da5d62917e1b8c193116d4bddfc992114d8925e94e9d5d04a34a28f71dd2ec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 1963}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103309, "scanner": "repobility-ast-engine", "fingerprint": "9a6a83b3b93419da8b215182f5e7a2081b1e571d198c5d63548e351da3617c17", "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|9a6a83b3b93419da8b215182f5e7a2081b1e571d198c5d63548e351da3617c17"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 1234}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103308, "scanner": "repobility-ast-engine", "fingerprint": "8e8607ab62f8672e07b59396e6642ff2c1fb0361f338658ff3be9e5a968724cc", "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|8e8607ab62f8672e07b59396e6642ff2c1fb0361f338658ff3be9e5a968724cc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 5014}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103307, "scanner": "repobility-ast-engine", "fingerprint": "59de9f4a390959ecb5166ec74ad10da9f17892521a78e4cad1187b623313854e", "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|59de9f4a390959ecb5166ec74ad10da9f17892521a78e4cad1187b623313854e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 4465}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103306, "scanner": "repobility-ast-engine", "fingerprint": "40bd9ff236450863056deaaa36512e51f2a4d0e9f74772cf746477b0709c960b", "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|40bd9ff236450863056deaaa36512e51f2a4d0e9f74772cf746477b0709c960b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 2206}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103305, "scanner": "repobility-ast-engine", "fingerprint": "6357eec1c307e0e20532e1859a27c02b63f757353b2c52c8734ed267163a114b", "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|6357eec1c307e0e20532e1859a27c02b63f757353b2c52c8734ed267163a114b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 992}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103304, "scanner": "repobility-ast-engine", "fingerprint": "fb22912d9c66e9d01bfc0362538344911d328dd4a4185d7757e9c0833119039a", "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|fb22912d9c66e9d01bfc0362538344911d328dd4a4185d7757e9c0833119039a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 4384}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103303, "scanner": "repobility-ast-engine", "fingerprint": "228247faed6a3a906e3274caf92791c679e02cb14fe1ccb152d7f6d0611a4f15", "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|228247faed6a3a906e3274caf92791c679e02cb14fe1ccb152d7f6d0611a4f15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 2928}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103302, "scanner": "repobility-ast-engine", "fingerprint": "c437c882d4f74fefa4aeca2cc3aacda08c2352e9e6748ae6ed327936e30e10fb", "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|c437c882d4f74fefa4aeca2cc3aacda08c2352e9e6748ae6ed327936e30e10fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 2383}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103301, "scanner": "repobility-ast-engine", "fingerprint": "a33423e6685e1fcece5e04b3a116d2f9a10cb36480884db5dd48025b0fdc132a", "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|a33423e6685e1fcece5e04b3a116d2f9a10cb36480884db5dd48025b0fdc132a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 972}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103300, "scanner": "repobility-ast-engine", "fingerprint": "619486b275f027cd9397ac8f5caf58384d8e9c3a6e5fbcb74e83458f1fff5202", "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|619486b275f027cd9397ac8f5caf58384d8e9c3a6e5fbcb74e83458f1fff5202"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/query.py"}, "region": {"startLine": 949}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103299, "scanner": "repobility-ast-engine", "fingerprint": "bab25a8dcd96c94b616c7de294ee157518e7561281f5a439dcdcbb3fadcba34b", "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|bab25a8dcd96c94b616c7de294ee157518e7561281f5a439dcdcbb3fadcba34b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/library.py"}, "region": {"startLine": 435}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103298, "scanner": "repobility-ast-engine", "fingerprint": "2e78ecfaa95aa05d616981381945c47b8d7855b1d1bc173b358b33c0da3515f4", "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|2e78ecfaa95aa05d616981381945c47b8d7855b1d1bc173b358b33c0da3515f4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "live_code_vercel_api/api.py"}, "region": {"startLine": 44}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103297, "scanner": "repobility-ast-engine", "fingerprint": "21367a29d10b1ca796389897ed07327938b7a0bb2553f721557a4b09c7cdc5ee", "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|21367a29d10b1ca796389897ed07327938b7a0bb2553f721557a4b09c7cdc5ee"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test-deduce.py"}, "region": {"startLine": 519}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103296, "scanner": "repobility-ast-engine", "fingerprint": "b923bf426990d77f2ca2a6ed8fac6ce2f1f57cab246b9aaea9039b60820df605", "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|b923bf426990d77f2ca2a6ed8fac6ce2f1f57cab246b9aaea9039b60820df605"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test-deduce.py"}, "region": {"startLine": 505}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103295, "scanner": "repobility-ast-engine", "fingerprint": "e75ebcb4438b76e95b55e423a3309b69b0ed0e70b7c63982835dc98f7cd1cc67", "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|e75ebcb4438b76e95b55e423a3309b69b0ed0e70b7c63982835dc98f7cd1cc67"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test-deduce.py"}, "region": {"startLine": 467}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103294, "scanner": "repobility-ast-engine", "fingerprint": "588fe30a025862bab5469d145d9e43fcf890b2d4f5ab7ed069cc80e5c8ee0c03", "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|588fe30a025862bab5469d145d9e43fcf890b2d4f5ab7ed069cc80e5c8ee0c03"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_types.py"}, "region": {"startLine": 792}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103293, "scanner": "repobility-ast-engine", "fingerprint": "e94d50f7a241c54b046fec8df7f5688fb7bd3bd7354a35c01c958e2ef8f8ffd6", "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|e94d50f7a241c54b046fec8df7f5688fb7bd3bd7354a35c01c958e2ef8f8ffd6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_types.py"}, "region": {"startLine": 1382}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "Mutable default argument in `deduce_directory` (list)"}, "properties": {"repobilityId": 103291, "scanner": "repobility-ast-engine", "fingerprint": "43ce385f94d36acd4832abe652577c7e3a1c070874137cc259045050be177561", "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|43ce385f94d36acd4832abe652577c7e3a1c070874137cc259045050be177561"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deduce.py"}, "region": {"startLine": 124}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "Mutable default argument in `deduce_file` (list)"}, "properties": {"repobilityId": 103290, "scanner": "repobility-ast-engine", "fingerprint": "e3f738ed51e1163ee9e93bdb5ec3137d7d9c646ca561970f0a38ce3dc5b9ebae", "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|e3f738ed51e1163ee9e93bdb5ec3137d7d9c646ca561970f0a38ce3dc5b9ebae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deduce.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103289, "scanner": "repobility-ast-engine", "fingerprint": "caebcb4fcde9e0663f4b083cc602f84ba13e4cf2ee7df6b08e21b780a24b9532", "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|caebcb4fcde9e0663f4b083cc602f84ba13e4cf2ee7df6b08e21b780a24b9532"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_logic.py"}, "region": {"startLine": 371}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103288, "scanner": "repobility-ast-engine", "fingerprint": "8ca7f023656dcdb9d357f1b34469a399c5239e8b9fec911250609da8811f4705", "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|8ca7f023656dcdb9d357f1b34469a399c5239e8b9fec911250609da8811f4705"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_logic.py"}, "region": {"startLine": 727}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103287, "scanner": "repobility-ast-engine", "fingerprint": "b5edc7d000b6af8ea89ba026a77e6abb675595c60a0e304754b39ce7349d1212", "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|b5edc7d000b6af8ea89ba026a77e6abb675595c60a0e304754b39ce7349d1212"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_logic.py"}, "region": {"startLine": 468}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103286, "scanner": "repobility-ast-engine", "fingerprint": "f02aa3f5d97dcdad063ab9d74f8287b4931dd6942f79dedb0cd7d3a6ab18143c", "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|f02aa3f5d97dcdad063ab9d74f8287b4931dd6942f79dedb0cd7d3a6ab18143c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_logic.py"}, "region": {"startLine": 462}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103285, "scanner": "repobility-ast-engine", "fingerprint": "16f90e1f8d843eb56390d1b5c29cb3be293ebf5b55065349034e14e04bc34731", "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|16f90e1f8d843eb56390d1b5c29cb3be293ebf5b55065349034e14e04bc34731"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_logic.py"}, "region": {"startLine": 444}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 103284, "scanner": "repobility-ast-engine", "fingerprint": "ef7aa87c9fa95f9d4baa383a1d0ed3cae7d38ba893c6574267766593af195cbc", "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|ef7aa87c9fa95f9d4baa383a1d0ed3cae7d38ba893c6574267766593af195cbc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_logic.py"}, "region": {"startLine": 649}}}]}, {"ruleId": "GHSA-68rp-wp8r-4726", "level": "note", "message": {"text": "flask: GHSA-68rp-wp8r-4726"}, "properties": {"repobilityId": 103421, "scanner": "osv-scanner", "fingerprint": "09d78c6da2fbd26c6fb5d723dfb325fa420ff4358894ced418a4e659d34895e1", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-27205"], "package": "flask", "rule_id": "GHSA-68rp-wp8r-4726", "scanner": "osv-scanner", "correlation_key": "vuln|flask|CVE-2026-27205|token"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "live_code_vercel_api/requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR011", "level": "note", "message": {"text": "Dockerfile installs recommended OS packages"}, "properties": {"repobilityId": 103417, "scanner": "repobility-docker", "fingerprint": "bfee82d232e7f5892ae50abb67dbf0e194f5a08dbc1465382a169747ed471868", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "apt install appears without --no-install-recommends.", "evidence": {"rule_id": "DKR011", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|bfee82d232e7f5892ae50abb67dbf0e194f5a08dbc1465382a169747ed471868"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "DKR011", "level": "note", "message": {"text": "Dockerfile installs recommended OS packages"}, "properties": {"repobilityId": 103416, "scanner": "repobility-docker", "fingerprint": "baf9910816b7fdfa0c6cbd28c95cecdc3896c4281b4e383a862973686e9a21c3", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "apt install appears without --no-install-recommends.", "evidence": {"rule_id": "DKR011", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|baf9910816b7fdfa0c6cbd28c95cecdc3896c4281b4e383a862973686e9a21c3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 9}}}]}, {"ruleId": "DKR011", "level": "note", "message": {"text": "Dockerfile installs recommended OS packages"}, "properties": {"repobilityId": 103415, "scanner": "repobility-docker", "fingerprint": "9a2f7c4368b86c4dc604fecac664691859f22ae38ab9024191eec3fea40a9024", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "apt install appears without --no-install-recommends.", "evidence": {"rule_id": "DKR011", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|9a2f7c4368b86c4dc604fecac664691859f22ae38ab9024191eec3fea40a9024"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 7}}}]}, {"ruleId": "DKR011", "level": "note", "message": {"text": "Dockerfile installs recommended OS packages"}, "properties": {"repobilityId": 103414, "scanner": "repobility-docker", "fingerprint": "55618673f2c850cc53ab224867b9a2af9fb0c7605a5313e99edae0bda887cea3", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "apt install appears without --no-install-recommends.", "evidence": {"rule_id": "DKR011", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|55618673f2c850cc53ab224867b9a2af9fb0c7605a5313e99edae0bda887cea3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 6}}}]}, {"ruleId": "SEC124", "level": "note", "message": {"text": "[SEC124] TOCTOU file access (os.access then open): Check-then-use file pattern (access/exists then open) lets an attacker swap the file between check and use (symlink attack). `mktemp` is deprecated for the same reason."}, "properties": {"repobilityId": 103406, "scanner": "repobility-threat-engine", "fingerprint": "cea0553448340fd1d806fb000a5d07cefa40241f9f22b392516e023613e7c2fe", "category": "race_condition", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "os.path.isfile(pf_file) : os.remove(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC124", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|cea0553448340fd1d806fb000a5d07cefa40241f9f22b392516e023613e7c2fe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "live_code_vercel_api/api.py"}, "region": {"startLine": 53}}}]}, {"ruleId": "SEC006", "level": "note", "message": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "properties": {"repobilityId": 103395, "scanner": "repobility-threat-engine", "fingerprint": "bc5c21f3c5d28afbf07f1bd34c57b82aabcd0e05004bdcd33e5b1654cbed0a79", "category": "injection", "severity": "low", "confidence": 0.4, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "evidence": {"match": ".innerHTML = p", "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "rule_id": "SEC006", "scanner": "repobility-threat-engine", "confidence": 0.4, "correlation_key": "code|injection|gh_pages/js/sandbox.js|209|sec006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/js/sandbox.js"}, "region": {"startLine": 209}}}]}, {"ruleId": "SEC006", "level": "note", "message": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "properties": {"repobilityId": 103394, "scanner": "repobility-threat-engine", "fingerprint": "057c234b322f6f788c345249b097dd3b45dd3046f3b4625f7c7fd119dfb2e9e1", "category": "injection", "severity": "low", "confidence": 0.4, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "evidence": {"match": ".innerHTML = c", "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "rule_id": "SEC006", "scanner": "repobility-threat-engine", "confidence": 0.4, "correlation_key": "code|injection|gh_pages/js/codeutils.js|126|sec006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/js/codeUtils.js"}, "region": {"startLine": 126}}}]}, {"ruleId": "SEC132", "level": "note", "message": {"text": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template literals since ES6). Not a vulnerability on its own, but a style signature of cross-language AI rewrites \u2014 the model wrote idiomatic Java/C# and then translated mechanically. When this style appears in only *some* files of a repo, it's a strong indicator of an AI-driven rewrite that needs a human review p"}, "properties": {"repobilityId": 103388, "scanner": "repobility-threat-engine", "fingerprint": "a79a74d5876a40ddcc3fc2fda9b72723132795d74527c5563b5f9822b3b7f212", "category": "quality", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "\"\\n\\n<worked_examples>\\n\"\n        + worked\n        + \"\\n</worked_examples>\\n\\n<tactics_cheatsheet>\\n", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC132", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|a79a74d5876a40ddcc3fc2fda9b72723132795d74527c5563b5f9822b3b7f212"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/prompt.py"}, "region": {"startLine": 140}}}]}, {"ruleId": "SEC132", "level": "note", "message": {"text": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template literals since ES6). Not a vulnerability on its own, but a style signature of cross-language AI rewrites \u2014 the model wrote idiomatic Java/C# and then translated mechanically. When this style appears in only *some* files of a repo, it's a strong indicator of an AI-driven rewrite that needs a human review p"}, "properties": {"repobilityId": 103387, "scanner": "repobility-threat-engine", "fingerprint": "ba30c976b467d36717aaec4723e9fe8d54f0dfc359b6ba3c97c1a5c016fc5be5", "category": "quality", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "\"\\nThe pattern\\n\\t\" + str(case.pattern.term)\n                  + \"", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC132", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ba30c976b467d36717aaec4723e9fe8d54f0dfc359b6ba3c97c1a5c016fc5be5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_induction.py"}, "region": {"startLine": 151}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `_map_children` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, else=1, for=2, if=2, nested_bonus=3."}, "properties": {"repobilityId": 103379, "scanner": "repobility-threat-engine", "fingerprint": "2be6b4793c8b0085e393ea7f10d9b9cad5e2aab7ea8b6f5f14217a5e37f19b89", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 9 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_map_children", "breakdown": {"if": 2, "for": 2, "elif": 1, "else": 1, "nested_bonus": 3}, "complexity": 9, "correlation_key": "fp|2be6b4793c8b0085e393ea7f10d9b9cad5e2aab7ea8b6f5f14217a5e37f19b89"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "abstract_syntax/core.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `lark` is minor version(s) behind (1.2.2 -> 1.3.1)"}, "properties": {"repobilityId": 103377, "scanner": "repobility-dependency-currency", "fingerprint": "65a584234333d5f71c680174f0d85479664eb8cb7d5bb3056faa19e3e36992c6", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "lark", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.3.1", "correlation_key": "fp|65a584234333d5f71c680174f0d85479664eb8cb7d5bb3056faa19e3e36992c6", "current_version": "1.2.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/requirements.txt"}, "region": {"startLine": 2}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `markdown` is minor version(s) behind (3.7 -> 3.10.2)"}, "properties": {"repobilityId": 103376, "scanner": "repobility-dependency-currency", "fingerprint": "8b868e81281c7a59d2035a01cef28620ab66e4fcc9b486306c86773ab947f0c8", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "markdown", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "3.10.2", "correlation_key": "fp|8b868e81281c7a59d2035a01cef28620ab66e4fcc9b486306c86773ab947f0c8", "current_version": "3.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `lark` is minor version(s) behind (1.2.2 -> 1.3.1)"}, "properties": {"repobilityId": 103375, "scanner": "repobility-dependency-currency", "fingerprint": "bccf59a712fda332815786f111969669988c4867a13171916d2c3704a5c970b7", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "lark", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.3.1", "correlation_key": "fp|bccf59a712fda332815786f111969669988c4867a13171916d2c3704a5c970b7", "current_version": "1.2.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "live_code_vercel_api/requirements.txt"}, "region": {"startLine": 2}}}]}, {"ruleId": "DEPCUR-PY", "level": "note", "message": {"text": "Python package `lark` is minor version(s) behind (1.2.2 -> 1.3.1)"}, "properties": {"repobilityId": 103373, "scanner": "repobility-dependency-currency", "fingerprint": "3cc8f5aeb49501a50eb3c5e8eab2272a38cfbee446b119eebd8787551b1886c6", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "lark", "scanner": "repobility-dependency-currency", "ecosystem": "pypi", "languages": ["python"], "latest_version": "1.3.1", "correlation_key": "fp|3cc8f5aeb49501a50eb3c5e8eab2272a38cfbee446b119eebd8787551b1886c6", "current_version": "1.2.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 103283, "scanner": "repobility-ai-code-hygiene", "fingerprint": "15068958b59433925c743bee8275f2720414a5720992ad15b9439be737766216", "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": "tools/claude_fill_hole/anthropic_backend.py", "duplicate_line": 13, "correlation_key": "fp|15068958b59433925c743bee8275f2720414a5720992ad15b9439be737766216"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/openai_backend.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 103282, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2c7c0bc745a238c590a6b5ef97450141a8857375d74bd3196c9c9400daafa778", "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": "test/compile/run_headers.py", "duplicate_line": 84, "correlation_key": "fp|2c7c0bc745a238c590a6b5ef97450141a8857375d74bd3196c9c9400daafa778"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/compile/run_lower.py"}, "region": {"startLine": 55}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 103281, "scanner": "repobility-ai-code-hygiene", "fingerprint": "c7828c3c62d7c110f6f2e769a97dea4726b7d1fdaf30962def80e5d4faa8c498", "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": "lsp/lsp_server.py", "duplicate_line": 29, "correlation_key": "fp|c7828c3c62d7c110f6f2e769a97dea4726b7d1fdaf30962def80e5d4faa8c498"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/mcp_server.py"}, "region": {"startLine": 36}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 103280, "scanner": "repobility-ai-code-hygiene", "fingerprint": "bbc45d96a7d96f40a55932d1998af367bee729b2b579c35cb09a5b55e65ebe51", "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": "gh_pages/js/script.js", "duplicate_line": 14, "correlation_key": "fp|bbc45d96a7d96f40a55932d1998af367bee729b2b579c35cb09a5b55e65ebe51"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/lib_generate.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 103411, "scanner": "repobility-threat-engine", "fingerprint": "c706220060f774a81511433961edac30305ad3da698cb8133a26eaf6c48e2f6b", "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-dataclass-no-fields", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348046+00:00", "triaged_in_corpus": 10, "observations_count": 92448, "ai_coder_pattern_id": 144}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c706220060f774a81511433961edac30305ad3da698cb8133a26eaf6c48e2f6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/schema.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 103410, "scanner": "repobility-threat-engine", "fingerprint": "4cf7f0b80f46e7a12c82e746b20e0a083da5c62d1e591de6fcb6c93a40310030", "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-dataclass-no-fields", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348046+00:00", "triaged_in_corpus": 10, "observations_count": 92448, "ai_coder_pattern_id": 144}, "scanner": "repobility-threat-engine", "correlation_key": "fp|4cf7f0b80f46e7a12c82e746b20e0a083da5c62d1e591de6fcb6c93a40310030"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/agent.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED069", "level": "none", "message": {"text": "[MINED069] Debug True Prod: Django/Flask DEBUG=True or app.debug=True in non-test files."}, "properties": {"repobilityId": 103405, "scanner": "repobility-threat-engine", "fingerprint": "cc07f040e102dd324d70f6b9508afce9f96f11f330aff7d1b1f07bc5b9225c15", "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": "debug-true-prod", "owasp": "A05:2021", "cwe_ids": ["CWE-489"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348063+00:00", "triaged_in_corpus": 12, "observations_count": 37393, "ai_coder_pattern_id": 17}, "scanner": "repobility-threat-engine", "correlation_key": "fp|cc07f040e102dd324d70f6b9508afce9f96f11f330aff7d1b1f07bc5b9225c15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/keywords.py"}, "region": {"startLine": 173}}}]}, {"ruleId": "MINED049", "level": "none", "message": {"text": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout."}, "properties": {"repobilityId": 103404, "scanner": "repobility-threat-engine", "fingerprint": "be04b73d6f29daa3cc1c939821a99b222aa3ea8171a1d5627ef15286472b44ac", "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": "print-pii", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348015+00:00", "triaged_in_corpus": 12, "observations_count": 676566, "ai_coder_pattern_id": 26}, "scanner": "repobility-threat-engine", "correlation_key": "fp|be04b73d6f29daa3cc1c939821a99b222aa3ea8171a1d5627ef15286472b44ac"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/examples/run_benchmark.py"}, "region": {"startLine": 209}}}]}, {"ruleId": "MINED049", "level": "none", "message": {"text": "[MINED049] Print Pii: Logging password/token/email/ssn directly to stdout."}, "properties": {"repobilityId": 103403, "scanner": "repobility-threat-engine", "fingerprint": "199fd544a5f18bb2177eecbb965e5274092b00739b225ac2dbd3d26467de7fa9", "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": "print-pii", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348015+00:00", "triaged_in_corpus": 12, "observations_count": 676566, "ai_coder_pattern_id": 26}, "scanner": "repobility-threat-engine", "correlation_key": "fp|199fd544a5f18bb2177eecbb965e5274092b00739b225ac2dbd3d26467de7fa9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/keywords.py"}, "region": {"startLine": 186}}}]}, {"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": 103401, "scanner": "repobility-threat-engine", "fingerprint": "142b24c7712b46c71bb635b748881da07d8bfabcc8fc8065132d69b11a3d6b74", "category": "credential_exposure", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Environment variable or config lookup (credentials loaded safely)", "evidence": {"match": "print(f\"error: {API_KEY_ENV} not set in environment\", file=sys.stderr)", "reason": "Environment variable or config lookup (credentials loaded safely)", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "secret|token|20|print f error: api_key_env not set in environment file sys.stderr"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/examples/run_benchmark.py"}, "region": {"startLine": 209}}}]}, {"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": 103400, "scanner": "repobility-threat-engine", "fingerprint": "c2c50c4ff594dfc1fd3a0924e44796c2604c8b3796b5b4bd27c79f48f7c18025", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Log line appears to mention secret metadata or a redacted value rather than printing the secret", "evidence": {"match": "print(\"ERROR: \" + tok + \" from the Lark file is missing from the known_tokens in the the keywords.py", "reason": "Log line appears to mention secret metadata or a redacted value rather than printing the secret", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.15, "correlation_key": "secret|token|18|print error: + tok + from the lark file is missing from the known_tokens in the the keywords.py"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/keywords.py"}, "region": {"startLine": 186}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed."}, "properties": {"repobilityId": 103399, "scanner": "repobility-threat-engine", "fingerprint": "ea4a10354dc1d0d3d67e132e478a77e778a2268a1b35348550c3c403caee1c4a", "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": "js-console-log-prod", "owasp": null, "cwe_ids": ["CWE-532"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348003+00:00", "triaged_in_corpus": 10, "observations_count": 1940833, "ai_coder_pattern_id": 102}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ea4a10354dc1d0d3d67e132e478a77e778a2268a1b35348550c3c403caee1c4a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/js/codeUtils.js"}, "region": {"startLine": 143}}}]}, {"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": 103386, "scanner": "repobility-threat-engine", "fingerprint": "4f09daaa566253e2f43213e3de0f3e66b477708dd66ea662eec8ca2f7dbded67", "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|4f09daaa566253e2f43213e3de0f3e66b477708dd66ea662eec8ca2f7dbded67"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "compiler/prune.py"}, "region": {"startLine": 109}}}]}, {"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": 103385, "scanner": "repobility-threat-engine", "fingerprint": "5f6de9c18816e1c0b392a0aef0e861d26e44ddf89bce3a66d6f5935e6d4b25a2", "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|5f6de9c18816e1c0b392a0aef0e861d26e44ddf89bce3a66d6f5935e6d4b25a2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_induction.py"}, "region": {"startLine": 162}}}]}, {"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": 103384, "scanner": "repobility-threat-engine", "fingerprint": "a8af5e65e54b7111236d6e560ca5de8f00eb5e07db38f1c90f2fda6118ebaad0", "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|a8af5e65e54b7111236d6e560ca5de8f00eb5e07db38f1c90f2fda6118ebaad0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_cache.py"}, "region": {"startLine": 126}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 30 more): Same pattern found in 30 additional files. Review if needed."}, "properties": {"repobilityId": 103382, "scanner": "repobility-threat-engine", "fingerprint": "b872aa4605f062815789f6fc0e3591d39a205e6b7b97c1ecfdeb177ef2f216fe", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 30 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "_map_children", "breakdown": {"if": 2, "for": 2, "elif": 1, "else": 1, "nested_bonus": 3}, "aggregated": true, "complexity": 9, "correlation_key": "fp|b872aa4605f062815789f6fc0e3591d39a205e6b7b97c1ecfdeb177ef2f216fe", "aggregated_count": 30}}}, {"ruleId": "PYSEC-2026-89", "level": "error", "message": {"text": "markdown: PYSEC-2026-89"}, "properties": {"repobilityId": 103420, "scanner": "osv-scanner", "fingerprint": "6ba7f65cae5195733770c16bb9dfd2bacc8aae31f0744fcf411346d53c31f5b0", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "", "aliases": ["CVE-2025-69534", "GHSA-5wmx-573v-2qwq"], "package": "markdown", "rule_id": "PYSEC-2026-89", "scanner": "osv-scanner", "correlation_key": "vuln|markdown|CVE-2025-69534|gh_pages/requirements.txt", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-5wmx-573v-2qwq", "PYSEC-2026-89"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["43f9367875c9b162ad8ca3985a964f67c4fcf70412e483d15e4e36ccdddaa279", "6ba7f65cae5195733770c16bb9dfd2bacc8aae31f0744fcf411346d53c31f5b0"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/requirements.txt"}, "region": {"startLine": 1}}}]}, {"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": 103409, "scanner": "repobility-threat-engine", "fingerprint": "9cb346568f65ed2ca58d94f849e9fcdacfd29f131e51e60e712ad112944ab521", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "payload.update(fields)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|9cb346568f65ed2ca58d94f849e9fcdacfd29f131e51e60e712ad112944ab521"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/schema.py"}, "region": {"startLine": 251}}}]}, {"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": 103408, "scanner": "repobility-threat-engine", "fingerprint": "bb555b7acad5780b78c805e723b77d002f5d5f3a835cf993a43de5766b88b301", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "module.__dict__.update(namespace)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|bb555b7acad5780b78c805e723b77d002f5d5f3a835cf993a43de5766b88b301"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "proof_checker.py"}, "region": {"startLine": 70}}}]}, {"ruleId": "SEC135", "level": "error", "message": {"text": "[SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint generated by an AI agent without an auth decorator or middleware. The number-one production-incident pattern we see in AI-generated SaaS code: the AI builds the route, builds the handler, and forgets to wire the auth check that the rest of the codebase uses. CWE-862 (missing authorization). High-severity because the route is fully functional, just unprotected \u2014 attackers can call it directly."}, "properties": {"repobilityId": 103407, "scanner": "repobility-threat-engine", "fingerprint": "ca98f50ebc2dfaf2d03c630f2c7245a4e9fd10b6448f74a0ec485d39a15b32d2", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@app.route('/deduce', methods=['POST'])", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ca98f50ebc2dfaf2d03c630f2c7245a4e9fd10b6448f74a0ec485d39a15b32d2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "live_code_vercel_api/api.py"}, "region": {"startLine": 19}}}]}, {"ruleId": "SEC083", "level": "error", "message": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "properties": {"repobilityId": 103398, "scanner": "repobility-threat-engine", "fingerprint": "4a67f20ddac794b33624b39007c2b4b82c532a279e285fb8e63c42b93d7a1185", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(getRegexSymbols", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|4a67f20ddac794b33624b39007c2b4b82c532a279e285fb8e63c42b93d7a1185"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/js/codeUtils.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 103397, "scanner": "repobility-threat-engine", "fingerprint": "785966694c3cd6f8f0104aad39886b76bf170eb715ec4268a2a7b52aca01c548", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".innerHTML = `X: ${pointerRelativeXpos}<br>W: ${(Math.max(containerMin, pointerRelativeXpos - 8)) -", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|785966694c3cd6f8f0104aad39886b76bf170eb715ec4268a2a7b52aca01c548"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/js/sandbox.js"}, "region": {"startLine": 275}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 103396, "scanner": "repobility-threat-engine", "fingerprint": "1fbf93c9421f5b866884c3a373152da067c160f734016fa785086e9e3bc2c838", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "reduce((a, s) => `\\\\b${s}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|1fbf93c9421f5b866884c3a373152da067c160f734016fa785086e9e3bc2c838"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/js/codeUtils.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "MINED021", "level": "error", "message": {"text": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape."}, "properties": {"repobilityId": 103393, "scanner": "repobility-threat-engine", "fingerprint": "ed5809f8f32dbe68420ae737376bf7860c9ebfd9b6e0927ddf993b22e752f9a1", "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": "path-traversal-os-join", "owasp": "A01:2021", "cwe_ids": ["CWE-22"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347947+00:00", "triaged_in_corpus": 15, "observations_count": 45678, "ai_coder_pattern_id": 31}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ed5809f8f32dbe68420ae737376bf7860c9ebfd9b6e0927ddf993b22e752f9a1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deduce.py"}, "region": {"startLine": 156}}}]}, {"ruleId": "SEC035", "level": "error", "message": {"text": "[SEC035] Unbounded Resource Allocation \u2014 DoS risk: Allocating resources (buffers, recursion stack, large ranges) based on user input without an upper bound. Attackers send `size=10000000` to exhaust memory, or trigger expensive computation. CWE-770/400. Examples: CVE-2023-44487 (HTTP/2 Rapid Reset), countless YAML/XML billion-laughs variants."}, "properties": {"repobilityId": 103392, "scanner": "repobility-threat-engine", "fingerprint": "7c4e0e137980669347d1372f65ab943b35b5e17b30be374f175c5754238ac107", "category": "resource_exhaustion", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "sys.setrecursionlimit(10000)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC035", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|7c4e0e137980669347d1372f65ab943b35b5e17b30be374f175c5754238ac107"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/claude_fill_hole/examples/run_benchmark.py"}, "region": {"startLine": 53}}}]}, {"ruleId": "SEC035", "level": "error", "message": {"text": "[SEC035] Unbounded Resource Allocation \u2014 DoS risk: Allocating resources (buffers, recursion stack, large ranges) based on user input without an upper bound. Attackers send `size=10000000` to exhaust memory, or trigger expensive computation. CWE-770/400. Examples: CVE-2023-44487 (HTTP/2 Rapid Reset), countless YAML/XML billion-laughs variants."}, "properties": {"repobilityId": 103391, "scanner": "repobility-threat-engine", "fingerprint": "8d00659a9cb160b151abe21daaaf9b4df9914bb4f1a3af6fc0c00cbc784f1daf", "category": "resource_exhaustion", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "sys.setrecursionlimit(10000)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC035", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|8d00659a9cb160b151abe21daaaf9b4df9914bb4f1a3af6fc0c00cbc784f1daf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/benchmark.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "SEC035", "level": "error", "message": {"text": "[SEC035] Unbounded Resource Allocation \u2014 DoS risk: Allocating resources (buffers, recursion stack, large ranges) based on user input without an upper bound. Attackers send `size=10000000` to exhaust memory, or trigger expensive computation. CWE-770/400. Examples: CVE-2023-44487 (HTTP/2 Rapid Reset), countless YAML/XML billion-laughs variants."}, "properties": {"repobilityId": 103390, "scanner": "repobility-threat-engine", "fingerprint": "165d7fee08d59fc5c6c5afeafe4ca99d5e034eddb864e679c50c09ca956c7340", "category": "resource_exhaustion", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "sys.setrecursionlimit(10000)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC035", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|165d7fee08d59fc5c6c5afeafe4ca99d5e034eddb864e679c50c09ca956c7340"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deduce.py"}, "region": {"startLine": 257}}}]}, {"ruleId": "SEC013", "level": "error", "message": {"text": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files."}, "properties": {"repobilityId": 103389, "scanner": "repobility-threat-engine", "fingerprint": "8e737881d5e691be82abb9ce6943c27f65474ded0a41789cd86b9d51a99df604", "category": "path_traversal", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "User-controlled input detected in file path construction", "evidence": {"match": "os.path.join(os.getcwd(), sys.argv", "reason": "User-controlled input detected in file path construction", "rule_id": "SEC013", "scanner": "repobility-threat-engine", "confidence": 0.8, "correlation_key": "code|path_traversal|deduce.py|154|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "deduce.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": 103383, "scanner": "repobility-threat-engine", "fingerprint": "8ca711a8357a37b4025c721ffcd424f8580cf09422881feb52eec1cf88c1f442", "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|8ca711a8357a37b4025c721ffcd424f8580cf09422881feb52eec1cf88c1f442"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checker_cache.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/setup-python` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 103372, "scanner": "repobility-supply-chain", "fingerprint": "640391983f1d4bd81938e100f415c82e68af654f24f571dad0e955b4d84b0940", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|640391983f1d4bd81938e100f415c82e68af654f24f571dad0e955b4d84b0940"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test_deduce.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 103371, "scanner": "repobility-supply-chain", "fingerprint": "ed30205a12cb6654785ddeb976966bbcd31bc6705d42e8d4d4bad83f8590c30f", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ed30205a12cb6654785ddeb976966bbcd31bc6705d42e8d4d4bad83f8590c30f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test_deduce.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/setup-python` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 103370, "scanner": "repobility-supply-chain", "fingerprint": "f14b4fa6097b9e68bb6af1ed86a2280fd72feb820efecafc0ef33913cbb46eee", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f14b4fa6097b9e68bb6af1ed86a2280fd72feb820efecafc0ef33913cbb46eee"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test_deduce.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 103369, "scanner": "repobility-supply-chain", "fingerprint": "c01a212c2e118a5d3a2c7790839bde834c293402f49ecfff2707b0283a4a0fec", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c01a212c2e118a5d3a2c7790839bde834c293402f49ecfff2707b0283a4a0fec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test_deduce.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/deploy-pages` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 103368, "scanner": "repobility-supply-chain", "fingerprint": "5df02225a1d346b416eff159b2b3a35fab4bce9bcdaa6c9e493e131ab75a9172", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|5df02225a1d346b416eff159b2b3a35fab4bce9bcdaa6c9e493e131ab75a9172"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/static.yml"}, "region": {"startLine": 94}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/upload-pages-artifact` pinned to mutable ref `@v3`"}, "properties": {"repobilityId": 103367, "scanner": "repobility-supply-chain", "fingerprint": "04ccedda18a8e3677fddf984c94418aa688554e5899ed1fab875e1e5e2433360", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|04ccedda18a8e3677fddf984c94418aa688554e5899ed1fab875e1e5e2433360"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/static.yml"}, "region": {"startLine": 86}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/configure-pages` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 103366, "scanner": "repobility-supply-chain", "fingerprint": "f2b95b61d61a5b98425bca7f6ac528628c3763dc28a9f82ee5f64d23a2f4727f", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f2b95b61d61a5b98425bca7f6ac528628c3763dc28a9f82ee5f64d23a2f4727f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/static.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/setup-python` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 103365, "scanner": "repobility-supply-chain", "fingerprint": "a43c471d0713d8b41537e26b4680a7daa3d3727b0ef9c05af45116254532a3ad", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|a43c471d0713d8b41537e26b4680a7daa3d3727b0ef9c05af45116254532a3ad"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/static.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v4`"}, "properties": {"repobilityId": 103364, "scanner": "repobility-supply-chain", "fingerprint": "a7ff976376de0caa9aec947add3716ac5dcc2abe209a79d089701281f729a88b", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|a7ff976376de0caa9aec947add3716ac5dcc2abe209a79d089701281f729a88b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/static.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `eecsautograder/ubuntu24:latest` not pinned by digest"}, "properties": {"repobilityId": 103363, "scanner": "repobility-supply-chain", "fingerprint": "4269065eb6a9d72bb4e943443d08778a0096bd991b18ef154f88c1c29a7ef77c", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "docker-from-unpinned", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["dockerfile"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|4269065eb6a9d72bb4e943443d08778a0096bd991b18ef154f88c1c29a7ef77c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "autograder_docker/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_specimen_coverage_report"}, "properties": {"repobilityId": 103360, "scanner": "repobility-ast-engine", "fingerprint": "1c68e112e06f75056bcf711a003b3ff5d4082a44829742bd98ecd9e88324ef69", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|1c68e112e06f75056bcf711a003b3ff5d4082a44829742bd98ecd9e88324ef69"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_ast_invariants.py"}, "region": {"startLine": 843}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_issue_586_env_method_parameters_are_annotated"}, "properties": {"repobilityId": 103359, "scanner": "repobility-ast-engine", "fingerprint": "07fa830b4315251a148ecfa0a16244af09fa832c4139b0265bff66bf02338425", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|07fa830b4315251a148ecfa0a16244af09fa832c4139b0265bff66bf02338425"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_abstract_syntax_annotations.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_issue_586_abstract_syntax_function_parameters_are_annotated"}, "properties": {"repobilityId": 103358, "scanner": "repobility-ast-engine", "fingerprint": "1618940bfa3323ad18a7ba6738925e5f7426ae1636b1af51c0f6729488a269c7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|1618940bfa3323ad18a7ba6738925e5f7426ae1636b1af51c0f6729488a269c7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_abstract_syntax_annotations.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_issue_587_helper_parameters_are_annotated"}, "properties": {"repobilityId": 103357, "scanner": "repobility-ast-engine", "fingerprint": "dadbcd28185a3ec46194686039ced4e7eb48ff1e86418b5d8f7accc7ab63389f", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|dadbcd28185a3ec46194686039ced4e7eb48ff1e86418b5d8f7accc7ab63389f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_issue_587_annotations.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_issue_587_env_method_parameters_are_annotated"}, "properties": {"repobilityId": 103356, "scanner": "repobility-ast-engine", "fingerprint": "804d263102922c27b980206366632ab0f10494f4488c4bdba4e62d4c2ac7ace1", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|804d263102922c27b980206366632ab0f10494f4488c4bdba4e62d4c2ac7ace1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_issue_587_annotations.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_dub_inc_symbolic_peels_structurally"}, "properties": {"repobilityId": 103355, "scanner": "repobility-ast-engine", "fingerprint": "67625c401986fac0d2d06e92984336a3b32f0e5f509bf2f5843476791e8e3416", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|67625c401986fac0d2d06e92984336a3b32f0e5f509bf2f5843476791e8e3416"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_array_get_index_shift.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_inc_dub_symbolic_falls_back_to_dub_call"}, "properties": {"repobilityId": 103354, "scanner": "repobility-ast-engine", "fingerprint": "3fdb68400b325dd348ead6b2f1c912c3c57d0d3c5a5a64d2951d106a2f6633fc", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3fdb68400b325dd348ead6b2f1c912c3c57d0d3c5a5a64d2951d106a2f6633fc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_array_get_index_shift.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_issue_585_helper_parameters_are_annotated"}, "properties": {"repobilityId": 103353, "scanner": "repobility-ast-engine", "fingerprint": "626c586315e8d43ba830e2dfaadbfcaca8d56cc605ed78775b0dbf4fe0c1bd0e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|626c586315e8d43ba830e2dfaadbfcaca8d56cc605ed78775b0dbf4fe0c1bd0e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_issue_585_annotations.py"}, "region": {"startLine": 40}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_issue_585_statement_method_parameters_are_annotated"}, "properties": {"repobilityId": 103352, "scanner": "repobility-ast-engine", "fingerprint": "3aa526ca957741c0d2adf09d9896d73dbff762e012c0ed1bf880884f74c193c2", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3aa526ca957741c0d2adf09d9896d73dbff762e012c0ed1bf880884f74c193c2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/unit/test_issue_585_annotations.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_completion_candidate_is_frozen"}, "properties": {"repobilityId": 103351, "scanner": "repobility-ast-engine", "fingerprint": "557d1bff5969e01fcc6015261de0f1111993c28d6a6f696f033e5d2339d41186", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|557d1bff5969e01fcc6015261de0f1111993c28d6a6f696f033e5d2339d41186"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_completion.py"}, "region": {"startLine": 197}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_validate_proof_at_signature"}, "properties": {"repobilityId": 103350, "scanner": "repobility-ast-engine", "fingerprint": "55cc2f17210c7338c69c32e46501f7054f2570bb889d63a13b4e875aa0b30d6c", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|55cc2f17210c7338c69c32e46501f7054f2570bb889d63a13b4e875aa0b30d6c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 288}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_hole_context_at_signature"}, "properties": {"repobilityId": 103349, "scanner": "repobility-ast-engine", "fingerprint": "a25ac4d4956b94165934957385a876f781a4efd817d6430bc7de794ae0ebb0b6", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|a25ac4d4956b94165934957385a876f781a4efd817d6430bc7de794ae0ebb0b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 273}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_eliminable_vars_at_signature"}, "properties": {"repobilityId": 103348, "scanner": "repobility-ast-engine", "fingerprint": "858e23cc2d70afceeaa956a8f6bde56689ee00edcac9a9dc6c7a84e44b9dd492", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|858e23cc2d70afceeaa956a8f6bde56689ee00edcac9a9dc6c7a84e44b9dd492"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 265}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_eliminate_at_signature"}, "properties": {"repobilityId": 103347, "scanner": "repobility-ast-engine", "fingerprint": "d1c3de38c22f286b7fe5ab2b8a745072baca3172d7e548107a5684ac0e95b164", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d1c3de38c22f286b7fe5ab2b8a745072baca3172d7e548107a5684ac0e95b164"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 257}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_induction_skeleton_at_signature"}, "properties": {"repobilityId": 103346, "scanner": "repobility-ast-engine", "fingerprint": "aefd5a8c8c12c7bd8a33ab887fd024ceedb18cc4beec01c9ee72823427ec7025", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|aefd5a8c8c12c7bd8a33ab887fd024ceedb18cc4beec01c9ee72823427ec7025"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 249}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_splittable_vars_at_signature"}, "properties": {"repobilityId": 103345, "scanner": "repobility-ast-engine", "fingerprint": "77dcafaaddcb2576e25f747e8666cee1aab6cc1b582785239acf6cb4b0ac9457", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|77dcafaaddcb2576e25f747e8666cee1aab6cc1b582785239acf6cb4b0ac9457"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 241}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_case_split_at_signature"}, "properties": {"repobilityId": 103344, "scanner": "repobility-ast-engine", "fingerprint": "9c95b073f3e38a4050925624c4caa4d957ecaa86f4bc7ab3aa7fa1f4f9958ac0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9c95b073f3e38a4050925624c4caa4d957ecaa86f4bc7ab3aa7fa1f4f9958ac0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 233}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_refine_at_signature"}, "properties": {"repobilityId": 103343, "scanner": "repobility-ast-engine", "fingerprint": "acbca6495e2d26f5b26a127e4d35b9df53aac263ac971026a56b12eb3e55672e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|acbca6495e2d26f5b26a127e4d35b9df53aac263ac971026a56b12eb3e55672e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 225}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_list_symbols_signature"}, "properties": {"repobilityId": 103342, "scanner": "repobility-ast-engine", "fingerprint": "e0b6f4ca331c77c46aadb314e7a3e557a9aca9aff44a3e57fb7237c77c906f30", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e0b6f4ca331c77c46aadb314e7a3e557a9aca9aff44a3e57fb7237c77c906f30"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 219}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_definition_of_signature"}, "properties": {"repobilityId": 103341, "scanner": "repobility-ast-engine", "fingerprint": "46cfd1771f95857d96e0aa5797fe7bb7882d0d7d995461f434ea696b2427b9de", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|46cfd1771f95857d96e0aa5797fe7bb7882d0d7d995461f434ea696b2427b9de"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 211}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_goal_at_signature"}, "properties": {"repobilityId": 103340, "scanner": "repobility-ast-engine", "fingerprint": "93b0c5b8f95f3e822faf5330af0991c00f365039a71949fc9fde6d7cc774944e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|93b0c5b8f95f3e822faf5330af0991c00f365039a71949fc9fde6d7cc774944e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_check_signature"}, "properties": {"repobilityId": 103339, "scanner": "repobility-ast-engine", "fingerprint": "d1fde91dd4db754b84f3a403431d3f64347afd734e414bcdddd8af3359303670", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d1fde91dd4db754b84f3a403431d3f64347afd734e414bcdddd8af3359303670"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 199}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_goal_givens_is_a_tuple"}, "properties": {"repobilityId": 103338, "scanner": "repobility-ast-engine", "fingerprint": "ce034f6f0bac2efc1f85e82e112554123d780c9b76b1b105cad14f278ab26747", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|ce034f6f0bac2efc1f85e82e112554123d780c9b76b1b105cad14f278ab26747"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_query.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_parser_argument_rejects_unknown_value"}, "properties": {"repobilityId": 103337, "scanner": "repobility-ast-engine", "fingerprint": "85258037860302e4a7cd61b9738db464f3fbbd1ec8831238c3ccfc36990bc524", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "phantom-test-coverage", "owasp": null, "cwe_ids": ["CWE-1126"], "languages": ["python"], "observations_count": 982154}, "scanner": "repobility-ast-engine", "correlation_key": "fp|85258037860302e4a7cd61b9738db464f3fbbd1ec8831238c3ccfc36990bc524"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "test/lsp/test_library.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._current_env` used but never assigned in __init__"}, "properties": {"repobilityId": 103335, "scanner": "repobility-ast-engine", "fingerprint": "b8f263d50bb588ad6018f2ff7758ac4eb491e5daf1cfc5664bd7e5c0b2242b88", "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|b8f263d50bb588ad6018f2ff7758ac4eb491e5daf1cfc5664bd7e5c0b2242b88"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 355}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103334, "scanner": "repobility-ast-engine", "fingerprint": "eb01f3ab7bf253b1b91871e27f6aeac9b996a7cfb82a5a82e0b84ab780c55e74", "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|eb01f3ab7bf253b1b91871e27f6aeac9b996a7cfb82a5a82e0b84ab780c55e74"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 344}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103333, "scanner": "repobility-ast-engine", "fingerprint": "1b833b3a69355917866999133fddc7130bd2385924a3ef74c564885deb4e5cca", "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|1b833b3a69355917866999133fddc7130bd2385924a3ef74c564885deb4e5cca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 346}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._current_loc` used but never assigned in __init__"}, "properties": {"repobilityId": 103332, "scanner": "repobility-ast-engine", "fingerprint": "1b88ae087ce348872243d38e77b7af063187daf17d1ff94269383c1a27f27ec0", "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|1b88ae087ce348872243d38e77b7af063187daf17d1ff94269383c1a27f27ec0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 330}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._current_loc` used but never assigned in __init__"}, "properties": {"repobilityId": 103331, "scanner": "repobility-ast-engine", "fingerprint": "98f4b93333643103f879d1d1bea032ee67f711188d7330584afa65cbf3f61fd5", "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|98f4b93333643103f879d1d1bea032ee67f711188d7330584afa65cbf3f61fd5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 329}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103330, "scanner": "repobility-ast-engine", "fingerprint": "6d4faff90c5951dd5fdb363f0c15ad8c08e3b9bb5a03fab27a93de75eefccb7b", "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|6d4faff90c5951dd5fdb363f0c15ad8c08e3b9bb5a03fab27a93de75eefccb7b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 310}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103329, "scanner": "repobility-ast-engine", "fingerprint": "41f9d633e3861a7a277aa37b189c3ab52ddc783897cef409682aa8bb5fa18ef5", "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|41f9d633e3861a7a277aa37b189c3ab52ddc783897cef409682aa8bb5fa18ef5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 308}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._current_loc` used but never assigned in __init__"}, "properties": {"repobilityId": 103328, "scanner": "repobility-ast-engine", "fingerprint": "cb4b359f10beea83abde1691a0739f46d65d0dc93c99c586648994f2445d4f1d", "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|cb4b359f10beea83abde1691a0739f46d65d0dc93c99c586648994f2445d4f1d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 332}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._current_loc` used but never assigned in __init__"}, "properties": {"repobilityId": 103327, "scanner": "repobility-ast-engine", "fingerprint": "92da98062f20307fbca221e5da4a701be59aed85a5dc08dd818155d006d98cd5", "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|92da98062f20307fbca221e5da4a701be59aed85a5dc08dd818155d006d98cd5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 325}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103326, "scanner": "repobility-ast-engine", "fingerprint": "5f270074506f1aa0395a96e86b87dc79338b7dc942067f725b8385cd1645cf29", "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|5f270074506f1aa0395a96e86b87dc79338b7dc942067f725b8385cd1645cf29"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 309}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103325, "scanner": "repobility-ast-engine", "fingerprint": "7d5a7069cd7e644033e9ad9fbbef5df1a437d75dda17eb8021b119d2b001446a", "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|7d5a7069cd7e644033e9ad9fbbef5df1a437d75dda17eb8021b119d2b001446a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_depth` used but never assigned in __init__"}, "properties": {"repobilityId": 103324, "scanner": "repobility-ast-engine", "fingerprint": "9810846d176c08e5872a38b7c1d484115cacec63974351491b3e677d3e6af0ce", "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|9810846d176c08e5872a38b7c1d484115cacec63974351491b3e677d3e6af0ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_mode` used but never assigned in __init__"}, "properties": {"repobilityId": 103323, "scanner": "repobility-ast-engine", "fingerprint": "4c2ab2bea1220d88c0027f1cc76650089c9d0b5b9f0dc65aed8678f4b42ed6cc", "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|4c2ab2bea1220d88c0027f1cc76650089c9d0b5b9f0dc65aed8678f4b42ed6cc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 284}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_mode` used but never assigned in __init__"}, "properties": {"repobilityId": 103322, "scanner": "repobility-ast-engine", "fingerprint": "24891704fe9c885f8fe9025bf53f3b0f9f4e9feb760661b817d8546e83ac4dd4", "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|24891704fe9c885f8fe9025bf53f3b0f9f4e9feb760661b817d8546e83ac4dd4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 282}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103321, "scanner": "repobility-ast-engine", "fingerprint": "55287d23dec6a9c65ef161624f03c95ad51f9f59b566b288442a31727be771a7", "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|55287d23dec6a9c65ef161624f03c95ad51f9f59b566b288442a31727be771a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 281}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.stack` used but never assigned in __init__"}, "properties": {"repobilityId": 103320, "scanner": "repobility-ast-engine", "fingerprint": "48bf56ce2997275ce87a8abd69d5636d55ee05da21522a4203330d8004183b47", "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|48bf56ce2997275ce87a8abd69d5636d55ee05da21522a4203330d8004183b47"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_mode` used but never assigned in __init__"}, "properties": {"repobilityId": 103319, "scanner": "repobility-ast-engine", "fingerprint": "2c4dd62c320dc423aa249b3d1f99d81ace345929c7224617c2dbc91c9464c38d", "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|2c4dd62c320dc423aa249b3d1f99d81ace345929c7224617c2dbc91c9464c38d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 278}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_depth` used but never assigned in __init__"}, "properties": {"repobilityId": 103318, "scanner": "repobility-ast-engine", "fingerprint": "1ed4b40ca6ddcda0e8f8d5a1d955c9ac2115fc3ea945cc02d7e2826c7a929684", "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|1ed4b40ca6ddcda0e8f8d5a1d955c9ac2115fc3ea945cc02d7e2826c7a929684"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_mode` used but never assigned in __init__"}, "properties": {"repobilityId": 103317, "scanner": "repobility-ast-engine", "fingerprint": "fc5b46d233110ecaf7f45e4006bf112eebeb29a34b3211752d1ecf43a5f4b04a", "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|fc5b46d233110ecaf7f45e4006bf112eebeb29a34b3211752d1ecf43a5f4b04a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 274}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._step_mode` used but never assigned in __init__"}, "properties": {"repobilityId": 103316, "scanner": "repobility-ast-engine", "fingerprint": "839d0ce0710ba2da8c1ff523075e2696b4d4386a2367413a21b3fd72e8af311c", "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|839d0ce0710ba2da8c1ff523075e2696b4d4386a2367413a21b3fd72e8af311c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 271}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.breakpoints` used but never assigned in __init__"}, "properties": {"repobilityId": 103315, "scanner": "repobility-ast-engine", "fingerprint": "d46c98044dc830f4b4fa05af860a57d3c4d48c6d75f8777e26ae4f995b610470", "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|d46c98044dc830f4b4fa05af860a57d3c4d48c6d75f8777e26ae4f995b610470"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 256}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.breakpoints` used but never assigned in __init__"}, "properties": {"repobilityId": 103314, "scanner": "repobility-ast-engine", "fingerprint": "5270c94a8d5687e5c46b3f466138e152082fe26a75020575b136abc95b2d54a3", "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|5270c94a8d5687e5c46b3f466138e152082fe26a75020575b136abc95b2d54a3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 250}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._reason_for_function` used but never assigned in __init__"}, "properties": {"repobilityId": 103313, "scanner": "repobility-ast-engine", "fingerprint": "8379946e432df1a34d2b122b551c3faa4b29c1ed328d1344f70e16105ec41c3e", "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|8379946e432df1a34d2b122b551c3faa4b29c1ed328d1344f70e16105ec41c3e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 223}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._reason_for_statement` used but never assigned in __init__"}, "properties": {"repobilityId": 103312, "scanner": "repobility-ast-engine", "fingerprint": "bee21f7a22dacafe9fd06f916edfbce67a48da59d8c3d6afd0811665faf38724", "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|bee21f7a22dacafe9fd06f916edfbce67a48da59d8c3d6afd0811665faf38724"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "lsp/dap_server.py"}, "region": {"startLine": 209}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self.error_base` used but never assigned in __init__"}, "properties": {"repobilityId": 103292, "scanner": "repobility-ast-engine", "fingerprint": "d8ad7d65df2ab1a40500ebb1cd502f53ee87c643cc7ebe9db0654b82e16daa2c", "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|d8ad7d65df2ab1a40500ebb1cd502f53ee87c643cc7ebe9db0654b82e16daa2c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "error.py"}, "region": {"startLine": 380}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "Missing import: `html` used but not imported"}, "properties": {"repobilityId": 103362, "scanner": "repobility-ast-engine", "fingerprint": "f5115d5f07c595ae2e122cf3adecc05eb09ed74bba7fa48245735da6d39aa854", "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|f5115d5f07c595ae2e122cf3adecc05eb09ed74bba7fa48245735da6d39aa854"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/convert.py"}, "region": {"startLine": 422}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "Missing import: `html` used but not imported"}, "properties": {"repobilityId": 103361, "scanner": "repobility-ast-engine", "fingerprint": "c35cebf343d914e48be09b2e26552bcab02cb98845f4d711a4106bf2f77add42", "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|c35cebf343d914e48be09b2e26552bcab02cb98845f4d711a4106bf2f77add42"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "gh_pages/scripts/index_generate.py"}, "region": {"startLine": 90}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "Missing import: `os` used but not imported"}, "properties": {"repobilityId": 103336, "scanner": "repobility-ast-engine", "fingerprint": "29fc1a2fd9fed84eeb259b6509b5f239c8fd96b6e1f4ccddc29583abab5440be", "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|29fc1a2fd9fed84eeb259b6509b5f239c8fd96b6e1f4ccddc29583abab5440be"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "abstract_syntax/declarations.py"}, "region": {"startLine": 974}}}]}]}]}