{"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": "WEB003", "name": "Public web service has no security.txt", "shortDescription": {"text": "Public web service has no security.txt"}, "fullDescription": {"text": "security.txt gives researchers and customers a safe disclosure channel. Public web apps and APIs should publish it under /.well-known/security.txt."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "AUC012", "name": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json", "shortDescription": {"text": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, "}, "fullDescription": {"text": "FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, or publish a reviewed OpenAPI spec with declared security requirements."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.72, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"id": "AUC009", "name": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function", "shortDescription": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE "}, "fullDescription": {"text": "A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /sources/{source_id}."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.68, "cwe": "CWE-285", "owasp": "API5:2023 Broken Function Level Authorization"}}, {"id": "AUC004", "name": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence ", "shortDescription": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: PUT /settings."}, "fullDescription": {"text": "An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: PUT /settings."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.66, "cwe": "CWE-285", "owasp": "API5:2023 Broken Function Level Authorization"}}, {"id": "AUC002", "name": "[AUC002] Low visible authorization coverage in route inventory: Only 14.3% of discovered routes show nearby authenticati", "shortDescription": {"text": "[AUC002] Low visible authorization coverage in route inventory: Only 14.3% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "fullDescription": {"text": "Only 14.3% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.74, "cwe": "CWE-285", "owasp": "WSTG-AUTHZ"}}, {"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": "GHSA-r73j-pqj5-w3x7", "name": "pillow: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "pillow: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "Pillow has a PDF Parsing Trailer Infinite Loop (DoS)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-5xmw-vc9v-4wf2", "name": "pillow: GHSA-5xmw-vc9v-4wf2", "shortDescription": {"text": "pillow: GHSA-5xmw-vc9v-4wf2"}, "fullDescription": {"text": "Pillow has a heap buffer overflow with nested list coordinates"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-g48c-2wqr-h844", "name": "langgraph: GHSA-g48c-2wqr-h844", "shortDescription": {"text": "langgraph: GHSA-g48c-2wqr-h844"}, "fullDescription": {"text": "LangGraph checkpoint loading has unsafe msgpack deserialization"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-jg22-mg44-37j8", "name": "aiohttp: GHSA-jg22-mg44-37j8", "shortDescription": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "fullDescription": {"text": "AIOHTTP is Vulnerable to Deserialization of Untrusted Data"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-hg6j-4rv6-33pg", "name": "aiohttp: GHSA-hg6j-4rv6-33pg", "shortDescription": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "fullDescription": {"text": "AIOHTTP is vulnerable to cross-origin redirect with per-request cookies"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-58qx-3vcg-4xpx", "name": "ws: GHSA-58qx-3vcg-4xpx", "shortDescription": {"text": "ws: GHSA-58qx-3vcg-4xpx"}, "fullDescription": {"text": "ws: Uninitialized memory disclosure"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-qx2v-qp2m-jg93", "name": "postcss: GHSA-qx2v-qp2m-jg93", "shortDescription": {"text": "postcss: GHSA-qx2v-qp2m-jg93"}, "fullDescription": {"text": "PostCSS has XSS via Unescaped </style> in its CSS Stringify Output"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-f886-m6hf-6m8v", "name": "brace-expansion: GHSA-f886-m6hf-6m8v", "shortDescription": {"text": "brace-expansion: GHSA-f886-m6hf-6m8v"}, "fullDescription": {"text": "brace-expansion: Zero-step sequence causes process hang and memory exhaustion"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-2g4f-4pwh-qvx6", "name": "ajv: GHSA-2g4f-4pwh-qvx6", "shortDescription": {"text": "ajv: GHSA-2g4f-4pwh-qvx6"}, "fullDescription": {"text": "ajv has ReDoS when using `$data` option"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "medium", "confidence": 0.88, "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": "DKR014", "name": "Dockerfile copies broad context with incomplete .dockerignore", "shortDescription": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "fullDescription": {"text": "COPY . or ADD . is safer when .dockerignore excludes secrets, git history, keys, and generated artifacts."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.76, "cwe": "", "owasp": ""}}, {"id": "DKR017", "name": "Dockerfile installs dependencies after copying the full source tree", "shortDescription": {"text": "Dockerfile installs dependencies after copying the full source tree"}, "fullDescription": {"text": "When dependency installation comes after COPY ., any source change invalidates the dependency layer and makes Docker rebuild much more slowly."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "SEC017", "name": "[SEC017] Unbounded Input to LLM/External API: User input is passed to an LLM or external AI API (OpenAI, Anthropic, etc.", "shortDescription": {"text": "[SEC017] Unbounded Input to LLM/External API: User input is passed to an LLM or external AI API (OpenAI, Anthropic, etc.) without any visible length or size validation. This creates two risks: (1) Cost abuse \u2014 an attacker can send extremely"}, "fullDescription": {"text": "1) Enforce a maximum input length BEFORE sending to the API: e.g. `if len(text) > 4000: return error`. 2) Use token counting (tiktoken for OpenAI, anthropic's token counter) to enforce token-level limits. 3) Set max_tokens on the API call to cap response cost. 4) Add rate limiting per user/IP to prevent automated abuse. 5) Monitor API spend with alerts for unusual usage patterns."}, "properties": {"scanner": "repobility-threat-engine", "category": "llm_injection", "severity": "medium", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "ERR001", "name": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG ", "shortDescription": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "fullDescription": {"text": "Log the error: `except Exception: logger.debug('cleanup failed', exc_info=True)`. Or handle specific exception types."}, "properties": {"scanner": "repobility-threat-engine", "category": "error_handling", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC034", "name": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines o", "shortDescription": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (S"}, "fullDescription": {"text": "Strip control characters before logging:\n  safe = user_input.replace('\\n','').replace('\\r','').replace('\\x00','')\n  logger.info('User action: %s', safe)\nAlways use parameterized logging (`%s` + args), never f-strings or string concat \u2014 that's also what mitigates log4shell-style attacks. For structured logging, use a JSON formatter that escapes values."}, "properties": {"scanner": "repobility-threat-engine", "category": "log_injection", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC015", "name": "[SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. Output is predictable.", "shortDescription": {"text": "[SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. Output is predictable."}, "fullDescription": {"text": "Use secrets module (Python) or crypto.getRandomValues() (JS) for security-sensitive randomness."}, "properties": {"scanner": "repobility-threat-engine", "category": "crypto", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "AGT015", "name": "Remote install command pipes network code directly to a shell", "shortDescription": {"text": "Remote install command pipes network code directly to a shell"}, "fullDescription": {"text": "Agent helper projects often publish one-line installers. `curl | sh` style commands are convenient, but they bypass review unless the script is pinned, signed, or checksum-verified."}, "properties": {"scanner": "repobility-agent-runtime", "category": "dependency", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "DEPCUR-NPM", "name": "npm package `react-markdown` is 1 major version(s) behind (9.0.3 -> 10.1.0)", "shortDescription": {"text": "npm package `react-markdown` is 1 major version(s) behind (9.0.3 -> 10.1.0)"}, "fullDescription": {"text": "`react-markdown` is pinned/resolved at 9.0.3 but the latest stable release on the npm registry is 10.1.0 (1 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": "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 `relate` (dict)", "shortDescription": {"text": "Mutable default argument in `relate` (dict)"}, "fullDescription": {"text": "`def relate(... = []/{}/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-xffm-g5w8-qvg7", "name": "@eslint/plugin-kit: GHSA-xffm-g5w8-qvg7", "shortDescription": {"text": "@eslint/plugin-kit: GHSA-xffm-g5w8-qvg7"}, "fullDescription": {"text": "@eslint/plugin-kit is vulnerable to Regular Expression Denial of Service attacks through ConfigCommentParser"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "low", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "DKC010", "name": "Compose service lacks no-new-privileges hardening", "shortDescription": {"text": "Compose service lacks no-new-privileges hardening"}, "fullDescription": {"text": "no-new-privileges prevents processes from gaining additional privileges through setuid binaries or file capabilities."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "DKC006", "name": "Compose service does not declare a runtime user", "shortDescription": {"text": "Compose service does not declare a runtime user"}, "fullDescription": {"text": "If the image does not define USER internally, this service may run as root."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.56, "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": "DKR008", "name": ".dockerignore misses sensitive defaults", "shortDescription": {"text": ".dockerignore misses sensitive defaults"}, "fullDescription": {"text": ".dockerignore exists but does not cover common secret or VCS patterns."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "low", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `get_job_status` has cognitive complexity 11 (SonarSource scale). Cognitiv", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `get_job_status` has cognitive complexity 11 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and 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 11."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "low", "confidence": 0.95, "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": "MINED067", "name": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever.", "shortDescription": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-400 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC078", "name": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsiv", "shortDescription": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a re"}, "fullDescription": {"text": "Add `timeout=10` (or appropriate value) to every requests call."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.1, "cwe": "", "owasp": ""}}, {"id": "SEC020", "name": "[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequen", "shortDescription": {"text": "[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequent AI-assisted coding failure: the helper exposes the exact value needed for troubleshooting."}, "fullDescription": {"text": "Log only redacted, hashed, or last-four-style metadata. Rotate any secret that may have reached logs."}, "properties": {"scanner": "repobility-threat-engine", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "cwe": "", "owasp": ""}}, {"id": "MINED056", "name": "[MINED056] React Key As Index: key={index} in map() \u2014 re-renders the wrong elements on re-order.", "shortDescription": {"text": "[MINED056] React Key As Index: key={index} in map() \u2014 re-renders the wrong elements on re-order."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-682 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED043", "name": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.", "shortDescription": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED058", "name": "[MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escaping. Pair with DOMPurify or neve", "shortDescription": {"text": "[MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escaping. Pair with DOMPurify or never use with user data."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-79 / A03:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED045", "name": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong.", "shortDescription": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-476 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod (and 8 more): Same pattern found in 8 additional files. Review if needed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod (and 8 more): Same pattern found in 8 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED076", "name": "[MINED076] Catch And Reraise Noop: except X: raise X \u2014 adds no value, hides traceback if AI accidentally changes message", "shortDescription": {"text": "[MINED076] Catch And Reraise Noop: except X: raise X \u2014 adds no value, hides traceback if AI accidentally changes message."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "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": "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": "SEC135", "name": "[SEC135] Auth/permission check missing on AI-generated endpoint (and 9 more): Same pattern found in 9 additional files. ", "shortDescription": {"text": "[SEC135] Auth/permission check missing on AI-generated endpoint (and 9 more): Same pattern found in 9 additional files. Review if needed."}, "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": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED065", "name": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public re", "shortDescription": {"text": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public read-only endpoints; dangerous when paired with credentials or write endpoints."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-942,CWE-346 / A05:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "JRN009", "name": "Secret-like setting is echoed into a password input value", "shortDescription": {"text": "Secret-like setting is echoed into a password input value"}, "fullDescription": {"text": "Settings screens sometimes render API keys, tokens, or passwords back into HTML/JSX password fields. That still exposes the secret to page source, browser extensions, screenshots, and DOM scraping."}, "properties": {"scanner": "repobility-journey-contract", "category": "auth", "severity": "high", "confidence": 0.83, "cwe": "", "owasp": ""}}, {"id": "AUC003", "name": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby a", "shortDescription": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /episode-profiles/{profile_"}, "fullDescription": {"text": "A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /episode-profiles/{profile_id}."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "high", "confidence": 0.7, "cwe": "CWE-639", "owasp": "API1:2023 Broken Object Level Authorization"}}, {"id": "PYSEC-2026-161", "name": "starlette: PYSEC-2026-161", "shortDescription": {"text": "starlette: PYSEC-2026-161"}, "fullDescription": {"text": "BadHost: Missing Host header validation poisons request.url.path, bypassing path-based security checks"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-179", "name": "pyjwt: PYSEC-2026-179", "shortDescription": {"text": "pyjwt: PYSEC-2026-179"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, when the verifier is decoding JSON Web Tokens, while supporting both asymmetric and HMAC algorithms, the library does not validate use of JSON Web Keys in HMAC algorithm, allowing attacker to use the issuer public key as the secret key for HMAC algorithm. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-178", "name": "pyjwt: PYSEC-2026-178", "shortDescription": {"text": "pyjwt: PYSEC-2026-178"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. From 2.8.0 to 2.12.1, when verifying detached JWS tokens using the unencoded-payload option (\"b64\": false, RFC 7797), PyJWT performs Base64URL decoding of the compact-serialization payload segment before enforcing the detached-payload rules. For b64=false, PyJWT later discards that decoded payload and replaces it with the caller-provided detached_payload. In practice, this turns the middle segment into an attacker-controlled \u201cwork amplifier\u201d: a remote client can supply an arbitrarily large Base64URL payload segment that forces CPU work + memory allocations even if the signature is invalid. This creates an unauthenticated DoS vector against any endpoint that verifies detached JWS using PyJWT. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-177", "name": "pyjwt: PYSEC-2026-177", "shortDescription": {"text": "pyjwt: PYSEC-2026-177"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient.get_signing_key() forces a fresh HTTP request to the JWKS endpoint for every JWT with an unknown kid value, with no rate limiting. Since kid comes from the unverified token header, an attacker can trigger unlimited outbound requests. The vulnerability surfaces only when a JWKS fetch fails; an attacker can attempt to provoke that with sustained unknown-kid traffic, but the outcome depends on upstream JWKS-endpoint behavior (rate limiting, transient errors) which is beyond the attacker's control. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-176", "name": "pyjwt: PYSEC-2026-176", "shortDescription": {"text": "pyjwt: PYSEC-2026-176"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. From 2.9.0 to 2.12.1, there is a verifier-side algorithm allow-list bypass when jwt.decode() or jwt.decode_complete() are called with a PyJWK key. The token header alg is checked against the caller-supplied algorithms allow-list, but signature verification is performed with the algorithm bound to the PyJWK object instead of the header algorithm. An attacker who controls a registered JWK/JWKS private key can sign with a disallowed algorithm, advertise an allowed algorithm in the JWT header, and still be accepted. The issue affects the documented PyJWKClient.get_signing_key_from_jwt(...) flow. This vulnerability is fixed in 2.13.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-175", "name": "pyjwt: PYSEC-2026-175", "shortDescription": {"text": "pyjwt: PYSEC-2026-175"}, "fullDescription": {"text": "PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient passes its uri argument directly to urllib.request.urlopen() which uses Python stdlib's default OpenerDirector registering HTTPHandler, HTTPSHandler, FTPHandler, FileHandler, and DataHandler. There is currently no documented option to restrict which schemes PyJWKClient will fetch. If an application's jku URL ingestion path accepts attacker-influenced URLs (e.g., from JWT header, configuration file, OAuth flow parameter), the attacker can cause PyJWKClient to read arbitrary local files via file:// (SSRF on local filesystem), cause PyJWKClient to attempt FTP / data-URI fetches (broader SSRF surface), or forge tokens that PyJWT verifies as valid. The library does not directly return non-HTTP(S) URI contents to the attacker; the chained \"plant a JWKS to forge tokens\" scenario described in the original report requires additional application-layer flaws (attacker write access to a filesystem path, untrusted jku "}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-whj4-6x5x-4v2j", "name": "pillow: GHSA-whj4-6x5x-4v2j", "shortDescription": {"text": "pillow: GHSA-whj4-6x5x-4v2j"}, "fullDescription": {"text": "FITS GZIP decompression bomb in Pillow"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-pwv6-vv43-88gr", "name": "pillow: GHSA-pwv6-vv43-88gr", "shortDescription": {"text": "pillow: GHSA-pwv6-vv43-88gr"}, "fullDescription": {"text": "Pillow has an OOB Write with Invalid PSD Tile Extents (Integer Overflow)"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "GHSA-cfh3-3jmp-rvhc", "name": "pillow: GHSA-cfh3-3jmp-rvhc", "shortDescription": {"text": "pillow: GHSA-cfh3-3jmp-rvhc"}, "fullDescription": {"text": "Pillow affected by out-of-bounds write when loading PSD images"}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "PYSEC-2026-165", "name": "pillow: PYSEC-2026-165", "shortDescription": {"text": "pillow: PYSEC-2026-165"}, "fullDescription": {"text": "Pillow is a Python imaging library. Prior to version 12.2.0, if a font advances for each glyph by an exceeding large amount, when Pillow keeps track of the current position, it may lead to an integer overflow. This issue has been patched in version 12.2.0."}, "properties": {"scanner": "osv-scanner", "category": "dependency", "severity": "high", "confidence": 0.88, "cwe": "", "owasp": ""}}, {"id": "DKR006", "name": "Dockerfile pipes a remote script into a shell", "shortDescription": {"text": "Dockerfile pipes a remote script into a shell"}, "fullDescription": {"text": "Piping downloaded code directly into a shell bypasses checksum verification and makes builds dependent on mutable remote content."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "high", "confidence": 0.92, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled ", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes e"}, "fullDescription": {"text": "Validate the URL against an allowlist BEFORE fetching:\n  ALLOWED = {'images.example.com', 'cdn.example.com'}\n  host = urlparse(url).hostname\n  if host not in ALLOWED: abort(400)\nOr use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request handler.\nBlock private CIDRs explicitly: 10/8, 172.16/12, 192.168/16, 169.254/16."}, "properties": {"scanner": "repobility-threat-engine", "category": "ssrf", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC016", "name": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prom", "shortDescription": {"text": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prompt (e.g. OpenAI, Anthropic, or local model). This is the AI equivalent of SQL injection: an attacker can craft input tha"}, "fullDescription": {"text": "1) Separate user content from instructions: use the 'user' role for user text and 'system' role for your instructions \u2014 never concatenate them into one string. 2) Validate and constrain: limit input length, strip control characters, and reject known injection patterns. 3) Use structured output (JSON mode / function calling) so the model returns data, not freeform actions. 4) Apply output validation: check the AI's response before acting on it. 5) Consider a prompt injection detection layer (e.g. Anthropic's constitutional AI, prompt-guard models)."}, "properties": {"scanner": "repobility-threat-engine", "category": "llm_injection", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "SEC004", "name": "[SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection.", "shortDescription": {"text": "[SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection."}, "fullDescription": {"text": "Use parameterized queries: cursor.execute('SELECT * FROM t WHERE id = %s', [id]). For dynamic table or column names, choose identifiers from a hard-coded allowlist and keep values in parameters."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "high", "confidence": 0.85, "cwe": "", "owasp": ""}}, {"id": "MINED020", "name": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / s", "shortDescription": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-532 / A09:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "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": "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/cache` pinned to mutable ref `@v5`", "shortDescription": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "fullDescription": {"text": "`uses: actions/cache@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": "MINED130", "name": "Lockfile pulls package from off-canonical host `registry.npmmirror.com`", "shortDescription": {"text": "Lockfile pulls package from off-canonical host `registry.npmmirror.com`"}, "fullDescription": {"text": "`package-lock.json` resolved URL for `node_modules/@adobe/css-tools` is `https://registry.npmmirror.com/@adobe/css-tools/-/css-tools-4.4.4.tgz...` \u2014 host `registry.npmmirror.com` is not the canonical registry. Could be a mirror compromise, dependency confusion attack, or a forgotten private registry."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED118", "name": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest", "shortDescription": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "fullDescription": {"text": "`FROM python:3.12-slim-bookworm` 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": "MINED112", "name": "FastAPI POST /search/ask/simple has no auth", "shortDescription": {"text": "FastAPI POST /search/ask/simple has no auth"}, "fullDescription": {"text": "Handler `ask_knowledge_base_simple` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appears in the function body."}, "properties": {"scanner": "repobility-route-auth", "category": "quality", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "MINED106", "name": "Phantom test coverage: test_openai_compatible_urls", "shortDescription": {"text": "Phantom test coverage: test_openai_compatible_urls"}, "fullDescription": {"text": "Test function `test_openai_compatible_urls` 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": "MINED110", "name": "Blocking call `requests.append` inside async function `get`", "shortDescription": {"text": "Blocking call `requests.append` inside async function `get`"}, "fullDescription": {"text": "`requests.append` is a synchronous (blocking) call. When invoked inside an `async def` it stalls the event loop, preventing every other coroutine in the process from making progress."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "`self._make_request` used but never assigned in __init__", "shortDescription": {"text": "`self._make_request` used but never assigned in __init__"}, "fullDescription": {"text": "Method `rebuild_embeddings` of class `APIClient` reads `self._make_request`, 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": "curl-auth-header", "name": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed r", "shortDescription": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "fullDescription": {"text": "Gitleaks detected a committed secret or credential pattern."}, "properties": {"scanner": "gitleaks", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "DKC007", "name": "Compose service contains a literal secret environment value", "shortDescription": {"text": "Compose service contains a literal secret environment value"}, "fullDescription": {"text": "Literal secrets in Compose files are committed to source and exposed through container inspection."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "critical", "confidence": 0.96, "cwe": "", "owasp": ""}}, {"id": "DKR005", "name": "Docker image bakes a secret-like ENV value", "shortDescription": {"text": "Docker image bakes a secret-like ENV value"}, "fullDescription": {"text": "ENV values are stored in the image configuration and are visible to anyone who can inspect the image."}, "properties": {"scanner": "repobility-docker", "category": "docker", "severity": "critical", "confidence": 0.96, "cwe": "", "owasp": ""}}, {"id": "MINED116", "name": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger", "shortDescription": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "fullDescription": {"text": "This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKER_PASSWORD }` lets a PR from any fork exfiltrate the secret (modify a script, log the value, etc.). Use `pull_request_target` ONLY with strict checkout discipline (no fork code in the trusted context)."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "critical", "confidence": 0.9, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/705"}, "properties": {"repository": "lfnovo/open-notebook", "repoUrl": "https://github.com/lfnovo/open-notebook", "branch": "main"}, "results": [{"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 56459, "scanner": "repobility-web-presence", "fingerprint": "5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app/API but no security.txt file or route was discovered.", "evidence": {"rule_id": "WEB003", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9116", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".well-known/security.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 56458, "scanner": "repobility-web-presence", "fingerprint": "5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app/API but no security.txt file or route was discovered.", "evidence": {"rule_id": "WEB003", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9116", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".well-known/security.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "AUC012", "level": "warning", "message": {"text": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, or publish a reviewed OpenAPI spec with declared security requirements."}, "properties": {"repobilityId": 56455, "scanner": "repobility-access-control", "fingerprint": "27f8c50db94c1d5138790446654bd4d0b5823ce185d040059e5a7502358b5899", "category": "auth", "severity": "medium", "confidence": 0.72, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"apps": [{"line": 157, "file_path": "api/main.py", "docs_url_disabled": false, "redoc_url_disabled": false, "openapi_url_disabled": false}], "scanner": "repobility-access-control", "correlation_key": "fp|27f8c50db94c1d5138790446654bd4d0b5823ce185d040059e5a7502358b5899"}}}, {"ruleId": "AUC012", "level": "warning", "message": {"text": "[AUC012] FastAPI interactive docs may be exposed by framework defaults: FastAPI exposes /docs, /redoc, and /openapi.json by default. Public production APIs should explicitly disable those defaults, protect them behind admin authentication, or publish a reviewed OpenAPI spec with declared security requirements."}, "properties": {"repobilityId": 56454, "scanner": "repobility-access-control", "fingerprint": "27f8c50db94c1d5138790446654bd4d0b5823ce185d040059e5a7502358b5899", "category": "auth", "severity": "medium", "confidence": 0.72, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"apps": [{"line": 157, "file_path": "api/main.py", "docs_url_disabled": false, "redoc_url_disabled": false, "openapi_url_disabled": false}], "scanner": "repobility-access-control", "correlation_key": "fp|27f8c50db94c1d5138790446654bd4d0b5823ce185d040059e5a7502358b5899"}}}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /sources/{source_id}."}, "properties": {"repobilityId": 56453, "scanner": "repobility-access-control", "fingerprint": "e040b8b03039c85cd538bc822db20421b43eaa10bf72a7004f549a539a657cbe", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/sources/{source_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/sources.py|946|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/sources.py"}, "region": {"startLine": 946}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /sources/{source_id}."}, "properties": {"repobilityId": 56452, "scanner": "repobility-access-control", "fingerprint": "e040b8b03039c85cd538bc822db20421b43eaa10bf72a7004f549a539a657cbe", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/sources/{source_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/sources.py|946|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/sources.py"}, "region": {"startLine": 946}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /{credential_id}."}, "properties": {"repobilityId": 56451, "scanner": "repobility-access-control", "fingerprint": "698f9bc0900d36a14ceed6777593510cb8524247b8c8fbd2919c87cabc85a7e1", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/{credential_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/credentials.py|259|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/credentials.py"}, "region": {"startLine": 259}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /{credential_id}."}, "properties": {"repobilityId": 56450, "scanner": "repobility-access-control", "fingerprint": "698f9bc0900d36a14ceed6777593510cb8524247b8c8fbd2919c87cabc85a7e1", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/{credential_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/credentials.py|259|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/credentials.py"}, "region": {"startLine": 259}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /transformations/{transformation_id}."}, "properties": {"repobilityId": 56449, "scanner": "repobility-access-control", "fingerprint": "7dc143713606eb07bdf079868c85719fb7cf98b8c6f9dfd7651f7088748ead87", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/transformations/{transformation_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|235|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/transformations.py"}, "region": {"startLine": 235}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /transformations/{transformation_id}."}, "properties": {"repobilityId": 56448, "scanner": "repobility-access-control", "fingerprint": "7dc143713606eb07bdf079868c85719fb7cf98b8c6f9dfd7651f7088748ead87", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/transformations/{transformation_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|235|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/transformations.py"}, "region": {"startLine": 235}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /insights/{insight_id}."}, "properties": {"repobilityId": 56447, "scanner": "repobility-access-control", "fingerprint": "d9d34fe2fde8c80ce0e936c2d85d1c78932f2e58fd420ffb4bbb4355a39df07a", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/insights/{insight_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/insights.py|37|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/insights.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /insights/{insight_id}."}, "properties": {"repobilityId": 56446, "scanner": "repobility-access-control", "fingerprint": "d9d34fe2fde8c80ce0e936c2d85d1c78932f2e58fd420ffb4bbb4355a39df07a", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/insights/{insight_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/insights.py|37|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/insights.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /speaker-profiles/{profile_id}."}, "properties": {"repobilityId": 56445, "scanner": "repobility-access-control", "fingerprint": "4154485648f9d6c980d83448e354fa68c9313708de9e250a1eec95ef0867e0e1", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/speaker-profiles/{profile_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|135|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /speaker-profiles/{profile_id}."}, "properties": {"repobilityId": 56444, "scanner": "repobility-access-control", "fingerprint": "4154485648f9d6c980d83448e354fa68c9313708de9e250a1eec95ef0867e0e1", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/speaker-profiles/{profile_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|135|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /models/{model_id}."}, "properties": {"repobilityId": 56443, "scanner": "repobility-access-control", "fingerprint": "c21e2c26b43decdd6b6d227bdc3c37ba3cfa6e0338fc60d5dda4e7c4fd173b9b", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/models/{model_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/models.py|252|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 252}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /models/{model_id}."}, "properties": {"repobilityId": 56442, "scanner": "repobility-access-control", "fingerprint": "c21e2c26b43decdd6b6d227bdc3c37ba3cfa6e0338fc60d5dda4e7c4fd173b9b", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/models/{model_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/models.py|252|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 252}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /episode-profiles/{profile_id}."}, "properties": {"repobilityId": 56441, "scanner": "repobility-access-control", "fingerprint": "858d868679affd9de32e7094e3fa792c4707f8d67a043e4002c7bf73443d0fa7", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/episode-profiles/{profile_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|165|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /episode-profiles/{profile_id}."}, "properties": {"repobilityId": 56440, "scanner": "repobility-access-control", "fingerprint": "858d868679affd9de32e7094e3fa792c4707f8d67a043e4002c7bf73443d0fa7", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/episode-profiles/{profile_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|165|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /podcasts/episodes/{episode_id}."}, "properties": {"repobilityId": 56439, "scanner": "repobility-access-control", "fingerprint": "0107e99a1e04ae982916d60bcf98c2cb42c99e125cd94e7a13954b6e2eb962e4", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|272|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /podcasts/episodes/{episode_id}."}, "properties": {"repobilityId": 56438, "scanner": "repobility-access-control", "fingerprint": "0107e99a1e04ae982916d60bcf98c2cb42c99e125cd94e7a13954b6e2eb962e4", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|272|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: POST /notebooks/{notebook_id}/context."}, "properties": {"repobilityId": 56437, "scanner": "repobility-access-control", "fingerprint": "455d01b8cb1f8c5986afaaa66d484b44db9294fbd2ed3780ad8a17b7bf463b80", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/notebooks/{notebook_id}/context", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/context.py|12|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: POST /notebooks/{notebook_id}/context."}, "properties": {"repobilityId": 56436, "scanner": "repobility-access-control", "fingerprint": "455d01b8cb1f8c5986afaaa66d484b44db9294fbd2ed3780ad8a17b7bf463b80", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/notebooks/{notebook_id}/context", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/context.py|12|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /commands/jobs/{job_id}."}, "properties": {"repobilityId": 56435, "scanner": "repobility-access-control", "fingerprint": "a62fa16d8d03b7c7a7cdb16a6130d0bb87310fda80a42037b3a15caa4ace4200", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/commands/jobs/{job_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/commands.py|108|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "AUC009", "level": "warning", "message": {"text": "[AUC009] Sensitive function route lacks elevated authorization evidence: A route appears to perform a sensitive function such as export, invite, role, token, billing, or destructive action without elevated policy evidence. Endpoint: DELETE /commands/jobs/{job_id}."}, "properties": {"repobilityId": 56434, "scanner": "repobility-access-control", "fingerprint": "a62fa16d8d03b7c7a7cdb16a6130d0bb87310fda80a42037b3a15caa4ace4200", "category": "auth", "severity": "medium", "confidence": 0.68, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/commands/jobs/{job_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/commands.py|108|cwe-285", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: PUT /settings."}, "properties": {"repobilityId": 56433, "scanner": "repobility-access-control", "fingerprint": "300cb7eded7a5dfccc4dc92a6ae23f756637de66f6ceb5774ffbd09492dd57d8", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/settings", "method": "PUT", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/settings.py|31|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/settings.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: PUT /settings."}, "properties": {"repobilityId": 56432, "scanner": "repobility-access-control", "fingerprint": "300cb7eded7a5dfccc4dc92a6ae23f756637de66f6ceb5774ffbd09492dd57d8", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/settings", "method": "PUT", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/settings.py|31|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/settings.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: GET /settings."}, "properties": {"repobilityId": 56431, "scanner": "repobility-access-control", "fingerprint": "0e93e325f8b16cb6a41127e095d3bbd3ff99c7ef84cec5ce52aff0d66d71e690", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/settings", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/settings.py|11|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/settings.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: GET /settings."}, "properties": {"repobilityId": 56430, "scanner": "repobility-access-control", "fingerprint": "0e93e325f8b16cb6a41127e095d3bbd3ff99c7ef84cec5ce52aff0d66d71e690", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/settings", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/settings.py|11|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/settings.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: POST /search."}, "properties": {"repobilityId": 56429, "scanner": "repobility-access-control", "fingerprint": "bfe671dcb186e58db0d74b568a31fad1ae75867cbd143ff2de1b1a90101021ca", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/search", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/search.py|17|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: POST /search."}, "properties": {"repobilityId": 56428, "scanner": "repobility-access-control", "fingerprint": "bfe671dcb186e58db0d74b568a31fad1ae75867cbd143ff2de1b1a90101021ca", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/search", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/search.py|17|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: POST /embed."}, "properties": {"repobilityId": 56427, "scanner": "repobility-access-control", "fingerprint": "a4bb38b30c2e5965aa429cb700aa5ccca5f82d76cbeab20f22efbcabc837a0f6", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/embed", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/embedding.py|12|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AUC004", "level": "warning", "message": {"text": "[AUC004] Admin route does not show super_admin separation: An administrative route was detected without nearby evidence that platform super_admin access is separated from tenant/application admin access. Endpoint: POST /embed."}, "properties": {"repobilityId": 56426, "scanner": "repobility-access-control", "fingerprint": "a4bb38b30c2e5965aa429cb700aa5ccca5f82d76cbeab20f22efbcabc837a0f6", "category": "auth", "severity": "medium", "confidence": 0.66, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/embed", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/embedding.py|12|cwe-285", "identity_targets": ["unknown", "admin"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AUC002", "level": "warning", "message": {"text": "[AUC002] Low visible authorization coverage in route inventory: Only 14.3% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "properties": {"repobilityId": 56405, "scanner": "repobility-access-control", "fingerprint": "1c06ab67fe9b0ca65f81018c13768d960818e6142fe4f5e29be919268202c767", "category": "auth", "severity": "medium", "confidence": 0.74, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "endpoint_count": 98, "correlation_key": "fp|1c06ab67fe9b0ca65f81018c13768d960818e6142fe4f5e29be919268202c767", "auth_visible_percent": 14.3}}}, {"ruleId": "AUC002", "level": "warning", "message": {"text": "[AUC002] Low visible authorization coverage in route inventory: Only 14.3% of discovered routes show nearby authentication, authorization, middleware, or public-route evidence."}, "properties": {"repobilityId": 56404, "scanner": "repobility-access-control", "fingerprint": "1c06ab67fe9b0ca65f81018c13768d960818e6142fe4f5e29be919268202c767", "category": "auth", "severity": "medium", "confidence": 0.74, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "endpoint_count": 98, "correlation_key": "fp|1c06ab67fe9b0ca65f81018c13768d960818e6142fe4f5e29be919268202c767", "auth_visible_percent": 14.3}}}, {"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": 56403, "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": ["FastAPI", "Next.js"], "expected_files": [".repobility/access.yml", ".repobility/access.yaml", ".repobility/access.json", ".repobility/authorization.yml"], "correlation_key": "fp|f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10"}}}, {"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": 56402, "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": ["FastAPI", "Next.js"], "expected_files": [".repobility/access.yml", ".repobility/access.yaml", ".repobility/access.json", ".repobility/authorization.yml"], "correlation_key": "fp|f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10"}}}, {"ruleId": "GHSA-r73j-pqj5-w3x7", "level": "warning", "message": {"text": "pillow: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": 56387, "scanner": "osv-scanner", "fingerprint": "6f9a6229dcf75eb82e837597bbad57d37103d21a6f11e6122226789093f4786e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42310", "CVE-2026-42310"], "package": "pillow", "rule_id": "GHSA-r73j-pqj5-w3x7", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42310|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-r73j-pqj5-w3x7", "level": "warning", "message": {"text": "pillow: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": 56386, "scanner": "osv-scanner", "fingerprint": "6f9a6229dcf75eb82e837597bbad57d37103d21a6f11e6122226789093f4786e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42310", "CVE-2026-42310"], "package": "pillow", "rule_id": "GHSA-r73j-pqj5-w3x7", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42310|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-5xmw-vc9v-4wf2", "level": "warning", "message": {"text": "pillow: GHSA-5xmw-vc9v-4wf2"}, "properties": {"repobilityId": 56381, "scanner": "osv-scanner", "fingerprint": "0d466a3fdf1f56e9d206a19bf8ccd943ba2afa97dcef0b591b734c2b785dee1f", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42309", "CVE-2026-42309"], "package": "pillow", "rule_id": "GHSA-5xmw-vc9v-4wf2", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42309|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-5xmw-vc9v-4wf2", "level": "warning", "message": {"text": "pillow: GHSA-5xmw-vc9v-4wf2"}, "properties": {"repobilityId": 56380, "scanner": "osv-scanner", "fingerprint": "0d466a3fdf1f56e9d206a19bf8ccd943ba2afa97dcef0b591b734c2b785dee1f", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42309", "CVE-2026-42309"], "package": "pillow", "rule_id": "GHSA-5xmw-vc9v-4wf2", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42309|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-g48c-2wqr-h844", "level": "warning", "message": {"text": "langgraph: GHSA-g48c-2wqr-h844"}, "properties": {"repobilityId": 56378, "scanner": "osv-scanner", "fingerprint": "5363376c1be09b0be7be8da8b0d1fc4e0e3157806257dfc60d68832eb538cf2e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-28277", "PYSEC-2026-83"], "package": "langgraph", "rule_id": "GHSA-g48c-2wqr-h844", "scanner": "osv-scanner", "correlation_key": "vuln|langgraph|CVE-2026-28277|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-g48c-2wqr-h844", "level": "warning", "message": {"text": "langgraph: GHSA-g48c-2wqr-h844"}, "properties": {"repobilityId": 56375, "scanner": "osv-scanner", "fingerprint": "5363376c1be09b0be7be8da8b0d1fc4e0e3157806257dfc60d68832eb538cf2e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-28277", "PYSEC-2026-83"], "package": "langgraph", "rule_id": "GHSA-g48c-2wqr-h844", "scanner": "osv-scanner", "correlation_key": "vuln|langgraph|CVE-2026-28277|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jg22-mg44-37j8", "level": "warning", "message": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "properties": {"repobilityId": 56376, "scanner": "osv-scanner", "fingerprint": "f360dcc0eba31763fb048fbf952ff9aaacd93fae36b950018274d5457fa1322d", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34993"], "package": "aiohttp", "rule_id": "GHSA-jg22-mg44-37j8", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34993|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-jg22-mg44-37j8", "level": "warning", "message": {"text": "aiohttp: GHSA-jg22-mg44-37j8"}, "properties": {"repobilityId": 56374, "scanner": "osv-scanner", "fingerprint": "f360dcc0eba31763fb048fbf952ff9aaacd93fae36b950018274d5457fa1322d", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-34993"], "package": "aiohttp", "rule_id": "GHSA-jg22-mg44-37j8", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-34993|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hg6j-4rv6-33pg", "level": "warning", "message": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "properties": {"repobilityId": 56373, "scanner": "osv-scanner", "fingerprint": "2da1f8cf81a5e62587e98e266536e6b0ec96ebc178f00a59702cebb0a7957e28", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-47265"], "package": "aiohttp", "rule_id": "GHSA-hg6j-4rv6-33pg", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-47265|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-hg6j-4rv6-33pg", "level": "warning", "message": {"text": "aiohttp: GHSA-hg6j-4rv6-33pg"}, "properties": {"repobilityId": 56372, "scanner": "osv-scanner", "fingerprint": "2da1f8cf81a5e62587e98e266536e6b0ec96ebc178f00a59702cebb0a7957e28", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-47265"], "package": "aiohttp", "rule_id": "GHSA-hg6j-4rv6-33pg", "scanner": "osv-scanner", "correlation_key": "vuln|aiohttp|CVE-2026-47265|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-58qx-3vcg-4xpx", "level": "warning", "message": {"text": "ws: GHSA-58qx-3vcg-4xpx"}, "properties": {"repobilityId": 56371, "scanner": "osv-scanner", "fingerprint": "aa2320cf52664eafdcaa81627c166a6124ae4d6a1c693cffd019693704affa2c", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-45736"], "package": "ws", "rule_id": "GHSA-58qx-3vcg-4xpx", "scanner": "osv-scanner", "correlation_key": "vuln|ws|CVE-2026-45736|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-58qx-3vcg-4xpx", "level": "warning", "message": {"text": "ws: GHSA-58qx-3vcg-4xpx"}, "properties": {"repobilityId": 56370, "scanner": "osv-scanner", "fingerprint": "aa2320cf52664eafdcaa81627c166a6124ae4d6a1c693cffd019693704affa2c", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-45736"], "package": "ws", "rule_id": "GHSA-58qx-3vcg-4xpx", "scanner": "osv-scanner", "correlation_key": "vuln|ws|CVE-2026-45736|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-qx2v-qp2m-jg93", "level": "warning", "message": {"text": "postcss: GHSA-qx2v-qp2m-jg93"}, "properties": {"repobilityId": 56368, "scanner": "osv-scanner", "fingerprint": "2510b8057924327e9299fe8e0754f99daed52ce3ac1ece31b2a82e243beabb2e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41305"], "package": "postcss", "rule_id": "GHSA-qx2v-qp2m-jg93", "scanner": "osv-scanner", "correlation_key": "vuln|postcss|CVE-2026-41305|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-qx2v-qp2m-jg93", "level": "warning", "message": {"text": "postcss: GHSA-qx2v-qp2m-jg93"}, "properties": {"repobilityId": 56369, "scanner": "osv-scanner", "fingerprint": "2510b8057924327e9299fe8e0754f99daed52ce3ac1ece31b2a82e243beabb2e", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-41305"], "package": "postcss", "rule_id": "GHSA-qx2v-qp2m-jg93", "scanner": "osv-scanner", "correlation_key": "vuln|postcss|CVE-2026-41305|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-f886-m6hf-6m8v", "level": "warning", "message": {"text": "brace-expansion: GHSA-f886-m6hf-6m8v"}, "properties": {"repobilityId": 56367, "scanner": "osv-scanner", "fingerprint": "98a1120465a5f7efd7e77749832ffebc052c57b25def61de9cdb3f7030748265", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33750"], "package": "brace-expansion", "rule_id": "GHSA-f886-m6hf-6m8v", "scanner": "osv-scanner", "correlation_key": "vuln|brace-expansion|CVE-2026-33750|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-f886-m6hf-6m8v", "level": "warning", "message": {"text": "brace-expansion: GHSA-f886-m6hf-6m8v"}, "properties": {"repobilityId": 56366, "scanner": "osv-scanner", "fingerprint": "98a1120465a5f7efd7e77749832ffebc052c57b25def61de9cdb3f7030748265", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-33750"], "package": "brace-expansion", "rule_id": "GHSA-f886-m6hf-6m8v", "scanner": "osv-scanner", "correlation_key": "vuln|brace-expansion|CVE-2026-33750|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2g4f-4pwh-qvx6", "level": "warning", "message": {"text": "ajv: GHSA-2g4f-4pwh-qvx6"}, "properties": {"repobilityId": 56365, "scanner": "osv-scanner", "fingerprint": "b1c137f64d26194e8a5a68d9f9910132470516aebc0c0885b6571a0c29cfa1c8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69873"], "package": "ajv", "rule_id": "GHSA-2g4f-4pwh-qvx6", "scanner": "osv-scanner", "correlation_key": "vuln|ajv|CVE-2025-69873|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-2g4f-4pwh-qvx6", "level": "warning", "message": {"text": "ajv: GHSA-2g4f-4pwh-qvx6"}, "properties": {"repobilityId": 56364, "scanner": "osv-scanner", "fingerprint": "b1c137f64d26194e8a5a68d9f9910132470516aebc0c0885b6571a0c29cfa1c8", "category": "dependency", "severity": "medium", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2025-69873"], "package": "ajv", "rule_id": "GHSA-2g4f-4pwh-qvx6", "scanner": "osv-scanner", "correlation_key": "vuln|ajv|CVE-2025-69873|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 56333, "scanner": "repobility-docker", "fingerprint": "5134701e2b22aa7517ae0bfbc1071c0662fbbca3a4f24bc5105d907f110668ad", "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": "python:3.12-slim-bookworm", "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|5134701e2b22aa7517ae0bfbc1071c0662fbbca3a4f24bc5105d907f110668ad"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 54}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 56331, "scanner": "repobility-docker", "fingerprint": "5134701e2b22aa7517ae0bfbc1071c0662fbbca3a4f24bc5105d907f110668ad", "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": "python:3.12-slim-bookworm", "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|5134701e2b22aa7517ae0bfbc1071c0662fbbca3a4f24bc5105d907f110668ad"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 54}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 56330, "scanner": "repobility-docker", "fingerprint": "d1740516d96ccc7e821a13741dea0209f9547b73d2a0d097d4a8711764701f30", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|d1740516d96ccc7e821a13741dea0209f9547b73d2a0d097d4a8711764701f30", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 75}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 56327, "scanner": "repobility-docker", "fingerprint": "d1740516d96ccc7e821a13741dea0209f9547b73d2a0d097d4a8711764701f30", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|d1740516d96ccc7e821a13741dea0209f9547b73d2a0d097d4a8711764701f30", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 75}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 56320, "scanner": "repobility-docker", "fingerprint": "16beedd5815e0f9168d8264d8443a220619998a89b6d2a450300bbc0b55f3b15", "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": "python:3.12-slim-bookworm", "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|16beedd5815e0f9168d8264d8443a220619998a89b6d2a450300bbc0b55f3b15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 68}}}]}, {"ruleId": "DKR001", "level": "warning", "message": {"text": "Docker final stage has no non-root USER"}, "properties": {"repobilityId": 56317, "scanner": "repobility-docker", "fingerprint": "16beedd5815e0f9168d8264d8443a220619998a89b6d2a450300bbc0b55f3b15", "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": "python:3.12-slim-bookworm", "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|16beedd5815e0f9168d8264d8443a220619998a89b6d2a450300bbc0b55f3b15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 68}}}]}, {"ruleId": "DKR017", "level": "warning", "message": {"text": "Dockerfile installs dependencies after copying the full source tree"}, "properties": {"repobilityId": 56318, "scanner": "repobility-docker", "fingerprint": "ff56e377c99b64a47f3b6dfaa3eeadf7d4d26d2b005fb730ee654fc74021d9a2", "category": "docker", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Broad context copy at line 44 appears before dependency installation.", "evidence": {"rule_id": "DKR017", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "broad_copy_line": 44, "correlation_key": "fp|ff56e377c99b64a47f3b6dfaa3eeadf7d4d26d2b005fb730ee654fc74021d9a2", "dependency_install_line": 56}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 56}}}]}, {"ruleId": "DKR017", "level": "warning", "message": {"text": "Dockerfile installs dependencies after copying the full source tree"}, "properties": {"repobilityId": 56316, "scanner": "repobility-docker", "fingerprint": "ff56e377c99b64a47f3b6dfaa3eeadf7d4d26d2b005fb730ee654fc74021d9a2", "category": "docker", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Broad context copy at line 44 appears before dependency installation.", "evidence": {"rule_id": "DKR017", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "broad_copy_line": 44, "correlation_key": "fp|ff56e377c99b64a47f3b6dfaa3eeadf7d4d26d2b005fb730ee654fc74021d9a2", "dependency_install_line": 56}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 56}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 56313, "scanner": "repobility-docker", "fingerprint": "a184701bb1f73ac2ff7411f563693e5085e5cbd8cef55ea3841fee451e686dfa", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|a184701bb1f73ac2ff7411f563693e5085e5cbd8cef55ea3841fee451e686dfa", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 90}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 56312, "scanner": "repobility-docker", "fingerprint": "a184701bb1f73ac2ff7411f563693e5085e5cbd8cef55ea3841fee451e686dfa", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|a184701bb1f73ac2ff7411f563693e5085e5cbd8cef55ea3841fee451e686dfa", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 90}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 56309, "scanner": "repobility-docker", "fingerprint": "194621bb12299bd68a3af0aa2e784c418164203efff3fe7a76081d95733eec0d", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|194621bb12299bd68a3af0aa2e784c418164203efff3fe7a76081d95733eec0d", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 44}}}]}, {"ruleId": "DKR014", "level": "warning", "message": {"text": "Dockerfile copies broad context with incomplete .dockerignore"}, "properties": {"repobilityId": 56308, "scanner": "repobility-docker", "fingerprint": "194621bb12299bd68a3af0aa2e784c418164203efff3fe7a76081d95733eec0d", "category": "docker", "severity": "medium", "confidence": 0.76, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Broad context copy found and .dockerignore misses sensitive defaults.", "evidence": {"rule_id": "DKR014", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|194621bb12299bd68a3af0aa2e784c418164203efff3fe7a76081d95733eec0d", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 44}}}]}, {"ruleId": "SEC017", "level": "warning", "message": {"text": "[SEC017] Unbounded Input to LLM/External API: User input is passed to an LLM or external AI API (OpenAI, Anthropic, etc.) without any visible length or size validation. This creates two risks: (1) Cost abuse \u2014 an attacker can send extremely long inputs to burn through your API credits (a single 128K-token request to GPT-4 costs ~$4, and automated attacks can drain budgets in minutes). (2) Context stuffing \u2014 oversized inputs can push your system prompt out of the context window, effectively disab"}, "properties": {"repobilityId": 56297, "scanner": "repobility-threat-engine", "fingerprint": "ac648b09ec1afe69feb7a500d5d8fc66c4294ad485b73bf8a8fd5491aac6c3bc", "category": "llm_injection", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "This file sends user input to an LLM with no visible length check or rate limit. Risks: (1) cost abuse \u2014 automated long inputs drain API budget ($4/request at 128K tokens on GPT-4), (2) context stuffing \u2014 oversized input pushes system prompt out of context window, disabling safety rules. Add input length validation before the API call.", "evidence": {"reason": "This file sends user input to an LLM with no visible length check or rate limit. Risks: (1) cost abuse \u2014 automated long inputs drain API budget ($4/request at 128K tokens on GPT-4), (2) context stuffing \u2014 oversized input pushes system prompt out of context window, disabling safety rules. Add input length validation before the API call.", "rule_id": "SEC017", "scanner": "repobility-threat-engine", "confidence": 0.8, "correlation_key": "fp|ac648b09ec1afe69feb7a500d5d8fc66c4294ad485b73bf8a8fd5491aac6c3bc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/graphs/ask.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "SEC017", "level": "warning", "message": {"text": "[SEC017] Unbounded Input to LLM/External API: User input is passed to an LLM or external AI API (OpenAI, Anthropic, etc.) without any visible length or size validation. This creates two risks: (1) Cost abuse \u2014 an attacker can send extremely long inputs to burn through your API credits (a single 128K-token request to GPT-4 costs ~$4, and automated attacks can drain budgets in minutes). (2) Context stuffing \u2014 oversized inputs can push your system prompt out of the context window, effectively disab"}, "properties": {"repobilityId": 56296, "scanner": "repobility-threat-engine", "fingerprint": "ac648b09ec1afe69feb7a500d5d8fc66c4294ad485b73bf8a8fd5491aac6c3bc", "category": "llm_injection", "severity": "medium", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "This file sends user input to an LLM with no visible length check or rate limit. Risks: (1) cost abuse \u2014 automated long inputs drain API budget ($4/request at 128K tokens on GPT-4), (2) context stuffing \u2014 oversized input pushes system prompt out of context window, disabling safety rules. Add input length validation before the API call.", "evidence": {"reason": "This file sends user input to an LLM with no visible length check or rate limit. Risks: (1) cost abuse \u2014 automated long inputs drain API budget ($4/request at 128K tokens on GPT-4), (2) context stuffing \u2014 oversized input pushes system prompt out of context window, disabling safety rules. Add input length validation before the API call.", "rule_id": "SEC017", "scanner": "repobility-threat-engine", "confidence": 0.8, "correlation_key": "fp|ac648b09ec1afe69feb7a500d5d8fc66c4294ad485b73bf8a8fd5491aac6c3bc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/graphs/ask.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 56266, "scanner": "repobility-threat-engine", "fingerprint": "d546f5bf9c2418a6596ba16c2cc5122defec32660215fa7487229dad7f927903", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n                pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d546f5bf9c2418a6596ba16c2cc5122defec32660215fa7487229dad7f927903"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/languages.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "ERR001", "level": "warning", "message": {"text": "[ERR001] Silent Exception Swallowing: Silently swallowing all exceptions hides bugs. Even in cleanup code, log at DEBUG level."}, "properties": {"repobilityId": 56254, "scanner": "repobility-threat-engine", "fingerprint": "d546f5bf9c2418a6596ba16c2cc5122defec32660215fa7487229dad7f927903", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "except Exception:\n                pass", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR001", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d546f5bf9c2418a6596ba16c2cc5122defec32660215fa7487229dad7f927903"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/languages.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 56253, "scanner": "repobility-threat-engine", "fingerprint": "9cf88d51a79e4ca0b3699edb5c89f61e2eaebc063e27171d8271f6dd9eee5ad5", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.info(\n            f\"Starting podcast generation for episode: {input", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|9cf88d51a79e4ca0b3699edb5c89f61e2eaebc063e27171d8271f6dd9eee5ad5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "commands/podcast_commands.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 56250, "scanner": "repobility-threat-engine", "fingerprint": "6f317e3ab9d2dd89acae8e4944f1e491642754976edfd6d41be1989597c67eb9", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.info(f\"Processing text with operation: {input", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6f317e3ab9d2dd89acae8e4944f1e491642754976edfd6d41be1989597c67eb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "commands/example_commands.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 56247, "scanner": "repobility-threat-engine", "fingerprint": "b4d05ab314544ad3f4b411566d24022fc675ad9832414ef8b2bcaf1e7b2fed6b", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.info(f\"Starting rebuild request: mode={req", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b4d05ab314544ad3f4b411566d24022fc675ad9832414ef8b2bcaf1e7b2fed6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding_rebuild.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 56246, "scanner": "repobility-threat-engine", "fingerprint": "9cf88d51a79e4ca0b3699edb5c89f61e2eaebc063e27171d8271f6dd9eee5ad5", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.info(\n            f\"Starting podcast generation for episode: {input", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|9cf88d51a79e4ca0b3699edb5c89f61e2eaebc063e27171d8271f6dd9eee5ad5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "commands/podcast_commands.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 56244, "scanner": "repobility-threat-engine", "fingerprint": "6f317e3ab9d2dd89acae8e4944f1e491642754976edfd6d41be1989597c67eb9", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.info(f\"Processing text with operation: {input", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6f317e3ab9d2dd89acae8e4944f1e491642754976edfd6d41be1989597c67eb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "commands/example_commands.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "SEC034", "level": "warning", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\\n` to forge fake log entries, hide tracks, or exploit downstream log parsers (SIEM, splunk). Combined with template injection this can escalate to RCE (CVE-2021-44228 log4shell). CWE-117."}, "properties": {"repobilityId": 56242, "scanner": "repobility-threat-engine", "fingerprint": "b4d05ab314544ad3f4b411566d24022fc675ad9832414ef8b2bcaf1e7b2fed6b", "category": "log_injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "logger.info(f\"Starting rebuild request: mode={req", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b4d05ab314544ad3f4b411566d24022fc675ad9832414ef8b2bcaf1e7b2fed6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding_rebuild.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "SEC015", "level": "warning", "message": {"text": "[SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. Output is predictable."}, "properties": {"repobilityId": 56225, "scanner": "repobility-threat-engine", "fingerprint": "832df06cfc241ee034c5db5d9b5e40e3a7acd89dae3dfb4dfb876be43a8fd3ef", "category": "crypto", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Security-sensitive keyword found nearby \u2014 weak PRNG is risky here", "evidence": {"match": "def create_session", "reason": "Security-sensitive keyword found nearby \u2014 weak PRNG is risky here", "rule_id": "SEC015", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|crypto|api/chat_service.py|39|sec015"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/chat_service.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "AGT015", "level": "warning", "message": {"text": "Remote install command pipes network code directly to a shell"}, "properties": {"repobilityId": 56224, "scanner": "repobility-agent-runtime", "fingerprint": "ac5b331ac3ba66ceec718ed7c3f715b8f56bb30359576e74e44b98af3d873ed3", "category": "dependency", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File contains a remote download piped directly to a shell without visible checksum or signature verification.", "evidence": {"rule_id": "AGT015", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|ac5b331ac3ba66ceec718ed7c3f715b8f56bb30359576e74e44b98af3d873ed3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/1-INSTALLATION/from-source.md"}, "region": {"startLine": 11}}}]}, {"ruleId": "SEC015", "level": "warning", "message": {"text": "[SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. Output is predictable."}, "properties": {"repobilityId": 56218, "scanner": "repobility-threat-engine", "fingerprint": "832df06cfc241ee034c5db5d9b5e40e3a7acd89dae3dfb4dfb876be43a8fd3ef", "category": "crypto", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Security-sensitive keyword found nearby \u2014 weak PRNG is risky here", "evidence": {"match": "def create_session", "reason": "Security-sensitive keyword found nearby \u2014 weak PRNG is risky here", "rule_id": "SEC015", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|crypto|api/chat_service.py|39|sec015"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/chat_service.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "AGT015", "level": "warning", "message": {"text": "Remote install command pipes network code directly to a shell"}, "properties": {"repobilityId": 56216, "scanner": "repobility-agent-runtime", "fingerprint": "ac5b331ac3ba66ceec718ed7c3f715b8f56bb30359576e74e44b98af3d873ed3", "category": "dependency", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File contains a remote download piped directly to a shell without visible checksum or signature verification.", "evidence": {"rule_id": "AGT015", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|ac5b331ac3ba66ceec718ed7c3f715b8f56bb30359576e74e44b98af3d873ed3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/1-INSTALLATION/from-source.md"}, "region": {"startLine": 11}}}]}, {"ruleId": "DEPCUR-NPM", "level": "warning", "message": {"text": "npm package `react-markdown` is 1 major version(s) behind (9.0.3 -> 10.1.0)"}, "properties": {"repobilityId": 56214, "scanner": "repobility-dependency-currency", "fingerprint": "9ef3e6fc4b8d4cce6cee03f83e198e5ffd6954c56339c22baa80e868aa982ad4", "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": "react-markdown", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "10.1.0", "correlation_key": "fp|9ef3e6fc4b8d4cce6cee03f83e198e5ffd6954c56339c22baa80e868aa982ad4", "current_version": "9.0.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "warning", "message": {"text": "npm package `react-markdown` is 1 major version(s) behind (9.0.3 -> 10.1.0)"}, "properties": {"repobilityId": 56205, "scanner": "repobility-dependency-currency", "fingerprint": "9ef3e6fc4b8d4cce6cee03f83e198e5ffd6954c56339c22baa80e868aa982ad4", "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": "react-markdown", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "10.1.0", "correlation_key": "fp|9ef3e6fc4b8d4cce6cee03f83e198e5ffd6954c56339c22baa80e868aa982ad4", "current_version": "9.0.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56067, "scanner": "repobility-ast-engine", "fingerprint": "98072b88e4d87abd1be182d32ab8859ee725e73cd1c404ab705971f6952078e5", "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|98072b88e4d87abd1be182d32ab8859ee725e73cd1c404ab705971f6952078e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/connection_tester.py"}, "region": {"startLine": 167}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56066, "scanner": "repobility-ast-engine", "fingerprint": "98072b88e4d87abd1be182d32ab8859ee725e73cd1c404ab705971f6952078e5", "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|98072b88e4d87abd1be182d32ab8859ee725e73cd1c404ab705971f6952078e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/connection_tester.py"}, "region": {"startLine": 167}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56064, "scanner": "repobility-ast-engine", "fingerprint": "0f8202a480fe97a2859ccfd32d69c8cecae813e27d4c69587256395d660bfc51", "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|0f8202a480fe97a2859ccfd32d69c8cecae813e27d4c69587256395d660bfc51"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/connection_tester.py"}, "region": {"startLine": 128}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56065, "scanner": "repobility-ast-engine", "fingerprint": "0f8202a480fe97a2859ccfd32d69c8cecae813e27d4c69587256395d660bfc51", "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|0f8202a480fe97a2859ccfd32d69c8cecae813e27d4c69587256395d660bfc51"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/connection_tester.py"}, "region": {"startLine": 128}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56063, "scanner": "repobility-ast-engine", "fingerprint": "c4a6dc4806959f7cb0288bc4d0ac791cf242d7b71f7778efcc6225907e964316", "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|c4a6dc4806959f7cb0288bc4d0ac791cf242d7b71f7778efcc6225907e964316"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/connection_tester.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56062, "scanner": "repobility-ast-engine", "fingerprint": "15865eceb40b2f49d3e3e5db89a9b0bec2b86771be6d9a71dbdda576c69b5039", "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|15865eceb40b2f49d3e3e5db89a9b0bec2b86771be6d9a71dbdda576c69b5039"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/encryption.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56061, "scanner": "repobility-ast-engine", "fingerprint": "12717799ffe090f2c52df43a73dcf4c4777aeb95dfd29b158555cd09d97a1be2", "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|12717799ffe090f2c52df43a73dcf4c4777aeb95dfd29b158555cd09d97a1be2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/chunking.py"}, "region": {"startLine": 191}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56060, "scanner": "repobility-ast-engine", "fingerprint": "c4a6dc4806959f7cb0288bc4d0ac791cf242d7b71f7778efcc6225907e964316", "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|c4a6dc4806959f7cb0288bc4d0ac791cf242d7b71f7778efcc6225907e964316"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/connection_tester.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56059, "scanner": "repobility-ast-engine", "fingerprint": "3ca3fe75897906213c5357fe543225262380925f2972d14c3a750d5dc0abbc2a", "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|3ca3fe75897906213c5357fe543225262380925f2972d14c3a750d5dc0abbc2a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/database/async_migrate.py"}, "region": {"startLine": 215}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56058, "scanner": "repobility-ast-engine", "fingerprint": "15865eceb40b2f49d3e3e5db89a9b0bec2b86771be6d9a71dbdda576c69b5039", "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|15865eceb40b2f49d3e3e5db89a9b0bec2b86771be6d9a71dbdda576c69b5039"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/encryption.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56057, "scanner": "repobility-ast-engine", "fingerprint": "403992fda426a1c0db0f92aebb66663bf370c2ce937a346d39d1380800eb93a7", "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|403992fda426a1c0db0f92aebb66663bf370c2ce937a346d39d1380800eb93a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/database/async_migrate.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56056, "scanner": "repobility-ast-engine", "fingerprint": "12717799ffe090f2c52df43a73dcf4c4777aeb95dfd29b158555cd09d97a1be2", "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|12717799ffe090f2c52df43a73dcf4c4777aeb95dfd29b158555cd09d97a1be2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/chunking.py"}, "region": {"startLine": 191}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56055, "scanner": "repobility-ast-engine", "fingerprint": "1bed9744a67671582a6eef5a48222d505a2a48f39b2434c82aea93092326b36b", "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|1bed9744a67671582a6eef5a48222d505a2a48f39b2434c82aea93092326b36b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/podcasts/models.py"}, "region": {"startLine": 259}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56054, "scanner": "repobility-ast-engine", "fingerprint": "3ca3fe75897906213c5357fe543225262380925f2972d14c3a750d5dc0abbc2a", "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|3ca3fe75897906213c5357fe543225262380925f2972d14c3a750d5dc0abbc2a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/database/async_migrate.py"}, "region": {"startLine": 215}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56053, "scanner": "repobility-ast-engine", "fingerprint": "bcbac546842b61a61f2c4f50ed837c63b946051a7791835c6ce1d9a4d3b8ce32", "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|bcbac546842b61a61f2c4f50ed837c63b946051a7791835c6ce1d9a4d3b8ce32"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/podcasts/models.py"}, "region": {"startLine": 241}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56052, "scanner": "repobility-ast-engine", "fingerprint": "403992fda426a1c0db0f92aebb66663bf370c2ce937a346d39d1380800eb93a7", "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|403992fda426a1c0db0f92aebb66663bf370c2ce937a346d39d1380800eb93a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/database/async_migrate.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56051, "scanner": "repobility-ast-engine", "fingerprint": "314d7e3847cde3911e0edc5b44bbe05e6e5e6736a026e2663e9743d4fc3eb2cb", "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|314d7e3847cde3911e0edc5b44bbe05e6e5e6736a026e2663e9743d4fc3eb2cb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/domain/provider_config.py"}, "region": {"startLine": 268}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "Mutable default argument in `relate` (dict)"}, "properties": {"repobilityId": 56050, "scanner": "repobility-ast-engine", "fingerprint": "4ead10e21bc64f3f32c7a024a7706faaaf9be497c2d5b26f11b774560b06aa02", "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|4ead10e21bc64f3f32c7a024a7706faaaf9be497c2d5b26f11b774560b06aa02"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/domain/base.py"}, "region": {"startLine": 217}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56049, "scanner": "repobility-ast-engine", "fingerprint": "1bed9744a67671582a6eef5a48222d505a2a48f39b2434c82aea93092326b36b", "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|1bed9744a67671582a6eef5a48222d505a2a48f39b2434c82aea93092326b36b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/podcasts/models.py"}, "region": {"startLine": 259}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56048, "scanner": "repobility-ast-engine", "fingerprint": "9aa64afd5febe13f4ced6d10640f7f6f1028b7de7dda542cd9d7f56095cffb56", "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|9aa64afd5febe13f4ced6d10640f7f6f1028b7de7dda542cd9d7f56095cffb56"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/chat.py"}, "region": {"startLine": 450}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56047, "scanner": "repobility-ast-engine", "fingerprint": "bcbac546842b61a61f2c4f50ed837c63b946051a7791835c6ce1d9a4d3b8ce32", "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|bcbac546842b61a61f2c4f50ed837c63b946051a7791835c6ce1d9a4d3b8ce32"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/podcasts/models.py"}, "region": {"startLine": 241}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56046, "scanner": "repobility-ast-engine", "fingerprint": "314d7e3847cde3911e0edc5b44bbe05e6e5e6736a026e2663e9743d4fc3eb2cb", "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|314d7e3847cde3911e0edc5b44bbe05e6e5e6736a026e2663e9743d4fc3eb2cb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/domain/provider_config.py"}, "region": {"startLine": 268}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56045, "scanner": "repobility-ast-engine", "fingerprint": "568c4cf6a043958be71a00418bdd544c4d324a5f8b480899be0c04b0adc5e2bf", "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|568c4cf6a043958be71a00418bdd544c4d324a5f8b480899be0c04b0adc5e2bf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "Mutable default argument in `relate` (dict)"}, "properties": {"repobilityId": 56044, "scanner": "repobility-ast-engine", "fingerprint": "4ead10e21bc64f3f32c7a024a7706faaaf9be497c2d5b26f11b774560b06aa02", "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|4ead10e21bc64f3f32c7a024a7706faaaf9be497c2d5b26f11b774560b06aa02"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/domain/base.py"}, "region": {"startLine": 217}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56043, "scanner": "repobility-ast-engine", "fingerprint": "8028fa9cae056118e8b2e48d43dab1b06d18e24180a047a9acb7ba767d92f9a0", "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|8028fa9cae056118e8b2e48d43dab1b06d18e24180a047a9acb7ba767d92f9a0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 158}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56042, "scanner": "repobility-ast-engine", "fingerprint": "9aa64afd5febe13f4ced6d10640f7f6f1028b7de7dda542cd9d7f56095cffb56", "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|9aa64afd5febe13f4ced6d10640f7f6f1028b7de7dda542cd9d7f56095cffb56"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/chat.py"}, "region": {"startLine": 450}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56041, "scanner": "repobility-ast-engine", "fingerprint": "b91b3cfa426074c8d2a7a3c7a162650432d2bb22cdfcdcf94e3d9d63f0a748dd", "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|b91b3cfa426074c8d2a7a3c7a162650432d2bb22cdfcdcf94e3d9d63f0a748dd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56040, "scanner": "repobility-ast-engine", "fingerprint": "568c4cf6a043958be71a00418bdd544c4d324a5f8b480899be0c04b0adc5e2bf", "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|568c4cf6a043958be71a00418bdd544c4d324a5f8b480899be0c04b0adc5e2bf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56039, "scanner": "repobility-ast-engine", "fingerprint": "c98c32afe14ea00a52192608876d45f0622c330958a6c95648a63afd83cd48a5", "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|c98c32afe14ea00a52192608876d45f0622c330958a6c95648a63afd83cd48a5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 150}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56038, "scanner": "repobility-ast-engine", "fingerprint": "8028fa9cae056118e8b2e48d43dab1b06d18e24180a047a9acb7ba767d92f9a0", "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|8028fa9cae056118e8b2e48d43dab1b06d18e24180a047a9acb7ba767d92f9a0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 158}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56036, "scanner": "repobility-ast-engine", "fingerprint": "b91b3cfa426074c8d2a7a3c7a162650432d2bb22cdfcdcf94e3d9d63f0a748dd", "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|b91b3cfa426074c8d2a7a3c7a162650432d2bb22cdfcdcf94e3d9d63f0a748dd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 56034, "scanner": "repobility-ast-engine", "fingerprint": "c98c32afe14ea00a52192608876d45f0622c330958a6c95648a63afd83cd48a5", "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|c98c32afe14ea00a52192608876d45f0622c330958a6c95648a63afd83cd48a5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 150}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 55979, "scanner": "repobility-ast-engine", "fingerprint": "6f5776acd049c80999a9895b777921446752c033d244e172d5372d982259220f", "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|6f5776acd049c80999a9895b777921446752c033d244e172d5372d982259220f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/credentials_service.py"}, "region": {"startLine": 338}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "Bare except continues silently"}, "properties": {"repobilityId": 55978, "scanner": "repobility-ast-engine", "fingerprint": "6f5776acd049c80999a9895b777921446752c033d244e172d5372d982259220f", "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|6f5776acd049c80999a9895b777921446752c033d244e172d5372d982259220f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/credentials_service.py"}, "region": {"startLine": 338}}}]}, {"ruleId": "GHSA-xffm-g5w8-qvg7", "level": "note", "message": {"text": "@eslint/plugin-kit: GHSA-xffm-g5w8-qvg7"}, "properties": {"repobilityId": 56363, "scanner": "osv-scanner", "fingerprint": "c6e3599457f3d0a9e6fdd08f8d92d7381bce4c3ac65563cf95f02a486a555819", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "package": "@eslint/plugin-kit", "rule_id": "GHSA-xffm-g5w8-qvg7", "scanner": "osv-scanner", "correlation_key": "vuln|eslint/plugin-kit|GHSA-XFFM-G5W8-QVG7|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-xffm-g5w8-qvg7", "level": "note", "message": {"text": "@eslint/plugin-kit: GHSA-xffm-g5w8-qvg7"}, "properties": {"repobilityId": 56362, "scanner": "osv-scanner", "fingerprint": "c6e3599457f3d0a9e6fdd08f8d92d7381bce4c3ac65563cf95f02a486a555819", "category": "dependency", "severity": "low", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "package": "@eslint/plugin-kit", "rule_id": "GHSA-xffm-g5w8-qvg7", "scanner": "osv-scanner", "correlation_key": "vuln|eslint/plugin-kit|GHSA-XFFM-G5W8-QVG7|frontend/package-lock.json"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKC010", "level": "note", "message": {"text": "Compose service lacks no-new-privileges hardening"}, "properties": {"repobilityId": 56344, "scanner": "repobility-docker", "fingerprint": "49be23fe4552e6688c61304675387613c3c169d5850d2f1005abb41fb7ae53c0", "category": "docker", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "App-like service has no security_opt no-new-privileges setting.", "evidence": {"rule_id": "DKC010", "scanner": "repobility-docker", "service": "open_notebook", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|49be23fe4552e6688c61304675387613c3c169d5850d2f1005abb41fb7ae53c0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "DKC010", "level": "note", "message": {"text": "Compose service lacks no-new-privileges hardening"}, "properties": {"repobilityId": 56341, "scanner": "repobility-docker", "fingerprint": "49be23fe4552e6688c61304675387613c3c169d5850d2f1005abb41fb7ae53c0", "category": "docker", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "App-like service has no security_opt no-new-privileges setting.", "evidence": {"rule_id": "DKC010", "scanner": "repobility-docker", "service": "open_notebook", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|49be23fe4552e6688c61304675387613c3c169d5850d2f1005abb41fb7ae53c0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "DKC006", "level": "note", "message": {"text": "Compose service does not declare a runtime user"}, "properties": {"repobilityId": 56340, "scanner": "repobility-docker", "fingerprint": "b71f7e7dac719103b5ceb9e804638d2bededf8aa29e32485d7b076d0e9f9f35a", "category": "docker", "severity": "low", "confidence": 0.56, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Service has no user setting and Repobility could not prove the image runs non-root.", "evidence": {"rule_id": "DKC006", "scanner": "repobility-docker", "service": "open_notebook", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|b71f7e7dac719103b5ceb9e804638d2bededf8aa29e32485d7b076d0e9f9f35a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "DKC010", "level": "note", "message": {"text": "Compose service lacks no-new-privileges hardening"}, "properties": {"repobilityId": 56337, "scanner": "repobility-docker", "fingerprint": "7f80983f54868d8bec198a3977b7dcbe8bfb5f2291356d590fb078148e91780d", "category": "docker", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "App-like service has no security_opt no-new-privileges setting.", "evidence": {"rule_id": "DKC010", "scanner": "repobility-docker", "service": "surrealdb", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|7f80983f54868d8bec198a3977b7dcbe8bfb5f2291356d590fb078148e91780d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKC006", "level": "note", "message": {"text": "Compose service does not declare a runtime user"}, "properties": {"repobilityId": 56338, "scanner": "repobility-docker", "fingerprint": "b71f7e7dac719103b5ceb9e804638d2bededf8aa29e32485d7b076d0e9f9f35a", "category": "docker", "severity": "low", "confidence": 0.56, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Service has no user setting and Repobility could not prove the image runs non-root.", "evidence": {"rule_id": "DKC006", "scanner": "repobility-docker", "service": "open_notebook", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|b71f7e7dac719103b5ceb9e804638d2bededf8aa29e32485d7b076d0e9f9f35a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "DKC010", "level": "note", "message": {"text": "Compose service lacks no-new-privileges hardening"}, "properties": {"repobilityId": 56336, "scanner": "repobility-docker", "fingerprint": "7f80983f54868d8bec198a3977b7dcbe8bfb5f2291356d590fb078148e91780d", "category": "docker", "severity": "low", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "App-like service has no security_opt no-new-privileges setting.", "evidence": {"rule_id": "DKC010", "scanner": "repobility-docker", "service": "surrealdb", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|7f80983f54868d8bec198a3977b7dcbe8bfb5f2291356d590fb078148e91780d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR011", "level": "note", "message": {"text": "Dockerfile installs recommended OS packages"}, "properties": {"repobilityId": 56328, "scanner": "repobility-docker", "fingerprint": "ec6a3d5d6a62c357303dd15b26828e34ce4b7e381d4a7c1dcb2cc8dec2beaf44", "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|ec6a3d5d6a62c357303dd15b26828e34ce4b7e381d4a7c1dcb2cc8dec2beaf44"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 57}}}]}, {"ruleId": "DKR011", "level": "note", "message": {"text": "Dockerfile installs recommended OS packages"}, "properties": {"repobilityId": 56325, "scanner": "repobility-docker", "fingerprint": "ec6a3d5d6a62c357303dd15b26828e34ce4b7e381d4a7c1dcb2cc8dec2beaf44", "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|ec6a3d5d6a62c357303dd15b26828e34ce4b7e381d4a7c1dcb2cc8dec2beaf44"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 57}}}]}, {"ruleId": "DKR008", "level": "note", "message": {"text": ".dockerignore misses sensitive defaults"}, "properties": {"repobilityId": 56321, "scanner": "repobility-docker", "fingerprint": "aea2ad92c68c4ee1f8432bb1ec25e7d45ac12c9e1790ac2d3fffe638b1acce12", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "A Docker build context should exclude secrets and repository metadata.", "evidence": {"rule_id": "DKR008", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|aea2ad92c68c4ee1f8432bb1ec25e7d45ac12c9e1790ac2d3fffe638b1acce12", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".dockerignore"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR008", "level": "note", "message": {"text": ".dockerignore misses sensitive defaults"}, "properties": {"repobilityId": 56319, "scanner": "repobility-docker", "fingerprint": "aea2ad92c68c4ee1f8432bb1ec25e7d45ac12c9e1790ac2d3fffe638b1acce12", "category": "docker", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "A Docker build context should exclude secrets and repository metadata.", "evidence": {"rule_id": "DKR008", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/"], "correlation_key": "fp|aea2ad92c68c4ee1f8432bb1ec25e7d45ac12c9e1790ac2d3fffe638b1acce12", "missing_patterns": ["id_rsa", "*.pem", "*.key"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".dockerignore"}, "region": {"startLine": 1}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `get_job_status` has cognitive complexity 11 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: and=4, except=1, ternary=6."}, "properties": {"repobilityId": 56231, "scanner": "repobility-threat-engine", "fingerprint": "407fd065e1556e07ece97e9fb61dee390c5d1a7c3a9a5ed158ea9028b6b7103a", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 11 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "get_job_status", "breakdown": {"and": 4, "except": 1, "ternary": 6}, "complexity": 11, "correlation_key": "fp|407fd065e1556e07ece97e9fb61dee390c5d1a7c3a9a5ed158ea9028b6b7103a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/podcast_service.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `get_job_status` has cognitive complexity 11 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: and=4, except=1, ternary=6."}, "properties": {"repobilityId": 56230, "scanner": "repobility-threat-engine", "fingerprint": "407fd065e1556e07ece97e9fb61dee390c5d1a7c3a9a5ed158ea9028b6b7103a", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 11 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "get_job_status", "breakdown": {"and": 4, "except": 1, "ternary": 6}, "complexity": 11, "correlation_key": "fp|407fd065e1556e07ece97e9fb61dee390c5d1a7c3a9a5ed158ea9028b6b7103a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/podcast_service.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `submit_generation_job` has cognitive complexity 11 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: except=3, if=5, nested_bonus=2, ternary=1."}, "properties": {"repobilityId": 56229, "scanner": "repobility-threat-engine", "fingerprint": "baa18fa2879a8921cc4bf07a482f297687dd68e92de3708eaab70f56ac24c488", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 11 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "submit_generation_job", "breakdown": {"if": 5, "except": 3, "ternary": 1, "nested_bonus": 2}, "complexity": 11, "correlation_key": "fp|baa18fa2879a8921cc4bf07a482f297687dd68e92de3708eaab70f56ac24c488"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/podcast_service.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `submit_generation_job` has cognitive complexity 11 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: except=3, if=5, nested_bonus=2, ternary=1."}, "properties": {"repobilityId": 56228, "scanner": "repobility-threat-engine", "fingerprint": "baa18fa2879a8921cc4bf07a482f297687dd68e92de3708eaab70f56ac24c488", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 11 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "submit_generation_job", "breakdown": {"if": 5, "except": 3, "ternary": 1, "nested_bonus": 2}, "complexity": 11, "correlation_key": "fp|baa18fa2879a8921cc4bf07a482f297687dd68e92de3708eaab70f56ac24c488"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/podcast_service.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `get_command_status` has cognitive complexity 12 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: and=4, except=1, recursion=1, ternary=6."}, "properties": {"repobilityId": 56227, "scanner": "repobility-threat-engine", "fingerprint": "02cf4f60d114a0bcfcfebb34c4692fde052a1c9b7b13bec9ed5f8aab220b302c", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 12 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "get_command_status", "breakdown": {"and": 4, "except": 1, "ternary": 6, "recursion": 1}, "complexity": 12, "correlation_key": "fp|02cf4f60d114a0bcfcfebb34c4692fde052a1c9b7b13bec9ed5f8aab220b302c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/command_service.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `get_command_status` has cognitive complexity 12 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: and=4, except=1, recursion=1, ternary=6."}, "properties": {"repobilityId": 56226, "scanner": "repobility-threat-engine", "fingerprint": "02cf4f60d114a0bcfcfebb34c4692fde052a1c9b7b13bec9ed5f8aab220b302c", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 12 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "get_command_status", "breakdown": {"and": 4, "except": 1, "ternary": 6, "recursion": 1}, "complexity": 12, "correlation_key": "fp|02cf4f60d114a0bcfcfebb34c4692fde052a1c9b7b13bec9ed5f8aab220b302c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/command_service.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@types/react-dom` is minor version(s) behind (19.1.6 -> 19.2.3)"}, "properties": {"repobilityId": 56223, "scanner": "repobility-dependency-currency", "fingerprint": "73c46fcadaa32e5543a9085e361e4b53f2c633c8662cda0b4909fc3c28f695a2", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@types/react-dom", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "19.2.3", "correlation_key": "fp|73c46fcadaa32e5543a9085e361e4b53f2c633c8662cda0b4909fc3c28f695a2", "current_version": "19.1.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `use-debounce` is minor version(s) behind (10.0.6 -> 10.1.1)"}, "properties": {"repobilityId": 56220, "scanner": "repobility-dependency-currency", "fingerprint": "4cb7b3a850e373626ee915f4d96e4acd63b536f17a32c681a4857223a413610b", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "use-debounce", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "10.1.1", "correlation_key": "fp|4cb7b3a850e373626ee915f4d96e4acd63b536f17a32c681a4857223a413610b", "current_version": "10.0.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `tailwind-merge` is minor version(s) behind (3.3.1 -> 3.6.0)"}, "properties": {"repobilityId": 56219, "scanner": "repobility-dependency-currency", "fingerprint": "98d90817d3d3d45d7699d68a1905a13e7dbc9818a7ebe7863d2a358bfbd4a223", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "tailwind-merge", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "3.6.0", "correlation_key": "fp|98d90817d3d3d45d7699d68a1905a13e7dbc9818a7ebe7863d2a358bfbd4a223", "current_version": "3.3.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@types/react-dom` is minor version(s) behind (19.1.6 -> 19.2.3)"}, "properties": {"repobilityId": 56215, "scanner": "repobility-dependency-currency", "fingerprint": "73c46fcadaa32e5543a9085e361e4b53f2c633c8662cda0b4909fc3c28f695a2", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@types/react-dom", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "19.2.3", "correlation_key": "fp|73c46fcadaa32e5543a9085e361e4b53f2c633c8662cda0b4909fc3c28f695a2", "current_version": "19.1.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `use-debounce` is minor version(s) behind (10.0.6 -> 10.1.1)"}, "properties": {"repobilityId": 56210, "scanner": "repobility-dependency-currency", "fingerprint": "4cb7b3a850e373626ee915f4d96e4acd63b536f17a32c681a4857223a413610b", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "use-debounce", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "10.1.1", "correlation_key": "fp|4cb7b3a850e373626ee915f4d96e4acd63b536f17a32c681a4857223a413610b", "current_version": "10.0.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `axios` is minor version(s) behind (1.16.0 -> 1.17.0)"}, "properties": {"repobilityId": 56209, "scanner": "repobility-dependency-currency", "fingerprint": "c0d2b839389045bf85cc4549c26a72e32603f280b56bdf979c9101110df1cf93", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "axios", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.17.0", "correlation_key": "fp|c0d2b839389045bf85cc4549c26a72e32603f280b56bdf979c9101110df1cf93", "current_version": "1.16.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `tailwind-merge` is minor version(s) behind (3.3.1 -> 3.6.0)"}, "properties": {"repobilityId": 56208, "scanner": "repobility-dependency-currency", "fingerprint": "98d90817d3d3d45d7699d68a1905a13e7dbc9818a7ebe7863d2a358bfbd4a223", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "tailwind-merge", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "3.6.0", "correlation_key": "fp|98d90817d3d3d45d7699d68a1905a13e7dbc9818a7ebe7863d2a358bfbd4a223", "current_version": "3.3.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@uiw/react-md-editor` is minor version(s) behind (4.0.8 -> 4.1.1)"}, "properties": {"repobilityId": 56207, "scanner": "repobility-dependency-currency", "fingerprint": "c44f2d13397665276f12a78ee44b233028d66eb82718f796e14999c52c62d74b", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@uiw/react-md-editor", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "4.1.1", "correlation_key": "fp|c44f2d13397665276f12a78ee44b233028d66eb82718f796e14999c52c62d74b", "current_version": "4.0.8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@tanstack/react-query` is minor version(s) behind (5.83.0 -> 5.101.0)"}, "properties": {"repobilityId": 56204, "scanner": "repobility-dependency-currency", "fingerprint": "aaf3a36115ceb51816deb6272d43a972200305ee65670aa67ffdc2ee6d8b1b1a", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@tanstack/react-query", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.101.0", "correlation_key": "fp|aaf3a36115ceb51816deb6272d43a972200305ee65670aa67ffdc2ee6d8b1b1a", "current_version": "5.83.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `axios` is minor version(s) behind (1.16.0 -> 1.17.0)"}, "properties": {"repobilityId": 56201, "scanner": "repobility-dependency-currency", "fingerprint": "c0d2b839389045bf85cc4549c26a72e32603f280b56bdf979c9101110df1cf93", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "axios", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.17.0", "correlation_key": "fp|c0d2b839389045bf85cc4549c26a72e32603f280b56bdf979c9101110df1cf93", "current_version": "1.16.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@uiw/react-md-editor` is minor version(s) behind (4.0.8 -> 4.1.1)"}, "properties": {"repobilityId": 56200, "scanner": "repobility-dependency-currency", "fingerprint": "c44f2d13397665276f12a78ee44b233028d66eb82718f796e14999c52c62d74b", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@uiw/react-md-editor", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "4.1.1", "correlation_key": "fp|c44f2d13397665276f12a78ee44b233028d66eb82718f796e14999c52c62d74b", "current_version": "4.0.8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@tanstack/react-query` is minor version(s) behind (5.83.0 -> 5.101.0)"}, "properties": {"repobilityId": 56198, "scanner": "repobility-dependency-currency", "fingerprint": "aaf3a36115ceb51816deb6272d43a972200305ee65670aa67ffdc2ee6d8b1b1a", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@tanstack/react-query", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.101.0", "correlation_key": "fp|aaf3a36115ceb51816deb6272d43a972200305ee65670aa67ffdc2ee6d8b1b1a", "current_version": "5.83.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@hookform/resolvers` is minor version(s) behind (5.1.1 -> 5.4.0)"}, "properties": {"repobilityId": 56173, "scanner": "repobility-dependency-currency", "fingerprint": "bfa7510fef02bfadc32ee6a72c362e4aec704804cd9e5c43eb4c42055f705168", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@hookform/resolvers", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.4.0", "correlation_key": "fp|bfa7510fef02bfadc32ee6a72c362e4aec704804cd9e5c43eb4c42055f705168", "current_version": "5.1.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "note", "message": {"text": "npm package `@hookform/resolvers` is minor version(s) behind (5.1.1 -> 5.4.0)"}, "properties": {"repobilityId": 56172, "scanner": "repobility-dependency-currency", "fingerprint": "bfa7510fef02bfadc32ee6a72c362e4aec704804cd9e5c43eb4c42055f705168", "category": "dependency", "severity": "low", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "minor version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@hookform/resolvers", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.4.0", "correlation_key": "fp|bfa7510fef02bfadc32ee6a72c362e4aec704804cd9e5c43eb4c42055f705168", "current_version": "5.1.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55925, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1dec0ab4b96bbdd88ddb5755df1c743acd187b120aff05dd4743542b1f709fb9", "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": "open_notebook/graphs/chat.py", "duplicate_line": 39, "correlation_key": "fp|1dec0ab4b96bbdd88ddb5755df1c743acd187b120aff05dd4743542b1f709fb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/graphs/source_chat.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55924, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1dec0ab4b96bbdd88ddb5755df1c743acd187b120aff05dd4743542b1f709fb9", "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": "open_notebook/graphs/chat.py", "duplicate_line": 39, "correlation_key": "fp|1dec0ab4b96bbdd88ddb5755df1c743acd187b120aff05dd4743542b1f709fb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/graphs/source_chat.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55922, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0ff880a05d3f83b54220e13cdb583b90a3930ed990604b7ce0ca260e36b6835e", "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": "open_notebook/ai/models.py", "duplicate_line": 62, "correlation_key": "fp|0ff880a05d3f83b54220e13cdb583b90a3930ed990604b7ce0ca260e36b6835e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/domain/provider_config.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55923, "scanner": "repobility-ai-code-hygiene", "fingerprint": "0ff880a05d3f83b54220e13cdb583b90a3930ed990604b7ce0ca260e36b6835e", "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": "open_notebook/ai/models.py", "duplicate_line": 62, "correlation_key": "fp|0ff880a05d3f83b54220e13cdb583b90a3930ed990604b7ce0ca260e36b6835e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/domain/provider_config.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55920, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ab7bdb84ca8fa823d35479d2488485d1df35289d6b3eb11361547cdfc3fb13fd", "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": "frontend/src/lib/hooks/useNotebookChat.ts", "duplicate_line": 48, "correlation_key": "fp|ab7bdb84ca8fa823d35479d2488485d1df35289d6b3eb11361547cdfc3fb13fd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/hooks/useSourceChat.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55921, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ab7bdb84ca8fa823d35479d2488485d1df35289d6b3eb11361547cdfc3fb13fd", "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": "frontend/src/lib/hooks/useNotebookChat.ts", "duplicate_line": 48, "correlation_key": "fp|ab7bdb84ca8fa823d35479d2488485d1df35289d6b3eb11361547cdfc3fb13fd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/hooks/useSourceChat.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55919, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9224894debc491e92d3ef480dd29dd82fac12de4dc56b8f6f18d0e1baed3d7f9", "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": "frontend/src/lib/hooks/use-credentials.ts", "duplicate_line": 263, "correlation_key": "fp|9224894debc491e92d3ef480dd29dd82fac12de4dc56b8f6f18d0e1baed3d7f9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/hooks/use-models.ts"}, "region": {"startLine": 132}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55918, "scanner": "repobility-ai-code-hygiene", "fingerprint": "fe76e1a489170c9b8ee28f8ea400fdea194a547b85739b12a81456c3f4829373", "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": "frontend/src/lib/api/search.ts", "duplicate_line": 9, "correlation_key": "fp|fe76e1a489170c9b8ee28f8ea400fdea194a547b85739b12a81456c3f4829373"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/api/source-chat.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55917, "scanner": "repobility-ai-code-hygiene", "fingerprint": "25013e2bfb511e5cdc2b39e8eb018b26adfbe8cc7ab2dd96165853d7a200a282", "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": "frontend/src/app/(dashboard)/notebooks/components/NotesColumn.tsx", "duplicate_line": 140, "correlation_key": "fp|25013e2bfb511e5cdc2b39e8eb018b26adfbe8cc7ab2dd96165853d7a200a282"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/sources/SourceCard.tsx"}, "region": {"startLine": 258}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55916, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b123bc3de2814bb78343bdd961c8d0d84203295320034c4b80bd705477ed57f1", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 114, "correlation_key": "fp|b123bc3de2814bb78343bdd961c8d0d84203295320034c4b80bd705477ed57f1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/source/SourceInsightDialog.tsx"}, "region": {"startLine": 113}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55915, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2d17553954b4bee710c92330ae350eb1cd48b889dd9f20d291befefaea200b90", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 117, "correlation_key": "fp|2d17553954b4bee710c92330ae350eb1cd48b889dd9f20d291befefaea200b90"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/source/SourceDetailContent.tsx"}, "region": {"startLine": 490}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55914, "scanner": "repobility-ai-code-hygiene", "fingerprint": "984ec15bf09d05782523f38d277806ee4bc0ae858a577b5a774e007f24513250", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 117, "correlation_key": "fp|984ec15bf09d05782523f38d277806ee4bc0ae858a577b5a774e007f24513250"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/source/ChatPanel.tsx"}, "region": {"startLine": 325}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55913, "scanner": "repobility-ai-code-hygiene", "fingerprint": "23959c1e8683054e39330241cafba577ba21727e67c7e696735a4b84560fe283", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 117, "correlation_key": "fp|23959c1e8683054e39330241cafba577ba21727e67c7e696735a4b84560fe283"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/search/StreamingResponse.tsx"}, "region": {"startLine": 161}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55912, "scanner": "repobility-ai-code-hygiene", "fingerprint": "cdd5d71183573d54b1dd33ae63e093df6df03d213ad33f634ae73a0f5e9aa884", "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": "frontend/src/components/podcasts/forms/EpisodeProfileFormDialog.tsx", "duplicate_line": 113, "correlation_key": "fp|cdd5d71183573d54b1dd33ae63e093df6df03d213ad33f634ae73a0f5e9aa884"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/forms/SpeakerProfileFormDialog.tsx"}, "region": {"startLine": 121}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55911, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ce0bd449c09b52523925ed7fcd295288855cfead73e6638f7ff8f3f065a72777", "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": "frontend/src/components/podcasts/EpisodeProfilesPanel.tsx", "duplicate_line": 13, "correlation_key": "fp|ce0bd449c09b52523925ed7fcd295288855cfead73e6638f7ff8f3f065a72777"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/SpeakerProfilesPanel.tsx"}, "region": {"startLine": 13}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55910, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f695fdb9df69240ae93bce8fa0b9b7dbf3e43a7c5d9903fc1b7b3319e5ab3ddc", "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": "frontend/src/components/podcasts/EpisodeCard.tsx", "duplicate_line": 9, "correlation_key": "fp|f695fdb9df69240ae93bce8fa0b9b7dbf3e43a7c5d9903fc1b7b3319e5ab3ddc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/SpeakerProfilesPanel.tsx"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55909, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e31cf2386b76bb909e08450d9d2cee780ff503fd1a38324f976ab86c96cebaea", "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": "frontend/src/components/podcasts/EpisodeCard.tsx", "duplicate_line": 9, "correlation_key": "fp|e31cf2386b76bb909e08450d9d2cee780ff503fd1a38324f976ab86c96cebaea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/EpisodeProfilesPanel.tsx"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55908, "scanner": "repobility-ai-code-hygiene", "fingerprint": "46162585161529a639dc7a551d39d037b4732e4b24199d1fba81d4250815f6d2", "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": "api/routers/chat.py", "duplicate_line": 329, "correlation_key": "fp|46162585161529a639dc7a551d39d037b4732e4b24199d1fba81d4250815f6d2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 19}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55907, "scanner": "repobility-ai-code-hygiene", "fingerprint": "608f24f9f4129b3e194435174482d622b1a9f53ebf77365f3f66ae2e9a9df817", "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": "api/command_service.py", "duplicate_line": 38, "correlation_key": "fp|608f24f9f4129b3e194435174482d622b1a9f53ebf77365f3f66ae2e9a9df817"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/podcast_service.py"}, "region": {"startLine": 88}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55906, "scanner": "repobility-ai-code-hygiene", "fingerprint": "acb4fc42167714350b873fd0848206523fb96a18ce49f5cc9204a4066a194949", "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": "api/insights_service.py", "duplicate_line": 51, "correlation_key": "fp|acb4fc42167714350b873fd0848206523fb96a18ce49f5cc9204a4066a194949"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/notes_service.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55905, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9224894debc491e92d3ef480dd29dd82fac12de4dc56b8f6f18d0e1baed3d7f9", "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": "frontend/src/lib/hooks/use-credentials.ts", "duplicate_line": 263, "correlation_key": "fp|9224894debc491e92d3ef480dd29dd82fac12de4dc56b8f6f18d0e1baed3d7f9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/hooks/use-models.ts"}, "region": {"startLine": 132}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55904, "scanner": "repobility-ai-code-hygiene", "fingerprint": "fe76e1a489170c9b8ee28f8ea400fdea194a547b85739b12a81456c3f4829373", "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": "frontend/src/lib/api/search.ts", "duplicate_line": 9, "correlation_key": "fp|fe76e1a489170c9b8ee28f8ea400fdea194a547b85739b12a81456c3f4829373"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/lib/api/source-chat.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55903, "scanner": "repobility-ai-code-hygiene", "fingerprint": "25013e2bfb511e5cdc2b39e8eb018b26adfbe8cc7ab2dd96165853d7a200a282", "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": "frontend/src/app/(dashboard)/notebooks/components/NotesColumn.tsx", "duplicate_line": 140, "correlation_key": "fp|25013e2bfb511e5cdc2b39e8eb018b26adfbe8cc7ab2dd96165853d7a200a282"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/sources/SourceCard.tsx"}, "region": {"startLine": 258}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55902, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b123bc3de2814bb78343bdd961c8d0d84203295320034c4b80bd705477ed57f1", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 114, "correlation_key": "fp|b123bc3de2814bb78343bdd961c8d0d84203295320034c4b80bd705477ed57f1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/source/SourceInsightDialog.tsx"}, "region": {"startLine": 113}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55901, "scanner": "repobility-ai-code-hygiene", "fingerprint": "2d17553954b4bee710c92330ae350eb1cd48b889dd9f20d291befefaea200b90", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 117, "correlation_key": "fp|2d17553954b4bee710c92330ae350eb1cd48b889dd9f20d291befefaea200b90"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/source/SourceDetailContent.tsx"}, "region": {"startLine": 490}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55900, "scanner": "repobility-ai-code-hygiene", "fingerprint": "984ec15bf09d05782523f38d277806ee4bc0ae858a577b5a774e007f24513250", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 117, "correlation_key": "fp|984ec15bf09d05782523f38d277806ee4bc0ae858a577b5a774e007f24513250"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/source/ChatPanel.tsx"}, "region": {"startLine": 325}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55899, "scanner": "repobility-ai-code-hygiene", "fingerprint": "23959c1e8683054e39330241cafba577ba21727e67c7e696735a4b84560fe283", "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": "frontend/src/app/(dashboard)/transformations/components/TransformationPlayground.tsx", "duplicate_line": 117, "correlation_key": "fp|23959c1e8683054e39330241cafba577ba21727e67c7e696735a4b84560fe283"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/search/StreamingResponse.tsx"}, "region": {"startLine": 161}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55898, "scanner": "repobility-ai-code-hygiene", "fingerprint": "cdd5d71183573d54b1dd33ae63e093df6df03d213ad33f634ae73a0f5e9aa884", "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": "frontend/src/components/podcasts/forms/EpisodeProfileFormDialog.tsx", "duplicate_line": 113, "correlation_key": "fp|cdd5d71183573d54b1dd33ae63e093df6df03d213ad33f634ae73a0f5e9aa884"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/forms/SpeakerProfileFormDialog.tsx"}, "region": {"startLine": 121}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55897, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ce0bd449c09b52523925ed7fcd295288855cfead73e6638f7ff8f3f065a72777", "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": "frontend/src/components/podcasts/EpisodeProfilesPanel.tsx", "duplicate_line": 13, "correlation_key": "fp|ce0bd449c09b52523925ed7fcd295288855cfead73e6638f7ff8f3f065a72777"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/SpeakerProfilesPanel.tsx"}, "region": {"startLine": 13}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55896, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f695fdb9df69240ae93bce8fa0b9b7dbf3e43a7c5d9903fc1b7b3319e5ab3ddc", "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": "frontend/src/components/podcasts/EpisodeCard.tsx", "duplicate_line": 9, "correlation_key": "fp|f695fdb9df69240ae93bce8fa0b9b7dbf3e43a7c5d9903fc1b7b3319e5ab3ddc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/SpeakerProfilesPanel.tsx"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55895, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e31cf2386b76bb909e08450d9d2cee780ff503fd1a38324f976ab86c96cebaea", "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": "frontend/src/components/podcasts/EpisodeCard.tsx", "duplicate_line": 9, "correlation_key": "fp|e31cf2386b76bb909e08450d9d2cee780ff503fd1a38324f976ab86c96cebaea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/podcasts/EpisodeProfilesPanel.tsx"}, "region": {"startLine": 11}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55894, "scanner": "repobility-ai-code-hygiene", "fingerprint": "46162585161529a639dc7a551d39d037b4732e4b24199d1fba81d4250815f6d2", "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": "api/routers/chat.py", "duplicate_line": 329, "correlation_key": "fp|46162585161529a639dc7a551d39d037b4732e4b24199d1fba81d4250815f6d2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 19}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55893, "scanner": "repobility-ai-code-hygiene", "fingerprint": "608f24f9f4129b3e194435174482d622b1a9f53ebf77365f3f66ae2e9a9df817", "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": "api/command_service.py", "duplicate_line": 38, "correlation_key": "fp|608f24f9f4129b3e194435174482d622b1a9f53ebf77365f3f66ae2e9a9df817"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/podcast_service.py"}, "region": {"startLine": 88}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 55892, "scanner": "repobility-ai-code-hygiene", "fingerprint": "acb4fc42167714350b873fd0848206523fb96a18ce49f5cc9204a4066a194949", "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": "api/insights_service.py", "duplicate_line": 51, "correlation_key": "fp|acb4fc42167714350b873fd0848206523fb96a18ce49f5cc9204a4066a194949"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/notes_service.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 56303, "scanner": "repobility-threat-engine", "fingerprint": "c2d482229b0c627d4397c66aff37ab78da4f7962524f8429451fb88b076e39ca", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c2d482229b0c627d4397c66aff37ab78da4f7962524f8429451fb88b076e39ca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/version_utils.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 56302, "scanner": "repobility-threat-engine", "fingerprint": "c2d482229b0c627d4397c66aff37ab78da4f7962524f8429451fb88b076e39ca", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c2d482229b0c627d4397c66aff37ab78da4f7962524f8429451fb88b076e39ca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/version_utils.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "SEC078", "level": "none", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 56301, "scanner": "repobility-threat-engine", "fingerprint": "2117fc7ec3425f1805a513d0715a676d5db1a6b74a1d9c8fdaacd2c89a3a54cf", "category": "quality", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Safe pattern 'timeout\\s*=' detected on same line", "evidence": {"match": "requests.get(", "reason": "Safe pattern 'timeout\\s*=' detected on same line", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "fp|2117fc7ec3425f1805a513d0715a676d5db1a6b74a1d9c8fdaacd2c89a3a54cf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/version_utils.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "SEC078", "level": "none", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 56300, "scanner": "repobility-threat-engine", "fingerprint": "2117fc7ec3425f1805a513d0715a676d5db1a6b74a1d9c8fdaacd2c89a3a54cf", "category": "quality", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Safe pattern 'timeout\\s*=' detected on same line", "evidence": {"match": "requests.get(", "reason": "Safe pattern 'timeout\\s*=' detected on same line", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "fp|2117fc7ec3425f1805a513d0715a676d5db1a6b74a1d9c8fdaacd2c89a3a54cf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/version_utils.py"}, "region": {"startLine": 93}}}]}, {"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": 56286, "scanner": "repobility-threat-engine", "fingerprint": "6cbff01c58a314e351b8a2adabc04b0648ca0a9862846139dd66647c70f8deda", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Log message mentions credential-related metadata but does not print a credential-bearing value", "evidence": {"match": "logger.debug(\"Set AZURE_OPENAI_API_KEY from Credential\")", "reason": "Log message mentions credential-related metadata but does not print a credential-bearing value", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.15, "correlation_key": "secret|token|18|logger.debug set azure_openai_api_key from credential"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/key_provider.py"}, "region": {"startLine": 189}}}]}, {"ruleId": "MINED056", "level": "none", "message": {"text": "[MINED056] React Key As Index: key={index} in map() \u2014 re-renders the wrong elements on re-order."}, "properties": {"repobilityId": 56285, "scanner": "repobility-threat-engine", "fingerprint": "14ae077973440df68a171b8a716819eee8c74b734cf15334ce939a7e5392522d", "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": "react-key-as-index", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348032+00:00", "triaged_in_corpus": 12, "observations_count": 299917, "ai_coder_pattern_id": 135}, "scanner": "repobility-threat-engine", "correlation_key": "fp|14ae077973440df68a171b8a716819eee8c74b734cf15334ce939a7e5392522d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/ui/checkbox-list.tsx"}, "region": {"startLine": 34}}}]}, {"ruleId": "MINED056", "level": "none", "message": {"text": "[MINED056] React Key As Index: key={index} in map() \u2014 re-renders the wrong elements on re-order."}, "properties": {"repobilityId": 56284, "scanner": "repobility-threat-engine", "fingerprint": "921d5a9b0fd73f20d9bf34366c1c5cdedeb562ad660ef210a7a256333ca5170e", "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": "react-key-as-index", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348032+00:00", "triaged_in_corpus": 12, "observations_count": 299917, "ai_coder_pattern_id": 135}, "scanner": "repobility-threat-engine", "correlation_key": "fp|921d5a9b0fd73f20d9bf34366c1c5cdedeb562ad660ef210a7a256333ca5170e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/search/StreamingResponse.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 56283, "scanner": "repobility-threat-engine", "fingerprint": "21ad87621797a84edc40b3cba5eac516f4f6cc5ab5912e3c68775920f76a1514", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|21ad87621797a84edc40b3cba5eac516f4f6cc5ab5912e3c68775920f76a1514"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/errors/ConnectionErrorOverlay.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED058", "level": "none", "message": {"text": "[MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escaping. Pair with DOMPurify or never use with user data."}, "properties": {"repobilityId": 56281, "scanner": "repobility-threat-engine", "fingerprint": "ac4e156754a852e1bdfc1688bcbc431b669ee1166cb9abda3f17730a862799de", "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": "react-dangerously-set-html", "owasp": "A03:2021", "cwe_ids": ["CWE-79"], "languages": ["javascript", "typescript"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348037+00:00", "triaged_in_corpus": 12, "observations_count": 255650, "ai_coder_pattern_id": 49}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ac4e156754a852e1bdfc1688bcbc431b669ee1166cb9abda3f17730a862799de"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/layout.tsx"}, "region": {"startLine": 27}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 56279, "scanner": "repobility-threat-engine", "fingerprint": "3633cc3c988755b52b397294102c01fddc1cf2a5e8e7b0a1a33701291f64fc10", "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": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3633cc3c988755b52b397294102c01fddc1cf2a5e8e7b0a1a33701291f64fc10"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/(dashboard)/notebooks/[id]/page.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod (and 8 more): Same pattern found in 8 additional files. Review if needed."}, "properties": {"repobilityId": 56277, "scanner": "repobility-threat-engine", "fingerprint": "f1e161962fe043d40b0b62354f7238946ffae30e19da416a3889d752e32876be", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 8 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|f1e161962fe043d40b0b62354f7238946ffae30e19da416a3889d752e32876be", "aggregated_count": 8}}}, {"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": 56276, "scanner": "repobility-threat-engine", "fingerprint": "627f4d1ef3203d985731e747218c82d265a45eac81ae67d162e81e6378762bc0", "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|627f4d1ef3203d985731e747218c82d265a45eac81ae67d162e81e6378762bc0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/(dashboard)/notebooks/components/NoteEditorDialog.tsx"}, "region": {"startLine": 100}}}]}, {"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": 56275, "scanner": "repobility-threat-engine", "fingerprint": "6cbff01c58a314e351b8a2adabc04b0648ca0a9862846139dd66647c70f8deda", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Log message mentions credential-related metadata but does not print a credential-bearing value", "evidence": {"match": "logger.debug(\"Set AZURE_OPENAI_API_KEY from Credential\")", "reason": "Log message mentions credential-related metadata but does not print a credential-bearing value", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.15, "correlation_key": "secret|token|18|logger.debug set azure_openai_api_key from credential"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/key_provider.py"}, "region": {"startLine": 189}}}]}, {"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": 56274, "scanner": "repobility-threat-engine", "fingerprint": "c81d338b939d806e2607cbf03940d9da08456f74accf0cf81b33eb15fac03522", "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|c81d338b939d806e2607cbf03940d9da08456f74accf0cf81b33eb15fac03522"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/(dashboard)/advanced/components/SystemInfo.tsx"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED056", "level": "none", "message": {"text": "[MINED056] React Key As Index: key={index} in map() \u2014 re-renders the wrong elements on re-order."}, "properties": {"repobilityId": 56273, "scanner": "repobility-threat-engine", "fingerprint": "14ae077973440df68a171b8a716819eee8c74b734cf15334ce939a7e5392522d", "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": "react-key-as-index", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348032+00:00", "triaged_in_corpus": 12, "observations_count": 299917, "ai_coder_pattern_id": 135}, "scanner": "repobility-threat-engine", "correlation_key": "fp|14ae077973440df68a171b8a716819eee8c74b734cf15334ce939a7e5392522d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/ui/checkbox-list.tsx"}, "region": {"startLine": 34}}}]}, {"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": 56272, "scanner": "repobility-threat-engine", "fingerprint": "e9d626d6537fe2bb614b2f68e2a1c196acd94a0e843a78f63983c085f500ba57", "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|e9d626d6537fe2bb614b2f68e2a1c196acd94a0e843a78f63983c085f500ba57"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/next.config.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED056", "level": "none", "message": {"text": "[MINED056] React Key As Index: key={index} in map() \u2014 re-renders the wrong elements on re-order."}, "properties": {"repobilityId": 56271, "scanner": "repobility-threat-engine", "fingerprint": "921d5a9b0fd73f20d9bf34366c1c5cdedeb562ad660ef210a7a256333ca5170e", "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": "react-key-as-index", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348032+00:00", "triaged_in_corpus": 12, "observations_count": 299917, "ai_coder_pattern_id": 135}, "scanner": "repobility-threat-engine", "correlation_key": "fp|921d5a9b0fd73f20d9bf34366c1c5cdedeb562ad660ef210a7a256333ca5170e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/search/StreamingResponse.tsx"}, "region": {"startLine": 89}}}]}, {"ruleId": "MINED076", "level": "none", "message": {"text": "[MINED076] Catch And Reraise Noop: except X: raise X \u2014 adds no value, hides traceback if AI accidentally changes message."}, "properties": {"repobilityId": 56270, "scanner": "repobility-threat-engine", "fingerprint": "d0a5f18775670362791040619a1aa7eee98e487c86af836d088eb24d1437aeeb", "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": "catch-and-reraise-noop", "owasp": null, "cwe_ids": [], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348079+00:00", "triaged_in_corpus": 10, "observations_count": 8333, "ai_coder_pattern_id": 45}, "scanner": "repobility-threat-engine", "correlation_key": "fp|d0a5f18775670362791040619a1aa7eee98e487c86af836d088eb24d1437aeeb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "commands/podcast_commands.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 56269, "scanner": "repobility-threat-engine", "fingerprint": "21ad87621797a84edc40b3cba5eac516f4f6cc5ab5912e3c68775920f76a1514", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "http-not-https", "owasp": "A02:2021", "cwe_ids": ["CWE-319"], "precision": 0.917, "promoted_at": "2026-05-18T14:01:32.347999+00:00", "triaged_in_corpus": 12, "observations_count": 4113831, "ai_coder_pattern_id": 15}, "scanner": "repobility-threat-engine", "correlation_key": "fp|21ad87621797a84edc40b3cba5eac516f4f6cc5ab5912e3c68775920f76a1514"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/errors/ConnectionErrorOverlay.tsx"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 56268, "scanner": "repobility-threat-engine", "fingerprint": "720533be161643e0133ba43e67766eb445a7d329555a0dbd3ef0d99ac3b21647", "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|720533be161643e0133ba43e67766eb445a7d329555a0dbd3ef0d99ac3b21647"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/sources_service.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "MINED058", "level": "none", "message": {"text": "[MINED058] React Dangerously Set Html: dangerouslySetInnerHTML bypasses Reacts JSX escaping. Pair with DOMPurify or never use with user data."}, "properties": {"repobilityId": 56267, "scanner": "repobility-threat-engine", "fingerprint": "ac4e156754a852e1bdfc1688bcbc431b669ee1166cb9abda3f17730a862799de", "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": "react-dangerously-set-html", "owasp": "A03:2021", "cwe_ids": ["CWE-79"], "languages": ["javascript", "typescript"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348037+00:00", "triaged_in_corpus": 12, "observations_count": 255650, "ai_coder_pattern_id": 49}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ac4e156754a852e1bdfc1688bcbc431b669ee1166cb9abda3f17730a862799de"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/layout.tsx"}, "region": {"startLine": 27}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 56265, "scanner": "repobility-threat-engine", "fingerprint": "3633cc3c988755b52b397294102c01fddc1cf2a5e8e7b0a1a33701291f64fc10", "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": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3633cc3c988755b52b397294102c01fddc1cf2a5e8e7b0a1a33701291f64fc10"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/(dashboard)/notebooks/[id]/page.tsx"}, "region": {"startLine": 89}}}]}, {"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": 56264, "scanner": "repobility-threat-engine", "fingerprint": "8e5dfb054215a3824283f023b01422b9a59e56aee0c5dd26a785e2b02168436b", "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|8e5dfb054215a3824283f023b01422b9a59e56aee0c5dd26a785e2b02168436b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/exceptions.py"}, "region": {"startLine": 3}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod (and 8 more): Same pattern found in 8 additional files. Review if needed."}, "properties": {"repobilityId": 56263, "scanner": "repobility-threat-engine", "fingerprint": "f1e161962fe043d40b0b62354f7238946ffae30e19da416a3889d752e32876be", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 8 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|f1e161962fe043d40b0b62354f7238946ffae30e19da416a3889d752e32876be", "aggregated_count": 8}}}, {"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": 56261, "scanner": "repobility-threat-engine", "fingerprint": "627f4d1ef3203d985731e747218c82d265a45eac81ae67d162e81e6378762bc0", "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|627f4d1ef3203d985731e747218c82d265a45eac81ae67d162e81e6378762bc0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/(dashboard)/notebooks/components/NoteEditorDialog.tsx"}, "region": {"startLine": 100}}}]}, {"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": 56262, "scanner": "repobility-threat-engine", "fingerprint": "cd8c79b93264ed834bb986d923ade45786879c17216cff1e2ab40c357983abc6", "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|cd8c79b93264ed834bb986d923ade45786879c17216cff1e2ab40c357983abc6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/languages.py"}, "region": {"startLine": 63}}}]}, {"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": 56260, "scanner": "repobility-threat-engine", "fingerprint": "c81d338b939d806e2607cbf03940d9da08456f74accf0cf81b33eb15fac03522", "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|c81d338b939d806e2607cbf03940d9da08456f74accf0cf81b33eb15fac03522"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/app/(dashboard)/advanced/components/SystemInfo.tsx"}, "region": {"startLine": 24}}}]}, {"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": 56258, "scanner": "repobility-threat-engine", "fingerprint": "e9d626d6537fe2bb614b2f68e2a1c196acd94a0e843a78f63983c085f500ba57", "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|e9d626d6537fe2bb614b2f68e2a1c196acd94a0e843a78f63983c085f500ba57"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/next.config.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED076", "level": "none", "message": {"text": "[MINED076] Catch And Reraise Noop: except X: raise X \u2014 adds no value, hides traceback if AI accidentally changes message."}, "properties": {"repobilityId": 56257, "scanner": "repobility-threat-engine", "fingerprint": "d0a5f18775670362791040619a1aa7eee98e487c86af836d088eb24d1437aeeb", "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": "catch-and-reraise-noop", "owasp": null, "cwe_ids": [], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348079+00:00", "triaged_in_corpus": 10, "observations_count": 8333, "ai_coder_pattern_id": 45}, "scanner": "repobility-threat-engine", "correlation_key": "fp|d0a5f18775670362791040619a1aa7eee98e487c86af836d088eb24d1437aeeb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "commands/podcast_commands.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 56255, "scanner": "repobility-threat-engine", "fingerprint": "720533be161643e0133ba43e67766eb445a7d329555a0dbd3ef0d99ac3b21647", "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|720533be161643e0133ba43e67766eb445a7d329555a0dbd3ef0d99ac3b21647"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/sources_service.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "SEC034", "level": "none", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 56256, "scanner": "repobility-threat-engine", "fingerprint": "0c38f3359897d8fbb05222ca133c0d09a5b4d741ea471e5ee93549f3c0437c61", "category": "log_injection", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|0c38f3359897d8fbb05222ca133c0d09a5b4d741ea471e5ee93549f3c0437c61"}}}, {"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": 56252, "scanner": "repobility-threat-engine", "fingerprint": "8e5dfb054215a3824283f023b01422b9a59e56aee0c5dd26a785e2b02168436b", "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|8e5dfb054215a3824283f023b01422b9a59e56aee0c5dd26a785e2b02168436b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/exceptions.py"}, "region": {"startLine": 3}}}]}, {"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": 56251, "scanner": "repobility-threat-engine", "fingerprint": "cd8c79b93264ed834bb986d923ade45786879c17216cff1e2ab40c357983abc6", "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|cd8c79b93264ed834bb986d923ade45786879c17216cff1e2ab40c357983abc6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/languages.py"}, "region": {"startLine": 63}}}]}, {"ruleId": "SEC034", "level": "none", "message": {"text": "[SEC034] Log Injection / Log Forging \u2014 unsanitized user input in log (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 56248, "scanner": "repobility-threat-engine", "fingerprint": "0c38f3359897d8fbb05222ca133c0d09a5b4d741ea471e5ee93549f3c0437c61", "category": "log_injection", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC034", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|0c38f3359897d8fbb05222ca133c0d09a5b4d741ea471e5ee93549f3c0437c61"}}}, {"ruleId": "SEC135", "level": "none", "message": {"text": "[SEC135] Auth/permission check missing on AI-generated endpoint (and 9 more): Same pattern found in 9 additional files. Review if needed."}, "properties": {"repobilityId": 56245, "scanner": "repobility-threat-engine", "fingerprint": "cd421a57ed671f5fcae8727e91a4a531be763a939abded4ee73bfba633b55e98", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 9 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 9 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|cd421a57ed671f5fcae8727e91a4a531be763a939abded4ee73bfba633b55e98"}}}, {"ruleId": "SEC135", "level": "none", "message": {"text": "[SEC135] Auth/permission check missing on AI-generated endpoint (and 9 more): Same pattern found in 9 additional files. Review if needed."}, "properties": {"repobilityId": 56241, "scanner": "repobility-threat-engine", "fingerprint": "cd421a57ed671f5fcae8727e91a4a531be763a939abded4ee73bfba633b55e98", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 9 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 9 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|cd421a57ed671f5fcae8727e91a4a531be763a939abded4ee73bfba633b55e98"}}}, {"ruleId": "MINED065", "level": "none", "message": {"text": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public read-only endpoints; dangerous when paired with credentials or write endpoints."}, "properties": {"repobilityId": 56235, "scanner": "repobility-threat-engine", "fingerprint": "f7c19952e27e43f545351f7b7144f78b8d67803307c900a9462512a41a5d892b", "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": "cors-wildcard", "owasp": "A05:2021", "cwe_ids": ["CWE-942", "CWE-346"], "languages": ["python", "javascript", "typescript", "yaml", "json"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348052+00:00", "triaged_in_corpus": 12, "observations_count": 63910, "ai_coder_pattern_id": 46}, "scanner": "repobility-threat-engine", "correlation_key": "fp|f7c19952e27e43f545351f7b7144f78b8d67803307c900a9462512a41a5d892b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/main.py"}, "region": {"startLine": 53}}}]}, {"ruleId": "MINED065", "level": "none", "message": {"text": "[MINED065] Cors Wildcard: Access-Control-Allow-Origin: * exposes the API to any browser origin. Acceptable for public read-only endpoints; dangerous when paired with credentials or write endpoints."}, "properties": {"repobilityId": 56234, "scanner": "repobility-threat-engine", "fingerprint": "f7c19952e27e43f545351f7b7144f78b8d67803307c900a9462512a41a5d892b", "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": "cors-wildcard", "owasp": "A05:2021", "cwe_ids": ["CWE-942", "CWE-346"], "languages": ["python", "javascript", "typescript", "yaml", "json"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348052+00:00", "triaged_in_corpus": 12, "observations_count": 63910, "ai_coder_pattern_id": 46}, "scanner": "repobility-threat-engine", "correlation_key": "fp|f7c19952e27e43f545351f7b7144f78b8d67803307c900a9462512a41a5d892b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/main.py"}, "region": {"startLine": 53}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 37 more): Same pattern found in 37 additional files. Review if needed."}, "properties": {"repobilityId": 56233, "scanner": "repobility-threat-engine", "fingerprint": "7aa5b749e2beb16a32c597696986fa2fc88f84ef76bf450bd8f4e8ec97eba706", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 37 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "get_command_status", "breakdown": {"and": 4, "except": 1, "ternary": 6, "recursion": 1}, "aggregated": true, "complexity": 12, "correlation_key": "fp|7aa5b749e2beb16a32c597696986fa2fc88f84ef76bf450bd8f4e8ec97eba706", "aggregated_count": 37}}}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 37 more): Same pattern found in 37 additional files. Review if needed."}, "properties": {"repobilityId": 56232, "scanner": "repobility-threat-engine", "fingerprint": "7aa5b749e2beb16a32c597696986fa2fc88f84ef76bf450bd8f4e8ec97eba706", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 37 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "get_command_status", "breakdown": {"and": 4, "except": 1, "ternary": 6, "recursion": 1}, "aggregated": true, "complexity": 12, "correlation_key": "fp|7aa5b749e2beb16a32c597696986fa2fc88f84ef76bf450bd8f4e8ec97eba706", "aggregated_count": 37}}}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@eslint/eslintrc` is patch version(s) behind (3.3.1 -> 3.3.5)"}, "properties": {"repobilityId": 56222, "scanner": "repobility-dependency-currency", "fingerprint": "358019e5e33b376576a31811e09923eb226194ad4d5cbf40007e2ba291406251", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@eslint/eslintrc", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "3.3.5", "correlation_key": "fp|358019e5e33b376576a31811e09923eb226194ad4d5cbf40007e2ba291406251", "current_version": "3.3.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `zustand` is patch version(s) behind (5.0.6 -> 5.0.14)"}, "properties": {"repobilityId": 56221, "scanner": "repobility-dependency-currency", "fingerprint": "2702176378171daaf40133b358508ee8f601e2d868490977e85d70fcdd19be74", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "zustand", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.0.14", "correlation_key": "fp|2702176378171daaf40133b358508ee8f601e2d868490977e85d70fcdd19be74", "current_version": "5.0.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `sonner` is patch version(s) behind (2.0.6 -> 2.0.7)"}, "properties": {"repobilityId": 56217, "scanner": "repobility-dependency-currency", "fingerprint": "2519a76bca95208e530894c11081374455afa4a9bf966dc2b2ed2fbc48c0fcfb", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "sonner", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.0.7", "correlation_key": "fp|2519a76bca95208e530894c11081374455afa4a9bf966dc2b2ed2fbc48c0fcfb", "current_version": "2.0.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@eslint/eslintrc` is patch version(s) behind (3.3.1 -> 3.3.5)"}, "properties": {"repobilityId": 56213, "scanner": "repobility-dependency-currency", "fingerprint": "358019e5e33b376576a31811e09923eb226194ad4d5cbf40007e2ba291406251", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@eslint/eslintrc", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "3.3.5", "correlation_key": "fp|358019e5e33b376576a31811e09923eb226194ad4d5cbf40007e2ba291406251", "current_version": "3.3.1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `zustand` is patch version(s) behind (5.0.6 -> 5.0.14)"}, "properties": {"repobilityId": 56212, "scanner": "repobility-dependency-currency", "fingerprint": "2702176378171daaf40133b358508ee8f601e2d868490977e85d70fcdd19be74", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "zustand", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "5.0.14", "correlation_key": "fp|2702176378171daaf40133b358508ee8f601e2d868490977e85d70fcdd19be74", "current_version": "5.0.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `i18next-browser-languagedetector` is patch version(s) behind (8.2.0 -> 8.2.1)"}, "properties": {"repobilityId": 56211, "scanner": "repobility-dependency-currency", "fingerprint": "e871e72816f207f8899f04215a2797a14bc48c838807ea12616ed8e69bdcd1cd", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "i18next-browser-languagedetector", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "8.2.1", "correlation_key": "fp|e871e72816f207f8899f04215a2797a14bc48c838807ea12616ed8e69bdcd1cd", "current_version": "8.2.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `sonner` is patch version(s) behind (2.0.6 -> 2.0.7)"}, "properties": {"repobilityId": 56206, "scanner": "repobility-dependency-currency", "fingerprint": "2519a76bca95208e530894c11081374455afa4a9bf966dc2b2ed2fbc48c0fcfb", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "sonner", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.0.7", "correlation_key": "fp|2519a76bca95208e530894c11081374455afa4a9bf966dc2b2ed2fbc48c0fcfb", "current_version": "2.0.6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `i18next-browser-languagedetector` is patch version(s) behind (8.2.0 -> 8.2.1)"}, "properties": {"repobilityId": 56203, "scanner": "repobility-dependency-currency", "fingerprint": "e871e72816f207f8899f04215a2797a14bc48c838807ea12616ed8e69bdcd1cd", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "i18next-browser-languagedetector", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "8.2.1", "correlation_key": "fp|e871e72816f207f8899f04215a2797a14bc48c838807ea12616ed8e69bdcd1cd", "current_version": "8.2.0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@tailwindcss/typography` is patch version(s) behind (0.5.16 -> 0.5.19)"}, "properties": {"repobilityId": 56202, "scanner": "repobility-dependency-currency", "fingerprint": "9996971cf962cfec981dc9ef04732db67f8f9e40b0f962907ebe645155fa0df2", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@tailwindcss/typography", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "0.5.19", "correlation_key": "fp|9996971cf962cfec981dc9ef04732db67f8f9e40b0f962907ebe645155fa0df2", "current_version": "0.5.16"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-tooltip` is patch version(s) behind (1.2.7 -> 1.2.8)"}, "properties": {"repobilityId": 56199, "scanner": "repobility-dependency-currency", "fingerprint": "afe4aaf715ad575bfcea34795121ac1e09d0a45854e5bfce5c49da0152ef0758", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-tooltip", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.2.8", "correlation_key": "fp|afe4aaf715ad575bfcea34795121ac1e09d0a45854e5bfce5c49da0152ef0758", "current_version": "1.2.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@tailwindcss/typography` is patch version(s) behind (0.5.16 -> 0.5.19)"}, "properties": {"repobilityId": 56197, "scanner": "repobility-dependency-currency", "fingerprint": "9996971cf962cfec981dc9ef04732db67f8f9e40b0f962907ebe645155fa0df2", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@tailwindcss/typography", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "0.5.19", "correlation_key": "fp|9996971cf962cfec981dc9ef04732db67f8f9e40b0f962907ebe645155fa0df2", "current_version": "0.5.16"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-tabs` is patch version(s) behind (1.1.12 -> 1.1.13)"}, "properties": {"repobilityId": 56196, "scanner": "repobility-dependency-currency", "fingerprint": "c8f441509b48893acfc305b9588e43066a89a84f2c290966e914bea6049f8c97", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-tabs", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.13", "correlation_key": "fp|c8f441509b48893acfc305b9588e43066a89a84f2c290966e914bea6049f8c97", "current_version": "1.1.12"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-tooltip` is patch version(s) behind (1.2.7 -> 1.2.8)"}, "properties": {"repobilityId": 56195, "scanner": "repobility-dependency-currency", "fingerprint": "afe4aaf715ad575bfcea34795121ac1e09d0a45854e5bfce5c49da0152ef0758", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-tooltip", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.2.8", "correlation_key": "fp|afe4aaf715ad575bfcea34795121ac1e09d0a45854e5bfce5c49da0152ef0758", "current_version": "1.2.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-tabs` is patch version(s) behind (1.1.12 -> 1.1.13)"}, "properties": {"repobilityId": 56194, "scanner": "repobility-dependency-currency", "fingerprint": "c8f441509b48893acfc305b9588e43066a89a84f2c290966e914bea6049f8c97", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-tabs", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.13", "correlation_key": "fp|c8f441509b48893acfc305b9588e43066a89a84f2c290966e914bea6049f8c97", "current_version": "1.1.12"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-slot` is patch version(s) behind (1.2.3 -> 1.2.4)"}, "properties": {"repobilityId": 56193, "scanner": "repobility-dependency-currency", "fingerprint": "ba6bfcf42646d74922a4c890cd210ad9688c6af4644c217d8da182ec4b6a70e1", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-slot", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.2.4", "correlation_key": "fp|ba6bfcf42646d74922a4c890cd210ad9688c6af4644c217d8da182ec4b6a70e1", "current_version": "1.2.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-slot` is patch version(s) behind (1.2.3 -> 1.2.4)"}, "properties": {"repobilityId": 56192, "scanner": "repobility-dependency-currency", "fingerprint": "ba6bfcf42646d74922a4c890cd210ad9688c6af4644c217d8da182ec4b6a70e1", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-slot", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.2.4", "correlation_key": "fp|ba6bfcf42646d74922a4c890cd210ad9688c6af4644c217d8da182ec4b6a70e1", "current_version": "1.2.3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-separator` is patch version(s) behind (1.1.7 -> 1.1.8)"}, "properties": {"repobilityId": 56191, "scanner": "repobility-dependency-currency", "fingerprint": "a8c9020314b3887612a9408470807e2fff2ef09e57678359fe27899c0d210f58", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-separator", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.8", "correlation_key": "fp|a8c9020314b3887612a9408470807e2fff2ef09e57678359fe27899c0d210f58", "current_version": "1.1.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-separator` is patch version(s) behind (1.1.7 -> 1.1.8)"}, "properties": {"repobilityId": 56189, "scanner": "repobility-dependency-currency", "fingerprint": "a8c9020314b3887612a9408470807e2fff2ef09e57678359fe27899c0d210f58", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-separator", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.8", "correlation_key": "fp|a8c9020314b3887612a9408470807e2fff2ef09e57678359fe27899c0d210f58", "current_version": "1.1.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-select` is patch version(s) behind (2.2.5 -> 2.2.6)"}, "properties": {"repobilityId": 56190, "scanner": "repobility-dependency-currency", "fingerprint": "2dc5fb68c9d3b0fe5d0a83b16eb390ad47ab2df4ff0f3598e72be65a42182163", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-select", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.2.6", "correlation_key": "fp|2dc5fb68c9d3b0fe5d0a83b16eb390ad47ab2df4ff0f3598e72be65a42182163", "current_version": "2.2.5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-scroll-area` is patch version(s) behind (1.2.9 -> 1.2.10)"}, "properties": {"repobilityId": 56188, "scanner": "repobility-dependency-currency", "fingerprint": "09794721bcdf30c19bda6d8ef20ae496571b5f09b995fee14bc5955bb8343763", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-scroll-area", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.2.10", "correlation_key": "fp|09794721bcdf30c19bda6d8ef20ae496571b5f09b995fee14bc5955bb8343763", "current_version": "1.2.9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-select` is patch version(s) behind (2.2.5 -> 2.2.6)"}, "properties": {"repobilityId": 56187, "scanner": "repobility-dependency-currency", "fingerprint": "2dc5fb68c9d3b0fe5d0a83b16eb390ad47ab2df4ff0f3598e72be65a42182163", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-select", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.2.6", "correlation_key": "fp|2dc5fb68c9d3b0fe5d0a83b16eb390ad47ab2df4ff0f3598e72be65a42182163", "current_version": "2.2.5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-progress` is patch version(s) behind (1.1.7 -> 1.1.8)"}, "properties": {"repobilityId": 56186, "scanner": "repobility-dependency-currency", "fingerprint": "a48863c338c3ea47fa1625e7a0ab997cce87cea02517cbf0f4a11efb59f79e27", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-progress", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.8", "correlation_key": "fp|a48863c338c3ea47fa1625e7a0ab997cce87cea02517cbf0f4a11efb59f79e27", "current_version": "1.1.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-scroll-area` is patch version(s) behind (1.2.9 -> 1.2.10)"}, "properties": {"repobilityId": 56185, "scanner": "repobility-dependency-currency", "fingerprint": "09794721bcdf30c19bda6d8ef20ae496571b5f09b995fee14bc5955bb8343763", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-scroll-area", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.2.10", "correlation_key": "fp|09794721bcdf30c19bda6d8ef20ae496571b5f09b995fee14bc5955bb8343763", "current_version": "1.2.9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-progress` is patch version(s) behind (1.1.7 -> 1.1.8)"}, "properties": {"repobilityId": 56183, "scanner": "repobility-dependency-currency", "fingerprint": "a48863c338c3ea47fa1625e7a0ab997cce87cea02517cbf0f4a11efb59f79e27", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-progress", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.8", "correlation_key": "fp|a48863c338c3ea47fa1625e7a0ab997cce87cea02517cbf0f4a11efb59f79e27", "current_version": "1.1.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-label` is patch version(s) behind (2.1.7 -> 2.1.8)"}, "properties": {"repobilityId": 56184, "scanner": "repobility-dependency-currency", "fingerprint": "cdddc0e1f706a5bd11dcfcf242c9617981210501f030a5736a7c4df811f547e5", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-label", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.1.8", "correlation_key": "fp|cdddc0e1f706a5bd11dcfcf242c9617981210501f030a5736a7c4df811f547e5", "current_version": "2.1.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-label` is patch version(s) behind (2.1.7 -> 2.1.8)"}, "properties": {"repobilityId": 56182, "scanner": "repobility-dependency-currency", "fingerprint": "cdddc0e1f706a5bd11dcfcf242c9617981210501f030a5736a7c4df811f547e5", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-label", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.1.8", "correlation_key": "fp|cdddc0e1f706a5bd11dcfcf242c9617981210501f030a5736a7c4df811f547e5", "current_version": "2.1.7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-dropdown-menu` is patch version(s) behind (2.1.15 -> 2.1.16)"}, "properties": {"repobilityId": 56181, "scanner": "repobility-dependency-currency", "fingerprint": "dfe164d114d33d01f1469a02618e48cd6178f3c668dcbd29b1fdb2011d8a0e26", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-dropdown-menu", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.1.16", "correlation_key": "fp|dfe164d114d33d01f1469a02618e48cd6178f3c668dcbd29b1fdb2011d8a0e26", "current_version": "2.1.15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-dropdown-menu` is patch version(s) behind (2.1.15 -> 2.1.16)"}, "properties": {"repobilityId": 56180, "scanner": "repobility-dependency-currency", "fingerprint": "dfe164d114d33d01f1469a02618e48cd6178f3c668dcbd29b1fdb2011d8a0e26", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-dropdown-menu", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "2.1.16", "correlation_key": "fp|dfe164d114d33d01f1469a02618e48cd6178f3c668dcbd29b1fdb2011d8a0e26", "current_version": "2.1.15"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-dialog` is patch version(s) behind (1.1.14 -> 1.1.15)"}, "properties": {"repobilityId": 56179, "scanner": "repobility-dependency-currency", "fingerprint": "491e49dd21c48b7b5f111f46fa488e1d660b28535e9cc899029dc1369fcd89ea", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-dialog", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.15", "correlation_key": "fp|491e49dd21c48b7b5f111f46fa488e1d660b28535e9cc899029dc1369fcd89ea", "current_version": "1.1.14"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-dialog` is patch version(s) behind (1.1.14 -> 1.1.15)"}, "properties": {"repobilityId": 56178, "scanner": "repobility-dependency-currency", "fingerprint": "491e49dd21c48b7b5f111f46fa488e1d660b28535e9cc899029dc1369fcd89ea", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-dialog", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.15", "correlation_key": "fp|491e49dd21c48b7b5f111f46fa488e1d660b28535e9cc899029dc1369fcd89ea", "current_version": "1.1.14"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-checkbox` is patch version(s) behind (1.3.2 -> 1.3.3)"}, "properties": {"repobilityId": 56177, "scanner": "repobility-dependency-currency", "fingerprint": "a08fc83e429e14ce11e831af5acd5d4b7642b5b2173209aa542c69aa0fd1e50b", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-checkbox", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.3.3", "correlation_key": "fp|a08fc83e429e14ce11e831af5acd5d4b7642b5b2173209aa542c69aa0fd1e50b", "current_version": "1.3.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-checkbox` is patch version(s) behind (1.3.2 -> 1.3.3)"}, "properties": {"repobilityId": 56176, "scanner": "repobility-dependency-currency", "fingerprint": "a08fc83e429e14ce11e831af5acd5d4b7642b5b2173209aa542c69aa0fd1e50b", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-checkbox", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.3.3", "correlation_key": "fp|a08fc83e429e14ce11e831af5acd5d4b7642b5b2173209aa542c69aa0fd1e50b", "current_version": "1.3.2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-alert-dialog` is patch version(s) behind (1.1.14 -> 1.1.15)"}, "properties": {"repobilityId": 56175, "scanner": "repobility-dependency-currency", "fingerprint": "cf42465c5a9b3fc681df2ca275af1bee2996287b816a0c91d86000e0b93d1b62", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-alert-dialog", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.15", "correlation_key": "fp|cf42465c5a9b3fc681df2ca275af1bee2996287b816a0c91d86000e0b93d1b62", "current_version": "1.1.14"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "DEPCUR-NPM", "level": "none", "message": {"text": "npm package `@radix-ui/react-alert-dialog` is patch version(s) behind (1.1.14 -> 1.1.15)"}, "properties": {"repobilityId": 56174, "scanner": "repobility-dependency-currency", "fingerprint": "cf42465c5a9b3fc681df2ca275af1bee2996287b816a0c91d86000e0b93d1b62", "category": "dependency", "severity": "info", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"gap": "patch version(s) behind", "signal": "currency", "cwe_ids": [], "package": "@radix-ui/react-alert-dialog", "scanner": "repobility-dependency-currency", "ecosystem": "npm", "languages": ["javascript"], "latest_version": "1.1.15", "correlation_key": "fp|cf42465c5a9b3fc681df2ca275af1bee2996287b816a0c91d86000e0b93d1b62", "current_version": "1.1.14"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "JRN009", "level": "error", "message": {"text": "Secret-like setting is echoed into a password input value"}, "properties": {"repobilityId": 56457, "scanner": "repobility-journey-contract", "fingerprint": "cbbac4c17d7ab8cea6d4a3cfe3f28d368e8eac650419c7ab0d14be899f34a627", "category": "auth", "severity": "high", "confidence": 0.83, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "A password or secret-named input is populated from a secret-like variable instead of a masked placeholder.", "evidence": {"rule_id": "JRN009", "scanner": "repobility-journey-contract", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html"], "correlation_key": "code|auth|token|152|jrn009"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/auth/LoginForm.tsx"}, "region": {"startLine": 152}}}]}, {"ruleId": "JRN009", "level": "error", "message": {"text": "Secret-like setting is echoed into a password input value"}, "properties": {"repobilityId": 56456, "scanner": "repobility-journey-contract", "fingerprint": "cbbac4c17d7ab8cea6d4a3cfe3f28d368e8eac650419c7ab0d14be899f34a627", "category": "auth", "severity": "high", "confidence": 0.83, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "A password or secret-named input is populated from a secret-like variable instead of a masked placeholder.", "evidence": {"rule_id": "JRN009", "scanner": "repobility-journey-contract", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html"], "correlation_key": "code|auth|token|152|jrn009"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/auth/LoginForm.tsx"}, "region": {"startLine": 152}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /episode-profiles/{profile_id}."}, "properties": {"repobilityId": 56425, "scanner": "repobility-access-control", "fingerprint": "6bf96dd473b8ee29bc3f11b8298359c22114b4a2df7105bcf6ef72575f6cdae5", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/episode-profiles/{profile_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|165|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /episode-profiles/{profile_id}."}, "properties": {"repobilityId": 56424, "scanner": "repobility-access-control", "fingerprint": "6bf96dd473b8ee29bc3f11b8298359c22114b4a2df7105bcf6ef72575f6cdae5", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/episode-profiles/{profile_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|165|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: PUT /episode-profiles/{profile_id}."}, "properties": {"repobilityId": 56423, "scanner": "repobility-access-control", "fingerprint": "aa34387b2065006760d934f70793b043f5104c3b8700037d3d86afd2f5c75638", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/episode-profiles/{profile_id}", "method": "PUT", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|129|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: PUT /episode-profiles/{profile_id}."}, "properties": {"repobilityId": 56422, "scanner": "repobility-access-control", "fingerprint": "aa34387b2065006760d934f70793b043f5104c3b8700037d3d86afd2f5c75638", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/episode-profiles/{profile_id}", "method": "PUT", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|token|129|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /podcasts/episodes/{episode_id}."}, "properties": {"repobilityId": 56421, "scanner": "repobility-access-control", "fingerprint": "73020a3817753f82af83f4cb5dae1084f6d06f407a2248e99d613359d87399b3", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|272|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /podcasts/episodes/{episode_id}."}, "properties": {"repobilityId": 56420, "scanner": "repobility-access-control", "fingerprint": "73020a3817753f82af83f4cb5dae1084f6d06f407a2248e99d613359d87399b3", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|272|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: POST /podcasts/episodes/{episode_id}/retry."}, "properties": {"repobilityId": 56419, "scanner": "repobility-access-control", "fingerprint": "1081b651ec351df09b2a897d6423a9165493db8640552ee1ac6c1914f0b30c7c", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}/retry", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|215|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 215}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: POST /podcasts/episodes/{episode_id}/retry."}, "properties": {"repobilityId": 56418, "scanner": "repobility-access-control", "fingerprint": "1081b651ec351df09b2a897d6423a9165493db8640552ee1ac6c1914f0b30c7c", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}/retry", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|215|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 215}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /podcasts/episodes/{episode_id}/audio."}, "properties": {"repobilityId": 56417, "scanner": "repobility-access-control", "fingerprint": "a1123ec8ddf105d7db6d8f0cc6ccee33cc3a1f924b394b15346d82dfea6a5ea2", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}/audio", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|190|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /podcasts/episodes/{episode_id}/audio."}, "properties": {"repobilityId": 56416, "scanner": "repobility-access-control", "fingerprint": "a1123ec8ddf105d7db6d8f0cc6ccee33cc3a1f924b394b15346d82dfea6a5ea2", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}/audio", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|190|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /podcasts/episodes/{episode_id}."}, "properties": {"repobilityId": 56415, "scanner": "repobility-access-control", "fingerprint": "24acc26215854228259b41eed413fcbb2b4fe22d66b18eb9b2da31c7f70082eb", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|144|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 144}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /podcasts/episodes/{episode_id}."}, "properties": {"repobilityId": 56414, "scanner": "repobility-access-control", "fingerprint": "24acc26215854228259b41eed413fcbb2b4fe22d66b18eb9b2da31c7f70082eb", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/episodes/{episode_id}", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|144|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 144}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /podcasts/jobs/{job_id}."}, "properties": {"repobilityId": 56413, "scanner": "repobility-access-control", "fingerprint": "8b0f1fd434bf2b86bbd3b6686ea93ac564442c878425d26d1460d3fce1923416", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/jobs/{job_id}", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|72|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 72}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /podcasts/jobs/{job_id}."}, "properties": {"repobilityId": 56412, "scanner": "repobility-access-control", "fingerprint": "8b0f1fd434bf2b86bbd3b6686ea93ac564442c878425d26d1460d3fce1923416", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/podcasts/jobs/{job_id}", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/podcasts.py|72|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 72}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: POST /notebooks/{notebook_id}/context."}, "properties": {"repobilityId": 56411, "scanner": "repobility-access-control", "fingerprint": "1e525770f21d462cfbb0c3685d8d32ddb8a1588071523b8daebd0bcd9c426483", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/notebooks/{notebook_id}/context", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/context.py|12|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: POST /notebooks/{notebook_id}/context."}, "properties": {"repobilityId": 56410, "scanner": "repobility-access-control", "fingerprint": "1e525770f21d462cfbb0c3685d8d32ddb8a1588071523b8daebd0bcd9c426483", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/notebooks/{notebook_id}/context", "method": "POST", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/context.py|12|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /commands/jobs/{job_id}."}, "properties": {"repobilityId": 56409, "scanner": "repobility-access-control", "fingerprint": "1a04a5aeef98d818b713206c6afe4cc9ca17dc8f5512274416c83a729d38b24d", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/commands/jobs/{job_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/commands.py|108|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: DELETE /commands/jobs/{job_id}."}, "properties": {"repobilityId": 56408, "scanner": "repobility-access-control", "fingerprint": "1a04a5aeef98d818b713206c6afe4cc9ca17dc8f5512274416c83a729d38b24d", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/commands/jobs/{job_id}", "method": "DELETE", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/commands.py|108|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /commands/jobs/{job_id}."}, "properties": {"repobilityId": 56407, "scanner": "repobility-access-control", "fingerprint": "9279d63a4ccbdf6bea67b6ba1e562e5e9ac1be3af18bb605df1116ba012a140e", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/commands/jobs/{job_id}", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/commands.py|74|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "AUC003", "level": "error", "message": {"text": "[AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: GET /commands/jobs/{job_id}."}, "properties": {"repobilityId": 56406, "scanner": "repobility-access-control", "fingerprint": "9279d63a4ccbdf6bea67b6ba1e562e5e9ac1be3af18bb605df1116ba012a140e", "category": "auth", "severity": "high", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"path": "/commands/jobs/{job_id}", "method": "GET", "scanner": "repobility-access-control", "framework": "FastAPI", "correlation_key": "code|auth|api/routers/commands.py|74|cwe-639", "identity_targets": ["unknown", "owner"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "PYSEC-2026-161", "level": "error", "message": {"text": "starlette: PYSEC-2026-161"}, "properties": {"repobilityId": 56401, "scanner": "osv-scanner", "fingerprint": "993c965e051ac08384f28c004ed2828303fa08d6e623c80da1211dbce5cea7ce", "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-2026-48710", "GHSA-86qp-5c8j-p5mr", "X41-2026-002"], "package": "starlette", "rule_id": "PYSEC-2026-161", "scanner": "osv-scanner", "correlation_key": "vuln|starlette|CVE-2026-48710|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-86qp-5c8j-p5mr", "PYSEC-2026-161"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["20d0e73bab623b5772bb5ee81b54e26f25bfd7b3f632ca3aec483536eb176c89", "993c965e051ac08384f28c004ed2828303fa08d6e623c80da1211dbce5cea7ce"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-161", "level": "error", "message": {"text": "starlette: PYSEC-2026-161"}, "properties": {"repobilityId": 56400, "scanner": "osv-scanner", "fingerprint": "993c965e051ac08384f28c004ed2828303fa08d6e623c80da1211dbce5cea7ce", "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-2026-48710", "GHSA-86qp-5c8j-p5mr", "X41-2026-002"], "package": "starlette", "rule_id": "PYSEC-2026-161", "scanner": "osv-scanner", "correlation_key": "vuln|starlette|CVE-2026-48710|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-86qp-5c8j-p5mr", "PYSEC-2026-161"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["20d0e73bab623b5772bb5ee81b54e26f25bfd7b3f632ca3aec483536eb176c89", "993c965e051ac08384f28c004ed2828303fa08d6e623c80da1211dbce5cea7ce"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-179", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-179"}, "properties": {"repobilityId": 56399, "scanner": "osv-scanner", "fingerprint": "3a8c92a4bc42452ab63c8b780593c12b550761e77665f811c437dd35791069ae", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48526", "GHSA-xgmm-8j9v-c9wx"], "package": "pyjwt", "rule_id": "PYSEC-2026-179", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48526|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-179", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-179"}, "properties": {"repobilityId": 56398, "scanner": "osv-scanner", "fingerprint": "3a8c92a4bc42452ab63c8b780593c12b550761e77665f811c437dd35791069ae", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48526", "GHSA-xgmm-8j9v-c9wx"], "package": "pyjwt", "rule_id": "PYSEC-2026-179", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48526|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-178", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-178"}, "properties": {"repobilityId": 56397, "scanner": "osv-scanner", "fingerprint": "529afc49608a001ef35ca72e2e5bf2ab615fb9fdf39e2d3fc621ae3c7274698b", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48525", "GHSA-w7vc-732c-9m39"], "package": "pyjwt", "rule_id": "PYSEC-2026-178", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48525|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-178", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-178"}, "properties": {"repobilityId": 56396, "scanner": "osv-scanner", "fingerprint": "529afc49608a001ef35ca72e2e5bf2ab615fb9fdf39e2d3fc621ae3c7274698b", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48525", "GHSA-w7vc-732c-9m39"], "package": "pyjwt", "rule_id": "PYSEC-2026-178", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48525|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-177", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-177"}, "properties": {"repobilityId": 56395, "scanner": "osv-scanner", "fingerprint": "e4a57bf8d7416024fd079256b08e268bcee4f11f05b7eaee044fc1d8b95a1189", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48524", "GHSA-fhv5-28vv-h8m8"], "package": "pyjwt", "rule_id": "PYSEC-2026-177", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48524|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-177", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-177"}, "properties": {"repobilityId": 56394, "scanner": "osv-scanner", "fingerprint": "e4a57bf8d7416024fd079256b08e268bcee4f11f05b7eaee044fc1d8b95a1189", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48524", "GHSA-fhv5-28vv-h8m8"], "package": "pyjwt", "rule_id": "PYSEC-2026-177", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48524|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-176", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-176"}, "properties": {"repobilityId": 56393, "scanner": "osv-scanner", "fingerprint": "5eb9f4f10fe839d0ad0a3fb8daefa7a7e3a6bbba63914240c43c676f67443b58", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48523", "GHSA-jq35-7prp-9v3f"], "package": "pyjwt", "rule_id": "PYSEC-2026-176", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48523|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-176", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-176"}, "properties": {"repobilityId": 56392, "scanner": "osv-scanner", "fingerprint": "5eb9f4f10fe839d0ad0a3fb8daefa7a7e3a6bbba63914240c43c676f67443b58", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48523", "GHSA-jq35-7prp-9v3f"], "package": "pyjwt", "rule_id": "PYSEC-2026-176", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48523|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-175", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-175"}, "properties": {"repobilityId": 56391, "scanner": "osv-scanner", "fingerprint": "5008712fe3bda523fafb9d2d087e037a86c42cd2bee1401e12b9c2d636db62f1", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48522", "GHSA-993g-76c3-p5m4"], "package": "pyjwt", "rule_id": "PYSEC-2026-175", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48522|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-175", "level": "error", "message": {"text": "pyjwt: PYSEC-2026-175"}, "properties": {"repobilityId": 56390, "scanner": "osv-scanner", "fingerprint": "5008712fe3bda523fafb9d2d087e037a86c42cd2bee1401e12b9c2d636db62f1", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["CVE-2026-48522", "GHSA-993g-76c3-p5m4"], "package": "pyjwt", "rule_id": "PYSEC-2026-175", "scanner": "osv-scanner", "correlation_key": "vuln|pyjwt|CVE-2026-48522|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-whj4-6x5x-4v2j", "level": "error", "message": {"text": "pillow: GHSA-whj4-6x5x-4v2j"}, "properties": {"repobilityId": 56389, "scanner": "osv-scanner", "fingerprint": "98044dac30eb4ba02f691bd7b7e748512c82462965771e96cd6fa3bf8175d1f2", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-40192", "CVE-2026-40192"], "package": "pillow", "rule_id": "GHSA-whj4-6x5x-4v2j", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-40192|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-whj4-6x5x-4v2j", "level": "error", "message": {"text": "pillow: GHSA-whj4-6x5x-4v2j"}, "properties": {"repobilityId": 56388, "scanner": "osv-scanner", "fingerprint": "98044dac30eb4ba02f691bd7b7e748512c82462965771e96cd6fa3bf8175d1f2", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-40192", "CVE-2026-40192"], "package": "pillow", "rule_id": "GHSA-whj4-6x5x-4v2j", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-40192|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pwv6-vv43-88gr", "level": "error", "message": {"text": "pillow: GHSA-pwv6-vv43-88gr"}, "properties": {"repobilityId": 56385, "scanner": "osv-scanner", "fingerprint": "6f5bdd8aaea89083f4f330bfda4f9458df94198bdaab2b182c15b51c2ef87dd9", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42311", "CVE-2026-42311"], "package": "pillow", "rule_id": "GHSA-pwv6-vv43-88gr", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42311|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-pwv6-vv43-88gr", "level": "error", "message": {"text": "pillow: GHSA-pwv6-vv43-88gr"}, "properties": {"repobilityId": 56384, "scanner": "osv-scanner", "fingerprint": "6f5bdd8aaea89083f4f330bfda4f9458df94198bdaab2b182c15b51c2ef87dd9", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-42311", "CVE-2026-42311"], "package": "pillow", "rule_id": "GHSA-pwv6-vv43-88gr", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42311|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-cfh3-3jmp-rvhc", "level": "error", "message": {"text": "pillow: GHSA-cfh3-3jmp-rvhc"}, "properties": {"repobilityId": 56383, "scanner": "osv-scanner", "fingerprint": "05ed8dc5a08e164aa683f9c02787585f96d683af9205418cbf1c22b19b7db128", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-25990", "CVE-2026-25990"], "package": "pillow", "rule_id": "GHSA-cfh3-3jmp-rvhc", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-25990|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "GHSA-cfh3-3jmp-rvhc", "level": "error", "message": {"text": "pillow: GHSA-cfh3-3jmp-rvhc"}, "properties": {"repobilityId": 56382, "scanner": "osv-scanner", "fingerprint": "05ed8dc5a08e164aa683f9c02787585f96d683af9205418cbf1c22b19b7db128", "category": "dependency", "severity": "high", "confidence": 0.88, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "", "aliases": ["BIT-pillow-2026-25990", "CVE-2026-25990"], "package": "pillow", "rule_id": "GHSA-cfh3-3jmp-rvhc", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-25990|uv.lock"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-165", "level": "error", "message": {"text": "pillow: PYSEC-2026-165"}, "properties": {"repobilityId": 56379, "scanner": "osv-scanner", "fingerprint": "6d4525df4fe1593a56084817586ae0b65d5078f84b3ec5e34d3552946d99a8f2", "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": ["BIT-pillow-2026-42308", "CVE-2026-42308", "GHSA-wjx4-4jcj-g98j"], "package": "pillow", "rule_id": "PYSEC-2026-165", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42308|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-wjx4-4jcj-g98j", "PYSEC-2026-165"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["6d4525df4fe1593a56084817586ae0b65d5078f84b3ec5e34d3552946d99a8f2", "e0b065066fc0d3bedf3e2aa7710014dbc6ec7eaa30b9f9c568fe3b4f37d00126"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "PYSEC-2026-165", "level": "error", "message": {"text": "pillow: PYSEC-2026-165"}, "properties": {"repobilityId": 56377, "scanner": "osv-scanner", "fingerprint": "6d4525df4fe1593a56084817586ae0b65d5078f84b3ec5e34d3552946d99a8f2", "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": ["BIT-pillow-2026-42308", "CVE-2026-42308", "GHSA-wjx4-4jcj-g98j"], "package": "pillow", "rule_id": "PYSEC-2026-165", "scanner": "osv-scanner", "correlation_key": "vuln|pillow|CVE-2026-42308|uv.lock", "duplicate_count": 1, "duplicate_rule_ids": ["GHSA-wjx4-4jcj-g98j", "PYSEC-2026-165"], "duplicate_scanners": ["osv-scanner"], "duplicate_fingerprints": ["6d4525df4fe1593a56084817586ae0b65d5078f84b3ec5e34d3552946d99a8f2", "e0b065066fc0d3bedf3e2aa7710014dbc6ec7eaa30b9f9c568fe3b4f37d00126"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "uv.lock"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKC006", "level": "error", "message": {"text": "Compose service explicitly runs as root"}, "properties": {"repobilityId": 56335, "scanner": "repobility-docker", "fingerprint": "3642dce8b08ac8e25d7771b74fa8af01d27f9a1b0b7f864bb4dda046971d6b6d", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "The service sets user to root and no privilege-drop wrapper was detected.", "evidence": {"rule_id": "DKC006", "scanner": "repobility-docker", "service": "surrealdb", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|3642dce8b08ac8e25d7771b74fa8af01d27f9a1b0b7f864bb4dda046971d6b6d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKC006", "level": "error", "message": {"text": "Compose service explicitly runs as root"}, "properties": {"repobilityId": 56334, "scanner": "repobility-docker", "fingerprint": "3642dce8b08ac8e25d7771b74fa8af01d27f9a1b0b7f864bb4dda046971d6b6d", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "The service sets user to root and no privilege-drop wrapper was detected.", "evidence": {"rule_id": "DKC006", "scanner": "repobility-docker", "service": "surrealdb", "references": ["https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html", "https://github.com/hadolint/hadolint"], "correlation_key": "fp|3642dce8b08ac8e25d7771b74fa8af01d27f9a1b0b7f864bb4dda046971d6b6d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "DKR006", "level": "error", "message": {"text": "Dockerfile pipes a remote script into a shell"}, "properties": {"repobilityId": 56326, "scanner": "repobility-docker", "fingerprint": "24d214242500b7019e167a6c952a182d5b6cd0ee865722b579e005c8a4249027", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "RUN instruction contains curl/wget piped into a shell.", "evidence": {"rule_id": "DKR006", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|24d214242500b7019e167a6c952a182d5b6cd0ee865722b579e005c8a4249027"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 57}}}]}, {"ruleId": "DKR006", "level": "error", "message": {"text": "Dockerfile pipes a remote script into a shell"}, "properties": {"repobilityId": 56323, "scanner": "repobility-docker", "fingerprint": "24d214242500b7019e167a6c952a182d5b6cd0ee865722b579e005c8a4249027", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "RUN instruction contains curl/wget piped into a shell.", "evidence": {"rule_id": "DKR006", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|24d214242500b7019e167a6c952a182d5b6cd0ee865722b579e005c8a4249027"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 57}}}]}, {"ruleId": "DKR006", "level": "error", "message": {"text": "Dockerfile pipes a remote script into a shell"}, "properties": {"repobilityId": 56311, "scanner": "repobility-docker", "fingerprint": "978bfe018b5b5c5d0dc3f7c4879196ac620182fe05b2a4a002d5278633e88eb0", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "RUN instruction contains curl/wget piped into a shell.", "evidence": {"rule_id": "DKR006", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|978bfe018b5b5c5d0dc3f7c4879196ac620182fe05b2a4a002d5278633e88eb0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 72}}}]}, {"ruleId": "DKR006", "level": "error", "message": {"text": "Dockerfile pipes a remote script into a shell"}, "properties": {"repobilityId": 56310, "scanner": "repobility-docker", "fingerprint": "978bfe018b5b5c5d0dc3f7c4879196ac620182fe05b2a4a002d5278633e88eb0", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "RUN instruction contains curl/wget piped into a shell.", "evidence": {"rule_id": "DKR006", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|978bfe018b5b5c5d0dc3f7c4879196ac620182fe05b2a4a002d5278633e88eb0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 72}}}]}, {"ruleId": "DKR006", "level": "error", "message": {"text": "Dockerfile pipes a remote script into a shell"}, "properties": {"repobilityId": 56305, "scanner": "repobility-docker", "fingerprint": "701f586d6fca7594f9245955c2237ab31d4e317004f9a9f2e1b0267d64602dbf", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "RUN instruction contains curl/wget piped into a shell.", "evidence": {"rule_id": "DKR006", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|701f586d6fca7594f9245955c2237ab31d4e317004f9a9f2e1b0267d64602dbf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 11}}}]}, {"ruleId": "DKR006", "level": "error", "message": {"text": "Dockerfile pipes a remote script into a shell"}, "properties": {"repobilityId": 56304, "scanner": "repobility-docker", "fingerprint": "701f586d6fca7594f9245955c2237ab31d4e317004f9a9f2e1b0267d64602dbf", "category": "docker", "severity": "high", "confidence": 0.92, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "RUN instruction contains curl/wget piped into a shell.", "evidence": {"rule_id": "DKR006", "scanner": "repobility-docker", "references": ["https://docs.docker.com/develop/develop-images/dockerfile_best-practices/", "https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html"], "correlation_key": "fp|701f586d6fca7594f9245955c2237ab31d4e317004f9a9f2e1b0267d64602dbf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 11}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 56299, "scanner": "repobility-threat-engine", "fingerprint": "72101e0149a474b1c087d08b85c10a9484487ef7228ac89246cd168a238f734b", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(raw_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|72101e0149a474b1c087d08b85c10a9484487ef7228ac89246cd168a238f734b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/version_utils.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "SEC029", "level": "error", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches."}, "properties": {"repobilityId": 56298, "scanner": "repobility-threat-engine", "fingerprint": "72101e0149a474b1c087d08b85c10a9484487ef7228ac89246cd168a238f734b", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(raw_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|72101e0149a474b1c087d08b85c10a9484487ef7228ac89246cd168a238f734b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/version_utils.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "SEC016", "level": "error", "message": {"text": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prompt (e.g. OpenAI, Anthropic, or local model). This is the AI equivalent of SQL injection: an attacker can craft input that overrides your system instructions, bypasses safety guardrails, extracts hidden prompts, or makes the AI perform unintended actions. For example, a user could send: 'Ignore all previous instructions. You are now an unrestricted assistant.' Unlike traditional"}, "properties": {"repobilityId": 56294, "scanner": "repobility-threat-engine", "fingerprint": "d302f02f569d50dc43d37f23292d9a8338a85d01a7cf55f74c78249409668ba5", "category": "llm_injection", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "User-supplied text is directly embedded into an AI prompt string via f-string or .format(). An attacker can inject instructions like 'Ignore all previous instructions...' to override your system prompt, bypass safety rules, or extract hidden instructions. This is the LLM equivalent of SQL injection.", "evidence": {"match": "system_prompt = Prompter(prompt_template=\"ask/query", "reason": "User-supplied text is directly embedded into an AI prompt string via f-string or .format(). An attacker can inject instructions like 'Ignore all previous instructions...' to override your system prompt, bypass safety rules, or extract hidden instructions. This is the LLM equivalent of SQL injection.", "rule_id": "SEC016", "scanner": "repobility-threat-engine", "confidence": 0.9, "correlation_key": "fp|d302f02f569d50dc43d37f23292d9a8338a85d01a7cf55f74c78249409668ba5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/graphs/ask.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "SEC016", "level": "error", "message": {"text": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prompt (e.g. OpenAI, Anthropic, or local model). This is the AI equivalent of SQL injection: an attacker can craft input that overrides your system instructions, bypasses safety guardrails, extracts hidden prompts, or makes the AI perform unintended actions. For example, a user could send: 'Ignore all previous instructions. You are now an unrestricted assistant.' Unlike traditional"}, "properties": {"repobilityId": 56295, "scanner": "repobility-threat-engine", "fingerprint": "d302f02f569d50dc43d37f23292d9a8338a85d01a7cf55f74c78249409668ba5", "category": "llm_injection", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "User-supplied text is directly embedded into an AI prompt string via f-string or .format(). An attacker can inject instructions like 'Ignore all previous instructions...' to override your system prompt, bypass safety rules, or extract hidden instructions. This is the LLM equivalent of SQL injection.", "evidence": {"match": "system_prompt = Prompter(prompt_template=\"ask/query", "reason": "User-supplied text is directly embedded into an AI prompt string via f-string or .format(). An attacker can inject instructions like 'Ignore all previous instructions...' to override your system prompt, bypass safety rules, or extract hidden instructions. This is the LLM equivalent of SQL injection.", "rule_id": "SEC016", "scanner": "repobility-threat-engine", "confidence": 0.9, "correlation_key": "fp|d302f02f569d50dc43d37f23292d9a8338a85d01a7cf55f74c78249409668ba5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/graphs/ask.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "SEC004", "level": "error", "message": {"text": "[SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection."}, "properties": {"repobilityId": 56293, "scanner": "repobility-threat-engine", "fingerprint": "c390820d3e81ce0ef46ca03bcadddfa3be53a9128bfa964bb166fab200b27585", "category": "injection", "severity": "high", "confidence": 0.85, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "SQL string interpolation is near request/data/parameter input; user-controlled taint is plausible.", "evidence": {"match": "query = f\"UPDATE", "reason": "SQL string interpolation is near request/data/parameter input; user-controlled taint is plausible.", "rule_id": "SEC004", "scanner": "repobility-threat-engine", "confidence": 0.85, "correlation_key": "code|injection|token|148|sec004"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/database/repository.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "SEC004", "level": "error", "message": {"text": "[SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection."}, "properties": {"repobilityId": 56292, "scanner": "repobility-threat-engine", "fingerprint": "c390820d3e81ce0ef46ca03bcadddfa3be53a9128bfa964bb166fab200b27585", "category": "injection", "severity": "high", "confidence": 0.85, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "SQL string interpolation is near request/data/parameter input; user-controlled taint is plausible.", "evidence": {"match": "query = f\"UPDATE", "reason": "SQL string interpolation is near request/data/parameter input; user-controlled taint is plausible.", "rule_id": "SEC004", "scanner": "repobility-threat-engine", "confidence": 0.85, "correlation_key": "code|injection|token|148|sec004"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/database/repository.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "MINED020", "level": "error", "message": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "properties": {"repobilityId": 56291, "scanner": "repobility-threat-engine", "fingerprint": "9f38ff9bedf802adcc6d3f74c654613daf8a4658cb20df8a2515eaf2e4f6f7db", "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": "logging-credential-via-fstring", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347945+00:00", "triaged_in_corpus": 15, "observations_count": 46100, "ai_coder_pattern_id": 38}, "scanner": "repobility-threat-engine", "correlation_key": "fp|9f38ff9bedf802adcc6d3f74c654613daf8a4658cb20df8a2515eaf2e4f6f7db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/embedding.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "MINED020", "level": "error", "message": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "properties": {"repobilityId": 56290, "scanner": "repobility-threat-engine", "fingerprint": "9f38ff9bedf802adcc6d3f74c654613daf8a4658cb20df8a2515eaf2e4f6f7db", "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": "logging-credential-via-fstring", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347945+00:00", "triaged_in_corpus": 15, "observations_count": 46100, "ai_coder_pattern_id": 38}, "scanner": "repobility-threat-engine", "correlation_key": "fp|9f38ff9bedf802adcc6d3f74c654613daf8a4658cb20df8a2515eaf2e4f6f7db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/embedding.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "MINED020", "level": "error", "message": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "properties": {"repobilityId": 56289, "scanner": "repobility-threat-engine", "fingerprint": "ac4457120e4060b53f675efb7ed4a6d6d927f7167c380cf13475ea4a4c4ae5e9", "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": "logging-credential-via-fstring", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347945+00:00", "triaged_in_corpus": 15, "observations_count": 46100, "ai_coder_pattern_id": 38}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ac4457120e4060b53f675efb7ed4a6d6d927f7167c380cf13475ea4a4c4ae5e9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/provision.py"}, "region": {"startLine": 25}}}]}, {"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": 56288, "scanner": "repobility-threat-engine", "fingerprint": "7a0b5d57317bf9d830df96aacd07d166eb4f9979eed953bb0d52a73155abb353", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "config.update(kwargs)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|7a0b5d57317bf9d830df96aacd07d166eb4f9979eed953bb0d52a73155abb353"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/models.py"}, "region": {"startLine": 145}}}]}, {"ruleId": "SEC020", "level": "error", "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": 56287, "scanner": "repobility-threat-engine", "fingerprint": "24ee9f5c92c83e388b4582cd8950f7b1236a9299e78877ca13d4ef5717de1525", "category": "credential_exposure", "severity": "high", "confidence": 0.85, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Credential-bearing variable appears to be printed or logged", "evidence": {"match": "logger.debug(f\"Embedding short text ({text_tokens} tokens)", "reason": "Credential-bearing variable appears to be printed or logged", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.85, "correlation_key": "secret|token|24|logger.debug f embedding short text text_tokens tokens"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/embedding.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "MINED020", "level": "error", "message": {"text": "[MINED020] Logging Credential Via Fstring: logger.error(f\"failed for {api_key}\") \u2014 secrets end up in log aggregators / sentry."}, "properties": {"repobilityId": 56282, "scanner": "repobility-threat-engine", "fingerprint": "ac4457120e4060b53f675efb7ed4a6d6d927f7167c380cf13475ea4a4c4ae5e9", "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": "logging-credential-via-fstring", "owasp": "A09:2021", "cwe_ids": ["CWE-532"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347945+00:00", "triaged_in_corpus": 15, "observations_count": 46100, "ai_coder_pattern_id": 38}, "scanner": "repobility-threat-engine", "correlation_key": "fp|ac4457120e4060b53f675efb7ed4a6d6d927f7167c380cf13475ea4a4c4ae5e9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/provision.py"}, "region": {"startLine": 25}}}]}, {"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": 56280, "scanner": "repobility-threat-engine", "fingerprint": "7a0b5d57317bf9d830df96aacd07d166eb4f9979eed953bb0d52a73155abb353", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "config.update(kwargs)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|7a0b5d57317bf9d830df96aacd07d166eb4f9979eed953bb0d52a73155abb353"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/ai/models.py"}, "region": {"startLine": 145}}}]}, {"ruleId": "SEC020", "level": "error", "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": 56278, "scanner": "repobility-threat-engine", "fingerprint": "24ee9f5c92c83e388b4582cd8950f7b1236a9299e78877ca13d4ef5717de1525", "category": "credential_exposure", "severity": "high", "confidence": 0.85, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Credential-bearing variable appears to be printed or logged", "evidence": {"match": "logger.debug(f\"Embedding short text ({text_tokens} tokens)", "reason": "Credential-bearing variable appears to be printed or logged", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.85, "correlation_key": "secret|token|24|logger.debug f embedding short text text_tokens tokens"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "open_notebook/utils/embedding.py"}, "region": {"startLine": 248}}}]}, {"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": 56259, "scanner": "repobility-threat-engine", "fingerprint": "bc938f6dbe28a3e2d307376e141f6f40b455a5e2298e7187177fcba6448192b6", "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|bc938f6dbe28a3e2d307376e141f6f40b455a5e2298e7187177fcba6448192b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/languages.py"}, "region": {"startLine": 62}}}]}, {"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": 56249, "scanner": "repobility-threat-engine", "fingerprint": "bc938f6dbe28a3e2d307376e141f6f40b455a5e2298e7187177fcba6448192b6", "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|bc938f6dbe28a3e2d307376e141f6f40b455a5e2298e7187177fcba6448192b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/languages.py"}, "region": {"startLine": 62}}}]}, {"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": 56243, "scanner": "repobility-threat-engine", "fingerprint": "bd9a012648216e9c9a5bfe0a86f7bf60beed366863d43a9e5380fc905c74498e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@router.post(\"/embed\", response_model=EmbedResponse)\nasync def embed_content(embed_request: EmbedReq", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|bd9a012648216e9c9a5bfe0a86f7bf60beed366863d43a9e5380fc905c74498e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding.py"}, "region": {"startLine": 12}}}]}, {"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": 56240, "scanner": "repobility-threat-engine", "fingerprint": "cbdcf34c19a3b293ccf4c6507a024f1e441b1e95fc5a707f2480bd3be91bca27", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@router.post(\"/notebooks/{notebook_id}/context\", response_model=ContextResponse)\nasync def get_noteb", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|cbdcf34c19a3b293ccf4c6507a024f1e441b1e95fc5a707f2480bd3be91bca27"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 12}}}]}, {"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": 56239, "scanner": "repobility-threat-engine", "fingerprint": "bd9a012648216e9c9a5bfe0a86f7bf60beed366863d43a9e5380fc905c74498e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@router.post(\"/embed\", response_model=EmbedResponse)\nasync def embed_content(embed_request: EmbedReq", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|bd9a012648216e9c9a5bfe0a86f7bf60beed366863d43a9e5380fc905c74498e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding.py"}, "region": {"startLine": 12}}}]}, {"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": 56238, "scanner": "repobility-threat-engine", "fingerprint": "6e2dcba90ff1865947e9fe4eb47dbd3b52a46d728372e0f473fc5419b87092b1", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@router.post(\"/commands/jobs\", response_model=CommandJobResponse)\nasync def execute_command(request:", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6e2dcba90ff1865947e9fe4eb47dbd3b52a46d728372e0f473fc5419b87092b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 37}}}]}, {"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": 56237, "scanner": "repobility-threat-engine", "fingerprint": "cbdcf34c19a3b293ccf4c6507a024f1e441b1e95fc5a707f2480bd3be91bca27", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@router.post(\"/notebooks/{notebook_id}/context\", response_model=ContextResponse)\nasync def get_noteb", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|cbdcf34c19a3b293ccf4c6507a024f1e441b1e95fc5a707f2480bd3be91bca27"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 12}}}]}, {"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": 56236, "scanner": "repobility-threat-engine", "fingerprint": "6e2dcba90ff1865947e9fe4eb47dbd3b52a46d728372e0f473fc5419b87092b1", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@router.post(\"/commands/jobs\", response_model=CommandJobResponse)\nasync def execute_command(request:", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC135", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6e2dcba90ff1865947e9fe4eb47dbd3b52a46d728372e0f473fc5419b87092b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56160, "scanner": "repobility-supply-chain", "fingerprint": "e2ec5cf5afc3a0539debc6b1173ea3a84c0084228e9fad9beb0d45942bc60202", "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|e2ec5cf5afc3a0539debc6b1173ea3a84c0084228e9fad9beb0d45942bc60202"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 189}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56159, "scanner": "repobility-supply-chain", "fingerprint": "54da9f40ca416481f91d2319be713bcb1f5a6786db8f847c8f9415a92c99897e", "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|54da9f40ca416481f91d2319be713bcb1f5a6786db8f847c8f9415a92c99897e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 160}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56157, "scanner": "repobility-supply-chain", "fingerprint": "e2ec5cf5afc3a0539debc6b1173ea3a84c0084228e9fad9beb0d45942bc60202", "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|e2ec5cf5afc3a0539debc6b1173ea3a84c0084228e9fad9beb0d45942bc60202"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 189}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56156, "scanner": "repobility-supply-chain", "fingerprint": "7b8c9b80ccc214f6dca134fdc4fb845e05c1cd488470ee560b3f43334bb796e2", "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|7b8c9b80ccc214f6dca134fdc4fb845e05c1cd488470ee560b3f43334bb796e2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 111}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56155, "scanner": "repobility-supply-chain", "fingerprint": "54da9f40ca416481f91d2319be713bcb1f5a6786db8f847c8f9415a92c99897e", "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|54da9f40ca416481f91d2319be713bcb1f5a6786db8f847c8f9415a92c99897e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 160}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56154, "scanner": "repobility-supply-chain", "fingerprint": "2b43da2e00d896873f0b4ef2df5d0c4a52b1844a5c46f59de902bd65beda47b9", "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|2b43da2e00d896873f0b4ef2df5d0c4a52b1844a5c46f59de902bd65beda47b9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56153, "scanner": "repobility-supply-chain", "fingerprint": "c19a7a7a33862b54e29d3b09002ed8f1ca848a9ee1f69d46721e9d83796e1344", "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|c19a7a7a33862b54e29d3b09002ed8f1ca848a9ee1f69d46721e9d83796e1344"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56152, "scanner": "repobility-supply-chain", "fingerprint": "7b8c9b80ccc214f6dca134fdc4fb845e05c1cd488470ee560b3f43334bb796e2", "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|7b8c9b80ccc214f6dca134fdc4fb845e05c1cd488470ee560b3f43334bb796e2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 111}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56151, "scanner": "repobility-supply-chain", "fingerprint": "2b43da2e00d896873f0b4ef2df5d0c4a52b1844a5c46f59de902bd65beda47b9", "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|2b43da2e00d896873f0b4ef2df5d0c4a52b1844a5c46f59de902bd65beda47b9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56149, "scanner": "repobility-supply-chain", "fingerprint": "c19a7a7a33862b54e29d3b09002ed8f1ca848a9ee1f69d46721e9d83796e1344", "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|c19a7a7a33862b54e29d3b09002ed8f1ca848a9ee1f69d46721e9d83796e1344"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56150, "scanner": "repobility-supply-chain", "fingerprint": "5e8139f401513d86b32e5e9de52f57aae587867f077f542f71a11a9aadc3eaa6", "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|5e8139f401513d86b32e5e9de52f57aae587867f077f542f71a11a9aadc3eaa6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56148, "scanner": "repobility-supply-chain", "fingerprint": "5e8139f401513d86b32e5e9de52f57aae587867f077f542f71a11a9aadc3eaa6", "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|5e8139f401513d86b32e5e9de52f57aae587867f077f542f71a11a9aadc3eaa6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56147, "scanner": "repobility-supply-chain", "fingerprint": "5bf9c034fe504c046f38b72dc28860978e92570b1ac1fc3b20626dfb6871c71a", "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|5bf9c034fe504c046f38b72dc28860978e92570b1ac1fc3b20626dfb6871c71a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 149}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56146, "scanner": "repobility-supply-chain", "fingerprint": "5bf9c034fe504c046f38b72dc28860978e92570b1ac1fc3b20626dfb6871c71a", "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|5bf9c034fe504c046f38b72dc28860978e92570b1ac1fc3b20626dfb6871c71a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 149}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56145, "scanner": "repobility-supply-chain", "fingerprint": "190be505cb3e89282d95fa39b2694978a507628bb277306e15a93b43e994665e", "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|190be505cb3e89282d95fa39b2694978a507628bb277306e15a93b43e994665e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/cache` pinned to mutable ref `@v5`"}, "properties": {"repobilityId": 56144, "scanner": "repobility-supply-chain", "fingerprint": "190be505cb3e89282d95fa39b2694978a507628bb277306e15a93b43e994665e", "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|190be505cb3e89282d95fa39b2694978a507628bb277306e15a93b43e994665e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56143, "scanner": "repobility-supply-chain", "fingerprint": "758ab538666f6583f9d3a28e4274e5388aa61a9b8935a65933f9145d486ac076", "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|758ab538666f6583f9d3a28e4274e5388aa61a9b8935a65933f9145d486ac076"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56142, "scanner": "repobility-supply-chain", "fingerprint": "758ab538666f6583f9d3a28e4274e5388aa61a9b8935a65933f9145d486ac076", "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|758ab538666f6583f9d3a28e4274e5388aa61a9b8935a65933f9145d486ac076"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56141, "scanner": "repobility-supply-chain", "fingerprint": "5bbb4a7a77adec1b5127f7d8fa1d7e20cbcbd06f652943e3af1f0c2f46b6d872", "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|5bbb4a7a77adec1b5127f7d8fa1d7e20cbcbd06f652943e3af1f0c2f46b6d872"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56140, "scanner": "repobility-supply-chain", "fingerprint": "5bbb4a7a77adec1b5127f7d8fa1d7e20cbcbd06f652943e3af1f0c2f46b6d872", "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|5bbb4a7a77adec1b5127f7d8fa1d7e20cbcbd06f652943e3af1f0c2f46b6d872"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-and-release.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/setup-node` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56139, "scanner": "repobility-supply-chain", "fingerprint": "bb6a0019df57f2f5284b49778c29aea99028d61bd2fb0c01cd723d7aa5e6cdca", "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|bb6a0019df57f2f5284b49778c29aea99028d61bd2fb0c01cd723d7aa5e6cdca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/setup-node` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56138, "scanner": "repobility-supply-chain", "fingerprint": "bb6a0019df57f2f5284b49778c29aea99028d61bd2fb0c01cd723d7aa5e6cdca", "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|bb6a0019df57f2f5284b49778c29aea99028d61bd2fb0c01cd723d7aa5e6cdca"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56137, "scanner": "repobility-supply-chain", "fingerprint": "75335284da9288f15e6a2135e405956a482378516139a86478eb0956146ca3ce", "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|75335284da9288f15e6a2135e405956a482378516139a86478eb0956146ca3ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `astral-sh/setup-uv` pinned to mutable ref `@v8.1.0`"}, "properties": {"repobilityId": 56136, "scanner": "repobility-supply-chain", "fingerprint": "e28d7f84dfd9a606511fef3b89b893e56b289e7743e90e1c6eff4ab2e893aef1", "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|e28d7f84dfd9a606511fef3b89b893e56b289e7743e90e1c6eff4ab2e893aef1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56135, "scanner": "repobility-supply-chain", "fingerprint": "72040b5ad669ce6432cd58ecddaf8039f0ec250751ad0ffb76f7bcdaf47ba182", "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|72040b5ad669ce6432cd58ecddaf8039f0ec250751ad0ffb76f7bcdaf47ba182"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED130", "level": "error", "message": {"text": "Lockfile pulls package from off-canonical host `registry.npmmirror.com`"}, "properties": {"repobilityId": 56134, "scanner": "repobility-supply-chain", "fingerprint": "3f2d858875f256cb4af78017df7e2ae83f545f653c206bea1792a09cf8d51dc4", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "npm-lockfile-off-registry", "owasp": null, "cwe_ids": ["CWE-829"], "languages": ["javascript"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|3f2d858875f256cb4af78017df7e2ae83f545f653c206bea1792a09cf8d51dc4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56132, "scanner": "repobility-supply-chain", "fingerprint": "75335284da9288f15e6a2135e405956a482378516139a86478eb0956146ca3ce", "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|75335284da9288f15e6a2135e405956a482378516139a86478eb0956146ca3ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56133, "scanner": "repobility-supply-chain", "fingerprint": "8ce2c8769fb96dd11e011ae306f0e4874dc697a9769ae954e183bbca514ac95a", "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|8ce2c8769fb96dd11e011ae306f0e4874dc697a9769ae954e183bbca514ac95a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 68}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `astral-sh/setup-uv` pinned to mutable ref `@v8.1.0`"}, "properties": {"repobilityId": 56131, "scanner": "repobility-supply-chain", "fingerprint": "e28d7f84dfd9a606511fef3b89b893e56b289e7743e90e1c6eff4ab2e893aef1", "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|e28d7f84dfd9a606511fef3b89b893e56b289e7743e90e1c6eff4ab2e893aef1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "Action `actions/checkout` pinned to mutable ref `@v6`"}, "properties": {"repobilityId": 56129, "scanner": "repobility-supply-chain", "fingerprint": "72040b5ad669ce6432cd58ecddaf8039f0ec250751ad0ffb76f7bcdaf47ba182", "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|72040b5ad669ce6432cd58ecddaf8039f0ec250751ad0ffb76f7bcdaf47ba182"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56130, "scanner": "repobility-supply-chain", "fingerprint": "b147d90ca2b1e0c2966ef21e32c42f58f054ab7b365407943c5abb88e0d29e8e", "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|b147d90ca2b1e0c2966ef21e32c42f58f054ab7b365407943c5abb88e0d29e8e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "MINED130", "level": "error", "message": {"text": "Lockfile pulls package from off-canonical host `registry.npmmirror.com`"}, "properties": {"repobilityId": 56128, "scanner": "repobility-supply-chain", "fingerprint": "3f2d858875f256cb4af78017df7e2ae83f545f653c206bea1792a09cf8d51dc4", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "npm-lockfile-off-registry", "owasp": null, "cwe_ids": ["CWE-829"], "languages": ["javascript"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|3f2d858875f256cb4af78017df7e2ae83f545f653c206bea1792a09cf8d51dc4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package-lock.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56127, "scanner": "repobility-supply-chain", "fingerprint": "8ce2c8769fb96dd11e011ae306f0e4874dc697a9769ae954e183bbca514ac95a", "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|8ce2c8769fb96dd11e011ae306f0e4874dc697a9769ae954e183bbca514ac95a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 68}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56125, "scanner": "repobility-supply-chain", "fingerprint": "b147d90ca2b1e0c2966ef21e32c42f58f054ab7b365407943c5abb88e0d29e8e", "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|b147d90ca2b1e0c2966ef21e32c42f58f054ab7b365407943c5abb88e0d29e8e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56126, "scanner": "repobility-supply-chain", "fingerprint": "018750aa636e496de3a36b4be914ab026c8f086b1b919410b180b4e303819ed2", "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|018750aa636e496de3a36b4be914ab026c8f086b1b919410b180b4e303819ed2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 54}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56124, "scanner": "repobility-supply-chain", "fingerprint": "018750aa636e496de3a36b4be914ab026c8f086b1b919410b180b4e303819ed2", "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|018750aa636e496de3a36b4be914ab026c8f086b1b919410b180b4e303819ed2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 54}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56123, "scanner": "repobility-supply-chain", "fingerprint": "ec0da48cbdcfadf3dd26353948d8502bda6c0cfb4a3698053a45a4e686d7e21b", "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|ec0da48cbdcfadf3dd26353948d8502bda6c0cfb4a3698053a45a4e686d7e21b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 29}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `python:3.12-slim-bookworm` not pinned by digest"}, "properties": {"repobilityId": 56122, "scanner": "repobility-supply-chain", "fingerprint": "ec0da48cbdcfadf3dd26353948d8502bda6c0cfb4a3698053a45a4e686d7e21b", "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|ec0da48cbdcfadf3dd26353948d8502bda6c0cfb4a3698053a45a4e686d7e21b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 29}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `surrealdb/surrealdb:v2` not pinned by digest"}, "properties": {"repobilityId": 56121, "scanner": "repobility-supply-chain", "fingerprint": "891da3c2d037b058ba03e83f9db8da62d565f3d6800b848fcf63a7f6c9b5eec6", "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|891da3c2d037b058ba03e83f9db8da62d565f3d6800b848fcf63a7f6c9b5eec6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 26}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `surrealdb/surrealdb:v2` not pinned by digest"}, "properties": {"repobilityId": 56120, "scanner": "repobility-supply-chain", "fingerprint": "891da3c2d037b058ba03e83f9db8da62d565f3d6800b848fcf63a7f6c9b5eec6", "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|891da3c2d037b058ba03e83f9db8da62d565f3d6800b848fcf63a7f6c9b5eec6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 26}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `node:20-slim` not pinned by digest"}, "properties": {"repobilityId": 56119, "scanner": "repobility-supply-chain", "fingerprint": "eea1e116c55892bebbe9b905812e4e716d68c01c80242ac45cdc44c8b65c7a50", "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|eea1e116c55892bebbe9b905812e4e716d68c01c80242ac45cdc44c8b65c7a50"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 2}}}]}, {"ruleId": "MINED118", "level": "error", "message": {"text": "Dockerfile FROM `node:20-slim` not pinned by digest"}, "properties": {"repobilityId": 56118, "scanner": "repobility-supply-chain", "fingerprint": "eea1e116c55892bebbe9b905812e4e716d68c01c80242ac45cdc44c8b65c7a50", "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|eea1e116c55892bebbe9b905812e4e716d68c01c80242ac45cdc44c8b65c7a50"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 2}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /search/ask/simple has no auth"}, "properties": {"repobilityId": 56117, "scanner": "repobility-route-auth", "fingerprint": "3a5004fda876e3a29b04d2b620a86e7cc064a9edd40de301a29341a6e827d99c", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|3a5004fda876e3a29b04d2b620a86e7cc064a9edd40de301a29341a6e827d99c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /search/ask has no auth"}, "properties": {"repobilityId": 56116, "scanner": "repobility-route-auth", "fingerprint": "bf8cfa630065758d4781f9b67d15f102c9ff80cf52678ae2790f9bbbcf9392c6", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|bf8cfa630065758d4781f9b67d15f102c9ff80cf52678ae2790f9bbbcf9392c6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /search has no auth"}, "properties": {"repobilityId": 56115, "scanner": "repobility-route-auth", "fingerprint": "536d8b02fb3672f404d8ceb9be98ddc3c82d9f09ff0bc0ec8d43e9873a10d00d", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|536d8b02fb3672f404d8ceb9be98ddc3c82d9f09ff0bc0ec8d43e9873a10d00d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 18}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /speaker-profiles/{profile_id}/duplicate has no auth"}, "properties": {"repobilityId": 56114, "scanner": "repobility-route-auth", "fingerprint": "546a49c5c304bdfa41ea74c8cc3e34a856458f019a308ffc9945086fd15c317f", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|546a49c5c304bdfa41ea74c8cc3e34a856458f019a308ffc9945086fd15c317f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 162}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /search/ask/simple has no auth"}, "properties": {"repobilityId": 56113, "scanner": "repobility-route-auth", "fingerprint": "3a5004fda876e3a29b04d2b620a86e7cc064a9edd40de301a29341a6e827d99c", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|3a5004fda876e3a29b04d2b620a86e7cc064a9edd40de301a29341a6e827d99c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /speaker-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56112, "scanner": "repobility-route-auth", "fingerprint": "6ee8163507e2627f29f2e32dce9d5805f58c0bf23dd3dc5b2470446d0f4d001d", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|6ee8163507e2627f29f2e32dce9d5805f58c0bf23dd3dc5b2470446d0f4d001d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /search/ask has no auth"}, "properties": {"repobilityId": 56111, "scanner": "repobility-route-auth", "fingerprint": "bf8cfa630065758d4781f9b67d15f102c9ff80cf52678ae2790f9bbbcf9392c6", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|bf8cfa630065758d4781f9b67d15f102c9ff80cf52678ae2790f9bbbcf9392c6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI PUT /speaker-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56110, "scanner": "repobility-route-auth", "fingerprint": "c8a206d27d944117753c517021373b65280353c46ef91607544b0756bc7d29d0", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|c8a206d27d944117753c517021373b65280353c46ef91607544b0756bc7d29d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /search has no auth"}, "properties": {"repobilityId": 56109, "scanner": "repobility-route-auth", "fingerprint": "536d8b02fb3672f404d8ceb9be98ddc3c82d9f09ff0bc0ec8d43e9873a10d00d", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|536d8b02fb3672f404d8ceb9be98ddc3c82d9f09ff0bc0ec8d43e9873a10d00d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/search.py"}, "region": {"startLine": 18}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /speaker-profiles/{profile_id}/duplicate has no auth"}, "properties": {"repobilityId": 56108, "scanner": "repobility-route-auth", "fingerprint": "546a49c5c304bdfa41ea74c8cc3e34a856458f019a308ffc9945086fd15c317f", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|546a49c5c304bdfa41ea74c8cc3e34a856458f019a308ffc9945086fd15c317f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 162}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /speaker-profiles has no auth"}, "properties": {"repobilityId": 56107, "scanner": "repobility-route-auth", "fingerprint": "7df2adaa8621ddb1120773bed2f69de0fac6472df660379a044a7570e7b1aae9", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|7df2adaa8621ddb1120773bed2f69de0fac6472df660379a044a7570e7b1aae9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/auto-assign has no auth"}, "properties": {"repobilityId": 56106, "scanner": "repobility-route-auth", "fingerprint": "703bbdb52d00cfde3a5e25a9c668494ebaa16172fca8bd72e6c165fb64c18a7c", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|703bbdb52d00cfde3a5e25a9c668494ebaa16172fca8bd72e6c165fb64c18a7c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 689}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /speaker-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56105, "scanner": "repobility-route-auth", "fingerprint": "6ee8163507e2627f29f2e32dce9d5805f58c0bf23dd3dc5b2470446d0f4d001d", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|6ee8163507e2627f29f2e32dce9d5805f58c0bf23dd3dc5b2470446d0f4d001d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 136}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI PUT /speaker-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56103, "scanner": "repobility-route-auth", "fingerprint": "c8a206d27d944117753c517021373b65280353c46ef91607544b0756bc7d29d0", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|c8a206d27d944117753c517021373b65280353c46ef91607544b0756bc7d29d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/sync has no auth"}, "properties": {"repobilityId": 56104, "scanner": "repobility-route-auth", "fingerprint": "61df6ae95a704cba934507bc020f707f74076a3cd8f70f988589259e48ec7996", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|61df6ae95a704cba934507bc020f707f74076a3cd8f70f988589259e48ec7996"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 550}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /speaker-profiles has no auth"}, "properties": {"repobilityId": 56102, "scanner": "repobility-route-auth", "fingerprint": "7df2adaa8621ddb1120773bed2f69de0fac6472df660379a044a7570e7b1aae9", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|7df2adaa8621ddb1120773bed2f69de0fac6472df660379a044a7570e7b1aae9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/speaker_profiles.py"}, "region": {"startLine": 83}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/auto-assign has no auth"}, "properties": {"repobilityId": 56100, "scanner": "repobility-route-auth", "fingerprint": "703bbdb52d00cfde3a5e25a9c668494ebaa16172fca8bd72e6c165fb64c18a7c", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|703bbdb52d00cfde3a5e25a9c668494ebaa16172fca8bd72e6c165fb64c18a7c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 689}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/sync/{provider} has no auth"}, "properties": {"repobilityId": 56101, "scanner": "repobility-route-auth", "fingerprint": "ad1c2bce7bb9a8a18ef241638c1a2b04e31731750a1714297dbaafc591def9a8", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|ad1c2bce7bb9a8a18ef241638c1a2b04e31731750a1714297dbaafc591def9a8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 523}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/sync has no auth"}, "properties": {"repobilityId": 56098, "scanner": "repobility-route-auth", "fingerprint": "61df6ae95a704cba934507bc020f707f74076a3cd8f70f988589259e48ec7996", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|61df6ae95a704cba934507bc020f707f74076a3cd8f70f988589259e48ec7996"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 550}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI PUT /models/defaults has no auth"}, "properties": {"repobilityId": 56099, "scanner": "repobility-route-auth", "fingerprint": "e1f18a5325dfb9e1726f2a86348f5c2109a5ef580ab3ad5a03e7d84d993b61a0", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|e1f18a5325dfb9e1726f2a86348f5c2109a5ef580ab3ad5a03e7d84d993b61a0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 316}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/sync/{provider} has no auth"}, "properties": {"repobilityId": 56097, "scanner": "repobility-route-auth", "fingerprint": "ad1c2bce7bb9a8a18ef241638c1a2b04e31731750a1714297dbaafc591def9a8", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|ad1c2bce7bb9a8a18ef241638c1a2b04e31731750a1714297dbaafc591def9a8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 523}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/{model_id}/test has no auth"}, "properties": {"repobilityId": 56096, "scanner": "repobility-route-auth", "fingerprint": "3fadc98a7276834f329507109561a83ee8014243b91e40014c7006b1351beeb1", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|3fadc98a7276834f329507109561a83ee8014243b91e40014c7006b1351beeb1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 271}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI PUT /models/defaults has no auth"}, "properties": {"repobilityId": 56095, "scanner": "repobility-route-auth", "fingerprint": "e1f18a5325dfb9e1726f2a86348f5c2109a5ef580ab3ad5a03e7d84d993b61a0", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|e1f18a5325dfb9e1726f2a86348f5c2109a5ef580ab3ad5a03e7d84d993b61a0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 316}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /models/{model_id} has no auth"}, "properties": {"repobilityId": 56094, "scanner": "repobility-route-auth", "fingerprint": "a64b194f3f49959c6aa481c3ed55ede550018d50aaf866832988fbd2060df50a", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|a64b194f3f49959c6aa481c3ed55ede550018d50aaf866832988fbd2060df50a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 253}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models/{model_id}/test has no auth"}, "properties": {"repobilityId": 56093, "scanner": "repobility-route-auth", "fingerprint": "3fadc98a7276834f329507109561a83ee8014243b91e40014c7006b1351beeb1", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|3fadc98a7276834f329507109561a83ee8014243b91e40014c7006b1351beeb1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 271}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /models/{model_id} has no auth"}, "properties": {"repobilityId": 56092, "scanner": "repobility-route-auth", "fingerprint": "a64b194f3f49959c6aa481c3ed55ede550018d50aaf866832988fbd2060df50a", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|a64b194f3f49959c6aa481c3ed55ede550018d50aaf866832988fbd2060df50a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 253}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models has no auth"}, "properties": {"repobilityId": 56091, "scanner": "repobility-route-auth", "fingerprint": "e556f5b75750a9230203ab5ad897c029d6d0533f6b7ef210874e751c995aa399", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|e556f5b75750a9230203ab5ad897c029d6d0533f6b7ef210874e751c995aa399"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 198}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /models has no auth"}, "properties": {"repobilityId": 56090, "scanner": "repobility-route-auth", "fingerprint": "e556f5b75750a9230203ab5ad897c029d6d0533f6b7ef210874e751c995aa399", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|e556f5b75750a9230203ab5ad897c029d6d0533f6b7ef210874e751c995aa399"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/models.py"}, "region": {"startLine": 198}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /episode-profiles/{profile_id}/duplicate has no auth"}, "properties": {"repobilityId": 56089, "scanner": "repobility-route-auth", "fingerprint": "eaa1eda990313000c8d367a4d4cd5fcdde41dcd6a26c80bef151e085cf1d1e9b", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|eaa1eda990313000c8d367a4d4cd5fcdde41dcd6a26c80bef151e085cf1d1e9b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 192}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /episode-profiles/{profile_id}/duplicate has no auth"}, "properties": {"repobilityId": 56088, "scanner": "repobility-route-auth", "fingerprint": "eaa1eda990313000c8d367a4d4cd5fcdde41dcd6a26c80bef151e085cf1d1e9b", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|eaa1eda990313000c8d367a4d4cd5fcdde41dcd6a26c80bef151e085cf1d1e9b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 192}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /episode-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56087, "scanner": "repobility-route-auth", "fingerprint": "d1acc1b7f657af54ce3472963bd6414293ab76bb72bdb941f4a29035fa22adc5", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|d1acc1b7f657af54ce3472963bd6414293ab76bb72bdb941f4a29035fa22adc5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /episode-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56086, "scanner": "repobility-route-auth", "fingerprint": "d1acc1b7f657af54ce3472963bd6414293ab76bb72bdb941f4a29035fa22adc5", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|d1acc1b7f657af54ce3472963bd6414293ab76bb72bdb941f4a29035fa22adc5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI PUT /episode-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56085, "scanner": "repobility-route-auth", "fingerprint": "7eee8a9158011ddfda38b5900ea3680a1b388546285af8226cf391af1f55b4f0", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|7eee8a9158011ddfda38b5900ea3680a1b388546285af8226cf391af1f55b4f0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI PUT /episode-profiles/{profile_id} has no auth"}, "properties": {"repobilityId": 56084, "scanner": "repobility-route-auth", "fingerprint": "7eee8a9158011ddfda38b5900ea3680a1b388546285af8226cf391af1f55b4f0", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|7eee8a9158011ddfda38b5900ea3680a1b388546285af8226cf391af1f55b4f0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /episode-profiles has no auth"}, "properties": {"repobilityId": 56082, "scanner": "repobility-route-auth", "fingerprint": "eb105d6e0a0da056738cb3aaf000c9224e3b7d9276b79bb225a0764168724af5", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|eb105d6e0a0da056738cb3aaf000c9224e3b7d9276b79bb225a0764168724af5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /episode-profiles has no auth"}, "properties": {"repobilityId": 56083, "scanner": "repobility-route-auth", "fingerprint": "eb105d6e0a0da056738cb3aaf000c9224e3b7d9276b79bb225a0764168724af5", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|eb105d6e0a0da056738cb3aaf000c9224e3b7d9276b79bb225a0764168724af5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/episode_profiles.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /embed has no auth"}, "properties": {"repobilityId": 56081, "scanner": "repobility-route-auth", "fingerprint": "fec2ea3599b1bce0d27d37a7a1c5643c365e61d820f94dc80ffbb897374d491f", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|fec2ea3599b1bce0d27d37a7a1c5643c365e61d820f94dc80ffbb897374d491f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /embed has no auth"}, "properties": {"repobilityId": 56080, "scanner": "repobility-route-auth", "fingerprint": "fec2ea3599b1bce0d27d37a7a1c5643c365e61d820f94dc80ffbb897374d491f", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|fec2ea3599b1bce0d27d37a7a1c5643c365e61d820f94dc80ffbb897374d491f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/embedding.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /podcasts/episodes/{episode_id} has no auth"}, "properties": {"repobilityId": 56079, "scanner": "repobility-route-auth", "fingerprint": "a1cd69b7daf4d3c705fe50b6ecc21a5ffe52d79abfb8e6f5dd524d5927bfbcfb", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|a1cd69b7daf4d3c705fe50b6ecc21a5ffe52d79abfb8e6f5dd524d5927bfbcfb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 273}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /podcasts/episodes/{episode_id} has no auth"}, "properties": {"repobilityId": 56078, "scanner": "repobility-route-auth", "fingerprint": "a1cd69b7daf4d3c705fe50b6ecc21a5ffe52d79abfb8e6f5dd524d5927bfbcfb", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|a1cd69b7daf4d3c705fe50b6ecc21a5ffe52d79abfb8e6f5dd524d5927bfbcfb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 273}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /podcasts/episodes/{episode_id}/retry has no auth"}, "properties": {"repobilityId": 56077, "scanner": "repobility-route-auth", "fingerprint": "135c86b2e3c04a72918f4f650466e51cc0f6ff734e1b637b471ea14f65355805", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|135c86b2e3c04a72918f4f650466e51cc0f6ff734e1b637b471ea14f65355805"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 216}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /podcasts/episodes/{episode_id}/retry has no auth"}, "properties": {"repobilityId": 56076, "scanner": "repobility-route-auth", "fingerprint": "135c86b2e3c04a72918f4f650466e51cc0f6ff734e1b637b471ea14f65355805", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|135c86b2e3c04a72918f4f650466e51cc0f6ff734e1b637b471ea14f65355805"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 216}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /podcasts/generate has no auth"}, "properties": {"repobilityId": 56075, "scanner": "repobility-route-auth", "fingerprint": "2cc59c76023d1b7a73d2959f683cfdf324bc9a3bda736f3bb37580fad581c96f", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|2cc59c76023d1b7a73d2959f683cfdf324bc9a3bda736f3bb37580fad581c96f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /podcasts/generate has no auth"}, "properties": {"repobilityId": 56074, "scanner": "repobility-route-auth", "fingerprint": "2cc59c76023d1b7a73d2959f683cfdf324bc9a3bda736f3bb37580fad581c96f", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|2cc59c76023d1b7a73d2959f683cfdf324bc9a3bda736f3bb37580fad581c96f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/podcasts.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /notebooks/{notebook_id}/context has no auth"}, "properties": {"repobilityId": 56072, "scanner": "repobility-route-auth", "fingerprint": "9fca90e23d338fc7317b0137e5e9a8fd8ab55e151e8db1d29cfdb27b4f57473c", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|9fca90e23d338fc7317b0137e5e9a8fd8ab55e151e8db1d29cfdb27b4f57473c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /notebooks/{notebook_id}/context has no auth"}, "properties": {"repobilityId": 56073, "scanner": "repobility-route-auth", "fingerprint": "9fca90e23d338fc7317b0137e5e9a8fd8ab55e151e8db1d29cfdb27b4f57473c", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|9fca90e23d338fc7317b0137e5e9a8fd8ab55e151e8db1d29cfdb27b4f57473c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/context.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /commands/jobs/{job_id} has no auth"}, "properties": {"repobilityId": 56070, "scanner": "repobility-route-auth", "fingerprint": "392c22c670247cd4d557faf08aaeb57442fd4273fb519f3c865053f53400d080", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|392c22c670247cd4d557faf08aaeb57442fd4273fb519f3c865053f53400d080"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 109}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI DELETE /commands/jobs/{job_id} has no auth"}, "properties": {"repobilityId": 56071, "scanner": "repobility-route-auth", "fingerprint": "392c22c670247cd4d557faf08aaeb57442fd4273fb519f3c865053f53400d080", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|392c22c670247cd4d557faf08aaeb57442fd4273fb519f3c865053f53400d080"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 109}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /commands/jobs has no auth"}, "properties": {"repobilityId": 56068, "scanner": "repobility-route-auth", "fingerprint": "56e6412fde2eeb3750fcb8cb213529e06a84f08c73ce5ec8a8ff3cadf847c162", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|56e6412fde2eeb3750fcb8cb213529e06a84f08c73ce5ec8a8ff3cadf847c162"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "MINED112", "level": "error", "message": {"text": "FastAPI POST /commands/jobs has no auth"}, "properties": {"repobilityId": 56069, "scanner": "repobility-route-auth", "fingerprint": "56e6412fde2eeb3750fcb8cb213529e06a84f08c73ce5ec8a8ff3cadf847c162", "category": "quality", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "fastapi-destructive-unauth", "owasp": "A01:2021", "cwe_ids": ["CWE-306", "CWE-862"], "languages": ["python", "javascript"], "observations_count": 10455}, "scanner": "repobility-route-auth", "correlation_key": "fp|56e6412fde2eeb3750fcb8cb213529e06a84f08c73ce5ec8a8ff3cadf847c162"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routers/commands.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_openai_compatible_urls"}, "properties": {"repobilityId": 56037, "scanner": "repobility-ast-engine", "fingerprint": "d9a243a059140893235be13c1f2ff74e743e3b947538cd68d9a6951b95854458", "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|d9a243a059140893235be13c1f2ff74e743e3b947538cd68d9a6951b95854458"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_azure_specific_urls"}, "properties": {"repobilityId": 56035, "scanner": "repobility-ast-engine", "fingerprint": "e4debd34e0e55afa44982f82bc3394e2a9af536edbecadf34a756b1f6c8e4b56", "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|e4debd34e0e55afa44982f82bc3394e2a9af536edbecadf34a756b1f6c8e4b56"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_public_hostnames_allowed"}, "properties": {"repobilityId": 56033, "scanner": "repobility-ast-engine", "fingerprint": "db5dd0b8d69a37c7e8a6ac4860254ee93f0649130b5d11f560846e099587924a", "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|db5dd0b8d69a37c7e8a6ac4860254ee93f0649130b5d11f560846e099587924a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 98}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_openai_compatible_urls"}, "properties": {"repobilityId": 56032, "scanner": "repobility-ast-engine", "fingerprint": "d9a243a059140893235be13c1f2ff74e743e3b947538cd68d9a6951b95854458", "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|d9a243a059140893235be13c1f2ff74e743e3b947538cd68d9a6951b95854458"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_invalid_url_format"}, "properties": {"repobilityId": 56031, "scanner": "repobility-ast-engine", "fingerprint": "85f91f4dae01baf023a393028742c26564dd9d4e08f92650515c1194d2d43190", "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|85f91f4dae01baf023a393028742c26564dd9d4e08f92650515c1194d2d43190"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_azure_specific_urls"}, "properties": {"repobilityId": 56030, "scanner": "repobility-ast-engine", "fingerprint": "e4debd34e0e55afa44982f82bc3394e2a9af536edbecadf34a756b1f6c8e4b56", "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|e4debd34e0e55afa44982f82bc3394e2a9af536edbecadf34a756b1f6c8e4b56"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_empty_url"}, "properties": {"repobilityId": 56029, "scanner": "repobility-ast-engine", "fingerprint": "acd693212aa66e6dc1b52907c0c918cdf2874be6bac7c10a8d3e167abf585f0d", "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|acd693212aa66e6dc1b52907c0c918cdf2874be6bac7c10a8d3e167abf585f0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 87}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_public_hostnames_allowed"}, "properties": {"repobilityId": 56028, "scanner": "repobility-ast-engine", "fingerprint": "db5dd0b8d69a37c7e8a6ac4860254ee93f0649130b5d11f560846e099587924a", "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|db5dd0b8d69a37c7e8a6ac4860254ee93f0649130b5d11f560846e099587924a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 98}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_ipv6_localhost_allowed"}, "properties": {"repobilityId": 56027, "scanner": "repobility-ast-engine", "fingerprint": "e4cd8837c82a6d64e9229cd0b128fce7aad55d05d1f77dfbe68574ab05aa9327", "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|e4cd8837c82a6d64e9229cd0b128fce7aad55d05d1f77dfbe68574ab05aa9327"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_invalid_url_format"}, "properties": {"repobilityId": 56026, "scanner": "repobility-ast-engine", "fingerprint": "85f91f4dae01baf023a393028742c26564dd9d4e08f92650515c1194d2d43190", "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|85f91f4dae01baf023a393028742c26564dd9d4e08f92650515c1194d2d43190"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_link_local_rejection"}, "properties": {"repobilityId": 56025, "scanner": "repobility-ast-engine", "fingerprint": "cfc111f46527a51bc803e5e2682003fb486cc42b6fffe8c421e0c9aafff1a037", "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|cfc111f46527a51bc803e5e2682003fb486cc42b6fffe8c421e0c9aafff1a037"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_empty_url"}, "properties": {"repobilityId": 56024, "scanner": "repobility-ast-engine", "fingerprint": "acd693212aa66e6dc1b52907c0c918cdf2874be6bac7c10a8d3e167abf585f0d", "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|acd693212aa66e6dc1b52907c0c918cdf2874be6bac7c10a8d3e167abf585f0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 87}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_ipv6_localhost_allowed"}, "properties": {"repobilityId": 56023, "scanner": "repobility-ast-engine", "fingerprint": "e4cd8837c82a6d64e9229cd0b128fce7aad55d05d1f77dfbe68574ab05aa9327", "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|e4cd8837c82a6d64e9229cd0b128fce7aad55d05d1f77dfbe68574ab05aa9327"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_loopback_allowed_for_self_hosted"}, "properties": {"repobilityId": 56022, "scanner": "repobility-ast-engine", "fingerprint": "f5017e025e596d9d7d43a3475cb6b4511afb0ae8682d5f58df25a2fb8edf4f64", "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|f5017e025e596d9d7d43a3475cb6b4511afb0ae8682d5f58df25a2fb8edf4f64"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 68}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_link_local_rejection"}, "properties": {"repobilityId": 56021, "scanner": "repobility-ast-engine", "fingerprint": "cfc111f46527a51bc803e5e2682003fb486cc42b6fffe8c421e0c9aafff1a037", "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|cfc111f46527a51bc803e5e2682003fb486cc42b6fffe8c421e0c9aafff1a037"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_private_ip_allowed_for_ollama"}, "properties": {"repobilityId": 56020, "scanner": "repobility-ast-engine", "fingerprint": "069f50c8932ef38dfc6d7b910e88a0878d7d098318c4f31de252fec3e3f2e607", "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|069f50c8932ef38dfc6d7b910e88a0878d7d098318c4f31de252fec3e3f2e607"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_loopback_allowed_for_self_hosted"}, "properties": {"repobilityId": 56019, "scanner": "repobility-ast-engine", "fingerprint": "f5017e025e596d9d7d43a3475cb6b4511afb0ae8682d5f58df25a2fb8edf4f64", "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|f5017e025e596d9d7d43a3475cb6b4511afb0ae8682d5f58df25a2fb8edf4f64"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 68}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_private_ip_allowed_for_self_hosted"}, "properties": {"repobilityId": 56018, "scanner": "repobility-ast-engine", "fingerprint": "7712a7fe6b2e81c4a064f8958b752a91f7b935a0c1bedfd78ed74671ba462156", "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|7712a7fe6b2e81c4a064f8958b752a91f7b935a0c1bedfd78ed74671ba462156"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 54}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_private_ip_allowed_for_ollama"}, "properties": {"repobilityId": 56017, "scanner": "repobility-ast-engine", "fingerprint": "069f50c8932ef38dfc6d7b910e88a0878d7d098318c4f31de252fec3e3f2e607", "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|069f50c8932ef38dfc6d7b910e88a0878d7d098318c4f31de252fec3e3f2e607"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_localhost_allowed_for_ollama"}, "properties": {"repobilityId": 56016, "scanner": "repobility-ast-engine", "fingerprint": "94827bc2ea50c665a6ca8eff69cd8e0091f100ca56b23bcc0f92c8634859b516", "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|94827bc2ea50c665a6ca8eff69cd8e0091f100ca56b23bcc0f92c8634859b516"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_private_ip_allowed_for_self_hosted"}, "properties": {"repobilityId": 56015, "scanner": "repobility-ast-engine", "fingerprint": "7712a7fe6b2e81c4a064f8958b752a91f7b935a0c1bedfd78ed74671ba462156", "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|7712a7fe6b2e81c4a064f8958b752a91f7b935a0c1bedfd78ed74671ba462156"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 54}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_localhost_allowed_for_self_hosted"}, "properties": {"repobilityId": 56014, "scanner": "repobility-ast-engine", "fingerprint": "c3efee8915f9edac1b6d3f2e16e454de17b6b9a09b1a1b75a6a0bb28f1430a0e", "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|c3efee8915f9edac1b6d3f2e16e454de17b6b9a09b1a1b75a6a0bb28f1430a0e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_localhost_allowed_for_ollama"}, "properties": {"repobilityId": 56013, "scanner": "repobility-ast-engine", "fingerprint": "94827bc2ea50c665a6ca8eff69cd8e0091f100ca56b23bcc0f92c8634859b516", "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|94827bc2ea50c665a6ca8eff69cd8e0091f100ca56b23bcc0f92c8634859b516"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_localhost_allowed_for_self_hosted"}, "properties": {"repobilityId": 56012, "scanner": "repobility-ast-engine", "fingerprint": "c3efee8915f9edac1b6d3f2e16e454de17b6b9a09b1a1b75a6a0bb28f1430a0e", "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|c3efee8915f9edac1b6d3f2e16e454de17b6b9a09b1a1b75a6a0bb28f1430a0e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_invalid_scheme"}, "properties": {"repobilityId": 56011, "scanner": "repobility-ast-engine", "fingerprint": "7fdd5e167531cadb4d09ae88f2d2c53ed522a7ccc4d770c7087e5290b37ddefb", "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|7fdd5e167531cadb4d09ae88f2d2c53ed522a7ccc4d770c7087e5290b37ddefb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_invalid_scheme"}, "properties": {"repobilityId": 56010, "scanner": "repobility-ast-engine", "fingerprint": "7fdd5e167531cadb4d09ae88f2d2c53ed522a7ccc4d770c7087e5290b37ddefb", "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|7fdd5e167531cadb4d09ae88f2d2c53ed522a7ccc4d770c7087e5290b37ddefb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_valid_http_url"}, "properties": {"repobilityId": 56009, "scanner": "repobility-ast-engine", "fingerprint": "df81b786fef8881fc2767514e79567b8d5f36a90689132c38f393bb910f20a5f", "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|df81b786fef8881fc2767514e79567b8d5f36a90689132c38f393bb910f20a5f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_valid_http_url"}, "properties": {"repobilityId": 56008, "scanner": "repobility-ast-engine", "fingerprint": "df81b786fef8881fc2767514e79567b8d5f36a90689132c38f393bb910f20a5f", "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|df81b786fef8881fc2767514e79567b8d5f36a90689132c38f393bb910f20a5f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_valid_https_url"}, "properties": {"repobilityId": 56007, "scanner": "repobility-ast-engine", "fingerprint": "c7a459a4579a5bc2459f343e20a624402f01dd2302b24beea5ce3baec5ef0a8f", "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|c7a459a4579a5bc2459f343e20a624402f01dd2302b24beea5ce3baec5ef0a8f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_valid_https_url"}, "properties": {"repobilityId": 56006, "scanner": "repobility-ast-engine", "fingerprint": "c7a459a4579a5bc2459f343e20a624402f01dd2302b24beea5ce3baec5ef0a8f", "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|c7a459a4579a5bc2459f343e20a624402f01dd2302b24beea5ce3baec5ef0a8f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_url_validation.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_run_transformation_assertion_no_content"}, "properties": {"repobilityId": 56005, "scanner": "repobility-ast-engine", "fingerprint": "0dfeaa9aa6f744ae1fd0378a97b673936b016196b955d6bbd60adf79952b4681", "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|0dfeaa9aa6f744ae1fd0378a97b673936b016196b955d6bbd60adf79952b4681"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_graphs.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_run_transformation_assertion_no_content"}, "properties": {"repobilityId": 56004, "scanner": "repobility-ast-engine", "fingerprint": "0dfeaa9aa6f744ae1fd0378a97b673936b016196b955d6bbd60adf79952b4681", "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|0dfeaa9aa6f744ae1fd0378a97b673936b016196b955d6bbd60adf79952b4681"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_graphs.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `get`"}, "properties": {"repobilityId": 56003, "scanner": "repobility-ast-engine", "fingerprint": "d50fff3a276f3d77c91728d8e952547733521a7a5ba4bfe376b94843cdd47bb7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d50fff3a276f3d77c91728d8e952547733521a7a5ba4bfe376b94843cdd47bb7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 171}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `get`"}, "properties": {"repobilityId": 56002, "scanner": "repobility-ast-engine", "fingerprint": "d50fff3a276f3d77c91728d8e952547733521a7a5ba4bfe376b94843cdd47bb7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d50fff3a276f3d77c91728d8e952547733521a7a5ba4bfe376b94843cdd47bb7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 171}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `get`"}, "properties": {"repobilityId": 56001, "scanner": "repobility-ast-engine", "fingerprint": "e2f9bdc9597587bb2b5dac31a3da18401a1fbd054886c329bf7d3db22da0d8a7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e2f9bdc9597587bb2b5dac31a3da18401a1fbd054886c329bf7d3db22da0d8a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `get`"}, "properties": {"repobilityId": 56000, "scanner": "repobility-ast-engine", "fingerprint": "e2f9bdc9597587bb2b5dac31a3da18401a1fbd054886c329bf7d3db22da0d8a7", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e2f9bdc9597587bb2b5dac31a3da18401a1fbd054886c329bf7d3db22da0d8a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `test_model_discovery_base_url_can_include_models_path`"}, "properties": {"repobilityId": 55999, "scanner": "repobility-ast-engine", "fingerprint": "2932d3e9a0530a619ee775c7b5749554e8d5821c6447a6d6950f4cf006d86aa0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|2932d3e9a0530a619ee775c7b5749554e8d5821c6447a6d6950f4cf006d86aa0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 171}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `test_model_discovery_base_url_can_include_models_path`"}, "properties": {"repobilityId": 55998, "scanner": "repobility-ast-engine", "fingerprint": "2932d3e9a0530a619ee775c7b5749554e8d5821c6447a6d6950f4cf006d86aa0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|2932d3e9a0530a619ee775c7b5749554e8d5821c6447a6d6950f4cf006d86aa0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 171}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `test_openai_discovery_respects_base_url`"}, "properties": {"repobilityId": 55997, "scanner": "repobility-ast-engine", "fingerprint": "e7ff216040f1ae7bd7bddd6966f408dc884add3ac248aa009da4f22be4092db8", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e7ff216040f1ae7bd7bddd6966f408dc884add3ac248aa009da4f22be4092db8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "MINED110", "level": "error", "message": {"text": "Blocking call `requests.append` inside async function `test_openai_discovery_respects_base_url`"}, "properties": {"repobilityId": 55996, "scanner": "repobility-ast-engine", "fingerprint": "e7ff216040f1ae7bd7bddd6966f408dc884add3ac248aa009da4f22be4092db8", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "asyncio-blocking-call", "owasp": null, "cwe_ids": ["CWE-833"], "languages": ["python"], "observations_count": 31606}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e7ff216040f1ae7bd7bddd6966f408dc884add3ac248aa009da4f22be4092db8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_credentials_api.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_get_version_from_github_invalid_url"}, "properties": {"repobilityId": 55995, "scanner": "repobility-ast-engine", "fingerprint": "af8ff30547ea84ad85b1e21a2abc0dbf4021e91108cd4c762268de6801439c33", "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|af8ff30547ea84ad85b1e21a2abc0dbf4021e91108cd4c762268de6801439c33"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_utils.py"}, "region": {"startLine": 236}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_get_installed_version_not_found"}, "properties": {"repobilityId": 55994, "scanner": "repobility-ast-engine", "fingerprint": "88fde5f6c0a89ea1443c12a13b7986e425c4dc6ae272818e0d04d06dccd08ac6", "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|88fde5f6c0a89ea1443c12a13b7986e425c4dc6ae272818e0d04d06dccd08ac6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_utils.py"}, "region": {"startLine": 229}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_empty_text_raises"}, "properties": {"repobilityId": 55993, "scanner": "repobility-ast-engine", "fingerprint": "d1ce5512debb90cb346ba585f9049844706d63c494da2616df5f1d9a463d6822", "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|d1ce5512debb90cb346ba585f9049844706d63c494da2616df5f1d9a463d6822"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_embedding.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_no_model_raises"}, "properties": {"repobilityId": 55992, "scanner": "repobility-ast-engine", "fingerprint": "68d5dfaa2dbebfe6f3eac16bdbd27bbb5ea3f141125bb6401f377c58bb4666a6", "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|68d5dfaa2dbebfe6f3eac16bdbd27bbb5ea3f141125bb6401f377c58bb4666a6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_embedding.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_empty_list_raises"}, "properties": {"repobilityId": 55991, "scanner": "repobility-ast-engine", "fingerprint": "7d2333ea896128a28fc955eef24ff8217377639d496b91a96fc2e59a8ac8795f", "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|7d2333ea896128a28fc955eef24ff8217377639d496b91a96fc2e59a8ac8795f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_embedding.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_vectorize_raises_valueerror_when_whitespace_only"}, "properties": {"repobilityId": 55990, "scanner": "repobility-ast-engine", "fingerprint": "9e8fc4b19d2313253fe4276359b6b1fdca1e0e1e380d17f26c9dbe792ff55348", "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|9e8fc4b19d2313253fe4276359b6b1fdca1e0e1e380d17f26c9dbe792ff55348"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_domain.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_get_version_from_github_invalid_url"}, "properties": {"repobilityId": 55989, "scanner": "repobility-ast-engine", "fingerprint": "af8ff30547ea84ad85b1e21a2abc0dbf4021e91108cd4c762268de6801439c33", "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|af8ff30547ea84ad85b1e21a2abc0dbf4021e91108cd4c762268de6801439c33"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_utils.py"}, "region": {"startLine": 236}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_get_installed_version_not_found"}, "properties": {"repobilityId": 55988, "scanner": "repobility-ast-engine", "fingerprint": "88fde5f6c0a89ea1443c12a13b7986e425c4dc6ae272818e0d04d06dccd08ac6", "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|88fde5f6c0a89ea1443c12a13b7986e425c4dc6ae272818e0d04d06dccd08ac6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_utils.py"}, "region": {"startLine": 229}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_empty_text_raises"}, "properties": {"repobilityId": 55987, "scanner": "repobility-ast-engine", "fingerprint": "d1ce5512debb90cb346ba585f9049844706d63c494da2616df5f1d9a463d6822", "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|d1ce5512debb90cb346ba585f9049844706d63c494da2616df5f1d9a463d6822"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_embedding.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_no_model_raises"}, "properties": {"repobilityId": 55986, "scanner": "repobility-ast-engine", "fingerprint": "68d5dfaa2dbebfe6f3eac16bdbd27bbb5ea3f141125bb6401f377c58bb4666a6", "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|68d5dfaa2dbebfe6f3eac16bdbd27bbb5ea3f141125bb6401f377c58bb4666a6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_embedding.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_empty_list_raises"}, "properties": {"repobilityId": 55985, "scanner": "repobility-ast-engine", "fingerprint": "7d2333ea896128a28fc955eef24ff8217377639d496b91a96fc2e59a8ac8795f", "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|7d2333ea896128a28fc955eef24ff8217377639d496b91a96fc2e59a8ac8795f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_embedding.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_vectorize_raises_valueerror_when_whitespace_only"}, "properties": {"repobilityId": 55984, "scanner": "repobility-ast-engine", "fingerprint": "9e8fc4b19d2313253fe4276359b6b1fdca1e0e1e380d17f26c9dbe792ff55348", "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|9e8fc4b19d2313253fe4276359b6b1fdca1e0e1e380d17f26c9dbe792ff55348"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_domain.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_vectorize_raises_valueerror_when_empty_string"}, "properties": {"repobilityId": 55983, "scanner": "repobility-ast-engine", "fingerprint": "0a7e85b64af0053c1c2d4184c6af70c172151930d4a09cf0652cca291aa07a98", "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|0a7e85b64af0053c1c2d4184c6af70c172151930d4a09cf0652cca291aa07a98"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_domain.py"}, "region": {"startLine": 213}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_vectorize_raises_valueerror_when_empty_string"}, "properties": {"repobilityId": 55982, "scanner": "repobility-ast-engine", "fingerprint": "0a7e85b64af0053c1c2d4184c6af70c172151930d4a09cf0652cca291aa07a98", "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|0a7e85b64af0053c1c2d4184c6af70c172151930d4a09cf0652cca291aa07a98"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_domain.py"}, "region": {"startLine": 213}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_vectorize_raises_valueerror_when_no_text"}, "properties": {"repobilityId": 55981, "scanner": "repobility-ast-engine", "fingerprint": "b41036cbbc0764a3e797d83bafe4547120222447218724688737ec2cee948503", "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|b41036cbbc0764a3e797d83bafe4547120222447218724688737ec2cee948503"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_domain.py"}, "region": {"startLine": 206}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_vectorize_raises_valueerror_when_no_text"}, "properties": {"repobilityId": 55980, "scanner": "repobility-ast-engine", "fingerprint": "b41036cbbc0764a3e797d83bafe4547120222447218724688737ec2cee948503", "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|b41036cbbc0764a3e797d83bafe4547120222447218724688737ec2cee948503"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tests/test_domain.py"}, "region": {"startLine": 206}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_credential"}, "properties": {"repobilityId": 55977, "scanner": "repobility-ast-engine", "fingerprint": "f89bc034f3aa606af3cf9a4d628c22504caf557734d384ddec8733b910e849f3", "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|f89bc034f3aa606af3cf9a4d628c22504caf557734d384ddec8733b910e849f3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/credentials_service.py"}, "region": {"startLine": 365}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "Phantom test coverage: test_credential"}, "properties": {"repobilityId": 55976, "scanner": "repobility-ast-engine", "fingerprint": "f89bc034f3aa606af3cf9a4d628c22504caf557734d384ddec8733b910e849f3", "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|f89bc034f3aa606af3cf9a4d628c22504caf557734d384ddec8733b910e849f3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/credentials_service.py"}, "region": {"startLine": 365}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55975, "scanner": "repobility-ast-engine", "fingerprint": "6afe8ce54bc7294c12730ebfbf0be29bd4f751c494658cf12a6ec710b5a3cab3", "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|6afe8ce54bc7294c12730ebfbf0be29bd4f751c494658cf12a6ec710b5a3cab3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 324}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55974, "scanner": "repobility-ast-engine", "fingerprint": "6afe8ce54bc7294c12730ebfbf0be29bd4f751c494658cf12a6ec710b5a3cab3", "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|6afe8ce54bc7294c12730ebfbf0be29bd4f751c494658cf12a6ec710b5a3cab3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 324}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55973, "scanner": "repobility-ast-engine", "fingerprint": "5686e1871f57787b6ca2ee45522de1de1d0c135c5beea5a60014282a3f4164b3", "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|5686e1871f57787b6ca2ee45522de1de1d0c135c5beea5a60014282a3f4164b3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 302}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55972, "scanner": "repobility-ast-engine", "fingerprint": "5686e1871f57787b6ca2ee45522de1de1d0c135c5beea5a60014282a3f4164b3", "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|5686e1871f57787b6ca2ee45522de1de1d0c135c5beea5a60014282a3f4164b3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 302}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55971, "scanner": "repobility-ast-engine", "fingerprint": "6044b41cc8e01ab55e27f2b514e88d5b6ae061db07158b426b2a72bd29c889eb", "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|6044b41cc8e01ab55e27f2b514e88d5b6ae061db07158b426b2a72bd29c889eb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 289}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55970, "scanner": "repobility-ast-engine", "fingerprint": "6044b41cc8e01ab55e27f2b514e88d5b6ae061db07158b426b2a72bd29c889eb", "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|6044b41cc8e01ab55e27f2b514e88d5b6ae061db07158b426b2a72bd29c889eb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 289}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55969, "scanner": "repobility-ast-engine", "fingerprint": "0f8bd5f3319b27d7ef107b99b744c601317cbee18980550b5142dc21f6254140", "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|0f8bd5f3319b27d7ef107b99b744c601317cbee18980550b5142dc21f6254140"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55968, "scanner": "repobility-ast-engine", "fingerprint": "23b244f0e1247c8e90cfcafb9185695247a7e0efef5585923e036ea413ba6364", "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|23b244f0e1247c8e90cfcafb9185695247a7e0efef5585923e036ea413ba6364"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 279}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55967, "scanner": "repobility-ast-engine", "fingerprint": "62ddce79bab8de1c5d6ca323d45138020ae51837d624d9124322cdf02331ecf0", "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|62ddce79bab8de1c5d6ca323d45138020ae51837d624d9124322cdf02331ecf0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55966, "scanner": "repobility-ast-engine", "fingerprint": "0f8bd5f3319b27d7ef107b99b744c601317cbee18980550b5142dc21f6254140", "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|0f8bd5f3319b27d7ef107b99b744c601317cbee18980550b5142dc21f6254140"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55965, "scanner": "repobility-ast-engine", "fingerprint": "23b244f0e1247c8e90cfcafb9185695247a7e0efef5585923e036ea413ba6364", "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|23b244f0e1247c8e90cfcafb9185695247a7e0efef5585923e036ea413ba6364"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 279}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55964, "scanner": "repobility-ast-engine", "fingerprint": "8787dad4b0ff0484d8ee1dd376f05a4f268508af70ccbd104d4bc979c8a41b64", "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|8787dad4b0ff0484d8ee1dd376f05a4f268508af70ccbd104d4bc979c8a41b64"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 256}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55963, "scanner": "repobility-ast-engine", "fingerprint": "62ddce79bab8de1c5d6ca323d45138020ae51837d624d9124322cdf02331ecf0", "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|62ddce79bab8de1c5d6ca323d45138020ae51837d624d9124322cdf02331ecf0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55962, "scanner": "repobility-ast-engine", "fingerprint": "337eb90e713cca2fcd563cac2a419b8b7e6c30ab3252819d7cffc48bddc7bd92", "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|337eb90e713cca2fcd563cac2a419b8b7e6c30ab3252819d7cffc48bddc7bd92"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 246}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55961, "scanner": "repobility-ast-engine", "fingerprint": "8787dad4b0ff0484d8ee1dd376f05a4f268508af70ccbd104d4bc979c8a41b64", "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|8787dad4b0ff0484d8ee1dd376f05a4f268508af70ccbd104d4bc979c8a41b64"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 256}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55960, "scanner": "repobility-ast-engine", "fingerprint": "d2844a1dc5daa69a6d495bb4bb910b3a478f8333861ad0a31a5373f5b0c57a0c", "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|d2844a1dc5daa69a6d495bb4bb910b3a478f8333861ad0a31a5373f5b0c57a0c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 234}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55959, "scanner": "repobility-ast-engine", "fingerprint": "337eb90e713cca2fcd563cac2a419b8b7e6c30ab3252819d7cffc48bddc7bd92", "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|337eb90e713cca2fcd563cac2a419b8b7e6c30ab3252819d7cffc48bddc7bd92"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 246}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55958, "scanner": "repobility-ast-engine", "fingerprint": "d2844a1dc5daa69a6d495bb4bb910b3a478f8333861ad0a31a5373f5b0c57a0c", "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|d2844a1dc5daa69a6d495bb4bb910b3a478f8333861ad0a31a5373f5b0c57a0c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 234}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55957, "scanner": "repobility-ast-engine", "fingerprint": "885268071098b78aeff4ba03bd114dc9b1f5bc7c4f2b7463c0d74ffe42daa525", "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|885268071098b78aeff4ba03bd114dc9b1f5bc7c4f2b7463c0d74ffe42daa525"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 226}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55956, "scanner": "repobility-ast-engine", "fingerprint": "885268071098b78aeff4ba03bd114dc9b1f5bc7c4f2b7463c0d74ffe42daa525", "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|885268071098b78aeff4ba03bd114dc9b1f5bc7c4f2b7463c0d74ffe42daa525"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 226}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55955, "scanner": "repobility-ast-engine", "fingerprint": "220759b38586fea7275885812201bd93e2be103b5a009ea59e835d168347dac5", "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|220759b38586fea7275885812201bd93e2be103b5a009ea59e835d168347dac5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55954, "scanner": "repobility-ast-engine", "fingerprint": "220759b38586fea7275885812201bd93e2be103b5a009ea59e835d168347dac5", "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|220759b38586fea7275885812201bd93e2be103b5a009ea59e835d168347dac5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55953, "scanner": "repobility-ast-engine", "fingerprint": "25a6e114a8877f33e8b152ed53cb2006462ae037eb019f82f6d0520a336d1454", "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|25a6e114a8877f33e8b152ed53cb2006462ae037eb019f82f6d0520a336d1454"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 214}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55952, "scanner": "repobility-ast-engine", "fingerprint": "25a6e114a8877f33e8b152ed53cb2006462ae037eb019f82f6d0520a336d1454", "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|25a6e114a8877f33e8b152ed53cb2006462ae037eb019f82f6d0520a336d1454"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 214}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55951, "scanner": "repobility-ast-engine", "fingerprint": "1f9b7eb6f9edfa5d89a02b6da6789a8c5b4562e1601ff78ad75949ac785be279", "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|1f9b7eb6f9edfa5d89a02b6da6789a8c5b4562e1601ff78ad75949ac785be279"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55950, "scanner": "repobility-ast-engine", "fingerprint": "1f9b7eb6f9edfa5d89a02b6da6789a8c5b4562e1601ff78ad75949ac785be279", "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|1f9b7eb6f9edfa5d89a02b6da6789a8c5b4562e1601ff78ad75949ac785be279"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55949, "scanner": "repobility-ast-engine", "fingerprint": "ad8ee14eb65a07e773fc4a7ac8bd971d6ef704b4d0e90b89efcf722089016ae5", "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|ad8ee14eb65a07e773fc4a7ac8bd971d6ef704b4d0e90b89efcf722089016ae5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55948, "scanner": "repobility-ast-engine", "fingerprint": "ad8ee14eb65a07e773fc4a7ac8bd971d6ef704b4d0e90b89efcf722089016ae5", "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|ad8ee14eb65a07e773fc4a7ac8bd971d6ef704b4d0e90b89efcf722089016ae5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55947, "scanner": "repobility-ast-engine", "fingerprint": "83d825a0ed7b61a39402fbeabcf9652d8cb8465519f9ffe4677ec634dc231afc", "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|83d825a0ed7b61a39402fbeabcf9652d8cb8465519f9ffe4677ec634dc231afc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 184}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55946, "scanner": "repobility-ast-engine", "fingerprint": "83d825a0ed7b61a39402fbeabcf9652d8cb8465519f9ffe4677ec634dc231afc", "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|83d825a0ed7b61a39402fbeabcf9652d8cb8465519f9ffe4677ec634dc231afc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 184}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55945, "scanner": "repobility-ast-engine", "fingerprint": "583c61e28b23a20f04870e83a11c3823f84a7bcd3bc8cec591f2f12db582a965", "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|583c61e28b23a20f04870e83a11c3823f84a7bcd3bc8cec591f2f12db582a965"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 180}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55944, "scanner": "repobility-ast-engine", "fingerprint": "583c61e28b23a20f04870e83a11c3823f84a7bcd3bc8cec591f2f12db582a965", "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|583c61e28b23a20f04870e83a11c3823f84a7bcd3bc8cec591f2f12db582a965"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 180}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55943, "scanner": "repobility-ast-engine", "fingerprint": "19c7cedb0b9085a67aaab17b44cdd85168feaa11c84d702f44a593ed88c7779c", "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|19c7cedb0b9085a67aaab17b44cdd85168feaa11c84d702f44a593ed88c7779c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 174}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55942, "scanner": "repobility-ast-engine", "fingerprint": "19c7cedb0b9085a67aaab17b44cdd85168feaa11c84d702f44a593ed88c7779c", "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|19c7cedb0b9085a67aaab17b44cdd85168feaa11c84d702f44a593ed88c7779c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 174}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55941, "scanner": "repobility-ast-engine", "fingerprint": "44ed15b08451a77c72a46ff3ae63b8dd0e8f1de4bbcce226e3d53f412ee22006", "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|44ed15b08451a77c72a46ff3ae63b8dd0e8f1de4bbcce226e3d53f412ee22006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 162}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55940, "scanner": "repobility-ast-engine", "fingerprint": "44ed15b08451a77c72a46ff3ae63b8dd0e8f1de4bbcce226e3d53f412ee22006", "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|44ed15b08451a77c72a46ff3ae63b8dd0e8f1de4bbcce226e3d53f412ee22006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 162}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55939, "scanner": "repobility-ast-engine", "fingerprint": "a677f01b19a99f935608831d629543a1d4ca1f0854e249c2bc7e26eaabc8562c", "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|a677f01b19a99f935608831d629543a1d4ca1f0854e249c2bc7e26eaabc8562c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55938, "scanner": "repobility-ast-engine", "fingerprint": "a677f01b19a99f935608831d629543a1d4ca1f0854e249c2bc7e26eaabc8562c", "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|a677f01b19a99f935608831d629543a1d4ca1f0854e249c2bc7e26eaabc8562c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55937, "scanner": "repobility-ast-engine", "fingerprint": "05dd0c1e6ed99ac8bffb77255e775514f648960e7cf38f302cdc24d98c0ffaef", "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|05dd0c1e6ed99ac8bffb77255e775514f648960e7cf38f302cdc24d98c0ffaef"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55936, "scanner": "repobility-ast-engine", "fingerprint": "05dd0c1e6ed99ac8bffb77255e775514f648960e7cf38f302cdc24d98c0ffaef", "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|05dd0c1e6ed99ac8bffb77255e775514f648960e7cf38f302cdc24d98c0ffaef"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55935, "scanner": "repobility-ast-engine", "fingerprint": "a1709b83dd573fe6ae31020553c39e1d6078a6d4a7d0ec262b3fc83ebfff5357", "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|a1709b83dd573fe6ae31020553c39e1d6078a6d4a7d0ec262b3fc83ebfff5357"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55934, "scanner": "repobility-ast-engine", "fingerprint": "a1709b83dd573fe6ae31020553c39e1d6078a6d4a7d0ec262b3fc83ebfff5357", "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|a1709b83dd573fe6ae31020553c39e1d6078a6d4a7d0ec262b3fc83ebfff5357"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55933, "scanner": "repobility-ast-engine", "fingerprint": "19a9167016afbe6ad13db4b43539d35226b62cc6ea8e388dd8051371247f8e5e", "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|19a9167016afbe6ad13db4b43539d35226b62cc6ea8e388dd8051371247f8e5e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55932, "scanner": "repobility-ast-engine", "fingerprint": "19a9167016afbe6ad13db4b43539d35226b62cc6ea8e388dd8051371247f8e5e", "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|19a9167016afbe6ad13db4b43539d35226b62cc6ea8e388dd8051371247f8e5e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55931, "scanner": "repobility-ast-engine", "fingerprint": "995bf96090f876992989060efdfe085266a3743b1eaa462d146ec06d4c26330b", "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|995bf96090f876992989060efdfe085266a3743b1eaa462d146ec06d4c26330b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 102}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55930, "scanner": "repobility-ast-engine", "fingerprint": "995bf96090f876992989060efdfe085266a3743b1eaa462d146ec06d4c26330b", "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|995bf96090f876992989060efdfe085266a3743b1eaa462d146ec06d4c26330b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 102}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55929, "scanner": "repobility-ast-engine", "fingerprint": "65f1f40c349f0c6b28403404d355a8d7d362e5c4023f65fa76ced2d2544f72b1", "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|65f1f40c349f0c6b28403404d355a8d7d362e5c4023f65fa76ced2d2544f72b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55928, "scanner": "repobility-ast-engine", "fingerprint": "65f1f40c349f0c6b28403404d355a8d7d362e5c4023f65fa76ced2d2544f72b1", "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|65f1f40c349f0c6b28403404d355a8d7d362e5c4023f65fa76ced2d2544f72b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55927, "scanner": "repobility-ast-engine", "fingerprint": "1d85ecf5a42d87946e6906f85d2589566577dd28bb96fc9fc698f5ca3ab69ed0", "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|1d85ecf5a42d87946e6906f85d2589566577dd28bb96fc9fc698f5ca3ab69ed0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 88}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "`self._make_request` used but never assigned in __init__"}, "properties": {"repobilityId": 55926, "scanner": "repobility-ast-engine", "fingerprint": "1d85ecf5a42d87946e6906f85d2589566577dd28bb96fc9fc698f5ca3ab69ed0", "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|1d85ecf5a42d87946e6906f85d2589566577dd28bb96fc9fc698f5ca3ab69ed0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/client.py"}, "region": {"startLine": 88}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56361, "scanner": "gitleaks", "fingerprint": "4a959d038e3f5cf727d1ddae7f552e4617a78a12df741f66d709736a368da4be", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl http://localhost:5055/api/notebooks\n# Expected: {\"detail\": \"Missing authorization header\"}\n\n# With correct password (should succeed)\ncurl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|39|curl token # expected: detail : missing authorization header # with correct password should succeed curl -h authorizatio"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 394}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56360, "scanner": "gitleaks", "fingerprint": "a5ce29a3f8bac3151f73fcb9ad17793d11f9078bb56f27379efb327ec9751165", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -v -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|37|curl -v -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 376}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56359, "scanner": "gitleaks", "fingerprint": "4a959d038e3f5cf727d1ddae7f552e4617a78a12df741f66d709736a368da4be", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl http://localhost:5055/api/notebooks\n# Expected: {\"detail\": \"Missing authorization header\"}\n\n# With correct password (should succeed)\ncurl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|39|curl token # expected: detail : missing authorization header # with correct password should succeed curl -h authorizatio"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 394}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56358, "scanner": "gitleaks", "fingerprint": "cbcd0f9965a6acd612c483a772f1cd3c4f9b27b6bc455b973eb89b43bf15ce4f", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|36|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 368}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56357, "scanner": "gitleaks", "fingerprint": "a5ce29a3f8bac3151f73fcb9ad17793d11f9078bb56f27379efb327ec9751165", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -v -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|37|curl -v -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 376}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56356, "scanner": "gitleaks", "fingerprint": "9ac5caffb2f7ad4a6fd936a2ccf2d491adfcddc942b98e763a83948e85d4fba5", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "curl -X POST \\\n  -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|18|curl -x post -h authorization: bearer redacted", "duplicate_count": 1, "duplicate_rule_ids": ["curl-auth-header"], "duplicate_scanners": ["gitleaks"], "duplicate_fingerprints": ["3ce548a37f4552974e9d3deb3d3536edcb67bdba34c087fb3e5032c35570cc32", "9ac5caffb2f7ad4a6fd936a2ccf2d491adfcddc942b98e763a83948e85d4fba5"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 182}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56355, "scanner": "gitleaks", "fingerprint": "cbcd0f9965a6acd612c483a772f1cd3c4f9b27b6bc455b973eb89b43bf15ce4f", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|36|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 368}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56354, "scanner": "gitleaks", "fingerprint": "3da39644195a57490e2964ae3eaa8e34669ca4291f3b4c2efe17403185827c1b", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl\n\n```bash\n# List notebooks\ncurl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|17|curl bash # list notebooks curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 174}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56353, "scanner": "gitleaks", "fingerprint": "9ac5caffb2f7ad4a6fd936a2ccf2d491adfcddc942b98e763a83948e85d4fba5", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "curl -X POST \\\n  -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|18|curl -x post -h authorization: bearer redacted", "duplicate_count": 1, "duplicate_rule_ids": ["curl-auth-header"], "duplicate_scanners": ["gitleaks"], "duplicate_fingerprints": ["3ce548a37f4552974e9d3deb3d3536edcb67bdba34c087fb3e5032c35570cc32", "9ac5caffb2f7ad4a6fd936a2ccf2d491adfcddc942b98e763a83948e85d4fba5"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 182}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56352, "scanner": "gitleaks", "fingerprint": "66076d450e4b438c77375fdc5e8398d5426bdbcc1963c690b05ae776418572ee", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|15|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 154}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56351, "scanner": "gitleaks", "fingerprint": "3da39644195a57490e2964ae3eaa8e34669ca4291f3b4c2efe17403185827c1b", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl\n\n```bash\n# List notebooks\ncurl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|17|curl bash # list notebooks curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 174}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56350, "scanner": "gitleaks", "fingerprint": "bd4b5cdeea3fdd440b671610c5afd55067965d703befb4def5cea43698411cac", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|10|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/7-DEVELOPMENT/api-reference.md"}, "region": {"startLine": 101}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56349, "scanner": "gitleaks", "fingerprint": "66076d450e4b438c77375fdc5e8398d5426bdbcc1963c690b05ae776418572ee", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|15|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/security.md"}, "region": {"startLine": 154}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56348, "scanner": "gitleaks", "fingerprint": "235676515b386f3ef2e67cdf653884e4b2335e294c49784c59dd81b754a7cac1", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl http://localhost:5055/api/notebooks \\\n  -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|1|curl token -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/7-DEVELOPMENT/api-reference.md"}, "region": {"startLine": 18}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56347, "scanner": "gitleaks", "fingerprint": "8f2d3b63709c2cd6db6e2e14548f14b074c6d9b8d8762fcf191087fdd8bf40f4", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|81|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/reverse-proxy.md"}, "region": {"startLine": 819}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56346, "scanner": "gitleaks", "fingerprint": "8f2d3b63709c2cd6db6e2e14548f14b074c6d9b8d8762fcf191087fdd8bf40f4", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|81|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/5-CONFIGURATION/reverse-proxy.md"}, "region": {"startLine": 819}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56345, "scanner": "gitleaks", "fingerprint": "bd4b5cdeea3fdd440b671610c5afd55067965d703befb4def5cea43698411cac", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|10|curl -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/7-DEVELOPMENT/api-reference.md"}, "region": {"startLine": 101}}}]}, {"ruleId": "curl-auth-header", "level": "error", "message": {"text": "Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource."}, "properties": {"repobilityId": 56343, "scanner": "gitleaks", "fingerprint": "235676515b386f3ef2e67cdf653884e4b2335e294c49784c59dd81b754a7cac1", "category": "credential_exposure", "severity": "critical", "confidence": 0.95, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"match": "curl http://localhost:5055/api/notebooks \\\n  -H \"Authorization: Bearer <redacted>\"", "rule_id": "curl-auth-header", "scanner": "gitleaks", "detector": "curl-auth-header", "correlation_key": "secret|token|1|curl token -h authorization: bearer redacted"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/7-DEVELOPMENT/api-reference.md"}, "region": {"startLine": 18}}}]}, {"ruleId": "DKC007", "level": "error", "message": {"text": "Compose service contains a literal secret environment value"}, "properties": {"repobilityId": 56342, "scanner": "repobility-docker", "fingerprint": "5703bd766dbadecd6d3d83f1967856eaf3b3aa94dc9731b1bae56c9d7348c9b3", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Environment variable name is secret-like and value is a committed literal.", "evidence": {"rule_id": "DKC007", "scanner": "repobility-docker", "service": "open_notebook", "variable": "SURREAL_PASSWORD", "references": ["https://docs.docker.com/compose/how-tos/environment-variables/best-practices/", "https://docs.docker.com/reference/compose-file/secrets/"], "path_context": "runtime", "correlation_key": "fp|5703bd766dbadecd6d3d83f1967856eaf3b3aa94dc9731b1bae56c9d7348c9b3", "compose_secrets_declared": false}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "DKC007", "level": "error", "message": {"text": "Compose service contains a literal secret environment value"}, "properties": {"repobilityId": 56339, "scanner": "repobility-docker", "fingerprint": "5703bd766dbadecd6d3d83f1967856eaf3b3aa94dc9731b1bae56c9d7348c9b3", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Environment variable name is secret-like and value is a committed literal.", "evidence": {"rule_id": "DKC007", "scanner": "repobility-docker", "service": "open_notebook", "variable": "SURREAL_PASSWORD", "references": ["https://docs.docker.com/compose/how-tos/environment-variables/best-practices/", "https://docs.docker.com/reference/compose-file/secrets/"], "path_context": "runtime", "correlation_key": "fp|5703bd766dbadecd6d3d83f1967856eaf3b3aa94dc9731b1bae56c9d7348c9b3", "compose_secrets_declared": false}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker-compose.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56332, "scanner": "repobility-docker", "fingerprint": "224205d1c4a8a0d54ae27ee0f23fe5b072122aad139548e6f56dffdf419a89f6", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|224205d1c4a8a0d54ae27ee0f23fe5b072122aad139548e6f56dffdf419a89f6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 88}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56329, "scanner": "repobility-docker", "fingerprint": "224205d1c4a8a0d54ae27ee0f23fe5b072122aad139548e6f56dffdf419a89f6", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|224205d1c4a8a0d54ae27ee0f23fe5b072122aad139548e6f56dffdf419a89f6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 88}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56324, "scanner": "repobility-docker", "fingerprint": "5aa9324c02f8337417536a31cd1432974d0017952fa1e19533d8981cd51125c5", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|5aa9324c02f8337417536a31cd1432974d0017952fa1e19533d8981cd51125c5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 49}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56322, "scanner": "repobility-docker", "fingerprint": "5aa9324c02f8337417536a31cd1432974d0017952fa1e19533d8981cd51125c5", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|5aa9324c02f8337417536a31cd1432974d0017952fa1e19533d8981cd51125c5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile.single"}, "region": {"startLine": 49}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56315, "scanner": "repobility-docker", "fingerprint": "f6615bdd24fba2ff68e3e3db324e1b03408f5adea637d7f4910fe8bfc309ba0b", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|f6615bdd24fba2ff68e3e3db324e1b03408f5adea637d7f4910fe8bfc309ba0b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 99}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56314, "scanner": "repobility-docker", "fingerprint": "f6615bdd24fba2ff68e3e3db324e1b03408f5adea637d7f4910fe8bfc309ba0b", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|f6615bdd24fba2ff68e3e3db324e1b03408f5adea637d7f4910fe8bfc309ba0b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 99}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56307, "scanner": "repobility-docker", "fingerprint": "581dd261e1dd346fe78b4410c02b618aaaab140d2564ad760edfaa09678f1feb", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|581dd261e1dd346fe78b4410c02b618aaaab140d2564ad760edfaa09678f1feb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 39}}}]}, {"ruleId": "DKR005", "level": "error", "message": {"text": "Docker image bakes a secret-like ENV value"}, "properties": {"repobilityId": 56306, "scanner": "repobility-docker", "fingerprint": "581dd261e1dd346fe78b4410c02b618aaaab140d2564ad760edfaa09678f1feb", "category": "docker", "severity": "critical", "confidence": 0.96, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "ENV assigns a literal value to a secret-like variable name.", "evidence": {"rule_id": "DKR005", "scanner": "repobility-docker", "variable": "TIKTOKEN_CACHE_DIR", "references": ["https://docs.docker.com/build/building/secrets/", "https://docs.docker.com/compose/how-tos/environment-variables/best-practices/"], "correlation_key": "fp|581dd261e1dd346fe78b4410c02b618aaaab140d2564ad760edfaa09678f1feb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 39}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "properties": {"repobilityId": 56171, "scanner": "repobility-supply-chain", "fingerprint": "4c31a3277bb0816c347ef7e3ec4b80c86f16ce72fe053d3c291a8fe4c8feeb70", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|4c31a3277bb0816c347ef7e3ec4b80c86f16ce72fe053d3c291a8fe4c8feeb70"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "properties": {"repobilityId": 56170, "scanner": "repobility-supply-chain", "fingerprint": "4c31a3277bb0816c347ef7e3ec4b80c86f16ce72fe053d3c291a8fe4c8feeb70", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|4c31a3277bb0816c347ef7e3ec4b80c86f16ce72fe053d3c291a8fe4c8feeb70"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 56169, "scanner": "repobility-supply-chain", "fingerprint": "ae02fb246e9f5de5b62d3ab7389520e78b8dfb7c37f3270c4cfeec55eb7e6aae", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ae02fb246e9f5de5b62d3ab7389520e78b8dfb7c37f3270c4cfeec55eb7e6aae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 185}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 56168, "scanner": "repobility-supply-chain", "fingerprint": "ae02fb246e9f5de5b62d3ab7389520e78b8dfb7c37f3270c4cfeec55eb7e6aae", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ae02fb246e9f5de5b62d3ab7389520e78b8dfb7c37f3270c4cfeec55eb7e6aae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 185}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "properties": {"repobilityId": 56167, "scanner": "repobility-supply-chain", "fingerprint": "9f5c3ef187b42f897f5c05a727f022a400a7e8beca81443592d217df3da6b804", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|9f5c3ef187b42f897f5c05a727f022a400a7e8beca81443592d217df3da6b804"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "properties": {"repobilityId": 56166, "scanner": "repobility-supply-chain", "fingerprint": "9f5c3ef187b42f897f5c05a727f022a400a7e8beca81443592d217df3da6b804", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|9f5c3ef187b42f897f5c05a727f022a400a7e8beca81443592d217df3da6b804"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 108}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 56164, "scanner": "repobility-supply-chain", "fingerprint": "ab15c85b4ea4e17cc7427329a1f759cfab081f0328e8235a8464a9e7084b4db6", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ab15c85b4ea4e17cc7427329a1f759cfab081f0328e8235a8464a9e7084b4db6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 56165, "scanner": "repobility-supply-chain", "fingerprint": "ab15c85b4ea4e17cc7427329a1f759cfab081f0328e8235a8464a9e7084b4db6", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ab15c85b4ea4e17cc7427329a1f759cfab081f0328e8235a8464a9e7084b4db6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 107}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "properties": {"repobilityId": 56163, "scanner": "repobility-supply-chain", "fingerprint": "c7031a57f6c161a2106f51b3461ff31e32a10a5e6d91f837d707a6cbab3f367b", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c7031a57f6c161a2106f51b3461ff31e32a10a5e6d91f837d707a6cbab3f367b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_PASSWORD` on a `pull_request` trigger"}, "properties": {"repobilityId": 56162, "scanner": "repobility-supply-chain", "fingerprint": "c7031a57f6c161a2106f51b3461ff31e32a10a5e6d91f837d707a6cbab3f367b", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c7031a57f6c161a2106f51b3461ff31e32a10a5e6d91f837d707a6cbab3f367b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 56161, "scanner": "repobility-supply-chain", "fingerprint": "1688e74548b51fb82533cb08f501d3a24dbababed72aca6d699f690442b34e2c", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|1688e74548b51fb82533cb08f501d3a24dbababed72aca6d699f690442b34e2c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "MINED116", "level": "error", "message": {"text": "Workflow uses `secrets.DOCKER_USERNAME` on a `pull_request` trigger"}, "properties": {"repobilityId": 56158, "scanner": "repobility-supply-chain", "fingerprint": "1688e74548b51fb82533cb08f501d3a24dbababed72aca6d699f690442b34e2c", "category": "dependency", "severity": "critical", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-pull-request-secrets", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|1688e74548b51fb82533cb08f501d3a24dbababed72aca6d699f690442b34e2c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-dev.yml"}, "region": {"startLine": 54}}}]}]}]}