{"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": "MINED124", "name": "[MINED124] requirements.txt: `import ansitoimg` has no version pin: Unpinned pip requirement means every fresh install m", "shortDescription": {"text": "[MINED124] requirements.txt: `import ansitoimg` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproduci"}, "fullDescription": {"text": "Replace `import ansitoimg` with `import ansitoimg==<version>` and manage upgrades through PRs / Dependabot."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "medium", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED111", "name": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or ", "shortDescription": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "fullDescription": {"text": "Either narrow the exception type, log the exception with `logger.exception(...)`, or re-raise after handling."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED109", "name": "[MINED109] Mutable default argument in `export` (dict): `def export(... = []/{}/set())` \u2014 Python's default value is cons", "shortDescription": {"text": "[MINED109] Mutable default argument in `export` (dict): `def export(... = []/{}/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 futur"}, "fullDescription": {"text": "Use None as the default and create the collection inside the function: `def export(x=None): x = x or []`"}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "WEB003", "name": "Public web service has no security.txt", "shortDescription": {"text": "Public web service has no security.txt"}, "fullDescription": {"text": "Add /.well-known/security.txt with Contact, Expires, Canonical, Preferred-Languages, and Policy fields. Keep the contact endpoint monitored."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "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": "Add .repobility/access.yml mapping routes to anonymous, authenticated, owner, admin, and super_admin. Keep business-specific rules in the repo so CI can enforce them."}, "properties": {"scanner": "repobility-access-control", "category": "auth", "severity": "medium", "confidence": 0.92, "cwe": "", "owasp": ""}}, {"id": "SEC087", "name": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces", "shortDescription": {"text": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces is predictable. Ported from gosec G404 / eslint detect-pseudoRandomBytes concept (Apache-2.0)."}, "fullDescription": {"text": "Use `crypto.randomBytes(32).toString('hex')` (Node) or `crypto.getRandomValues()` (browser)."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC046", "name": "[SEC046] Client-side open redirect \u2014 window.location = server-supplied URL: Assigning window.location from a server-supp", "shortDescription": {"text": "[SEC046] Client-side open redirect \u2014 window.location = server-supplied URL: Assigning window.location from a server-supplied URL trusts the server endpoint to never return a hostile destination. If that endpoint is ever subverted (compromis"}, "fullDescription": {"text": "Validate the URL is same-origin or on an explicit allowlist before assignment:\n  const u = new URL(serverUrl, location.href);\n  if (u.origin !== location.origin && !ALLOWED.includes(u.host)) return;\n  location.assign(u);\nEven better: have the server return a path (/checkout/done) instead of a full URL, and only allow same-origin navigation."}, "properties": {"scanner": "repobility-threat-engine", "category": "open_redirect", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC045", "name": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a latera", "shortDescription": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use obj"}, "fullDescription": {"text": "For literal data structures: use ast.literal_eval(text) \u2014 only parses literals, raises on code.\nFor formula evaluation: use asteval or simpleeval (purpose-built sandboxes with allow-lists).\nFor Odoo: use odoo.tools.safe_eval(expr, locals_dict, mode='exec').\nIf you genuinely need to execute admin-stored code: require explicit super-admin permission AND log every execution with a stack trace."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC127", "name": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedEr", "shortDescription": {"text": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedError after an AI scaffolding pass. The route appears to exist (and may even pass shallow CI), but invoking it crashes or "}, "fullDescription": {"text": "Either implement the body, or fail closed at module-load time so the deploy can't ship a half-built route. A CI gate that fails build on `raise NotImplementedError` in non-abstract code catches this cleanly."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "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": "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": "SEC041", "name": "[SEC041] Tabnabbing \u2014 target=\"_blank\" without rel=\"noopener noreferrer\": <a target=\"_blank\"> without rel=\"noopener noref", "shortDescription": {"text": "[SEC041] Tabnabbing \u2014 target=\"_blank\" without rel=\"noopener noreferrer\": <a target=\"_blank\"> without rel=\"noopener noreferrer\" leaks window.opener to the opened page. The opened page can then run window.opener.location = 'phishing-site' and"}, "fullDescription": {"text": "Add rel=\"noopener noreferrer\" to every <a target=\"_blank\">:\n  <a href=\"...\" target=\"_blank\" rel=\"noopener noreferrer\">link</a>\nFor dynamically generated links from JS, set rel on the element before appending. Even safe-looking subdomains should harden \u2014 costs nothing."}, "properties": {"scanner": "repobility-threat-engine", "category": "security", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "COMP001", "name": "[COMP001] High cognitive complexity: Function `portal_my_journal_unsubscribe` has cognitive complexity 16 (SonarSource s", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `portal_my_journal_unsubscribe` has cognitive complexity 16 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chain"}, "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 16."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "cwe": "", "owasp": ""}}, {"id": "CORE_NO_CI", "name": "No CI/CD configuration found", "shortDescription": {"text": "No CI/CD configuration found"}, "fullDescription": {"text": "Add a CI/CD pipeline: create .github/workflows/ci.yml for GitHub Actions with steps to lint, test, and build on every push and pull request."}, "properties": {"scanner": "repobility-core", "category": "practices", "severity": "medium", "confidence": null, "cwe": "", "owasp": ""}}, {"id": "SEC006", "name": "[SEC006] XSS Risk: Direct HTML injection without sanitization.", "shortDescription": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "fullDescription": {"text": "Use textContent instead of innerHTML. Sanitize with DOMPurify."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "low", "confidence": 0.4, "cwe": "", "owasp": ""}}, {"id": "SEC132", "name": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the la", "shortDescription": {"text": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template literals since ES6). Not a vulnerability on it"}, "fullDescription": {"text": "Python: `f\"prefix {var} suffix\"`. JS/TS: `` `prefix ${var} suffix` ``. Add a lint rule (pyupgrade UP032, eslint prefer-template) so future PRs catch this automatically."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "low", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC047", "name": "[SEC047] Unbounded ORM search([]) in a request handler: An unbounded .search([]) call inside an HTTP route loads every r", "shortDescription": {"text": "[SEC047] Unbounded ORM search([]) in a request handler: An unbounded .search([]) call inside an HTTP route loads every row of the model into memory. Fine for small tables, but a denial-of-service primitive once the table grows past ~10k row"}, "fullDescription": {"text": "For aggregates: use read_group() (Odoo) or annotate+Sum (Django) \u2014 the work stays in SQL.\nFor lists: add limit= and pagination (offset/limit + page index).\nFor counts: use search_count([]) (Odoo) or .count() (Django), not len(search([]))."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "low", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED098", "name": "[MINED098] Global Scope Pollution: Attaching libraries/objects directly to the global window scope (e.g., `window.axios ", "shortDescription": {"text": "[MINED098] Global Scope Pollution: Attaching libraries/objects directly to the global window scope (e.g., `window.axios = axios;`) makes the code harder to test and increases the risk of naming collisions."}, "fullDescription": {"text": "Import the library where you need it instead of attaching to window. For legitimate global registries, use a namespaced object (e.g., `window.__myApp.axios`)."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED073", "name": "[MINED073] Redos Greedy Quantifier: Pattern with nested quantifiers like (a+)+ applied to network/user data \u2014 denial of ", "shortDescription": {"text": "[MINED073] Redos Greedy Quantifier: Pattern with nested quantifiers like (a+)+ applied to network/user data \u2014 denial of service."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1333,CWE-400 / A06:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC001", "name": "[SEC001] Hardcoded Password: Hardcoded password found in source code.", "shortDescription": {"text": "[SEC001] Hardcoded Password: Hardcoded password found in source code."}, "fullDescription": {"text": "Use environment variables or a secrets manager."}, "properties": {"scanner": "repobility-threat-engine", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 11 more): Same pattern found in 11 addi", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 11 more): Same pattern found in 11 additional files. Review if needed."}, "fullDescription": {"text": "Validate the URL against an allowlist BEFORE fetching:\n  ALLOWED = {'images.example.com', 'cdn.example.com'}\n  host = urlparse(url).hostname\n  if host not in ALLOWED: abort(400)\nOr use a server-side proxy (Imgproxy / serve-files-only-from-S3) that isolates outbound network access from the request handler.\nBlock private CIDRs explicitly: 10/8, 172.16/12, 192.168/16, 169.254/16."}, "properties": {"scanner": "repobility-threat-engine", "category": "ssrf", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC027", "name": "[SEC027] XML External Entity (XXE) \u2014 Node.js xml parsers (and 1 more): Same pattern found in 1 additional files. Review ", "shortDescription": {"text": "[SEC027] XML External Entity (XXE) \u2014 Node.js xml parsers (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Pass `noent: false` to libxmljs. Avoid xml2js or pass explicit secure config. Prefer parsers that don't expand external entities at all."}, "properties": {"scanner": "repobility-threat-engine", "category": "xxe", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC043", "name": "[SEC043] Secret stored in Odoo ir.config_parameter \u2014 broadly readable (and 10 more): Same pattern found in 10 additional", "shortDescription": {"text": "[SEC043] Secret stored in Odoo ir.config_parameter \u2014 broadly readable (and 10 more): Same pattern found in 10 additional files. Review if needed."}, "fullDescription": {"text": "Move to environment variables (loaded at server start, not in DB):\n  api_key = os.environ.get('STRIPE_API_KEY')\nOr use Odoo's dedicated 'res.config.settings' with restricted ACL:\n  - Set groups='base.group_system' on the field\n  - Use sudo() reads only from server-trusted code paths\nOr a secrets-manager (HashiCorp Vault, AWS Secrets Manager) with a thin Odoo client that fetches at runtime."}, "properties": {"scanner": "repobility-threat-engine", "category": "secret", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED072", "name": "[MINED072] Python Pass Only Class (and 1 more): Same pattern found in 1 additional files. Review if needed.", "shortDescription": {"text": "[MINED072] Python Pass Only Class (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED004", "name": "[MINED004] Weak Crypto (and 3 more): Same pattern found in 3 additional files. Review if needed.", "shortDescription": {"text": "[MINED004] Weak Crypto (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-327 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "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": "MINED043", "name": "[MINED043] Http Not Https (and 6 more): Same pattern found in 6 additional files. Review if needed.", "shortDescription": {"text": "[MINED043] Http Not Https (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "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": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED088", "name": "[MINED088] React Conditional Hook: useState/useEffect inside if/loop violates Rules of Hooks.", "shortDescription": {"text": "[MINED088] React Conditional Hook: useState/useEffect inside if/loop violates Rules of Hooks."}, "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": "SEC044", "name": "[SEC044] CSRF disabled on destructive HTTP endpoint: An auth='user' endpoint with csrf=False can be triggered cross-site", "shortDescription": {"text": "[SEC044] CSRF disabled on destructive HTTP endpoint: An auth='user' endpoint with csrf=False can be triggered cross-site by any logged-in user clicking a malicious page that POSTs to the endpoint. When the path is destructive (delete card, "}, "fullDescription": {"text": "Re-enable CSRF:\n  Odoo: remove csrf=False, send X-CSRFToken header from client.\n  Django: remove @csrf_exempt; if absolutely needed, replace with HMAC          signature verification.\nIf this is genuinely a webhook callback: keep csrf=False BUT add HMAC verification of the signature header (Stripe-style: 'Stripe-Signature' header carries HMAC-SHA256 of the body)."}, "properties": {"scanner": "repobility-threat-engine", "category": "csrf", "severity": "info", "confidence": 0.1, "cwe": "", "owasp": ""}}, {"id": "SEC020", "name": "[SEC020] Secret Printed to Logs (and 3 more): Same pattern found in 3 additional files. Review if needed.", "shortDescription": {"text": "[SEC020] Secret Printed to Logs (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "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.2, "cwe": "", "owasp": ""}}, {"id": "MINED067", "name": "[MINED067] Python Requests No Timeout (and 11 more): Same pattern found in 11 additional files. Review if needed.", "shortDescription": {"text": "[MINED067] Python Requests No Timeout (and 11 more): Same pattern found in 11 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-400 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC078", "name": "[SEC078] Python: requests without timeout (and 12 more): Same pattern found in 12 additional files. Review if needed.", "shortDescription": {"text": "[SEC078] Python: requests without timeout (and 12 more): Same pattern found in 12 additional files. Review if needed."}, "fullDescription": {"text": "Add `timeout=10` (or appropriate value) to every requests call."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod (and 20 more): Same pattern found in 20 additional files. Review if needed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod (and 20 more): Same pattern found in 20 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": "MINED031", "name": "[MINED031] React Direct State Mutation (and 74 more): Same pattern found in 74 additional files. Review if needed.", "shortDescription": {"text": "[MINED031] React Direct State Mutation (and 74 more): Same pattern found in 74 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-682 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED050", "name": "[MINED050] Stub Only Function (and 18 more): Same pattern found in 18 additional files. Review if needed.", "shortDescription": {"text": "[MINED050] Stub Only Function (and 18 more): Same pattern found in 18 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED001", "name": "[MINED001] Bare Except Pass (and 8 more): Same pattern found in 8 additional files. Review if needed.", "shortDescription": {"text": "[MINED001] Bare Except Pass (and 8 more): Same pattern found in 8 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-755 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 82 more): Same pattern found in 82 add", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 82 more): Same pattern found in 82 additional files. Review if needed."}, "fullDescription": {"text": "Add `await` before each async call, or chain with `.then`. If you intentionally want fire-and-forget, prefix with `void` (TS) or assign to `_` (Python with `asyncio.create_task`) to make the intent explicit and survive lint."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED106", "name": "[MINED106] Phantom test coverage: test_ir_sequence_date_range_3_unlink: Test function `test_ir_sequence_date_range_3_unl", "shortDescription": {"text": "[MINED106] Phantom test coverage: test_ir_sequence_date_range_3_unlink: Test function `test_ir_sequence_date_range_3_unlink` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage wit"}, "fullDescription": {"text": "Add an explicit assertion that captures the test's intent, or remove the test."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "[MINED108] `self.postrollback` used but never assigned in __init__: Method `commit` of class `Cursor` reads `self.postro", "shortDescription": {"text": "[MINED108] `self.postrollback` used but never assigned in __init__: Method `commit` of class `Cursor` reads `self.postrollback`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first "}, "fullDescription": {"text": "Initialize `self.postrollback = <default>` in __init__, or add a class-level default."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC040", "name": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that int", "shortDescription": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTM"}, "fullDescription": {"text": "For plain text: use el.textContent = data.value (auto-escapes).\nFor HTML you need to render: el.innerHTML = DOMPurify.sanitize(html).\nFor React/Vue/Svelte: stop using innerHTML; use the framework's binding.\nWhen data comes from CV/PDF parsers, sanitize at the parser boundary too."}, "properties": {"scanner": "repobility-threat-engine", "category": "xss", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED027", "name": "[MINED027] React State Array Mutation: state.X.push/splice/sort followed by setState \u2014 React skips re-render on mutated ", "shortDescription": {"text": "[MINED027] React State Array Mutation: state.X.push/splice/sort followed by setState \u2014 React skips re-render on mutated reference."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-682 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC103", "name": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inje", "shortDescription": {"text": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inject `*)(uid=*` style payloads to bypass auth or enumerate accounts."}, "fullDescription": {"text": "Escape with javax.naming.ldap.Rdn.escapeValue or equivalent. For python-ldap, use ldap.filter.escape_filter_chars. Better: use parameterized search APIs (Spring LdapTemplate filter encoders)."}, "properties": {"scanner": "repobility-threat-engine", "category": "injection", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "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: _obj.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": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC013", "name": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows ", "shortDescription": {"text": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files."}, "fullDescription": {"text": "Use os.path.realpath() and verify the path starts with your expected base directory. Use secure_filename() for uploads."}, "properties": {"scanner": "repobility-threat-engine", "category": "path_traversal", "severity": "high", "confidence": 0.8, "cwe": "", "owasp": ""}}, {"id": "SEC085", "name": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. ", "shortDescription": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "fullDescription": {"text": "Use execFile / spawn with separate args array; never pass shell strings."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC083", "name": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported fr", "shortDescription": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "fullDescription": {"text": "Use a literal RegExp or whitelist-validate user input before constructing patterns."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC030", "name": "[SEC030] Open Redirect \u2014 user-controlled redirect target: Redirect target is taken directly from user input without vali", "shortDescription": {"text": "[SEC030] Open Redirect \u2014 user-controlled redirect target: Redirect target is taken directly from user input without validating that the destination is local to the site. Attackers craft phishing URLs that appear to come from your domain but"}, "fullDescription": {"text": "Validate the redirect URL against an allowlist of safe destinations:\n  # Django:\n  from django.utils.http import url_has_allowed_host_and_scheme\n  if not url_has_allowed_host_and_scheme(url, allowed_hosts={request.get_host()}):\n      url = '/'  # safe default\nOr restrict to relative paths only: `if not url.startswith('/'): abort(400)`. Never accept external schemes without verification."}, "properties": {"scanner": "repobility-threat-engine", "category": "open_redirect", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED009", "name": "[MINED009] Floats For Money: Variable named price/amount/cost typed as float instead of Decimal.", "shortDescription": {"text": "[MINED009] Floats For Money: Variable named price/amount/cost typed as float instead of Decimal."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-682 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. T", "shortDescription": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "fullDescription": {"text": "Add `import html` at the top of the file."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED007", "name": "[MINED007] Sql String Concat: cursor.execute(f\"... {user_input} ...\") \u2014 SQL injection.", "shortDescription": {"text": "[MINED007] Sql String Concat: cursor.execute(f\"... {user_input} ...\") \u2014 SQL injection."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-89 / A03:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "scanner-329492dd27d5d056", "name": "Possibly dead Python function: undecimalize", "shortDescription": {"text": "Possibly dead Python function: undecimalize"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab52b703fa119ae4", "name": "Possibly dead Python function: split_for_in_conditions", "shortDescription": {"text": "Possibly dead Python function: split_for_in_conditions"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2fb1d77ea865630", "name": "Possibly dead Python function: lobject", "shortDescription": {"text": "Possibly dead Python function: lobject"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d8d24dcb7fa43d86", "name": "Possibly dead Python function: is_method_a_route", "shortDescription": {"text": "Possibly dead Python function: is_method_a_route"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bd3d30a67daad25", "name": "Possibly dead Python function: fake_app", "shortDescription": {"text": "Possibly dead Python function: fake_app"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50d3e983e2099c12", "name": "Possibly dead Python function: fake_start_response", "shortDescription": {"text": "Possibly dead Python function: fake_start_response"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-788bf80fa9d706bd", "name": "Possibly dead Python function: showwarning_with_traceback", "shortDescription": {"text": "Possibly dead Python function: showwarning_with_traceback"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2479700d1766173f", "name": "Possibly dead Python function: distribute_not", "shortDescription": {"text": "Possibly dead Python function: distribute_not"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0832be5b8ff63e65", "name": "Possibly dead Python function: domain_combine_anies", "shortDescription": {"text": "Possibly dead Python function: domain_combine_anies"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eeb60d330f58d6f6", "name": "Possibly dead Python function: normalize_leaf", "shortDescription": {"text": "Possibly dead Python function: normalize_leaf"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0cd2a0ecf8367b2c", "name": "Possibly dead Python function: is_boolean", "shortDescription": {"text": "Possibly dead Python function: is_boolean"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-180738123c813315", "name": "Possibly dead Python function: check_leaf", "shortDescription": {"text": "Possibly dead Python function: check_leaf"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5174feb2228854c", "name": "Possibly dead Python function: url_fix", "shortDescription": {"text": "Possibly dead Python function: url_fix"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7bf559edf480554", "name": "Possibly dead Python function: url_decode_stream", "shortDescription": {"text": "Possibly dead Python function: url_decode_stream"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-864aa8eb3c0ceb20", "name": "Possibly dead Python function: url_encode_stream", "shortDescription": {"text": "Possibly dead Python function: url_encode_stream"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2ed42c894a4c922", "name": "Possibly dead Python function: gevent_wait_callback", "shortDescription": {"text": "Possibly dead Python function: gevent_wait_callback"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d1ff0453d1374b2", "name": "Possibly dead Python function: new_get_soap_client", "shortDescription": {"text": "Possibly dead Python function: new_get_soap_client"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-607463e5857c2fc9", "name": "Possibly dead Python function: pool_init", "shortDescription": {"text": "Possibly dead Python function: pool_init"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-741e8c2633128306", "name": "Possibly dead Python function: new_json", "shortDescription": {"text": "Possibly dead Python function: new_json"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7de33175972f2f17", "name": "Possibly dead Python function: parse_minus", "shortDescription": {"text": "Possibly dead Python function: parse_minus"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdccecebf419c688", "name": "Possibly dead Python function: str_to_number", "shortDescription": {"text": "Possibly dead Python function: str_to_number"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-121a43350a6d7f0a", "name": "Possibly dead Python function: verify_ordinal", "shortDescription": {"text": "Possibly dead Python function: verify_ordinal"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ede94f4c406432a", "name": "Possibly dead Python function: to_ordinal_num", "shortDescription": {"text": "Possibly dead Python function: to_ordinal_num"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f251aa6550453bed", "name": "Possibly dead Python function: to_splitnum", "shortDescription": {"text": "Possibly dead Python function: to_splitnum"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03b84ae17ba77f42", "name": "Possibly dead Python function: to_year", "shortDescription": {"text": "Possibly dead Python function: to_year"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09ed84b2e2a860f0", "name": "TODO/FIXME marker in shipping code \u2014 odoo/addons/test_main_flows/static/tests/tours/main_flow.js:132", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 odoo/addons/test_main_flows/static/tests/tours/main_flow.js:132"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-58c6298d90160611", "name": "TODO/FIXME marker in shipping code \u2014 addons/rating/static/tests/mock_server/models/rating_rating.js:6", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/rating/static/tests/mock_server/models/rating_rating.js:6"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-92a392333f5c3dbc", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_bubble/chat_bubble.test.js:115", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_bubble/chat_bubble.test.js:115"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-43a00e0e9d482edc", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/message/message.test.js:348", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/message/message.test.js:348"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0a961e81fd297d09", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chatter/web/form_renderer.test.js:20", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chatter/web/form_renderer.test.js:20"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4a60947de87154fc", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_window/chat_window.test.js:448", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_window/chat_window.test.js:448"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3925a29bbb73783a", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_window/chat_window_manager.test.js:48", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_window/chat_window_manager.test.js:48"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-35c7c2e01e56dcc8", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/discuss/call/call.test.js:73", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/discuss/call/call.test.js:73"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3f41470d26f81ae6", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/crosstab/crosstab.test.js:111", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/crosstab/crosstab.test.js:111"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bd08a0a016a01fca", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/lib/lame/lame.js:5152", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/lib/lame/lame.js:5152"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d4f13a1031424be4", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/lib/odoo_sfu/odoo_sfu.js:295", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/lib/odoo_sfu/odoo_sfu.js:295"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2b55e8c04be8af1f", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/chatter/web/chatter_patch.js:184", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/chatter/web/chatter_patch.js:184"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-95c23d9914c36b83", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/utils/common/misc.js:77", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/utils/common/misc.js:77"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c4153dc7cb57a96d", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/call/common/blur_manager.js:16", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/call/common/blur_manager.js:16"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0ff9409384877482", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/core/common/thread_model_patch.js:210", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/core/common/thread_model_patch.js:210"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-cea2f6fe85bec678", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/core/public_web/discuss_command_palette.js:151", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/core/public_web/discuss_command_palette.js:151"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f880b2042e0235e2", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/core/common/thread_model.js:242", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/core/common/thread_model.js:242"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1d56f1f9559219ae", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/core/web/store_service_patch.js:131", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/core/web/store_service_patch.js:131"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e4784da62d8aa4d6", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/model/make_store.js:190", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/model/make_store.js:190"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-40d646ec44c46a4c", "name": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js:787", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js:787"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f7ccf4d296f7b12f", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/mail/static/src/views/web/fields/html_mail_field/convert_inl", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js:1318"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-df5788e70c12ce8c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_comparison/static/src/interactions/comparison_page.js:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_comparison/static/src/interactions/comparison_page.js:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-105e694ad9f8d3e0", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_livechat/static/tests/mock_server/mock_models/discuss_channel.js:7", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_livechat/static/tests/mock_server/mock_models/discuss_channel.js:7"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-69f56e0a4f4df358", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_sale/static/src/app/models/pos_order_line.js:19", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_sale/static/src/app/models/pos_order_line.js:19"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-057bdc220ac1aa7c", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_sale/static/src/app/services/pos_store.js:373", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_sale/static/src/app/services/pos_store.js:373"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-09e2d4474d9675d6", "name": "TODO/FIXME marker in shipping code \u2014 addons/auth_totp_portal/static/tests/totp_portal.js:16", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/auth_totp_portal/static/tests/totp_portal.js:16"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5459434eba2fce2a", "name": "TODO/FIXME marker in shipping code \u2014 addons/delivery_mondialrelay/static/src/components/mondialrelay_field.js:73", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/delivery_mondialrelay/static/src/components/mondialrelay_field.js:73"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-24adc9b26e0da9ea", "name": "TODO/FIXME marker in shipping code \u2014 addons/l10n_in_pos/static/src/app/models/pos_order.js:16", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/l10n_in_pos/static/src/app/models/pos_order.js:16"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-cd0af5d75fe5c424", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_payment/static/src/website_builder/donation_option_plugin.js:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_payment/static/src/website_builder/donation_option_plugin.js:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-eef0c8724f72a6e3", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/website_payment/static/src/interactions/payment_form.js:115", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website_payment/static/src/interactions/payment_form.js:115"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-7de01ef84af16701", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_payment/static/src/snippets/s_donation/donation_snippet.js:42", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_payment/static/src/snippets/s_donation/donation_snippet.js:42"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f37fdfd0cd3efc71", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/pos_self_order/static/src/app/root.js:18", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/pos_self_order/static/src/app/root.js:18"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-5e7b159f73da0f75", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/order_widget/order_widget.js:56", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/order_widget/order_widget.js:56"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4070555c7366287d", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/attribute_selection/attribute_selec", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/attribute_selection/attribute_selection.js:61"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-563ea63b986f33ca", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/preset_info_popup/preset_info_popup", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/preset_info_popup/preset_info_popup.js:84"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4cf320e483f13383", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/combo_page/combo_page.js:555", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/combo_page/combo_page.js:555"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8738cef734df97d2", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/product_page/product_page.js:201", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/product_page/product_page.js:201"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a12e857e9e62758c", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js:289", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js:289"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-371d82599383b700", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/printer_service.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/printer_service.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-fb5b47134d40927a", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/self_order_service.js:335", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/self_order_service.js:335"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-93f08aabe8eb157a", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/card_utils.js:209", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/card_utils.js:209"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-dc55632337f8bdf8", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/overrides/screens/ticket_screen/ticket_screen.js:2", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/overrides/screens/ticket_screen/ticket_screen.js:26"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-87e311577b69921e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_stock_wishlist/static/src/interactions/add_product_to_wishlist_", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_stock_wishlist/static/src/interactions/add_product_to_wishlist_button.js:6"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-161e25901d7360d7", "name": "TODO/FIXME marker in shipping code \u2014 addons/sale/static/src/js/sale_utils.js:26", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale/static/src/js/sale_utils.js:26"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1e2de0270b49cfd4", "name": "TODO/FIXME marker in shipping code \u2014 addons/sale/static/src/js/tours/tour_utils.js:39", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale/static/src/js/tours/tour_utils.js:39"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4ebe9f58354bcf07", "name": "TODO/FIXME marker in shipping code \u2014 addons/sale_stock/static/src/widgets/qty_at_date_widget.js:60", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale_stock/static/src/widgets/qty_at_date_widget.js:60"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-441a7b7baa10565d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/mock_server/mock_models/website_visitor.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/mock_server/mock_models/website_visitor.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1694967b1793b165", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/zoomed_background_shape.test.js:27", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/zoomed_background_shape.test.js:27"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d8c1fd6f7bbbb708", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/carousel/carousel.test.js:76", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/carousel/carousel.test.js:76"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a151eb5d47fbf4ff", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/gallery.test.js:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/gallery.test.js:11"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6bfc98128aabb3fa", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/table_of_content.test.js:22", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/table_of_content.test.js:22"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ecee79b722ec0728", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/gallery_slider.test.js:15", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/gallery_slider.test.js:15"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-193c94b62c37909f", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/form.test.js:221", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/form.test.js:221"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b1f5ed2cf298acd9", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/page_manager.js:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/page_manager.js:4"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-53c6ed9cc812f477", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/html_editor.js:335", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/html_editor.js:335"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-57994a660d666331", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/grid_layout.js:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/grid_layout.js:24"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-50150741f55e6c5e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippets_all_drag_and_drop.js:69", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippets_all_drag_and_drop.js:69"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6c2d77d3fcab4bf6", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_social_media.js:9", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_social_media.js:9"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-609c98779fd5ec61", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_images_wall.js:82", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_images_wall.js:82"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d0746654b3488f6e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_countdown.js:36", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_countdown.js:36"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d3eaf4e219feb714", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/client_action_redirect.js:68", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/client_action_redirect.js:68"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-984db2ad69aa6b1c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/website_text_font_size.js:137", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/website_text_font_size.js:137"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-866679193ecaeab9", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/website_form_editor.js:273", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/website_form_editor.js:273"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3494ef5ed5869676", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tour_utils/lifecycle_patch_wysiwyg.js:34", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tour_utils/lifecycle_patch_wysiwyg.js:34"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-961957e70894dd80", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/translation.test.js:873", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/translation.test.js:873"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a791f683e0c1547a", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/builder_overlay.test.js:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/builder_overlay.test.js:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8ae3b10180e806fb", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_helpers.js:121", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_helpers.js:121"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3cabd0dc0d8ea80f", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/options/floating_blocks_option.test.js:10", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/options/floating_blocks_option.test.js:10"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b2724c0f96e2c7e4", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/image_gallery.test.js:84", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/image_gallery.test.js:84"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1d53750337028413", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/background_option.test.js:40", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/background_option.test.js:40"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a3d89428d25a97df", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/popup_option.test.js:84", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/popup_option.test.js:84"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3681be854c277cb5", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/lib/multirange/multirange_custom.js:236", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/lib/multirange/multirange_custom.js:236"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5ced665ec1dc89be", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/utils.js:23", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/utils.js:23"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-73dfc2abdcd856b3", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/text_processing.js:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/text_processing.js:3"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b058b4a8c3734618", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/tours/tour_utils.js:87", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/tours/tour_utils.js:87"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5836b91224fec9df", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/snippets.animation.js:59", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/snippets.animation.js:59"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9f2c6d5a9b4e9587", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/inject_dom.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/inject_dom.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bb1237d035ee7893", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/auto_hide_menu.js:1", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/auto_hide_menu.js:1"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-592c6cdbadacdd3b", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/adapt_content.js:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/adapt_content.js:4"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5df4be76a9092e2d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/text_highlights.js:117", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/text_highlights.js:117"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f35f161f4129c7c8", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/full_screen_height.js:38", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/full_screen_height.js:38"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-faa1a81a97b8d8fe", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/footer_slideout.js:27", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/footer_slideout.js:27"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7bf4c85b90950436", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/cookies/cookies_bar.js:52", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/cookies/cookies_bar.js:52"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-548999c36d80fad2", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/popup/popup.js:232", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/popup/popup.js:232"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-081a689566d23ff0", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/video/media_video.js:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/video/media_video.js:17"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a2cdafaf96c8d289", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/fields/fields.js:28", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/fields/fields.js:28"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-fcbfe18f19ec4d0f", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/resource_editor/resource_editor.js:173", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/resource_editor/resource_editor.js:173"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7280e5a8d51b9132", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/website_loader/website_loader.js:133", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/website_loader/website_loader.js:133"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3774d69c4289521d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/autocomplete_with_pages/url_autocomplete.js:6", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/autocomplete_with_pages/url_autocomplete.js:6"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-cd957741aa604c57", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/views/theme_preview_form.js:63", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/views/theme_preview_form.js:63"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2b419675b2d646d0", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_website_form/form.edit.js:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_website_form/form.edit.js:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-af22358e6f6cc679", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_website_form/form.js:148", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_website_form/form.js:148"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e3bb2e6802983f04", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_announcement_scroll/announcement_scroll.js:36", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_announcement_scroll/announcement_scroll.js:36"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c14500adc1cd1a20", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_image_gallery/gallery_slider.js:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_image_gallery/gallery_slider.js:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ac68a682835398fb", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_image_gallery/gallery_slider_001.js:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_image_gallery/gallery_slider_001.js:5"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-90bd535c8e289e5f", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_tabs/tabs.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_tabs/tabs.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-32bd884495aa7460", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_dynamic_snippet/dynamic_snippet.js:177", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_dynamic_snippet/dynamic_snippet.js:177"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-349b2b8d8f161c7c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/website_builder.js:98", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/website_builder.js:98"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-29fe60e13ad75432", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/translation_components/attributeTranslateDialog.j", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/translation_components/attributeTranslateDialog.js:20"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9a34b369d1ffa3a2", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translate_setup_editor_plugin.js:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translate_setup_editor_plugin.js:4"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-009a60343ed6f430", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/customize_website_plugin.js:342", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/customize_website_plugin.js:342"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-149199a7c4af72bb", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/carousel_option_plugin.js:69", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/carousel_option_plugin.js:69"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-81342b5266da0180", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translation_plugin.js:246", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translation_plugin.js:246"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-094041dbc47a4484", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/searchbar_option_plugin.js:66", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/searchbar_option_plugin.js:66"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9aa8f2d03ef99c6e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/media_list_item_option.js:6", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/media_list_item_option.js:6"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ff35bfe5411aaf01", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/cover_properties_option_plugin.js", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/cover_properties_option_plugin.js:90"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-32bc06be5483dbcf", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/image_gallery_option_plugin.js:66", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/image_gallery_option_plugin.js:66"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d19e3326b1c8b075", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/dynamic_snippet_option_plugin.js:", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/dynamic_snippet_option_plugin.js:108"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b19cbf5f57e8951c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/chart_option_plugin.js:270", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/chart_option_plugin.js:270"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b3f2ac07d6115641", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/countdown_option_plugin.js:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/countdown_option_plugin.js:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8fbcff7ee69d5405", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/social_media_links.js:36", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/social_media_links.js:36"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9d0375017142608e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/blockquote_option_plugin.js:37", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/blockquote_option_plugin.js:37"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e7d65767c2dd34e4", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/animate_option_plugin.js:433", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/animate_option_plugin.js:433"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2071722915d170d2", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/dynamic_snippet_hook.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/dynamic_snippet_hook.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a5e9e697dc31aa75", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/timeline_list_option_plugin.js:27", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/timeline_list_option_plugin.js:27"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-740ce879b8d0510e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/social_media_option_plugin.js:173", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/social_media_option_plugin.js:173"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-383691ff7b14e19d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/animate_option.js:78", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/animate_option.js:78"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-710fb1b3999b08ff", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/map_option_plugin.js:23", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/map_option_plugin.js:23"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7542986f1e56dd67", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/button_option_plugin.js:153", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/button_option_plugin.js:153"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-812cfd809b98e2ac", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/table_of_content_option_plugin_tr", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/table_of_content_option_plugin_translate.js:3"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c2f350bf3297abab", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/facebook_option_plugin.js:49", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/facebook_option_plugin.js:49"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-80ab3920a3d9b800", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/instagram_option_plugin.js:48", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/instagram_option_plugin.js:48"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-949867cbf8d28b59", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/google_maps_option/google_maps_op", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/google_maps_option/google_maps_option_plugin.js:64"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-94d9d9747a39761d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/utils.js:160", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/utils.js:160"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-95cfb020121000a7", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/form_field_option.js:120", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/form_field_option.js:120"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8b73be7cf7e34a7e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/form_option_plugin.js:236", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/form_option_plugin.js:236"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5b47a3670ccfd1c3", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/highlight/highlight_plugin.js:250", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/highlight/highlight_plugin.js:250"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2bfbd707ce34b660", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/theme/theme_colors_option.js:59", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/theme/theme_colors_option.js:59"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a249e2209b30cb8e", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/theme/theme_tab_plugin.js:231", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/theme/theme_tab_plugin.js:231"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-454be2d0f62d3b7d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translation_tab/customize_translation_tab", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translation_tab/customize_translation_tab_plugin.js:110"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e39880e9ebaee4d4", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/font/font_plugin.js:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/font/font_plugin.js:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-271209da6cfa0db3", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/layout_option/layout_option_plugin.js:46", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/layout_option/layout_option_plugin.js:46"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9b1266ce34f700b9", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/services/website_service.js:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/services/website_service.js:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-04461859779436ad", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/services/website_custom_menus.js:48", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/services/website_custom_menus.js:48"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d9870a5ebd3e2357", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/core/website_page_service.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/core/website_page_service.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b997981c3a63ace7", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/core/website_edit_service.js:192", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/core/website_edit_service.js:192"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1ea6b43b21bc8429", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/website/static/src/core/website_edit_service.js:30", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website/static/src/core/website_edit_service.js:30"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-235354cab956c3d5", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/website_systray_item.js:49", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/website_systray_item.js:49"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9e5f98bf026335e8", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/edit_website_systray_item.", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/edit_website_systray_item.js:27"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d191c19e1066932f", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/website_builder_action.js:", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/website_builder_action.js:244"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5453eb57b2434632", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/publish_website_systray_it", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/publish_website_systray_item.js:36"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8134eb418bcac9ce", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/configurator/configurator.js:913", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/configurator/configurator.js:913"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0c80e47cccddd5f8", "name": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/open_custom_menu/open_custom_menu.js:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/open_custom_menu/open_custom_menu.js:11"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-da01febfed027423", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_mail_group/static/src/snippets/s_group/mail_group.edit.js:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_mail_group/static/src/snippets/s_group/mail_group.edit.js:5"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-dad8ad9cdd75d62a", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_links/static/src/components/website_links_tags_wrapper.js:64", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_links/static/src/components/website_links_tags_wrapper.js:64"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-fbc50b3f1615d75a", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_event_track/static/src/js/service_worker.js:182", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_event_track/static/src/js/service_worker.js:182"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-efb534fa53143c0a", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/website_event_track/static/src/js/service_worker.js:183", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website_event_track/static/src/js/service_worker.js:183"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-f0e36bef6da5d0aa", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_event_track/static/src/interactions/website_event_track_proposal_for", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_event_track/static/src/interactions/website_event_track_proposal_form.js:148"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f02130c3d27696c7", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/website_event_track/static/src/interactions/website_event_pw", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website_event_track/static/src/interactions/website_event_pwa.js:111"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-ac69e8bc902d3edf", "name": "TODO/FIXME marker in shipping code \u2014 addons/survey/static/tests/components/update_flag_field.test.js:112", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/survey/static/tests/components/update_flag_field.test.js:112"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-de73b9692757046f", "name": "TODO/FIXME marker in shipping code \u2014 addons/survey/static/src/js/libs/chartjs-plugin-datalabels.js:951", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/survey/static/src/js/libs/chartjs-plugin-datalabels.js:951"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ca3273629007ac07", "name": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/go_to_oldest_unread_thread.test.js:335", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/go_to_oldest_unread_thread.test.js:335"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c9608d56b1b64856", "name": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/mock_server/mock_models/im_livechat_channel.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/mock_server/mock_models/im_livechat_channel.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-60c51cbc4275c95b", "name": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/mock_server/mock_models/discuss_channel.js:9", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/mock_server/mock_models/discuss_channel.js:9"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-de54ea6e82e63639", "name": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/src/embed/common/mail_popout_service_patch.js:16", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/src/embed/common/mail_popout_service_patch.js:16"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ef6c20a4a4d4ffd2", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_forum/static/src/interactions/website_forum.js:115", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_forum/static/src/interactions/website_forum.js:115"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3dc4e8a6673f0f1d", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_mass_mailing/static/src/website_builder/mailing_list_subscribe_optio", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_mass_mailing/static/src/website_builder/mailing_list_subscribe_option_plugin.js:47"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8edf3a98980ae4f5", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_mass_mailing/static/src/interactions/subscribe.js:87", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_mass_mailing/static/src/interactions/subscribe.js:87"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d82777fa6c88c85b", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/website_builder/blog_post_page_title.js:8", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/website_builder/blog_post_page_title.js:8"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-55024cc37521d05a", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/website_builder/dynamic_snippet_blog_posts_option_pl", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/website_builder/dynamic_snippet_blog_posts_option_plugin.js:48"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-29a6b7a4ee92f9fb", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/interactions/post_link.js:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/interactions/post_link.js:4"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f068e87e7a1d516c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_slides/static/src/js/slides_course_join.js:31", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_slides/static/src/js/slides_course_join.js:31"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-55993fe433bd7d85", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_google_map/static/src/js/website_google_map.js:48", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_google_map/static/src/js/website_google_map.js:48"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-811085ab97218a7e", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/tests/generic_helpers/order_widget_util.js:88", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/tests/generic_helpers/order_widget_util.js:88"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7169e036c23b9708", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/models/pos_order_line.js:471", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/models/pos_order_line.js:471"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d28c6fef070ab229", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/models/pos_order.js:689", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/models/pos_order.js:689"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b64afbcbdcba69a4", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/receipt_header/r", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.js:18"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a971b921bc7593f3", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/screens/ticket_screen/invoice_button/invoice_bu", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/screens/ticket_screen/invoice_button/invoice_button.js:99"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3a15f85486dde643", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/components/navbar/navbar.js:28", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/components/navbar/navbar.js:28"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-31dbc4bb8be11ef3", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/components/popups/closing_popup/closing_popup.j", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/components/popups/closing_popup/closing_popup.js:231"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6b4f6b1eb57ce674", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/pos_store.js:169", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/pos_store.js:169"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ffa80ad1a2685499", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/barcode_reader_service.js:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/barcode_reader_service.js:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6e8fa09e68352e73", "name": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/hardware_proxy_service.js:86", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/hardware_proxy_service.js:86"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-131ca427e7cf380c", "name": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/replace_media.js:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/replace_media.js:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bbe8de774fcaf539", "name": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/website_page_properties.js:226", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/website_page_properties.js:226"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c143aa37d217b46b", "name": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/snippet_background_video.js:20", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/snippet_background_video.js:20"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5788b50c2f819e3e", "name": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/translation.js:247", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/translation.js:247"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-aedb232171805efa", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/collaboration.test.js:244", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/collaboration.test.js:244"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-019d7b03177f1fc7", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/history.test.js:454", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/history.test.js:454"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-cc517ef25a691e06", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/color_selector.test.js:631", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/color_selector.test.js:631"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-68f4d94e947ade1b", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/syntax_highlighting.test.js:629", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/syntax_highlighting.test.js:629"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0cb1ad9e4b976007", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/selection_placeholder.test.js:21", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/selection_placeholder.test.js:21"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a8318187aa38f9dd", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/odoo_collaboration.test.js:1028", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/odoo_collaboration.test.js:1028"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f08f727f059d9f27", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/caption.test.js:333", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/caption.test.js:333"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c34524b1a8d19184", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/paste.test.js:258", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/paste.test.js:258"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3e916858a1472116", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/insert/line_break.test.js:13", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/insert/line_break.test.js:13"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2378ce07cb8b6006", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/insert/paragraph_break.test.js:25", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/insert/paragraph_break.test.js:25"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8067e105804ab305", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/list/delete_backward.test.js:303", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/list/delete_backward.test.js:303"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1a292e2f3e49eee1", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/list/paragraph_break.test.js:664", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/list/paragraph_break.test.js:664"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-51d94d11c6beaf7c", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/utils/selection.test.js:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/utils/selection.test.js:14"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5ae636ae259a857f", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/utils/dom_info.test.js:113", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/utils/dom_info.test.js:113"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6a021427f464e718", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/collaboration.js:98", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/collaboration.js:98"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6b78d0e0e83f127a", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/user_actions.js:172", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/user_actions.js:172"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-903a353d6ce6f4a8", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/editor.js:118", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/editor.js:118"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-67d15ba6a4182dd1", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/backward.test.js:32", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/backward.test.js:32"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-fc1393e61d918d08", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/forward.test.js:27", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/forward.test.js:27"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-49d271ce5141f221", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/delete_range.test.js:274", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/delete_range.test.js:274"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-75eff83543bfe46b", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/link/popover.test.js:1610", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/link/popover.test.js:1610"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-17452218523e0937", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/format/bold.test.js:314", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/format/bold.test.js:314"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a4a554f6214e4330", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/format/remove_format.test.js:658", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/format/remove_format.test.js:658"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6351a3a40c7bdacf", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/lib/webgl-image-filter/webgl-image-filter", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/lib/webgl-image-filter/webgl-image-filter.js:23"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-ad89fe727f6b3cf3", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/lib/cropperjs/cropper.js:1014", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/lib/cropperjs/cropper.js:1014"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2b65a60a45a65b76", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/local_overlay_container.js:22", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/local_overlay_container.js:22"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1975b29578a3f1b3", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/fields/x2many_field/x2many_media_viewer.js:56", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/fields/x2many_field/x2many_media_viewer.js:56"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ec915c1dd2edad78", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/fields/x2many_field/x2many_image_field.js:45", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/fields/x2many_field/x2many_image_field.js:45"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d6f65bfdd13c5e65", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/dom_state.js:170", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/dom_state.js:170"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3742d20b50e34998", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/src/utils/dom_state.js:53", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/src/utils/dom_state.js:53"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-9a8350f609addeb0", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/dom_info.js:439", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/dom_info.js:439"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e3cb75bd703f1dcd", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/formatting.js:284", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/formatting.js:284"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-149a4de49e1b7b4a", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/image.js:70", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/image.js:70"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f91e37265f489937", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/drag_and_drop.js:71", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/drag_and_drop.js:71"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6979c7b633452634", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/selection.js:101", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/selection.js:101"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ff5eb0384969e98c", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/components/html_viewer/html_viewer.js:88", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/components/html_viewer/html_viewer.js:88"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d0e651c6c4de6b68", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/history_plugin.js:322", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/history_plugin.js:322"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-09a57204aa369ba3", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/split_plugin.js:163", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/split_plugin.js:163"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-01caf9fa68695eca", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/selection_plugin.js:1048", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/selection_plugin.js:1048"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-58a14c43b4327883", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/clipboard_plugin.js:382", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/clipboard_plugin.js:382"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c38bff864a737186", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/delete_plugin.js:664", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/delete_plugin.js:664"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f781239ccbb523cb", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/protected_node_plugin.js:39", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/protected_node_plugin.js:39"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c6426fe9665043cd", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/format_plugin.js:63", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/format_plugin.js:63"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1ec615b58fc5504b", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/movenode_plugin.js:315", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/movenode_plugin.js:315"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-de00de2da7ace56b", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/position_plugin.js:17", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/position_plugin.js:17"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e2ba02df49b4c839", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/table/table_resize_plugin.js:126", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/table/table_resize_plugin.js:126"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9cf757a404387e08", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_crop_plugin.js:51", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_crop_plugin.js:51"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-64e45944749fc0a1", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_post_process_plugin.js:311", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_post_process_plugin.js:311"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-efaf675322ab6a81", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_crop.js:124", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_crop.js:124"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-fc3b45bcff6d37d7", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/media_dialog/media_dialog.js:283", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/media_dialog/media_dialog.js:283"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c24192cec4bc1825", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/media_dialog/file_selector.js:266", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/media_dialog/file_selector.js:266"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e38ce5da5a12d169", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_plugin.js:1280", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_plugin.js:1280"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d3cc04d901100b4a", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_selection_plugin.js:42", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_selection_plugin.js:42"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9ef7f6df26c957fe", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_popover.js:364", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_popover.js:364"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-340d234d33ee4e90", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_paste_plugin.js:26", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_paste_plugin.js:26"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d940891250443129", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/chatgpt/chatgpt_translate_plugin.js:103", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/chatgpt/chatgpt_translate_plugin.js:103"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c3bcf26091892acd", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/toolbar/toolbar_plugin.js:487", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/toolbar/toolbar_plugin.js:487"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e9a8ae7b297821e4", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/embedded_component_plugin.js:57", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/embedded_component_plugin.js:57"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a1f90b8f9dadda3f", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_selection_plugin.j", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_selection_plugin.js:74"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9fb4520b71e9756d", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_plugin.js:136", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_plugin.js:136"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d23b13ba2ebdd119", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/PeerToPeer.js:662", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/PeerToPeer.js:662"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-df80a646d595f73a", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/src/others/collaboration/PeerToPeer.js:51", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/src/others/collaboration/PeerToPeer.js:51"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-b90d4f4665872c8d", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:112", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:112"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e7560991e2829b58", "name": "TODO/FIXME marker in shipping code \u2014 addons/portal_rating/static/src/interactions/portal_rating_composer.js:72", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/portal_rating/static/src/interactions/portal_rating_composer.js:72"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b15f681cff1c830c", "name": "TODO/FIXME marker in shipping code \u2014 addons/portal_rating/static/src/interactions/portal_composer.js:148", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/portal_rating/static/src/interactions/portal_composer.js:148"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-82cbc46fb2a891a0", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/pos_imin/static/lib/imin-printer/imin-printer.js:709", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/pos_imin/static/lib/imin-printer/imin-printer.js:709"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-517dd0d054cf1267", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/qunit.js:568", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/qunit.js:568"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b45082c17f6d1df0", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/helpers/mock_server.js:241", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/helpers/mock_server.js:241"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-459cb98c81430540", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/views/graph_view_tests.js:6", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/views/graph_view_tests.js:6"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a09fcc6bd6aef4ec", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/template_inheritance.test.js:53", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/template_inheritance.test.js:53"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bf8f7210fea0c480", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/autocomplete.test.js:92", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/autocomplete.test.js:92"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-83a72ffbabd0a1ef", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/position/position_hook.test.js:691", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/position/position_hook.test.js:691"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-cc3e7079dabe2e5b", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/_framework/mock_server/mock_model.js:899", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/_framework/mock_server/mock_model.js:899"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ec96272edfc8a3d8", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/webclient/navbar.test.js:262", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/webclient/navbar.test.js:262"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-36914391148cc797", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/webclient/actions/load_state.test.js:406", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/webclient/actions/load_state.test.js:406"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-766c020cfc09e4b5", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2many_field.test.js:282", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2many_field.test.js:282"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-32459008f0856d49", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2one_field.test.js:252", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2one_field.test.js:252"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0d39efa0375e135a", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2many_tags_field.test.js:643", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2many_tags_field.test.js:643"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0b4e4ca24b3d2c37", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/one2many_field.test.js:1477", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/one2many_field.test.js:1477"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-103b5cb7e3949cf5", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/form/form_view.test.js:10510", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/form/form_view.test.js:10510"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b65af3bcd98b3344", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/list/list_view.test.js:3153", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/list/list_view.test.js:3153"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bd7376d7a68f6fcd", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/kanban/kanban_view.test.js:1318", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/kanban/kanban_view.test.js:1318"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6522fbf8ff32930a", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/widgets/attach_document.test.js:30", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/widgets/attach_document.test.js:30"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-52864b23b8a4ff95", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/calendar/calendar_multi_create.test.js:39", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/calendar/calendar_multi_create.test.js:39"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a5eddc8a95c7292c", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/graph/graph_view.test.js:3093", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/graph/graph_view.test.js:3093"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a59b2ae35e2f0244", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/stacktracejs/stacktrace.js:1575", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/stacktracejs/stacktrace.js:1575"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0267de4afafe3a24", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/jquery/jquery.js:794", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/jquery/jquery.js:794"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7da9b15d3f39b5c4", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/daygrid/index.global.js:222", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/daygrid/index.global.js:222"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e2fa1266795eefa2", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/list/index.global.js:28", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/list/index.global.js:28"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c11bc2ca0298337d", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/interaction/index.global.js:193", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/interaction/index.global.js:193"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bdd2ee9567f53729", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/timegrid/index.global.js:50", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/timegrid/index.global.js:50"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f2e0ca894959f98d", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/luxon3/index.global.js:76", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/luxon3/index.global.js:76"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f98c5681adabad03", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:122", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:122"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a5366b86e0a67258", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:3174", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:3174"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-2ca088d145017882", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:3027", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:3027"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 0.8}}, {"id": "scanner-46e7d5c56b9ee574", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/owl/owl.js:2206", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/owl/owl.js:2206"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-bfb9ca09f706b187", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/owl/owl.js:2763", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/owl/owl.js:2763"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-4e2a8533d90689d0", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/luxon/luxon.js:847", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/luxon/luxon.js:847"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-21f31881fd9adba7", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/ace/ace.js:7204", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/ace/ace.js:7204"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-d3e0f67457c5ffc3", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/prismjs/prism.js:1213", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/prismjs/prism.js:1213"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a9b43f95df535390", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/pdfjs/web/debugger.js:142", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/pdfjs/web/debugger.js:142"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-5e125f2c1af049d5", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/pdfjs/web/viewer.js:7990", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/pdfjs/web/viewer.js:7990"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-f22c21a460aabbcb", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/start.js:57", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/start.js:57"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0c6e0670f43f5fc4", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/search/search_model.js:615", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/search/search_model.js:615"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-72f86dd1f97b5342", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/legacy/js/public/lazyloader.js:78", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/legacy/js/public/lazyloader.js:78"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1bb1ac3f2ca04601", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/legacy/js/public/public_root.js:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/legacy/js/public/public_root.js:24"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b863407dac4c830a", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/user.js:97", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/user.js:97"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3c8e2c8aa6151094", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/network/rpc_cache.js:122", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/network/rpc_cache.js:122"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-952c4f70013f0e87", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/ui/ui_service.js:171", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/ui/ui_service.js:171"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-69a770293f8c5b3f", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/utils/colors.js:253", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/utils/colors.js:253"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ce0d890832134bbc", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/utils/draggable_hook_builder.js:513", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/utils/draggable_hook_builder.js:513"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b8ccd8a1fd4e0562", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/errors/scss_error_dialog.js:45", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/errors/scss_error_dialog.js:45"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-e45aaa54629cdf95", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/color_picker/color_picker.js:47", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/color_picker/color_picker.js:47"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b8241d0e48822da0", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.js:", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.js:444"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9c0a59a8bbdc94a7", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/barcode/barcode_video_scanner.js:131", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/barcode/barcode_video_scanner.js:131"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c7aca8a92be7462f", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/effects/effect_service.js:38", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/effects/effect_service.js:38"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-b46c1c4c2c8d224a", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/browser/router.js:420", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/browser/router.js:420"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3920773a16ac1f06", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/py_js/py_tokenizer.js:111", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/py_js/py_tokenizer.js:111"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-71e54f5e100ccf2b", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/model/sample_server.js:149", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/model/sample_server.js:149"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-4f937e3e9b9c2fe5", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/model/relational_model/utils.js:569", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/model/relational_model/utils.js:569"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a2b82f52fa08fe75", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/model/relational_model/relational_model.js:60", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/model/relational_model/relational_model.js:60"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-00911b8de4bd82a7", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/webclient/actions/action_service.js:833", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/webclient/actions/action_service.js:833"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6ed9453d0ed57bc2", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/webclient/actions/reports/utils.js:35", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/webclient/actions/reports/utils.js:35"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0f67ba19190d8196", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/webclient/clickbot/clickbot.js:121", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/webclient/clickbot/clickbot.js:121"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-570039ba9089241a", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/view.js:447", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/view.js:447"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b743ca116f16720d", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/relational_utils.js:848", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/relational_utils.js:848"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8dbc5a65a13c9f96", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:58", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:58"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ab4b0f66bd5e485c", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/x2many/x2many_field.js:200", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/x2many/x2many_field.js:200"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-05cfa52685e6727b", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/float_toggle/float_toggle_field.js:23", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/float_toggle/float_toggle_field.js:23"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7f16bd7138bf4d09", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_renderer.js:151", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_renderer.js:151"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-33cc47f1d74504f8", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_controller.js:653", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_controller.js:653"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ef9a3459353c04b9", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_compiler.js:365", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_compiler.js:365"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-95e178a8942e24dc", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/list/list_renderer.js:289", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/list/list_renderer.js:289"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-98ebb171a6a9cf2f", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/list/list_arch_parser.js:137", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/list/list_arch_parser.js:137"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4043b2b9e9ed21e6", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/kanban/kanban_controller.js:459", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/kanban/kanban_controller.js:459"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-397f74d989b3acc6", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/kanban/kanban_record_quick_create.js:186", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/kanban/kanban_record_quick_create.js:186"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8e1ad28b016cfeca", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/pivot/pivot_model.js:1051", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/pivot/pivot_model.js:1051"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7bd10027858e5177", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/view_components/multi_selection_buttons.js:105", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/view_components/multi_selection_buttons.js:105"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-98d7748790cd2c97", "name": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/calendar/calendar_model.js:524", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/calendar/calendar_model.js:524"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ef75eadd714e39be", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/helpers.js:226", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/helpers.js:226"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c806ab69b5c408de", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/field_change_replication_plugin.test.js:117", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/field_change_replication_plugin.test.js:117"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7cfac0b6078b66d7", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/composite_action.test.js:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/composite_action.test.js:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c945c5532fc9afba", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/block_tab/snippet_content.test.js:177", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/block_tab/snippet_content.test.js:177"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c37245043b36bdfe", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/builder.js:99", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/builder.js:99"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-37f74b19a99b17fe", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/utils/utils_css.js:119", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/utils/utils_css.js:119"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-e625ac379d833b7b", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/snippets/snippet_service.js:316", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/snippets/snippet_service.js:316"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-64837e499a3be44c", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/utils.js:404", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/utils.js:404"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3e8d115551f81a12", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/dropzone_selector_plugin.js:16", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/dropzone_selector_plugin.js:16"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a71802d8c9b7e4fd", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/compatibility_inline_border_removal_plugin.js:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/compatibility_inline_border_removal_plugin.js:37"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-478e7e6f01caed6f", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/disable_snippets_plugin.js:26", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/disable_snippets_plugin.js:26"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d86c606dafe3aac1", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/operation.js:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/operation.js:3"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c6fe08baedb664eb", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/composite_action_plugin.js:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/composite_action_plugin.js:14"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ebad4f23b9eb9474", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/core_builder_action_plugin.js:216", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/core_builder_action_plugin.js:216"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9aaae0b1b792a618", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/core_setup_editor_plugin.js:4", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/core_setup_editor_plugin.js:4"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5ff8a0f5515b72c1", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_options_plugin.js:164", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_options_plugin.js:164"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b33487a7e0ae9176", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/clone_plugin.js:22", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/clone_plugin.js:22"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-b3861b805fe0b660", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/anchor/anchor_plugin.js:62", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/anchor/anchor_plugin.js:62"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6f0cf29928ae1ed1", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/overlay_buttons/overlay_buttons_plugin.js:40", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/overlay_buttons/overlay_buttons_plugin.js:40"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6c693f419bf113bc", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_overlay/builder_overlay.js:10", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_overlay/builder_overlay.js:10"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0cee5d0cc638b471", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_overlay/builder_overlay_plugin.js:35", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_overlay/builder_overlay_plugin.js:35"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3248c3252051828d", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/builder_colorpicker.js:20", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/builder_colorpicker.js:20"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-29f449548a32a75f", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/builder_select_item.js:32", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/builder_select_item.js:32"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0586cb608fd6948a", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/model_many2many.js:61", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/model_many2many.js:61"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7802804510efc13e", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/sidebar/block_tab.js:215", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/sidebar/block_tab.js:215"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-12bdcf8e0adc823a", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/border_configurator_option.js:15", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/border_configurator_option.js:15"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-22d5f29fe81998fd", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/image/image_shape_option_plugin.js:109", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/image/image_shape_option_plugin.js:109"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d0f76728153572b8", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/image/image_shapes_definition.js:10", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/image/image_shapes_definition.js:10"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-90875cff1e9463b0", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/background_option/background_shape_option_pl", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/background_option/background_shape_option_plugin.js:63"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a9cb31eeed06421e", "name": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/background_option/background_image_option_pl", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/background_option/background_image_option_plugin.js:137"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-a8e1379f55d85924", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_discount/static/src/app/screens/product_screen/control_buttons/control_b", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_discount/static/src/app/screens/product_screen/control_buttons/control_buttons.js:20"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0f415b3ed98bd9b5", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_autocomplete/static/tests/autocomplete_tour.js:28", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_autocomplete/static/tests/autocomplete_tour.js:28"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1cfacdb8c0346183", "name": "TODO/FIXME marker in shipping code \u2014 addons/project_todo/static/src/web/activity/activity_menu_patch.js:16", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/project_todo/static/src/web/activity/activity_menu_patch.js:16"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-de6e3c4af85c6219", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_loyalty/static/tests/tours/pos_loyalty_tour.js:129", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_loyalty/static/tests/tours/pos_loyalty_tour.js:129"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-857348e14e5b85de", "name": "TODO/FIXME marker in shipping code \u2014 addons/pos_loyalty/static/src/app/services/pos_store.js:317", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_loyalty/static/src/app/services/pos_store.js:317"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9e038f4bea2105ac", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_hr_recruitment/static/tests/tours/website_hr_recruitment.js:40", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_hr_recruitment/static/tests/tours/website_hr_recruitment.js:40"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9ea0ae068754c6e9", "name": "TODO/FIXME marker in shipping code \u2014 addons/sale_pdf_quote_builder/static/tests/tours/custom_content_kanban_like_tests.j", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale_pdf_quote_builder/static/tests/tours/custom_content_kanban_like_tests.js:20"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-514e4fb8f3a3af64", "name": "TODO/FIXME marker in shipping code \u2014 addons/mass_mailing/static/src/iframe/mass_mailing_iframe.js:269", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mass_mailing/static/src/iframe/mass_mailing_iframe.js:269"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-7aad6d59fb587c6c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_mondialrelay/static/src/interactions/checkout.js:138", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_mondialrelay/static/src/interactions/checkout.js:138"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-fe714447c8769e1a", "name": "TODO/FIXME marker in shipping code \u2014 addons/account/static/src/helpers/account_tax.js:1451", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/account/static/src/helpers/account_tax.js:1451"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-8a4e99091b267f7f", "name": "TODO/FIXME marker in shipping code \u2014 addons/bus/static/src/services/worker_service.js:58", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/bus/static/src/services/worker_service.js:58"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-d11f077c9a8365a7", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/helpers/data.js:505", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/helpers/data.js:505"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4f75e81f6f1600b6", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/links/open_links.test.js:45", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/links/open_links.test.js:45"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5c19e97c9ae5d61e", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/global_filters/global_filters_core_view.test.js:306", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/global_filters/global_filters_core_view.test.js:306"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-f6d85cfa80ef7917", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js:201", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js:201"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-44386133e6813e78", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/hooks.js:102", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/hooks.js:102"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-5df5925fdf1e364a", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/@types/commands.d.ts:18", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/@types/commands.d.ts:18"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1b4ed43baf470aa7", "name": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/pivot/plugins/pivot_core_view_global_filter_plugin.js", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/pivot/plugins/pivot_core_view_global_filter_plugin.js:172"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-9e6f272e645409db", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_slides/static/tests/tours/slides_course_publisher.js:12", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_slides/static/tests/tours/slides_course_publisher.js:12"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-48951e8e120c8f14", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/tests/tours/website_sale_add_to_cart_snippet_tour.js:61", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/tests/tours/website_sale_add_to_cart_snippet_tour.js:61"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-3c605ee380479d26", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/product_page_option_plugin.js:32", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/product_page_option_plugin.js:32"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-2dbd1f102ff05a8b", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/shared.js:3", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/shared.js:3"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-0fcba365d5da004c", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/dynamic_snippet_products_option_plug", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/dynamic_snippet_products_option_plugin.js:61"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c9675a8229ed1791", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/js/cart_service.js:464", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/js/cart_service.js:464"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-ed4162843a866ff7", "name": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/interactions/website_sale.js:126", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/interactions/website_sale.js:126"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-4d862a34b31cf784", "name": "TODO/FIXME marker in shipping code \u2014 addons/analytic/static/src/components/analytic_distribution/analytic_distribution.j", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js:543"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-1a7333cad4c582ce", "name": "TODO/FIXME marker in shipping code \u2014 addons/purchase_product_matrix/static/src/js/purchase_product_field.js:57", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/purchase_product_matrix/static/src/js/purchase_product_field.js:57"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-6e9d480a3a567f3c", "name": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/tests/activity_widget.test.js:49", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/tests/activity_widget.test.js:49"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-37e7a16a5c9ad07d", "name": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/tests/mock_server/mock_models/res_users.js:38", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/tests/mock_server/mock_models/res_users.js:38"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c7ae2d60f3f63b30", "name": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/src/views/calendar_form/calendar_quick_create.js:71", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/src/views/calendar_form/calendar_quick_create.js:71"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-c46fa15c1bdd35aa", "name": "Icon-only button without accessible name \u2014 addons/web_tour/static/tests/tour_interactive.test.js:66", "shortDescription": {"text": "Icon-only button without accessible name \u2014 addons/web_tour/static/tests/tour_interactive.test.js:66"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-6a399ebd21e75e15", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_service.js:210", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_service.js:210"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-8d18219cf25c3712", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_automatic/tour_automatic.js:41", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_automatic/tour_automatic.js:41"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-1f4e895980f27abd", "name": "TODO/FIXME marker in shipping code \u2014 addons/web_tour/static/src/js/tour_automatic/tour_helpers_hoot.js:55", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web_tour/static/src/js/tour_automatic/tour_helpers_hoot.js:55"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 0.7}}, {"id": "scanner-934517a8e406fad2", "name": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_interactive/tour_interactive.js:", "shortDescription": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_interactive/tour_interactive.js:104"}, "fullDescription": {"text": "Remove debug output or route intentional diagnostics through the project's structured logger. Browser console output can expose state and create noise; server and CLI output are outside this rule's scope.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 0.85}}, {"id": "scanner-10f5d905b00946e3", "name": "Analyzer timeout: security.semgrep", "shortDescription": {"text": "Analyzer timeout: security.semgrep"}, "fullDescription": {"text": "analyzer exceeded 60.0s wall-clock (thread mode \u2014 daemon abandoned). Bump REPOBILITY_ANALYZER_TIMEOUT_S if expected."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e61530292635289", "name": "CVE-2024-22195: Jinja2 3.0.3 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-22195: Jinja2 3.0.3 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: HTML attribute injection when passing user input as keys to xmlattr filter\n\nJinja is an extensible templating engine. Special placeholders in the template allow writing code similar to Python syntax. It is possible to inject arbitrary HTML attributes into the rendered HTML template, potentially leading to Cross-Site Scripting (XSS). The Jinja `xmlattr` filter can be abused to inject arbitrary HTML attribute keys and values, bypassing the auto escaping mechanism and potentially leading to XSS. It may also be possible to bypass attribute validation checks if they are blac\n\nPackage: Jinja2\nInstalled: 3.0.3\nFixed in: 3.1.3\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98a4c606d8f90eba", "name": "CVE-2024-34064: Jinja2 3.0.3 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-34064: Jinja2 3.0.3 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: accepts keys containing non-attribute characters\n\nJinja is an extensible templating engine. The `xmlattr` filter in affected versions of Jinja accepts keys containing non-attribute characters. XML/HTML attributes cannot contain spaces, `/`, `>`, or `=`, as each would then be interpreted as starting a separate attribute. If an application accepts keys (as opposed to only values) as user input, and renders these in pages that other users see as well, an attacker could use this to inject other attributes and perform XSS. The fix for CVE-2024-22195\n\nPackage: Jinja2\nInstalled: 3.0.3\nFixed in: 3.1.4\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35ec6c6367e118e9", "name": "CVE-2024-56201: Jinja2 3.0.3 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-56201: Jinja2 3.0.3 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: Jinja has a sandbox breakout through malicious filenames\n\nJinja is an extensible templating engine. In versions on the 3.x branch prior to 3.1.5, a bug in the Jinja compiler allows an attacker that controls both the content and filename of a template to execute arbitrary Python code, regardless of if Jinja's sandbox is used. To exploit the vulnerability, an attacker needs to control both the filename and the contents of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications \n\nPackage: Jinja2\nInstalled: 3.0.3\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9454d287ded9853b", "name": "CVE-2024-56326: Jinja2 3.0.3 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-56326: Jinja2 3.0.3 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: Jinja has a sandbox breakout through indirect reference to format method\n\nJinja is an extensible templating engine. Prior to 3.1.5, An oversight in how the Jinja sandboxed environment detects calls to str.format allows an attacker that controls the content of a template to execute arbitrary Python code. To exploit the vulnerability, an attacker needs to control the content of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates. Jinja's sandbox does catch\n\nPackage: Jinja2\nInstalled: 3.0.3\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85d9694d3af66b83", "name": "CVE-2025-27516: Jinja2 3.0.3 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-27516: Jinja2 3.0.3 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: Jinja sandbox breakout through attr filter selecting format method\n\nJinja is an extensible templating engine. Prior to 3.1.6, an oversight in how the Jinja sandboxed environment interacts with the |attr filter allows an attacker that controls the content of a template to execute arbitrary Python code. To exploit the vulnerability, an attacker needs to control the content of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates. Jinja's sandbox does c\n\nPackage: Jinja2\nInstalled: 3.0.3\nFixed in: 3.1.6\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-86c3ee3d5eebf6d9", "name": "CVE-2024-22195: Jinja2 3.1.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-22195: Jinja2 3.1.2 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: HTML attribute injection when passing user input as keys to xmlattr filter\n\nJinja is an extensible templating engine. Special placeholders in the template allow writing code similar to Python syntax. It is possible to inject arbitrary HTML attributes into the rendered HTML template, potentially leading to Cross-Site Scripting (XSS). The Jinja `xmlattr` filter can be abused to inject arbitrary HTML attribute keys and values, bypassing the auto escaping mechanism and potentially leading to XSS. It may also be possible to bypass attribute validation checks if they are blac\n\nPackage: Jinja2\nInstalled: 3.1.2\nFixed in: 3.1.3\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-465e87bdd164bc8e", "name": "CVE-2024-34064: Jinja2 3.1.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-34064: Jinja2 3.1.2 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: accepts keys containing non-attribute characters\n\nJinja is an extensible templating engine. The `xmlattr` filter in affected versions of Jinja accepts keys containing non-attribute characters. XML/HTML attributes cannot contain spaces, `/`, `>`, or `=`, as each would then be interpreted as starting a separate attribute. If an application accepts keys (as opposed to only values) as user input, and renders these in pages that other users see as well, an attacker could use this to inject other attributes and perform XSS. The fix for CVE-2024-22195\n\nPackage: Jinja2\nInstalled: 3.1.2\nFixed in: 3.1.4\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4825221e1715593", "name": "CVE-2024-56201: Jinja2 3.1.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-56201: Jinja2 3.1.2 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: Jinja has a sandbox breakout through malicious filenames\n\nJinja is an extensible templating engine. In versions on the 3.x branch prior to 3.1.5, a bug in the Jinja compiler allows an attacker that controls both the content and filename of a template to execute arbitrary Python code, regardless of if Jinja's sandbox is used. To exploit the vulnerability, an attacker needs to control both the filename and the contents of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications \n\nPackage: Jinja2\nInstalled: 3.1.2\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7520fc8a3c7aab8", "name": "CVE-2024-56326: Jinja2 3.1.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-56326: Jinja2 3.1.2 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: Jinja has a sandbox breakout through indirect reference to format method\n\nJinja is an extensible templating engine. Prior to 3.1.5, An oversight in how the Jinja sandboxed environment detects calls to str.format allows an attacker that controls the content of a template to execute arbitrary Python code. To exploit the vulnerability, an attacker needs to control the content of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates. Jinja's sandbox does catch\n\nPackage: Jinja2\nInstalled: 3.1.2\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d69267e235abad29", "name": "CVE-2025-27516: Jinja2 3.1.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-27516: Jinja2 3.1.2 \u2014 requirements.txt"}, "fullDescription": {"text": "jinja2: Jinja sandbox breakout through attr filter selecting format method\n\nJinja is an extensible templating engine. Prior to 3.1.6, an oversight in how the Jinja sandboxed environment interacts with the |attr filter allows an attacker that controls the content of a template to execute arbitrary Python code. To exploit the vulnerability, an attacker needs to control the content of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates. Jinja's sandbox does c\n\nPackage: Jinja2\nInstalled: 3.1.2\nFixed in: 3.1.6\nSeverity: MEDIUM\nFix: Upgrade Jinja2 to 3.1.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e562ca1204754cc", "name": "CVE-2024-28219: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-28219: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: buffer overflow in _imagingcms.c\n\nIn _imagingcms.c in Pillow before 10.3.0, a buffer overflow exists because strcpy is used instead of strncpy.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 10.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 10.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-762242333750d5ac", "name": "CVE-2026-54058: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54058: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Memory disclosure or denial of service via crafted McIdas AREA image\n\nPillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0614db93cee916fd", "name": "CVE-2026-54059: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54059: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted PCF font data\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/PcfFontFile.py _load_bitmaps() read glyph dimensions from the PCF METRICS section and passed them directly to Image.frombytes() without calling Image._decompression_bomb_check(), allowing crafted PCF font data to cause excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1a494d6cb04ed4c1", "name": "CVE-2026-54060: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54060: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via excessive memory allocation when processing font files\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(\"1\", (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14d34a6861359977", "name": "CVE-2026-55379: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55379: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted BDF font file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/BdfFontFile.py bdf_char() read the BBX width and height field from a BDF font file and passed attacker-controlled dimensions to Image.new() without calling Image._decompression_bomb_check(), bypassing Pillow's documented decompression bomb protection and allowing excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36ed1e670f0748dd", "name": "CVE-2026-55380: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55380: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted GD 2.x image file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/GdImageFile.py GdImageFile._open() read image dimensions from the GD 2.x header and stored them in self._size without calling Image._decompression_bomb_check(), allowing a crafted .gd file to trigger excessive C-heap allocation when loaded. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5825d4c8714712f0", "name": "CVE-2026-59197: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59197: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Native heap out-of-bounds write\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-694910547cabe41c", "name": "CVE-2026-59199: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59199: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via out-of-bounds write in image processing\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa6760712065021f", "name": "CVE-2026-59200: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59200: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of service via crafted PDF stream\n\nPillow is a Python imaging library. From 5.1.0 until 12.3.0, PdfParser.PdfStream.decode() in PIL/PdfParser.py calls zlib.decompress() with bufsize set to the PDF stream Length field without bounding the decompressed output size, allowing a crafted FlateDecode PDF stream to exhaust memory from a small file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c50416f66b198ff", "name": "CVE-2026-59204: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59204: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via crafted JPEG2000 image\n\nPillow is a Python imaging library. From 8.2.0 through 12.2.0, src/libImaging/Jpeg2KDecode.c accumulates total_component_width across every tile in a JPEG2000 image instead of recomputing it per tile, allowing a crafted tiled JPEG2000 file to force substantially higher transient memory usage and trigger out-of-memory failures during decoding. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d227134ed6b74803", "name": "CVE-2026-59205: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59205: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Controlled native heap corruption in ImageCms.ImageCmsTransform.apply API\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b5d7d09cb306031", "name": "CVE-2026-42308: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42308: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python: Pillow: Denial of Service via integer overflow in font processing\n\nPillow 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.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-12a67f5e64a61193", "name": "CVE-2026-42310: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42310: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via malicious PDF processing\n\nPillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-725d75a4000ea4cc", "name": "CVE-2026-55798: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55798: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Arbitrary command injection via shell metacharacters in file paths\n\nPillow is a Python imaging library. Prior to 12.3.0, WindowsViewer.get_command() constructed a cmd.exe shell command by directly embedding a file path into an f-string without escaping and passed the result to subprocess.Popen(..., shell=True), allowing shell metacharacters in the file path to inject arbitrary cmd.exe commands. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b5435dd96faf479", "name": "CVE-2026-59198: Pillow 10.2.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59198: Pillow 10.2.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Information disclosure via TGA RLE encoder out-of-bounds read\n\nPillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 10.2.0\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-67a18e29d580281a", "name": "CVE-2026-25990: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-25990: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pillow: Pillow: Out-of-bounds Write via Specially Crafted PSD Image\n\nPillow is a Python imaging library. From 10.3.0 to before 12.1.1, an out-of-bounds write may be triggered when loading a specially crafted PSD image. This vulnerability is fixed in 12.1.1.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.1.1\nSeverity: HIGH\nFix: Upgrade Pillow to 12.1.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54fb3144049e10d5", "name": "CVE-2026-40192: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-40192: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via decompression bomb in FITS image processing\n\nPillow is a Python imaging library. Versions 10.3.0 through 12.1.1 did not limit the amount of GZIP-compressed data read when decoding a FITS image, making them vulnerable to decompression bomb attacks. A specially crafted FITS file could cause unbounded memory consumption, leading to denial of service (OOM crash or severe performance degradation). If users are unable to immediately upgrade, they should only open specific image formats, excluding FITS, as a workaround.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.2.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2005227ff7f6cc13", "name": "CVE-2026-42311: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42311: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python-pillow: Pillow: Arbitrary code execution via malicious PSD file processing\n\nPillow is a Python imaging library. From version 10.3.0 to before version 12.2.0, processing a malicious PSD file could lead to memory corruption, potentially resulting in a crash or arbitrary code execution. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.2.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a53026a2f00265f9", "name": "CVE-2026-54058: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54058: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Memory disclosure or denial of service via crafted McIdas AREA image\n\nPillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f8f41e23e96b706", "name": "CVE-2026-54059: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54059: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted PCF font data\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/PcfFontFile.py _load_bitmaps() read glyph dimensions from the PCF METRICS section and passed them directly to Image.frombytes() without calling Image._decompression_bomb_check(), allowing crafted PCF font data to cause excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8a09f81e5be98db", "name": "CVE-2026-54060: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54060: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via excessive memory allocation when processing font files\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(\"1\", (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad2633b6415d3487", "name": "CVE-2026-55379: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55379: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted BDF font file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/BdfFontFile.py bdf_char() read the BBX width and height field from a BDF font file and passed attacker-controlled dimensions to Image.new() without calling Image._decompression_bomb_check(), bypassing Pillow's documented decompression bomb protection and allowing excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16e741331fdc21fe", "name": "CVE-2026-55380: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55380: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted GD 2.x image file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/GdImageFile.py GdImageFile._open() read image dimensions from the GD 2.x header and stored them in self._size without calling Image._decompression_bomb_check(), allowing a crafted .gd file to trigger excessive C-heap allocation when loaded. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3923e7ea738ccd20", "name": "CVE-2026-59197: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59197: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Native heap out-of-bounds write\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7cecb495c700c867", "name": "CVE-2026-59199: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59199: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via out-of-bounds write in image processing\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30eb14eb214c0fd3", "name": "CVE-2026-59200: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59200: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of service via crafted PDF stream\n\nPillow is a Python imaging library. From 5.1.0 until 12.3.0, PdfParser.PdfStream.decode() in PIL/PdfParser.py calls zlib.decompress() with bufsize set to the PDF stream Length field without bounding the decompressed output size, allowing a crafted FlateDecode PDF stream to exhaust memory from a small file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0aae3527c4da9aa5", "name": "CVE-2026-59204: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59204: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via crafted JPEG2000 image\n\nPillow is a Python imaging library. From 8.2.0 through 12.2.0, src/libImaging/Jpeg2KDecode.c accumulates total_component_width across every tile in a JPEG2000 image instead of recomputing it per tile, allowing a crafted tiled JPEG2000 file to force substantially higher transient memory usage and trigger out-of-memory failures during decoding. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34e2bdca7779ca49", "name": "CVE-2026-59205: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59205: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Controlled native heap corruption in ImageCms.ImageCmsTransform.apply API\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc240d08fd170a92", "name": "CVE-2026-42308: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42308: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python: Pillow: Denial of Service via integer overflow in font processing\n\nPillow 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.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b28c4b27c6f9741b", "name": "CVE-2026-42310: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42310: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via malicious PDF processing\n\nPillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d88981f6ebd7007", "name": "CVE-2026-55798: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55798: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Arbitrary command injection via shell metacharacters in file paths\n\nPillow is a Python imaging library. Prior to 12.3.0, WindowsViewer.get_command() constructed a cmd.exe shell command by directly embedding a file path into an f-string without escaping and passed the result to subprocess.Popen(..., shell=True), allowing shell metacharacters in the file path to inject arbitrary cmd.exe commands. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be859980d6f456a7", "name": "CVE-2026-59198: Pillow 11.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59198: Pillow 11.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Information disclosure via TGA RLE encoder out-of-bounds read\n\nPillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 11.1.0\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaad884f5ec25866", "name": "CVE-2026-40192: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-40192: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via decompression bomb in FITS image processing\n\nPillow is a Python imaging library. Versions 10.3.0 through 12.1.1 did not limit the amount of GZIP-compressed data read when decoding a FITS image, making them vulnerable to decompression bomb attacks. A specially crafted FITS file could cause unbounded memory consumption, leading to denial of service (OOM crash or severe performance degradation). If users are unable to immediately upgrade, they should only open specific image formats, excluding FITS, as a workaround.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.2.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6e850030ef620bc1", "name": "CVE-2026-42311: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42311: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python-pillow: Pillow: Arbitrary code execution via malicious PSD file processing\n\nPillow is a Python imaging library. From version 10.3.0 to before version 12.2.0, processing a malicious PSD file could lead to memory corruption, potentially resulting in a crash or arbitrary code execution. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.2.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f156a5af6fcceb2a", "name": "CVE-2026-54058: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54058: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Memory disclosure or denial of service via crafted McIdas AREA image\n\nPillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8cc3ded588fbc385", "name": "CVE-2026-54059: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54059: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted PCF font data\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/PcfFontFile.py _load_bitmaps() read glyph dimensions from the PCF METRICS section and passed them directly to Image.frombytes() without calling Image._decompression_bomb_check(), allowing crafted PCF font data to cause excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34f42537f62c1ba7", "name": "CVE-2026-54060: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54060: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via excessive memory allocation when processing font files\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(\"1\", (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a985b37e6ccb7da6", "name": "CVE-2026-55379: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55379: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted BDF font file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/BdfFontFile.py bdf_char() read the BBX width and height field from a BDF font file and passed attacker-controlled dimensions to Image.new() without calling Image._decompression_bomb_check(), bypassing Pillow's documented decompression bomb protection and allowing excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ced3ff613213df56", "name": "CVE-2026-55380: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55380: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted GD 2.x image file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/GdImageFile.py GdImageFile._open() read image dimensions from the GD 2.x header and stored them in self._size without calling Image._decompression_bomb_check(), allowing a crafted .gd file to trigger excessive C-heap allocation when loaded. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa2ce7585422a660", "name": "CVE-2026-59197: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59197: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Native heap out-of-bounds write\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-14e317a4ae9a5066", "name": "CVE-2026-59199: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59199: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via out-of-bounds write in image processing\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6ac422450022b14", "name": "CVE-2026-59200: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59200: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of service via crafted PDF stream\n\nPillow is a Python imaging library. From 5.1.0 until 12.3.0, PdfParser.PdfStream.decode() in PIL/PdfParser.py calls zlib.decompress() with bufsize set to the PDF stream Length field without bounding the decompressed output size, allowing a crafted FlateDecode PDF stream to exhaust memory from a small file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fb93da0385c88609", "name": "CVE-2026-59204: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59204: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via crafted JPEG2000 image\n\nPillow is a Python imaging library. From 8.2.0 through 12.2.0, src/libImaging/Jpeg2KDecode.c accumulates total_component_width across every tile in a JPEG2000 image instead of recomputing it per tile, allowing a crafted tiled JPEG2000 file to force substantially higher transient memory usage and trigger out-of-memory failures during decoding. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ee349aaa94f3d94", "name": "CVE-2026-59205: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59205: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Controlled native heap corruption in ImageCms.ImageCmsTransform.apply API\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-168fd62b85037d32", "name": "CVE-2026-42308: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42308: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python: Pillow: Denial of Service via integer overflow in font processing\n\nPillow 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.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-21cd75f33a8d7420", "name": "CVE-2026-42309: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42309: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via specially crafted coordinate input\n\nPillow is a Python imaging library. From version 11.2.1 to before version 12.2.0, passing nested lists as coordinates to APIs that accept coordinates such as ImagePath.Path, ImageDraw.ImageDraw.polygon and ImageDraw.ImageDraw.line could cause a heap buffer overflow, as nested lists were recursively unpacked beyond the allocated buffer. Coordinate lists are now validated to contain exactly two numeric coordinates. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de7c072a74788514", "name": "CVE-2026-42310: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42310: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via malicious PDF processing\n\nPillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bd033b74730cb401", "name": "CVE-2026-55798: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55798: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Arbitrary command injection via shell metacharacters in file paths\n\nPillow is a Python imaging library. Prior to 12.3.0, WindowsViewer.get_command() constructed a cmd.exe shell command by directly embedding a file path into an f-string without escaping and passed the result to subprocess.Popen(..., shell=True), allowing shell metacharacters in the file path to inject arbitrary cmd.exe commands. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb0e934470ddef84", "name": "CVE-2026-59198: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59198: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Information disclosure via TGA RLE encoder out-of-bounds read\n\nPillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0d08a52df470292", "name": "CVE-2026-59203: Pillow 12.1.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59203: Pillow 12.1.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via crafted EPS file\n\nPillow is a Python imaging library. From 12.0.0 through 12.2.0, Pillow's EPS parser in PIL/EpsImagePlugin.py accepts a negative byte count in the %%BeginBinary directive, allowing a crafted EPS file to cause Image.open() to seek backwards to the same directive and parse it repeatedly in an infinite loop. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 12.1.1\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d231f50cada502b9", "name": "CVE-2023-50447: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-50447: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "pillow: Arbitrary Code Execution via the environment parameter\n\nPillow through 10.1.0 allows PIL.ImageMath.eval Arbitrary Code Execution via the environment parameter, a different vulnerability than CVE-2022-22817 (which was about the expression parameter).\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 10.2.0\nSeverity: CRITICAL\nFix: Upgrade Pillow to 10.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-61dbf34abcba7a66", "name": "CVE-2022-45198: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2022-45198: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow before 9.2.0 performs Improper Handling of Highly Compressed GI ...\n\nPillow before 9.2.0 performs Improper Handling of Highly Compressed GIF Data (Data Amplification).\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 9.2.0\nSeverity: HIGH\nFix: Upgrade Pillow to 9.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8245d81f40818bfb", "name": "CVE-2023-44271: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-44271: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: uncontrolled resource consumption when textlength in an ImageDraw instance operates on a long text argument\n\nAn issue was discovered in Pillow before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 10.0.0\nSeverity: HIGH\nFix: Upgrade Pillow to 10.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8b7f31003747537", "name": "CVE-2023-4863: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-4863: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "libwebp: Heap buffer overflow in WebP Codec\n\nHeap buffer overflow in libwebp in Google Chrome prior to 116.0.5845.187 and libwebp 1.3.2 allowed a remote attacker to perform an out of bounds memory write via a crafted HTML page. (Chromium security severity: Critical)\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 10.0.1\nSeverity: HIGH\nFix: Upgrade Pillow to 10.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-04570b4b478bfe33", "name": "CVE-2024-28219: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-28219: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: buffer overflow in _imagingcms.c\n\nIn _imagingcms.c in Pillow before 10.3.0, a buffer overflow exists because strcpy is used instead of strncpy.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 10.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 10.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-514e3666ce89478f", "name": "CVE-2026-54058: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54058: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Memory disclosure or denial of service via crafted McIdas AREA image\n\nPillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-721a0a6e5aa6b3b2", "name": "CVE-2026-54059: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54059: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted PCF font data\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/PcfFontFile.py _load_bitmaps() read glyph dimensions from the PCF METRICS section and passed them directly to Image.frombytes() without calling Image._decompression_bomb_check(), allowing crafted PCF font data to cause excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-db9520fb9ea29ee1", "name": "CVE-2026-54060: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54060: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via excessive memory allocation when processing font files\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(\"1\", (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d32c92ff70cd5d48", "name": "CVE-2026-55379: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55379: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted BDF font file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/BdfFontFile.py bdf_char() read the BBX width and height field from a BDF font file and passed attacker-controlled dimensions to Image.new() without calling Image._decompression_bomb_check(), bypassing Pillow's documented decompression bomb protection and allowing excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b318b8543338f76a", "name": "CVE-2026-55380: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55380: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted GD 2.x image file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/GdImageFile.py GdImageFile._open() read image dimensions from the GD 2.x header and stored them in self._size without calling Image._decompression_bomb_check(), allowing a crafted .gd file to trigger excessive C-heap allocation when loaded. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a0d930607d919a55", "name": "CVE-2026-59197: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59197: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Native heap out-of-bounds write\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6de6613c4f37245e", "name": "CVE-2026-59199: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59199: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via out-of-bounds write in image processing\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47ac111c3991fc4b", "name": "CVE-2026-59200: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59200: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of service via crafted PDF stream\n\nPillow is a Python imaging library. From 5.1.0 until 12.3.0, PdfParser.PdfStream.decode() in PIL/PdfParser.py calls zlib.decompress() with bufsize set to the PDF stream Length field without bounding the decompressed output size, allowing a crafted FlateDecode PDF stream to exhaust memory from a small file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee8efcef965a55f2", "name": "CVE-2026-59204: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59204: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via crafted JPEG2000 image\n\nPillow is a Python imaging library. From 8.2.0 through 12.2.0, src/libImaging/Jpeg2KDecode.c accumulates total_component_width across every tile in a JPEG2000 image instead of recomputing it per tile, allowing a crafted tiled JPEG2000 file to force substantially higher transient memory usage and trigger out-of-memory failures during decoding. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-910525c145c9ee3d", "name": "CVE-2026-59205: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59205: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Controlled native heap corruption in ImageCms.ImageCmsTransform.apply API\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3c40080ca936447", "name": "CVE-2026-42308: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42308: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python: Pillow: Denial of Service via integer overflow in font processing\n\nPillow 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.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77594c11ce308bc2", "name": "CVE-2026-42310: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42310: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via malicious PDF processing\n\nPillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-20251cb223216f44", "name": "CVE-2026-55798: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55798: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Arbitrary command injection via shell metacharacters in file paths\n\nPillow is a Python imaging library. Prior to 12.3.0, WindowsViewer.get_command() constructed a cmd.exe shell command by directly embedding a file path into an f-string without escaping and passed the result to subprocess.Popen(..., shell=True), allowing shell metacharacters in the file path to inject arbitrary cmd.exe commands. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-812d59e4a84495d6", "name": "CVE-2026-59198: Pillow 9.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59198: Pillow 9.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Information disclosure via TGA RLE encoder out-of-bounds read\n\nPillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.0.1\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f72453e3b920977", "name": "CVE-2023-50447: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-50447: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pillow: Arbitrary Code Execution via the environment parameter\n\nPillow through 10.1.0 allows PIL.ImageMath.eval Arbitrary Code Execution via the environment parameter, a different vulnerability than CVE-2022-22817 (which was about the expression parameter).\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 10.2.0\nSeverity: CRITICAL\nFix: Upgrade Pillow to 10.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9a88ecfc108c275b", "name": "CVE-2023-44271: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-44271: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: uncontrolled resource consumption when textlength in an ImageDraw instance operates on a long text argument\n\nAn issue was discovered in Pillow before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 10.0.0\nSeverity: HIGH\nFix: Upgrade Pillow to 10.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d7971ffa067718e9", "name": "CVE-2023-4863: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-4863: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "libwebp: Heap buffer overflow in WebP Codec\n\nHeap buffer overflow in libwebp in Google Chrome prior to 116.0.5845.187 and libwebp 1.3.2 allowed a remote attacker to perform an out of bounds memory write via a crafted HTML page. (Chromium security severity: Critical)\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 10.0.1\nSeverity: HIGH\nFix: Upgrade Pillow to 10.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5db55ae9a38b254f", "name": "CVE-2024-28219: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-28219: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: buffer overflow in _imagingcms.c\n\nIn _imagingcms.c in Pillow before 10.3.0, a buffer overflow exists because strcpy is used instead of strncpy.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 10.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 10.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-447b8250340aa5ff", "name": "CVE-2026-54058: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54058: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Memory disclosure or denial of service via crafted McIdas AREA image\n\nPillow is a Python imaging library. Prior to 12.3.0, when Pillow loads an uncompressed McIdas AREA image from a filename through the mmap raw codec path, attacker-controlled header words can set a row stride smaller than the natural row width, causing pixel access such as Image.tobytes(), getpixel, convert, or save to read beyond the mapped region and disclose adjacent process memory or fault. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f9a74938e2b2ec2", "name": "CVE-2026-54059: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54059: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted PCF font data\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/PcfFontFile.py _load_bitmaps() read glyph dimensions from the PCF METRICS section and passed them directly to Image.frombytes() without calling Image._decompression_bomb_check(), allowing crafted PCF font data to cause excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba57e4f59a6f360f", "name": "CVE-2026-54060: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54060: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via excessive memory allocation when processing font files\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/FontFile.py FontFile.compile() assembled per-glyph images into a combined bitmap with Image.new(\"1\", (xsize, ysize)) without calling Image._decompression_bomb_check(), allowing a font to trigger excessive allocation during conversion or saving. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e86a4e8057194bb", "name": "CVE-2026-55379: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55379: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted BDF font file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/BdfFontFile.py bdf_char() read the BBX width and height field from a BDF font file and passed attacker-controlled dimensions to Image.new() without calling Image._decompression_bomb_check(), bypassing Pillow's documented decompression bomb protection and allowing excessive memory allocation. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b892605dedf3a772", "name": "CVE-2026-55380: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55380: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Denial of Service via crafted GD 2.x image file\n\nPillow is a Python imaging library. Prior to 12.3.0, PIL/GdImageFile.py GdImageFile._open() read image dimensions from the GD 2.x header and stored them in self._size without calling Image._decompression_bomb_check(), allowing a crafted .gd file to trigger excessive C-heap allocation when loaded. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-94b086f7221c03c5", "name": "CVE-2026-59197: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59197: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Native heap out-of-bounds write\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's public rank-filter API can trigger a native heap out-of-bounds write when given a very large odd filter size because ImageFilter.RankFilter.filter() calls image.expand(size // 2, size // 2) before rank-filter size validation and ImagingExpand() computes output dimensions with unchecked signed int arithmetic. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-027b288e22739c19", "name": "CVE-2026-59199: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59199: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via out-of-bounds write in image processing\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow public image coordinate APIs can trigger a native heap out-of-bounds write when given coordinates near the signed 32-bit integer limits in Image.paste(), Image.crop(), or Image.alpha_composite(). This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e4ae6127f55be1d9", "name": "CVE-2026-59200: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59200: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of service via crafted PDF stream\n\nPillow is a Python imaging library. From 5.1.0 until 12.3.0, PdfParser.PdfStream.decode() in PIL/PdfParser.py calls zlib.decompress() with bufsize set to the PDF stream Length field without bounding the decompressed output size, allowing a crafted FlateDecode PDF stream to exhaust memory from a small file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8822abc0dd276108", "name": "CVE-2026-59204: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59204: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via crafted JPEG2000 image\n\nPillow is a Python imaging library. From 8.2.0 through 12.2.0, src/libImaging/Jpeg2KDecode.c accumulates total_component_width across every tile in a JPEG2000 image instead of recomputing it per tile, allowing a crafted tiled JPEG2000 file to force substantially higher transient memory usage and trigger out-of-memory failures during decoding. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-54bae2bd432caaf9", "name": "CVE-2026-59205: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59205: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Controlled native heap corruption in ImageCms.ImageCmsTransform.apply API\n\nPillow is a Python imaging library. Prior to 12.3.0, Pillow's ImageCms.ImageCmsTransform.apply(im, imOut) API can trigger controlled native heap corruption when the caller supplies an output image whose mode does not match the transform's declared output mode. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: HIGH\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1caadac612fada2f", "name": "CVE-2026-42308: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42308: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: python: Pillow: Denial of Service via integer overflow in font processing\n\nPillow 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.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93ffad111ba066fd", "name": "CVE-2026-42310: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-42310: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Denial of Service via malicious PDF processing\n\nPillow is a Python imaging library. From version 4.2.0 to before version 12.2.0, an attacker can supply a malicious PDF that causes the process to hang indefinitely, consuming 100% CPU and making the application unresponsive. This issue has been patched in version 12.2.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.2.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.2.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-066b24594206856a", "name": "CVE-2026-55798: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-55798: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-pillow: Pillow: Arbitrary command injection via shell metacharacters in file paths\n\nPillow is a Python imaging library. Prior to 12.3.0, WindowsViewer.get_command() constructed a cmd.exe shell command by directly embedding a file path into an f-string without escaping and passed the result to subprocess.Popen(..., shell=True), allowing shell metacharacters in the file path to inject arbitrary cmd.exe commands. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-136f33c834db808a", "name": "CVE-2026-59198: Pillow 9.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59198: Pillow 9.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Pillow: Pillow: Information disclosure via TGA RLE encoder out-of-bounds read\n\nPillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.\n\nPackage: Pillow\nInstalled: 9.4.0\nFixed in: 12.3.0\nSeverity: MEDIUM\nFix: Upgrade Pillow to 12.3.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-afa6e39a7bb631b2", "name": "CVE-2026-59935: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59935: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with unterminated inline image\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.14.2, an attacker can craft a PDF with a page content stream containing a not terminated inline image that uses the ASCII85 or ASCIIHex filters, causing an infinite loop during parsing such as when extracting page text. This issue is fixed in version 6.14.2.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.14.2\nSeverity: HIGH\nFix: Upgrade PyPDF to 6.14.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b56a4e5228165a5", "name": "CVE-2026-59936: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59936: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF inline image\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.14.1, an attacker can craft a PDF with a page content stream containing a not terminated inline image, causing an infinite loop during inline image end marker detection such as when extracting page text. This issue is fixed in version 6.14.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.14.1\nSeverity: HIGH\nFix: Upgrade PyPDF to 6.14.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6771dadd64f8b6e", "name": "CVE-2025-55197: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-55197: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: PyPDF RAM Exhaustion Vulnerability\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.0.0, an attacker can craft a PDF which leads to the RAM being exhausted. This requires just reading the file if a series of FlateDecode filters is used on a malicious cross-reference stream. Other content streams are affected on explicit access. This issue has been fixed in 6.0.0. If an update is not possible, a workaround involves including the fixed code from pypdf.filters.decompress into the existing filters file.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.0.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a55674d01ae09e27", "name": "CVE-2025-62707: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-62707: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf affected by possible infinite loop when reading DCT inline images without EOF marker\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.1.3, an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires parsing the content stream of a page which has an inline image using the DCTDecode filter. This has been fixed in pypdf version 6.1.3.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.1.3\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.1.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ae575625f3720756", "name": "CVE-2025-62708: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-62708: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf manipulated LZWDecode streams can exhaust RAM\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.1.3, an attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires parsing the content stream of a page using the LZWDecode filter. This has been fixed in pypdf version 6.1.3.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.1.3\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.1.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da8111c77c6e2b30", "name": "CVE-2025-66019: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66019: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf manipulated LZWDecode streams can exhaust RAM\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.4.0, an attacker who uses this vulnerability can craft a PDF which leads to a memory usage of up to 1 GB per stream. This requires parsing the content stream of a page using the LZWDecode filter. This issue has been patched in version 6.4.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.4.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.4.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-afd5fe177e2415d1", "name": "CVE-2026-24688: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-24688: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf Infinite Loop when processing outlines/bookmarks\n\npypdf is a free and open-source pure-python PDF library. An attacker who uses an infinite loop vulnerability that is present in versions prior to 6.6.2 can craft a PDF which leads to an infinite loop. This requires accessing the outlines/bookmarks. This has been fixed in pypdf 6.6.2. If projects cannot upgrade yet, consider applying the changes from PR #3610 manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.6.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.6.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-325e2d10213a624f", "name": "CVE-2026-27024: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27024: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with TreeObject outlines\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.7.1, an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires accessing the children of a TreeObject, for example as part of outlines. This vulnerability is fixed in 6.7.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.7.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d386fbf9185ffed", "name": "CVE-2026-27025: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27025: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with large font values\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.7.1, an attacker who uses this vulnerability can craft a PDF which leads to long runtimes and large memory consumption. This requires parsing the /ToUnicode entry of a font with unusually large values, for example during text extraction. This vulnerability is fixed in 6.7.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.7.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfdf66b985baf397", "name": "CVE-2026-27026: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27026: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via malformed PDF /FlateDecode stream\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.7.1, an attacker who uses this vulnerability can craft a PDF which leads to long runtimes. This requires a malformed /FlateDecode stream, where the byte-by-byte decompression is used. This vulnerability is fixed in 6.7.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.7.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5c9753a11e37682a", "name": "CVE-2026-27888: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27888: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.7.3, an attacker who uses this vulnerability can craft a PDF which leads to the RAM being exhausted. This requires accessing the `xfa` property of a reader or writer and the corresponding stream being compressed using `/FlateDecode`. This has been fixed in pypdf 6.7.3. As a workaround, apply the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.3\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.7.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b98067738680e46", "name": "CVE-2026-28351: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-28351: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with RunLengthDecode filter\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.7.4, an attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires parsing the content stream using the RunLengthDecode filter. This has been fixed in pypdf 6.7.4. As a workaround, consider applying the changes from PR #3664.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.4\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.7.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70c5312850b49aa3", "name": "CVE-2026-28804: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-28804: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with ASCIIHexDecode filter\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.7.5, an attacker who uses this vulnerability can craft a PDF which leads to long runtimes. This requires accessing a stream which uses the /ASCIIHexDecode filter. This issue has been patched in version 6.7.5.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.5\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.7.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24e2fe273e792711", "name": "CVE-2026-31826: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-31826: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service due to excessive memory consumption via crafted PDF\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.8.0, an attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires parsing a content stream with a rather large /Length value, regardless of the actual data length inside the stream. This vulnerability is fixed in 6.8.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.8.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.8.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3f0972e991590e0c", "name": "CVE-2026-33123: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-33123: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service due to excessive resource consumption from crafted PDF\n\npypdf is a free and open-source pure-python PDF library. Versions prior to 6.9.1 allow an attacker to craft a malicious PDF which leads to long runtimes and/or large memory usage. Exploitation requires accessing an array-based stream with many entries. This issue has been fixed in version 6.9.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.9.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.9.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5b14000b1e663a25", "name": "CVE-2026-33699: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-33699: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF in non-strict mode\n\npypdf is a free and open-source pure-python PDF library. Versions prior to 6.9.2 have a vulnerability in which an attacker can craft a PDF which leads to an infinite loop. This requires reading a file in non-strict mode. This has been fixed in pypdf 6.9.2. If users cannot upgrade yet, consider applying the changes from the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.9.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.9.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ceee7c6df81bfc9", "name": "CVE-2026-40260: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-40260: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service due to memory exhaustion via manipulated XMP metadata\n\npypdf is a free and open-source pure-python PDF library. In versions prior to 6.10.0, manipulated XMP metadata entity declarations can exhaust RAM. An attacker who exploits this vulnerability can craft a PDF which leads to large memory usage. This requires parsing the XMP metadata. This issue has been fixed in version 6.10.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.10.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.10.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46e575cdf6e8780e", "name": "CVE-2026-41168: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41168: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with oversized streams\n\npypdf is a free and open-source pure-python PDF library. An attacker who uses a vulnerability present in versions prior to 6.10.1 can craft a PDF which leads to long runtimes. This requires cross-reference streams with wrong large `/Size` values or object streams with wrong large `/N` values. This has been fixed in pypdf 6.10.1. As a workaround, one may apply the changes from the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.10.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.10.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c4d5afd9e227404", "name": "CVE-2026-41312: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41312: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service due to excessive memory consumption via specially crafted PDF\n\npypdf is a free and open-source pure-python PDF library. An attacker who uses a vulnerability present in versions prior to 6.10.2 can craft a PDF which leads to the RAM being exhausted. This requires accessing a stream compressed using `/FlateDecode` with a `/Predictor` unequal 1 and large predictor parameters. This has been fixed in pypdf 6.10.2. As a workaround, one may apply the changes from the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.10.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.10.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0eb816a7d612260", "name": "CVE-2026-41313: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41313: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with large trailer /Size value\n\npypdf is a free and open-source pure-python PDF library. An attacker who uses a vulnerability present in versions prior to 6.10.2 can craft a PDF which leads to long runtimes. This requires loading a PDF with a large trailer `/Size` value in incremental mode. This has been fixed in pypdf 6.10.2. As a workaround, one may apply the changes from the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.10.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.10.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0d942247946669c", "name": "CVE-2026-41314: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41314: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with large image sizes\n\npypdf is a free and open-source pure-python PDF library. An attacker who uses a vulnerability present in versions prior to 6.10.2 can craft a PDF which leads to the RAM being exhausted. This requires accessing an image using `/FlateDecode` with large size values. This has been fixed in pypdf 6.10.2. As a workaround, one may apply the changes from the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.10.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.10.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7bbc93d0a9ad9a82", "name": "CVE-2026-48155: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-48155: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with large character offsets\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.12.0, an attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires extracting text in layout mode with large character offsets. This vulnerability is fixed in 6.12.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.12.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.12.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79547b464f1c3c0a", "name": "CVE-2026-48156: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-48156: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.12.0, an attacker who uses this vulnerability can craft a PDF which leads to long runtimes. This requires cross-reference streams with /W [0 0 0] values and large /Size values. This vulnerability is fixed in 6.12.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.12.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.12.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2cdf780219ca620f", "name": "CVE-2026-48735: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-48735: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with large XMP metadata\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.12.1, an attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires parsing large XMP metadata, possibly with lots of unnecessary elements. This vulnerability is fixed in 6.12.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.12.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.12.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4b320cdfd95d73cc", "name": "CVE-2026-49460: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-49460: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with FlateDecode filter\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.12.2, an attacker who uses this vulnerability can craft a PDF which leads to long runtimes. This requires accessing a stream which uses the /FlateDecode filter with a PNG predictor. This vulnerability is fixed in 6.12.2.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.12.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.12.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24c250806b6d5673", "name": "CVE-2026-49461: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-49461: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with self-referencing form XObject\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.12.2, an attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires extracting the text of a page which contains a form XObject with self-references. This vulnerability is fixed in 6.12.2.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.12.2\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.12.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c012f0f896bc5c61", "name": "CVE-2026-54530: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54530: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: python-pypdf: pypdf: Denial of Service via crafted PDF processing\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.13.0, an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires extracting the text in layout mode. This vulnerability is fixed in 6.13.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.13.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.13.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7435d28663d4d7e1", "name": "CVE-2026-54531: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54531: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with outlines\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.13.0, an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires merging a file with outlines into a writer. This vulnerability is fixed in 6.13.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.13.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.13.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35de89b50222ca85", "name": "CVE-2026-54651: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-54651: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: python-pypdf: pypdf: Denial of Service via crafted PDF\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.13.1, an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires merging a file with threads/articles into a writer. This vulnerability is fixed in 6.13.1.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.13.1\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.13.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dec4b5be6d924148", "name": "CVE-2026-59937: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59937: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with malformed cross-reference streams\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.14.0, an attacker can craft a PDF with repeated malformed cross-reference streams that cause pypdf to spend long runtimes recovering broken cross-reference table entries. This issue is fixed in version 6.14.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.14.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.14.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5e33b06b56428a54", "name": "CVE-2026-59938: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-59938: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Possible large memory usage for wrong image dimensions\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.14.0, an attacker can craft a PDF with declared image size values that are much too large compared to the actual data, causing large memory usage in pypdf image parsing. This issue is fixed in version 6.14.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.14.0\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.14.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2328e83bf113780a", "name": "GHSA-jm82-fx9c-mx94: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-jm82-fx9c-mx94: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: Missing stream length values ignore defined limits\n\n### Impact\n\nAn attacker who uses this vulnerability can craft a PDF which leads to large memory usage, as `MAX_DECLARED_STREAM_LENGTH` is sometimes ignored. This requires parsing a content stream without a `/Length` value.\n\n### Patches\nThis has been fixed in [pypdf==6.13.3](https://github.com/py-pdf/pypdf/releases/tag/6.13.3).\n\n### Workarounds\nIf you cannot upgrade yet, consider applying the changes from PR [#3871](https://github.com/py-pdf/pypdf/pull/3871).\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.13.3\nSeverity: MEDIUM\nFix: Upgrade PyPDF to 6.13.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7c297aa430ce69c", "name": "CVE-2026-22690: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-22690: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via crafted PDF with missing /Root object\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.6.0, pypdf has possible long runtimes for missing /Root object with large /Size values. An attacker who uses this vulnerability can craft a PDF which leads to possibly long runtimes for actually invalid files. This can be achieved by omitting the /Root entry in the trailer, while using a rather large /Size value. Only the non-strict reading mode is affected. This issue has been patched in version 6.6.0.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.6.0\nSeverity: LOW\nFix: Upgrade PyPDF to 6.6.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-594b38a12a9e8801", "name": "CVE-2026-22691: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-22691: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: pypdf: Denial of Service via malformed PDF startxref entries\n\npypdf is a free and open-source pure-python PDF library. Prior to version 6.6.0, pypdf has possible long runtimes for malformed startxref. An attacker who uses this vulnerability can craft a PDF which leads to possibly long runtimes for invalid startxref entries. When rebuilding the cross-reference table, PDF files with lots of whitespace characters become problematic. Only the non-strict reading mode is affected. Only the non-strict reading mode is affected. This issue has been patched in versi\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.6.0\nSeverity: LOW\nFix: Upgrade PyPDF to 6.6.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76382c3ddbc8b766", "name": "CVE-2026-27628: PyPDF 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27628: PyPDF 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: possible infinite loop when loading circular /Prev entries in cross-reference streams\n\npypdf is a free and open-source pure-python PDF library. Prior to 6.7.2, an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop. This requires reading the file. This has been fixed in pypdf 6.7.2. As a workaround, one may apply the patch manually.\n\nPackage: PyPDF\nInstalled: 5.4.0\nFixed in: 6.7.2\nSeverity: LOW\nFix: Upgrade PyPDF to 6.7.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83f4b24856b9ba10", "name": "CVE-2022-24859: PyPDF2 1.26.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2022-24859: PyPDF2 1.26.0 \u2014 requirements.txt"}, "fullDescription": {"text": "PyPDF2: infinite loop vulnerability\n\nPyPDF2 is an open source python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. In versions prior to 1.27.5 an attacker who uses this vulnerability can craft a PDF which leads to an infinite loop if the PyPDF2 if the code attempts to get the content stream. The reason is that the last while-loop in `ContentStream._readInlineImage` only terminates when it finds the `EI` token, but never actually checks if the stream has already ended. This issue has b\n\nPackage: PyPDF2\nInstalled: 1.26.0\nFixed in: 1.27.5\nSeverity: MEDIUM\nFix: Upgrade PyPDF2 to 1.27.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfda3de1fda9d9a9", "name": "CVE-2023-36810: PyPDF2 1.26.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-36810: PyPDF2 1.26.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf is a pure-python PDF library capable of splitting, merging, crop ...\n\npypdf is a pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. An attacker who uses this vulnerability can craft a PDF which leads to unexpected long runtime. This quadratic runtime blocks the current process and can utilize a single core of the CPU by 100%. It does not affect memory usage. This issue has been addressed in PR 808 and versions from 1.27.9 include this fix. Users are advised to upgrade. There are no known workarounds for this v\n\nPackage: PyPDF2\nInstalled: 1.26.0\nFixed in: 1.27.9\nSeverity: MEDIUM\nFix: Upgrade PyPDF2 to 1.27.9"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d2c2803b51fc953c", "name": "CVE-2023-36464: PyPDF2 2.12.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-36464: PyPDF2 2.12.1 \u2014 requirements.txt"}, "fullDescription": {"text": "pypdf: Possible Infinite Loop when a comment isn't followed by a character\n\npypdf is an open source, pure-python PDF library. In affected versions an attacker may craft a PDF which leads to an infinite loop if `__parse_content_stream` is executed. That is, for example, the case if the user extracted text from such a PDF. This issue was introduced in pull request #969 and resolved in pull request #1828. Users are advised to upgrade. Users unable to upgrade may modify the line `while peek not in (b\"\\r\", b\"\\n\")` in `pypdf/generic/_data_structures.py` to `while peek not in \n\nPackage: PyPDF2\nInstalled: 2.12.1\nFixed in: \u2014\nSeverity: MEDIUM\nFix: No fix version published yet"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-837c3e165f48a603", "name": "CVE-2023-25577: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-25577: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: high resource usage when parsing multipart form data with many fields\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 2.2.3, Werkzeug's multipart form data parser will parse an unlimited number of parts, including file parts. Parts can be a small amount of bytes, but each requires CPU time to parse and may use more memory as Python data. If a request can be made to an endpoint that accesses `request.data`, `request.form`, `request.files`, or `request.get_data(parse_form_data=False)`, it can cause unexpectedly high resource usage. This al\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 2.2.3\nSeverity: HIGH\nFix: Upgrade Werkzeug to 2.2.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8e7eca6b485f529d", "name": "CVE-2024-34069: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-34069: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: user may execute code on a developer's machine\n\nWerkzeug is a comprehensive WSGI web application library. The debugger in affected versions of Werkzeug can allow an attacker to execute code on a developer's machine under some circumstances. This requires the attacker to get the developer to interact with a domain and subdomain they control, and enter the debugger PIN, but if they are successful it allows access to the debugger even if it is only running on localhost. This also requires the attacker to guess a URL in the developer's applicatio\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.0.3\nSeverity: HIGH\nFix: Upgrade Werkzeug to 3.0.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b791183225ab1ce", "name": "CVE-2023-46136: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-46136: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: high resource consumption leading to denial of service\n\nWerkzeug is a comprehensive WSGI web application library. In versions on the 3.x branch prior to 3.0.1 and on the 2.x branch prior to 2.3.8, if an upload of a file that starts with CR or LF and then is followed by megabytes of data without these characters: all of these bytes are appended chunk by chunk into internal bytearray and lookup for boundary is performed on growing buffer. This allows an attacker to cause a denial of service by sending crafted multipart data to an endpoint that will par\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.0.1, 2.3.8\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.1, 2.3.8"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a2cc9d66b2235180", "name": "CVE-2024-49766: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-49766: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "werkzeug: python-werkzeug: Werkzeug safe_join not safe on Windows\n\nWerkzeug is a Web Server Gateway Interface web application library. On Python < 3.11 on Windows, os.path.isabs() does not catch UNC paths like //server/share. Werkzeug's safe_join() relies on this check, and so can produce a path that is not safe, potentially allowing unintended access to data. Applications using Python >= 3.11, or not using Windows, are not vulnerable. Werkzeug version 3.0.6 contains a patch.\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.0.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d814c8b853904b2", "name": "CVE-2024-49767: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-49767: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "werkzeug: python-werkzeug: Werkzeug possible resource exhaustion when parsing file data in forms\n\nWerkzeug is a Web Server Gateway Interface web application library. Applications using `werkzeug.formparser.MultiPartParser` corresponding to a version of Werkzeug prior to 3.0.6 to parse `multipart/form-data` requests (e.g. all flask applications) are vulnerable to a relatively simple but effective resource exhaustion (denial of service) attack. A specifically crafted form submission request can cause the parser to allocate and block 3 to 8 times the upload size in main memory. There is no uppe\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.0.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e2dd8aad769522a", "name": "CVE-2025-66221: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66221: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "Werkzeug: Werkzeug: Denial of service via Windows device names in path segments\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 3.1.4, Werkzeug's safe_join function allows path segments with Windows device names. On Windows, there are special device names such as CON, AUX, etc that are implicitly present and readable in every directory. send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is running on Windows, and the requested path ends with a special device name, the file will be\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.1.4\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1cda35319d8af1ce", "name": "CVE-2026-21860: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-21860: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names with compound extensions\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 3.1.5, Werkzeug's safe_join function allows path segments with Windows device names that have file extensions or trailing spaces. On Windows, there are special device names such as CON, AUX, etc that are implicitly present and readable in every directory. Windows still accepts them with any file extension, such as CON.txt, or trailing spaces such as CON. This issue has been patched in version 3.1.5.\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd414709a741f5f2", "name": "CVE-2026-27199: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27199: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names\n\nWerkzeug is a comprehensive WSGI web application library. Versions 3.1.5 and below, the safe_join function allows Windows device names as filenames if preceded by other path segments. This was previously reported as GHSA-hgf8-39gv-g3f2, but the added filtering failed to account for the fact that safe_join accepts paths with multiple segments, such as example/NUL. The function send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 3.1.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8970927739904a1b", "name": "CVE-2023-23934: Werkzeug 2.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-23934: Werkzeug 2.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: cookie prefixed with = can shadow unprefixed cookie\n\nWerkzeug is a comprehensive WSGI web application library. Browsers may allow \"nameless\" cookies that look like `=value` instead of `key=value`. A vulnerable browser may allow a compromised application on an adjacent subdomain to exploit this to set a cookie like `=__Host-test=bad` for another subdomain. Werkzeug prior to 2.2.3 will parse the cookie `=__Host-test=bad` as __Host-test=bad`. If a Werkzeug application is running next to a vulnerable or malicious subdomain which sets such a cookie usi\n\nPackage: Werkzeug\nInstalled: 2.0.2\nFixed in: 2.2.3\nSeverity: LOW\nFix: Upgrade Werkzeug to 2.2.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8807a369922fc8f6", "name": "CVE-2023-25577: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-25577: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: high resource usage when parsing multipart form data with many fields\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 2.2.3, Werkzeug's multipart form data parser will parse an unlimited number of parts, including file parts. Parts can be a small amount of bytes, but each requires CPU time to parse and may use more memory as Python data. If a request can be made to an endpoint that accesses `request.data`, `request.form`, `request.files`, or `request.get_data(parse_form_data=False)`, it can cause unexpectedly high resource usage. This al\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 2.2.3\nSeverity: HIGH\nFix: Upgrade Werkzeug to 2.2.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbd7af18cdce0b3f", "name": "CVE-2024-34069: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-34069: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: user may execute code on a developer's machine\n\nWerkzeug is a comprehensive WSGI web application library. The debugger in affected versions of Werkzeug can allow an attacker to execute code on a developer's machine under some circumstances. This requires the attacker to get the developer to interact with a domain and subdomain they control, and enter the debugger PIN, but if they are successful it allows access to the debugger even if it is only running on localhost. This also requires the attacker to guess a URL in the developer's applicatio\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.0.3\nSeverity: HIGH\nFix: Upgrade Werkzeug to 3.0.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e253c224934bfa1c", "name": "CVE-2023-46136: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-46136: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: high resource consumption leading to denial of service\n\nWerkzeug is a comprehensive WSGI web application library. In versions on the 3.x branch prior to 3.0.1 and on the 2.x branch prior to 2.3.8, if an upload of a file that starts with CR or LF and then is followed by megabytes of data without these characters: all of these bytes are appended chunk by chunk into internal bytearray and lookup for boundary is performed on growing buffer. This allows an attacker to cause a denial of service by sending crafted multipart data to an endpoint that will par\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.0.1, 2.3.8\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.1, 2.3.8"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ab4c1efcc99d6b6", "name": "CVE-2024-49766: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-49766: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "werkzeug: python-werkzeug: Werkzeug safe_join not safe on Windows\n\nWerkzeug is a Web Server Gateway Interface web application library. On Python < 3.11 on Windows, os.path.isabs() does not catch UNC paths like //server/share. Werkzeug's safe_join() relies on this check, and so can produce a path that is not safe, potentially allowing unintended access to data. Applications using Python >= 3.11, or not using Windows, are not vulnerable. Werkzeug version 3.0.6 contains a patch.\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.0.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dbbbe369ce76bbbb", "name": "CVE-2024-49767: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-49767: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "werkzeug: python-werkzeug: Werkzeug possible resource exhaustion when parsing file data in forms\n\nWerkzeug is a Web Server Gateway Interface web application library. Applications using `werkzeug.formparser.MultiPartParser` corresponding to a version of Werkzeug prior to 3.0.6 to parse `multipart/form-data` requests (e.g. all flask applications) are vulnerable to a relatively simple but effective resource exhaustion (denial of service) attack. A specifically crafted form submission request can cause the parser to allocate and block 3 to 8 times the upload size in main memory. There is no uppe\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.0.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e8b49865cca54ae", "name": "CVE-2025-66221: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66221: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "Werkzeug: Werkzeug: Denial of service via Windows device names in path segments\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 3.1.4, Werkzeug's safe_join function allows path segments with Windows device names. On Windows, there are special device names such as CON, AUX, etc that are implicitly present and readable in every directory. send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is running on Windows, and the requested path ends with a special device name, the file will be\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.1.4\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-824dc308aa67b561", "name": "CVE-2026-21860: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-21860: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names with compound extensions\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 3.1.5, Werkzeug's safe_join function allows path segments with Windows device names that have file extensions or trailing spaces. On Windows, there are special device names such as CON, AUX, etc that are implicitly present and readable in every directory. Windows still accepts them with any file extension, such as CON.txt, or trailing spaces such as CON. This issue has been patched in version 3.1.5.\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c88bb89aefa52ad", "name": "CVE-2026-27199: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27199: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names\n\nWerkzeug is a comprehensive WSGI web application library. Versions 3.1.5 and below, the safe_join function allows Windows device names as filenames if preceded by other path segments. This was previously reported as GHSA-hgf8-39gv-g3f2, but the added filtering failed to account for the fact that safe_join accepts paths with multiple segments, such as example/NUL. The function send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 3.1.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16e0c2f3a959489a", "name": "CVE-2023-23934: Werkzeug 2.2.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-23934: Werkzeug 2.2.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: cookie prefixed with = can shadow unprefixed cookie\n\nWerkzeug is a comprehensive WSGI web application library. Browsers may allow \"nameless\" cookies that look like `=value` instead of `key=value`. A vulnerable browser may allow a compromised application on an adjacent subdomain to exploit this to set a cookie like `=__Host-test=bad` for another subdomain. Werkzeug prior to 2.2.3 will parse the cookie `=__Host-test=bad` as __Host-test=bad`. If a Werkzeug application is running next to a vulnerable or malicious subdomain which sets such a cookie usi\n\nPackage: Werkzeug\nInstalled: 2.2.2\nFixed in: 2.2.3\nSeverity: LOW\nFix: Upgrade Werkzeug to 2.2.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6226b6c900a2e7fe", "name": "CVE-2024-34069: Werkzeug 3.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-34069: Werkzeug 3.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-werkzeug: user may execute code on a developer's machine\n\nWerkzeug is a comprehensive WSGI web application library. The debugger in affected versions of Werkzeug can allow an attacker to execute code on a developer's machine under some circumstances. This requires the attacker to get the developer to interact with a domain and subdomain they control, and enter the debugger PIN, but if they are successful it allows access to the debugger even if it is only running on localhost. This also requires the attacker to guess a URL in the developer's applicatio\n\nPackage: Werkzeug\nInstalled: 3.0.1\nFixed in: 3.0.3\nSeverity: HIGH\nFix: Upgrade Werkzeug to 3.0.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-880e8d7e094e6050", "name": "CVE-2024-49766: Werkzeug 3.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-49766: Werkzeug 3.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "werkzeug: python-werkzeug: Werkzeug safe_join not safe on Windows\n\nWerkzeug is a Web Server Gateway Interface web application library. On Python < 3.11 on Windows, os.path.isabs() does not catch UNC paths like //server/share. Werkzeug's safe_join() relies on this check, and so can produce a path that is not safe, potentially allowing unintended access to data. Applications using Python >= 3.11, or not using Windows, are not vulnerable. Werkzeug version 3.0.6 contains a patch.\n\nPackage: Werkzeug\nInstalled: 3.0.1\nFixed in: 3.0.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4642fccc5d42bf54", "name": "CVE-2024-49767: Werkzeug 3.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-49767: Werkzeug 3.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "werkzeug: python-werkzeug: Werkzeug possible resource exhaustion when parsing file data in forms\n\nWerkzeug is a Web Server Gateway Interface web application library. Applications using `werkzeug.formparser.MultiPartParser` corresponding to a version of Werkzeug prior to 3.0.6 to parse `multipart/form-data` requests (e.g. all flask applications) are vulnerable to a relatively simple but effective resource exhaustion (denial of service) attack. A specifically crafted form submission request can cause the parser to allocate and block 3 to 8 times the upload size in main memory. There is no uppe\n\nPackage: Werkzeug\nInstalled: 3.0.1\nFixed in: 3.0.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-638ebd3c9ddf4586", "name": "CVE-2025-66221: Werkzeug 3.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66221: Werkzeug 3.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Werkzeug: Werkzeug: Denial of service via Windows device names in path segments\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 3.1.4, Werkzeug's safe_join function allows path segments with Windows device names. On Windows, there are special device names such as CON, AUX, etc that are implicitly present and readable in every directory. send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is running on Windows, and the requested path ends with a special device name, the file will be\n\nPackage: Werkzeug\nInstalled: 3.0.1\nFixed in: 3.1.4\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28bbfb69bb9213be", "name": "CVE-2026-21860: Werkzeug 3.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-21860: Werkzeug 3.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names with compound extensions\n\nWerkzeug is a comprehensive WSGI web application library. Prior to version 3.1.5, Werkzeug's safe_join function allows path segments with Windows device names that have file extensions or trailing spaces. On Windows, there are special device names such as CON, AUX, etc that are implicitly present and readable in every directory. Windows still accepts them with any file extension, such as CON.txt, or trailing spaces such as CON. This issue has been patched in version 3.1.5.\n\nPackage: Werkzeug\nInstalled: 3.0.1\nFixed in: 3.1.5\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fabae1889584a7d6", "name": "CVE-2026-27199: Werkzeug 3.0.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27199: Werkzeug 3.0.1 \u2014 requirements.txt"}, "fullDescription": {"text": " Werkzeug safe_join() allows Windows special device names\n\nWerkzeug is a comprehensive WSGI web application library. Versions 3.1.5 and below, the safe_join function allows Windows device names as filenames if preceded by other path segments. This was previously reported as GHSA-hgf8-39gv-g3f2, but the added filtering failed to account for the fact that safe_join accepts paths with multiple segments, such as example/NUL. The function send_from_directory uses safe_join to safely serve files at user-specified paths under a directory. If the application is\n\nPackage: Werkzeug\nInstalled: 3.0.1\nFixed in: 3.1.6\nSeverity: MEDIUM\nFix: Upgrade Werkzeug to 3.1.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb46a21ecb2e16d0", "name": "CVE-2026-26209: cbor2 5.4.2.post1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-26209: cbor2 5.4.2.post1 \u2014 requirements.txt"}, "fullDescription": {"text": "cbor2: cbor2: Denial of Service due to uncontrolled recursion via crafted CBOR payloads\n\ncbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Versions prior to 5.9.0 are vulnerable to a Denial of Service (DoS) attack caused by uncontrolled recursion when decoding deeply nested CBOR structures. This vulnerability affects both the pure Python implementation and the C extension `_cbor2`. The C extension relies on Python's internal recursion limits `Py_EnterRecursiveCall` rather than a data-driven depth limit, meaning it still ra\n\nPackage: cbor2\nInstalled: 5.4.2.post1\nFixed in: 5.9.0\nSeverity: HIGH\nFix: Upgrade cbor2 to 5.9.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9f9033cfae40274", "name": "CVE-2025-68131: cbor2 5.4.2.post1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-68131: cbor2 5.4.2.post1 \u2014 requirements.txt"}, "fullDescription": {"text": "cbor2: cbor2: Information Disclosure via shared memory in CBORDecoder reuse\n\ncbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Starting in version 3.0.0 and prior to version 5.8.0, whhen a CBORDecoder instance is reused across multiple decode operations, values marked with the shareable tag (28) persist in memory and can be accessed by subsequent CBOR messages using the sharedref tag (29). This allows an attacker-controlled message to read data from previously decoded messages if the decoder is reused across tr\n\nPackage: cbor2\nInstalled: 5.4.2.post1\nFixed in: 5.8.0\nSeverity: MEDIUM\nFix: Upgrade cbor2 to 5.8.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b619a4fa54d26a0b", "name": "CVE-2026-26209: cbor2 5.4.6 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-26209: cbor2 5.4.6 \u2014 requirements.txt"}, "fullDescription": {"text": "cbor2: cbor2: Denial of Service due to uncontrolled recursion via crafted CBOR payloads\n\ncbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Versions prior to 5.9.0 are vulnerable to a Denial of Service (DoS) attack caused by uncontrolled recursion when decoding deeply nested CBOR structures. This vulnerability affects both the pure Python implementation and the C extension `_cbor2`. The C extension relies on Python's internal recursion limits `Py_EnterRecursiveCall` rather than a data-driven depth limit, meaning it still ra\n\nPackage: cbor2\nInstalled: 5.4.6\nFixed in: 5.9.0\nSeverity: HIGH\nFix: Upgrade cbor2 to 5.9.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f3d9bbb2b7d0940", "name": "CVE-2025-68131: cbor2 5.4.6 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-68131: cbor2 5.4.6 \u2014 requirements.txt"}, "fullDescription": {"text": "cbor2: cbor2: Information Disclosure via shared memory in CBORDecoder reuse\n\ncbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Starting in version 3.0.0 and prior to version 5.8.0, whhen a CBORDecoder instance is reused across multiple decode operations, values marked with the shareable tag (28) persist in memory and can be accessed by subsequent CBOR messages using the sharedref tag (29). This allows an attacker-controlled message to read data from previously decoded messages if the decoder is reused across tr\n\nPackage: cbor2\nInstalled: 5.4.6\nFixed in: 5.8.0\nSeverity: MEDIUM\nFix: Upgrade cbor2 to 5.8.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1724d35fd2ac89e3", "name": "CVE-2026-26209: cbor2 5.6.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-26209: cbor2 5.6.2 \u2014 requirements.txt"}, "fullDescription": {"text": "cbor2: cbor2: Denial of Service due to uncontrolled recursion via crafted CBOR payloads\n\ncbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Versions prior to 5.9.0 are vulnerable to a Denial of Service (DoS) attack caused by uncontrolled recursion when decoding deeply nested CBOR structures. This vulnerability affects both the pure Python implementation and the C extension `_cbor2`. The C extension relies on Python's internal recursion limits `Py_EnterRecursiveCall` rather than a data-driven depth limit, meaning it still ra\n\nPackage: cbor2\nInstalled: 5.6.2\nFixed in: 5.9.0\nSeverity: HIGH\nFix: Upgrade cbor2 to 5.9.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4531a3df8ee3e53d", "name": "CVE-2025-68131: cbor2 5.6.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-68131: cbor2 5.6.2 \u2014 requirements.txt"}, "fullDescription": {"text": "cbor2: cbor2: Information Disclosure via shared memory in CBORDecoder reuse\n\ncbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Starting in version 3.0.0 and prior to version 5.8.0, whhen a CBORDecoder instance is reused across multiple decode operations, values marked with the shareable tag (28) persist in memory and can be accessed by subsequent CBOR messages using the sharedref tag (29). This allows an attacker-controlled message to read data from previously decoded messages if the decoder is reused across tr\n\nPackage: cbor2\nInstalled: 5.6.2\nFixed in: 5.8.0\nSeverity: MEDIUM\nFix: Upgrade cbor2 to 5.8.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-008e34e5b12fec69", "name": "CVE-2023-0286: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-0286: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "openssl: X.400 address type confusion in X.509 GeneralName\n\nThere is a type confusion vulnerability relating to X.400 address processing\ninside an X.509 GeneralName. X.400 addresses were parsed as an ASN1_STRING but\nthe public structure definition for GENERAL_NAME incorrectly specified the type\nof the x400Address field as ASN1_TYPE. This field is subsequently interpreted by\nthe OpenSSL function GENERAL_NAME_cmp as an ASN1_TYPE rather than an\nASN1_STRING.\n\nWhen CRL checking is enabled (i.e. the application sets the\nX509_V_FLAG_CRL_CHECK flag), this vulner\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 39.0.1\nSeverity: HIGH\nFix: Upgrade cryptography to 39.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e6f05f6866f2c25a", "name": "CVE-2023-50782: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-50782: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "python-cryptography: Bleichenbacher timing oracle attack against RSA decryption - incomplete fix for CVE-2020-25659\n\nA flaw was found in the python-cryptography package. This issue may allow a remote attacker to decrypt captured messages in TLS servers that use RSA key exchanges, which may lead to exposure of confidential or sensitive data.\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 42.0.0\nSeverity: HIGH\nFix: Upgrade cryptography to 42.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-150ef0ffa42fbcd2", "name": "CVE-2026-26007: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-26007: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "cryptography: cryptography Subgroup Attack Due to Missing Subgroup Validation for SECT Curves\n\ncryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 46.0.5, the public_key_from_numbers (or EllipticCurvePublicNumbers.public_key()), EllipticCurvePublicNumbers.public_key(), load_der_public_key() and load_pem_public_key() functions do not verify that the point belongs to the expected prime-order subgroup of the curve. This missing validation allows an attacker to provide a public key point P from a small-order subgroup. This can lead \n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 46.0.5\nSeverity: HIGH\nFix: Upgrade cryptography to 46.0.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7b9988a47b02391c", "name": "GHSA-537c-gmf6-5ccf: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-537c-gmf6-5ccf: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "Vulnerable OpenSSL included in cryptography wheels\n\npyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in wheels prior to cryptograph 48.01 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20260609.txt.\n\nIf you are building cryptography source (\"sdist\") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on \n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 48.0.1\nSeverity: HIGH\nFix: Upgrade cryptography to 48.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed4760b667ed6d0b", "name": "CVE-2023-23931: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-23931: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "python-cryptography: memory corruption via immutable objects\n\ncryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In affected versions `Cipher.update_into` would accept Python objects which implement the buffer protocol, but provide only immutable buffers. This would allow immutable objects (such as `bytes`) to be mutated, thus violating fundamental rules of Python and resulting in corrupted output. This now correctly raises an exception. This issue has been present since `update_into` was originally intr\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 39.0.1\nSeverity: MEDIUM\nFix: Upgrade cryptography to 39.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aab0c9a5751ff3f5", "name": "CVE-2023-49083: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-49083: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "python-cryptography: NULL-dereference when loading PKCS7 certificates\n\ncryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Calling `load_pem_pkcs7_certificates` or `load_der_pkcs7_certificates` could lead to a NULL-pointer dereference and segfault. Exploitation of this vulnerability poses a serious risk of Denial of Service (DoS) for any application attempting to deserialize a PKCS7 blob/certificate. The consequences extend to potential disruptions in system availability and stability. This vulnerability has been \n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 41.0.6\nSeverity: MEDIUM\nFix: Upgrade cryptography to 41.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-54e2f53ae9e66735", "name": "CVE-2024-0727: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-0727: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "openssl: denial of service via null dereference\n\nIssue summary: Processing a maliciously formatted PKCS12 file may lead OpenSSL\nto crash leading to a potential Denial of Service attack\n\nImpact summary: Applications loading files in the PKCS12 format from untrusted\nsources might terminate abruptly.\n\nA file in PKCS12 format can contain certificates and keys and may come from an\nuntrusted source. The PKCS12 specification allows certain fields to be NULL, but\nOpenSSL does not correctly check for this case. This can lead to a NULL pointer\ndereferen\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 42.0.2\nSeverity: MEDIUM\nFix: Upgrade cryptography to 42.0.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50ee1063beceeb59", "name": "CVE-2026-34073: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-34073: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "python-cryptography: Cryptography: Security bypass due to improper DNS name constraint validation\n\ncryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to version 46.0.6, DNS name constraints were only validated against SANs within child certificates, and not the \"peer name\" presented during each validation. Consequently, cryptography would allow a peer named bar.example.com to validate against a wildcard leaf certificate for *.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint for b\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 46.0.6\nSeverity: LOW\nFix: Upgrade cryptography to 46.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd9b13bde5b27cb5", "name": "GHSA-5cpq-8wj7-hf2v: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-5cpq-8wj7-hf2v: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "Vulnerable OpenSSL included in cryptography wheels\n\npyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 0.5-40.0.2 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://www.openssl.org/news/secadv/20230530.txt.\n\nIf you are building cryptography source (\"sdist\") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) need to \n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 41.0.0\nSeverity: LOW\nFix: Upgrade cryptography to 41.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05394d0db38c6b56", "name": "GHSA-jm77-qphf-c4w8: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-jm77-qphf-c4w8: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "pyca/cryptography's wheels include vulnerable OpenSSL\n\npyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 0.8-41.0.2 are vulnerable to several security issues. More details about the vulnerabilities themselves can be found in https://www.openssl.org/news/secadv/20230731.txt, https://www.openssl.org/news/secadv/20230719.txt, and https://www.openssl.org/news/secadv/20230714.txt.\n\nIf you are building cryptography source (\"sdist\") then you are responsible for upgrading your copy of Op\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 41.0.3\nSeverity: LOW\nFix: Upgrade cryptography to 41.0.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f728c3b913ab07a", "name": "GHSA-v8gr-m533-ghj9: cryptography 3.4.8 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-v8gr-m533-ghj9: cryptography 3.4.8 \u2014 requirements.txt"}, "fullDescription": {"text": "Vulnerable OpenSSL included in cryptography wheels\n\npyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 2.5-41.0.3 are vulnerable to several security issues. More details about the vulnerabilities themselves can be found in https://www.openssl.org/news/secadv/20230908.txt.\n\nIf you are building cryptography source (\"sdist\") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on P\n\nPackage: cryptography\nInstalled: 3.4.8\nFixed in: 41.0.4\nSeverity: LOW\nFix: Upgrade cryptography to 41.0.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d271f470b425372", "name": "CVE-2026-26007: cryptography 42.0.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-26007: cryptography 42.0.8 \u2014 requirements.txt"}, "fullDescription": {"text": "cryptography: cryptography Subgroup Attack Due to Missing Subgroup Validation for SECT Curves\n\ncryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 46.0.5, the public_key_from_numbers (or EllipticCurvePublicNumbers.public_key()), EllipticCurvePublicNumbers.public_key(), load_der_public_key() and load_pem_public_key() functions do not verify that the point belongs to the expected prime-order subgroup of the curve. This missing validation allows an attacker to provide a public key point P from a small-order subgroup. This can lead \n\nPackage: cryptography\nInstalled: 42.0.8\nFixed in: 46.0.5\nSeverity: HIGH\nFix: Upgrade cryptography to 46.0.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-36e1b4645855fcb5", "name": "GHSA-537c-gmf6-5ccf: cryptography 42.0.8 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-537c-gmf6-5ccf: cryptography 42.0.8 \u2014 requirements.txt"}, "fullDescription": {"text": "Vulnerable OpenSSL included in cryptography wheels\n\npyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in wheels prior to cryptograph 48.01 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20260609.txt.\n\nIf you are building cryptography source (\"sdist\") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on \n\nPackage: cryptography\nInstalled: 42.0.8\nFixed in: 48.0.1\nSeverity: HIGH\nFix: Upgrade cryptography to 48.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-939e8c0f0b51b370", "name": "GHSA-h4gh-qq45-vh27: cryptography 42.0.8 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-h4gh-qq45-vh27: cryptography 42.0.8 \u2014 requirements.txt"}, "fullDescription": {"text": "pyca/cryptography has a vulnerable OpenSSL included in cryptography wheels\n\npyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 37.0.0-43.0.0 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20240903.txt.\n\nIf you are building cryptography source (\"sdist\") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) n\n\nPackage: cryptography\nInstalled: 42.0.8\nFixed in: 43.0.1\nSeverity: MEDIUM\nFix: Upgrade cryptography to 43.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bbc994e7add11f8", "name": "CVE-2024-12797: cryptography 42.0.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-12797: cryptography 42.0.8 \u2014 requirements.txt"}, "fullDescription": {"text": "openssl: RFC7250 handshakes with unauthenticated servers don't abort as expected\n\nIssue summary: Clients using RFC7250 Raw Public Keys (RPKs) to authenticate a\nserver may fail to notice that the server was not authenticated, because\nhandshakes don't abort as expected when the SSL_VERIFY_PEER verification mode\nis set.\n\nImpact summary: TLS and DTLS connections using raw public keys may be\nvulnerable to man-in-middle attacks when server authentication failure is not\ndetected by clients.\n\nRPKs are disabled by default in both TLS clients and TLS servers.  The issue\nonly arises whe\n\nPackage: cryptography\nInstalled: 42.0.8\nFixed in: 44.0.1\nSeverity: LOW\nFix: Upgrade cryptography to 44.0.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5131f7d57240149", "name": "CVE-2026-34073: cryptography 42.0.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-34073: cryptography 42.0.8 \u2014 requirements.txt"}, "fullDescription": {"text": "python-cryptography: Cryptography: Security bypass due to improper DNS name constraint validation\n\ncryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to version 46.0.6, DNS name constraints were only validated against SANs within child certificates, and not the \"peer name\" presented during each validation. Consequently, cryptography would allow a peer named bar.example.com to validate against a wildcard leaf certificate for *.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint for b\n\nPackage: cryptography\nInstalled: 42.0.8\nFixed in: 46.0.6\nSeverity: LOW\nFix: Upgrade cryptography to 46.0.6"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d41158e3fcf6c3a", "name": "CVE-2023-41419: gevent 21.8.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-41419: gevent 21.8.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-gevent: privilege escalation via a crafted script to the WSGIServer component\n\nAn issue in Gevent before version 23.9.0 allows a remote attacker to escalate privileges via a crafted script to the WSGIServer component.\n\nPackage: gevent\nInstalled: 21.8.0\nFixed in: 23.9.0\nSeverity: CRITICAL\nFix: Upgrade gevent to 23.9.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7f9ec49f73cbc038", "name": "CVE-2023-41419: gevent 22.10.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-41419: gevent 22.10.2 \u2014 requirements.txt"}, "fullDescription": {"text": "python-gevent: privilege escalation via a crafted script to the WSGIServer component\n\nAn issue in Gevent before version 23.9.0 allows a remote attacker to escalate privileges via a crafted script to the WSGIServer component.\n\nPackage: gevent\nInstalled: 22.10.2\nFixed in: 23.9.0\nSeverity: CRITICAL\nFix: Upgrade gevent to 23.9.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-914615f88f4da815", "name": "CVE-2024-3651: idna 2.10 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-3651: idna 2.10 \u2014 requirements.txt"}, "fullDescription": {"text": "python-idna: potential DoS via resource consumption via specially crafted inputs to idna.encode()\n\nA vulnerability was identified in the kjd/idna library, specifically within the `idna.encode()` function, affecting version 3.6. The issue arises from the function's handling of crafted input strings, which can lead to quadratic complexity and consequently, a denial of service condition. This vulnerability is triggered by a crafted input that causes the `idna.encode()` function to process the input with considerable computational load, significantly increasing the processing time in a quadratic \n\nPackage: idna\nInstalled: 2.10\nFixed in: 3.7\nSeverity: MEDIUM\nFix: Upgrade idna to 3.7"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0537d52fb53a560c", "name": "CVE-2026-45409: idna 2.10 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-45409: idna 2.10 \u2014 requirements.txt"}, "fullDescription": {"text": "python-idna: idna: Denial of Service via specially crafted long inputs\n\nInternationalized Domain Names in Applications (IDNA) for Python provides support for Internationalized Domain Names in Applications (IDNA) and Unicode IDNA Compatibility Processing. In versions prior to 3.15, payloads such as `\"\\u0660\" * N` or `\"\\u30fb\" * N + \"\\u6f22\"` utilize the `valid_contexto` function prior to length rejection, and for high values of `N` will take a long time to process. This is the same issue as CVE-2024-3651, however the original remediation in 2024 was not a complete fi\n\nPackage: idna\nInstalled: 2.10\nFixed in: 3.15\nSeverity: MEDIUM\nFix: Upgrade idna to 3.15"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8cf99c7f2e191ad", "name": "CVE-2024-3651: idna 3.6 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-3651: idna 3.6 \u2014 requirements.txt"}, "fullDescription": {"text": "python-idna: potential DoS via resource consumption via specially crafted inputs to idna.encode()\n\nA vulnerability was identified in the kjd/idna library, specifically within the `idna.encode()` function, affecting version 3.6. The issue arises from the function's handling of crafted input strings, which can lead to quadratic complexity and consequently, a denial of service condition. This vulnerability is triggered by a crafted input that causes the `idna.encode()` function to process the input with considerable computational load, significantly increasing the processing time in a quadratic \n\nPackage: idna\nInstalled: 3.6\nFixed in: 3.7\nSeverity: MEDIUM\nFix: Upgrade idna to 3.7"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35c68e9747f824b0", "name": "CVE-2026-45409: idna 3.6 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-45409: idna 3.6 \u2014 requirements.txt"}, "fullDescription": {"text": "python-idna: idna: Denial of Service via specially crafted long inputs\n\nInternationalized Domain Names in Applications (IDNA) for Python provides support for Internationalized Domain Names in Applications (IDNA) and Unicode IDNA Compatibility Processing. In versions prior to 3.15, payloads such as `\"\\u0660\" * N` or `\"\\u30fb\" * N + \"\\u6f22\"` utilize the `valid_contexto` function prior to length rejection, and for high values of `N` will take a long time to process. This is the same issue as CVE-2024-3651, however the original remediation in 2024 was not a complete fi\n\nPackage: idna\nInstalled: 3.6\nFixed in: 3.15\nSeverity: MEDIUM\nFix: Upgrade idna to 3.15"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-059824533f1cb286", "name": "CVE-2026-41066: lxml 4.8.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41066: lxml 4.8.0 \u2014 requirements.txt"}, "fullDescription": {"text": "lxml: python: lxml: Information disclosure via untrusted XML input leading to local file read\n\nlxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0.\n\nPackage: lxml\nInstalled: 4.8.0\nFixed in: 6.1.0\nSeverity: HIGH\nFix: Upgrade lxml to 6.1.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-347f606863dbc097", "name": "CVE-2022-2309: lxml 4.8.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2022-2309: lxml 4.8.0 \u2014 requirements.txt"}, "fullDescription": {"text": "lxml: NULL Pointer Dereference in lxml\n\nNULL Pointer Dereference allows attackers to cause a denial of service (or application crash). This only applies when lxml is used together with libxml2 2.9.10 through 2.9.14. libxml2 2.9.9 and earlier are not affected. It allows triggering crashes through forged input data, given a vulnerable code sequence in the application. The vulnerability is caused by the iterwalk function (also used by the canonicalize function). Such code shouldn't be in wide-spread use, given that parsing + iterwalk wou\n\nPackage: lxml\nInstalled: 4.8.0\nFixed in: 4.9.1\nSeverity: MEDIUM\nFix: Upgrade lxml to 4.9.1"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e748f2dbc42e8f36", "name": "CVE-2026-41066: lxml 4.9.3 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41066: lxml 4.9.3 \u2014 requirements.txt"}, "fullDescription": {"text": "lxml: python: lxml: Information disclosure via untrusted XML input leading to local file read\n\nlxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0.\n\nPackage: lxml\nInstalled: 4.9.3\nFixed in: 6.1.0\nSeverity: HIGH\nFix: Upgrade lxml to 6.1.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-41f1be53748c05d9", "name": "CVE-2026-41066: lxml 5.2.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41066: lxml 5.2.1 \u2014 requirements.txt"}, "fullDescription": {"text": "lxml: python: lxml: Information disclosure via untrusted XML input leading to local file read\n\nlxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0.\n\nPackage: lxml\nInstalled: 5.2.1\nFixed in: 6.1.0\nSeverity: HIGH\nFix: Upgrade lxml to 6.1.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1976e92cbeef405c", "name": "CVE-2026-41066: lxml 5.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41066: lxml 5.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "lxml: python: lxml: Information disclosure via untrusted XML input leading to local file read\n\nlxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0.\n\nPackage: lxml\nInstalled: 5.4.0\nFixed in: 6.1.0\nSeverity: HIGH\nFix: Upgrade lxml to 6.1.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b37c202e4b59e500", "name": "CVE-2026-41066: lxml 6.0.2 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-41066: lxml 6.0.2 \u2014 requirements.txt"}, "fullDescription": {"text": "lxml: python: lxml: Information disclosure via untrusted XML input leading to local file read\n\nlxml is a library for processing XML and HTML in the Python language. Prior to 6.1.0, using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files. Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access. This vulnerability is fixed in 6.1.0.\n\nPackage: lxml\nInstalled: 6.0.2\nFixed in: 6.1.0\nSeverity: HIGH\nFix: Upgrade lxml to 6.1.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-feb2548942675025", "name": "CVE-2026-27448: pyopenssl 21.0.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27448: pyopenssl 21.0.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pyOpenSSL: TLS connection bypass via unhandled callback exception in set_tlsext_servername_callback\n\npyOpenSSL is a Python wrapper around the OpenSSL library. Starting in version 0.14.0 and prior to version 26.0.0, if a user provided callback to `set_tlsext_servername_callback` raised an unhandled exception, this would result in a connection being accepted. If a user was relying on this callback for any security-sensitive behavior, this could allow bypassing it. Starting in version 26.0.0, unhandled exceptions now result in rejecting the connection.\n\nPackage: pyopenssl\nInstalled: 21.0.0\nFixed in: 26.0.0\nSeverity: LOW\nFix: Upgrade pyopenssl to 26.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a22c72936a0fcce2", "name": "CVE-2026-27459: pyopenssl 24.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27459: pyopenssl 24.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pyOpenSSL: DTLS cookie callback buffer overflow\n\npyOpenSSL is a Python wrapper around the OpenSSL library. Starting in version 22.0.0 and prior to version 26.0.0, if a user provided callback to `set_cookie_generate_callback` returned a cookie value greater than 256 bytes, pyOpenSSL would overflow an OpenSSL provided buffer. Starting in version 26.0.0, cookie values that are too long are now rejected.\n\nPackage: pyopenssl\nInstalled: 24.1.0\nFixed in: 26.0.0\nSeverity: HIGH\nFix: Upgrade pyopenssl to 26.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40b2bbebc0a7f177", "name": "CVE-2026-27448: pyopenssl 24.1.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-27448: pyopenssl 24.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "pyOpenSSL: TLS connection bypass via unhandled callback exception in set_tlsext_servername_callback\n\npyOpenSSL is a Python wrapper around the OpenSSL library. Starting in version 0.14.0 and prior to version 26.0.0, if a user provided callback to `set_tlsext_servername_callback` raised an unhandled exception, this would result in a connection being accepted. If a user was relying on this callback for any security-sensitive behavior, this could allow bypassing it. Starting in version 26.0.0, unhandled exceptions now result in rejecting the connection.\n\nPackage: pyopenssl\nInstalled: 24.1.0\nFixed in: 26.0.0\nSeverity: LOW\nFix: Upgrade pyopenssl to 26.0.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a84b0bdfbd927942", "name": "CVE-2025-61911: python-ldap 3.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-61911: python-ldap 3.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-ldap: sanitization bypass in ldap.filter.escape_filter_chars\n\npython-ldap is a lightweight directory access protocol (LDAP) client API for Python. In versions prior to 3.4.5, the sanitization method `ldap.filter.escape_filter_chars` can be tricked to skip escaping of special characters when a crafted `list` or `dict` is supplied as the `assertion_value` parameter, and the non-default `escape_mode=1` is configured. The method `ldap.filter.escape_filter_chars` supports 3 different escaping modes. `escape_mode=0` (default) and `escape_mode=2` happen to raise \n\nPackage: python-ldap\nInstalled: 3.4.0\nFixed in: 3.4.5\nSeverity: MEDIUM\nFix: Upgrade python-ldap to 3.4.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-71eb88c822b3b3b0", "name": "CVE-2025-61912: python-ldap 3.4.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-61912: python-ldap 3.4.0 \u2014 requirements.txt"}, "fullDescription": {"text": "python-ldap: python-ldap Vulnerable to Improper Encoding or Escaping of Output and Improper Null Termination\n\npython-ldap is a lightweight directory access protocol (LDAP) client API for Python. In versions prior to 3.4.5, ldap.dn.escape_dn_chars() escapes \\x00 incorrectly by emitting a backslash followed by a literal NUL byte instead of the RFC-4514 hex form \\00. Any application that uses this helper to construct DNs from untrusted input can be made to consistently fail before a request is sent to the LDAP server (e.g., AD), resulting in a client-side denial of service. Version 3.4.5 contains a patch f\n\nPackage: python-ldap\nInstalled: 3.4.0\nFixed in: 3.4.5\nSeverity: MEDIUM\nFix: Upgrade python-ldap to 3.4.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0424f26b6b29ec7a", "name": "CVE-2025-61911: python-ldap 3.4.4 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-61911: python-ldap 3.4.4 \u2014 requirements.txt"}, "fullDescription": {"text": "python-ldap: sanitization bypass in ldap.filter.escape_filter_chars\n\npython-ldap is a lightweight directory access protocol (LDAP) client API for Python. In versions prior to 3.4.5, the sanitization method `ldap.filter.escape_filter_chars` can be tricked to skip escaping of special characters when a crafted `list` or `dict` is supplied as the `assertion_value` parameter, and the non-default `escape_mode=1` is configured. The method `ldap.filter.escape_filter_chars` supports 3 different escaping modes. `escape_mode=0` (default) and `escape_mode=2` happen to raise \n\nPackage: python-ldap\nInstalled: 3.4.4\nFixed in: 3.4.5\nSeverity: MEDIUM\nFix: Upgrade python-ldap to 3.4.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91b64a7b91a85233", "name": "CVE-2025-61912: python-ldap 3.4.4 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-61912: python-ldap 3.4.4 \u2014 requirements.txt"}, "fullDescription": {"text": "python-ldap: python-ldap Vulnerable to Improper Encoding or Escaping of Output and Improper Null Termination\n\npython-ldap is a lightweight directory access protocol (LDAP) client API for Python. In versions prior to 3.4.5, ldap.dn.escape_dn_chars() escapes \\x00 incorrectly by emitting a backslash followed by a literal NUL byte instead of the RFC-4514 hex form \\00. Any application that uses this helper to construct DNs from untrusted input can be made to consistently fail before a request is sent to the LDAP server (e.g., AD), resulting in a client-side denial of service. Version 3.4.5 contains a patch f\n\nPackage: python-ldap\nInstalled: 3.4.4\nFixed in: 3.4.5\nSeverity: MEDIUM\nFix: Upgrade python-ldap to 3.4.5"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce4d4909243831c3", "name": "CVE-2023-33733: reportlab 3.6.12 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-33733: reportlab 3.6.12 \u2014 requirements.txt"}, "fullDescription": {"text": "python-reportlab: remote code execution via supplying a crafted PDF file\n\nReportlab up to v3.6.12 allows attackers to execute arbitrary code via supplying a crafted PDF file.\n\nPackage: reportlab\nInstalled: 3.6.12\nFixed in: 3.6.13\nSeverity: HIGH\nFix: Upgrade reportlab to 3.6.13"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac77dcbae3b4cc38", "name": "CVE-2023-33733: reportlab 3.6.8 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-33733: reportlab 3.6.8 \u2014 requirements.txt"}, "fullDescription": {"text": "python-reportlab: remote code execution via supplying a crafted PDF file\n\nReportlab up to v3.6.12 allows attackers to execute arbitrary code via supplying a crafted PDF file.\n\nPackage: reportlab\nInstalled: 3.6.8\nFixed in: 3.6.13\nSeverity: HIGH\nFix: Upgrade reportlab to 3.6.13"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d32f06960d65e9e0", "name": "CVE-2023-32681: requests 2.25.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-32681: requests 2.25.1 \u2014 requirements.txt"}, "fullDescription": {"text": "python-requests: Unintended leak of Proxy-Authorization header\n\nRequests is a HTTP library. Since Requests 2.3.0, Requests has been leaking Proxy-Authorization headers to destination servers when redirected to an HTTPS endpoint. This is a product of how we use `rebuild_proxies` to reattach the `Proxy-Authorization` header to requests. For HTTP connections sent through the tunnel, the proxy will identify the header in the request itself and remove it prior to forwarding to the destination server. However when sent over HTTPS, the `Proxy-Authorization` header \n\nPackage: requests\nInstalled: 2.25.1\nFixed in: 2.31.0\nSeverity: MEDIUM\nFix: Upgrade requests to 2.31.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7dcfce5a75ee9123", "name": "CVE-2024-35195: requests 2.25.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-35195: requests 2.25.1 \u2014 requirements.txt"}, "fullDescription": {"text": "requests: subsequent requests to the same host ignore cert verification\n\nRequests is a HTTP library. Prior to 2.32.0, when making requests through a Requests `Session`, if the first request is made with `verify=False` to disable cert verification, all subsequent requests to the same host will continue to ignore cert verification regardless of changes to the value of `verify`. This behavior will continue for the lifecycle of the connection in the connection pool. This vulnerability is fixed in 2.32.0.\n\nPackage: requests\nInstalled: 2.25.1\nFixed in: 2.32.0\nSeverity: MEDIUM\nFix: Upgrade requests to 2.32.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dea1875b6510d8dc", "name": "CVE-2024-47081: requests 2.25.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-47081: requests 2.25.1 \u2014 requirements.txt"}, "fullDescription": {"text": "requests: Requests vulnerable to .netrc credentials leak via malicious URLs\n\nRequests is a HTTP library. Due to a URL parsing issue, Requests releases prior to 2.32.4 may leak .netrc credentials to third parties for specific maliciously-crafted URLs. Users should upgrade to version 2.32.4 to receive a fix. For older versions of Requests, use of the .netrc file can be disabled with `trust_env=False` on one's Requests Session.\n\nPackage: requests\nInstalled: 2.25.1\nFixed in: 2.32.4\nSeverity: MEDIUM\nFix: Upgrade requests to 2.32.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d01c66b402c6ea08", "name": "CVE-2026-25645: requests 2.25.1 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-25645: requests 2.25.1 \u2014 requirements.txt"}, "fullDescription": {"text": "requests: Requests: Security bypass due to predictable temporary file creation\n\nRequests is a HTTP library. Prior to version 2.33.0, the `requests.utils.extract_zipped_paths()` utility function uses a predictable filename when extracting files from zip archives into the system temporary directory. If the target file already exists, it is reused without validation. A local attacker with write access to the temp directory could pre-create a malicious file that would be loaded in place of the legitimate one. Standard usage of the Requests library is not affected by this vulner\n\nPackage: requests\nInstalled: 2.25.1\nFixed in: 2.33.0\nSeverity: MEDIUM\nFix: Upgrade requests to 2.33.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-763635a283d57e2f", "name": "CVE-2024-35195: requests 2.31.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-35195: requests 2.31.0 \u2014 requirements.txt"}, "fullDescription": {"text": "requests: subsequent requests to the same host ignore cert verification\n\nRequests is a HTTP library. Prior to 2.32.0, when making requests through a Requests `Session`, if the first request is made with `verify=False` to disable cert verification, all subsequent requests to the same host will continue to ignore cert verification regardless of changes to the value of `verify`. This behavior will continue for the lifecycle of the connection in the connection pool. This vulnerability is fixed in 2.32.0.\n\nPackage: requests\nInstalled: 2.31.0\nFixed in: 2.32.0\nSeverity: MEDIUM\nFix: Upgrade requests to 2.32.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6b6377288e394fb", "name": "CVE-2024-47081: requests 2.31.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-47081: requests 2.31.0 \u2014 requirements.txt"}, "fullDescription": {"text": "requests: Requests vulnerable to .netrc credentials leak via malicious URLs\n\nRequests is a HTTP library. Due to a URL parsing issue, Requests releases prior to 2.32.4 may leak .netrc credentials to third parties for specific maliciously-crafted URLs. Users should upgrade to version 2.32.4 to receive a fix. For older versions of Requests, use of the .netrc file can be disabled with `trust_env=False` on one's Requests Session.\n\nPackage: requests\nInstalled: 2.31.0\nFixed in: 2.32.4\nSeverity: MEDIUM\nFix: Upgrade requests to 2.32.4"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5acfce8451bf335", "name": "CVE-2026-25645: requests 2.31.0 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-25645: requests 2.31.0 \u2014 requirements.txt"}, "fullDescription": {"text": "requests: Requests: Security bypass due to predictable temporary file creation\n\nRequests is a HTTP library. Prior to version 2.33.0, the `requests.utils.extract_zipped_paths()` utility function uses a predictable filename when extracting files from zip archives into the system temporary directory. If the target file already exists, it is reused without validation. A local attacker with write access to the temp directory could pre-create a malicious file that would be loaded in place of the legitimate one. Standard usage of the Requests library is not affected by this vulner\n\nPackage: requests\nInstalled: 2.31.0\nFixed in: 2.33.0\nSeverity: MEDIUM\nFix: Upgrade requests to 2.33.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8969bb8ffb7c63e6", "name": "CVE-2023-43804: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-43804: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "python-urllib3: Cookie request header isn't stripped during cross-origin redirects\n\nurllib3 is a user-friendly HTTP client library for Python. urllib3 doesn't treat the `Cookie` HTTP header special or provide any helpers for managing cookies over HTTP, that is the responsibility of the user. However, it is possible for a user to specify a `Cookie` header and unknowingly leak information via HTTP redirects to a different origin if that user doesn't disable redirects explicitly. This issue has been patched in urllib3 version 1.26.17 or 2.0.5.\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.0.6, 1.26.17\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.0.6, 1.26.17"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4943ebf42b29ed2c", "name": "CVE-2025-66418: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66418: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3: Unbounded decompression chain leads to resource exhaustion\n\nurllib3 is a user-friendly HTTP client library for Python. Starting in version 1.24 and prior to 2.6.0, the number of links in the decompression chain was unbounded allowing a malicious server to insert a virtually unlimited number of compression steps leading to high CPU usage and massive memory allocation for the decompressed data. This vulnerability is fixed in 2.6.0.\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.6.0\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.6.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97e0eab3fc76ea02", "name": "CVE-2025-66471: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66471: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3 Streaming API improperly handles highly compressed data\n\nurllib3 is a user-friendly HTTP client library for Python. Starting in version 1.0 and prior to 2.6.0, the Streaming API improperly handles highly compressed data. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. When streaming a compressed response, urllib3 can perform decoding or decompression based on the HTTP Content-Encoding header (e.g., gzip, deflate, b\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.6.0\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.6.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a455b077603293e8", "name": "CVE-2026-21441: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-21441: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3 vulnerable to decompression-bomb safeguard bypass when following HTTP redirects (streaming API)\n\nurllib3 is an HTTP client library for Python. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. urllib3 can perform decoding or decompression based on the HTTP `Content-Encoding` header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming API, the library decompresses only the necessary bytes, enabling partial content consumption. Starting in ve\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.6.3\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.6.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d1a0d3d7aa878c12", "name": "CVE-2026-44431: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-44431: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3: Information disclosure via cross-origin redirects forwarding sensitive headers\n\nurllib3 is an HTTP client library for Python. From 1.23 to before 2.7.0, cross-origin redirects followed from the low-level API via ProxyManager.connection_from_url().urlopen(..., assert_same_host=False) still forward these sensitive headers. This vulnerability is fixed in 2.7.0.\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.7.0\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.7.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31a39ebcd35f0205", "name": "CVE-2023-45803: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2023-45803: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: Request body not stripped after redirect from 303 status changes request method to GET\n\nurllib3 is a user-friendly HTTP client library for Python. urllib3 previously wouldn't remove the HTTP request body when an HTTP redirect response using status 301, 302, or 303 after the request had its method changed from one that could accept a request body (like `POST`) to `GET` as is required by HTTP RFCs. Although this behavior is not specified in the section for redirects, it can be inferred by piecing together information from different sections and we have observed the behavior in other \n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.0.7, 1.26.18\nSeverity: MEDIUM\nFix: Upgrade urllib3 to 2.0.7, 1.26.18"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02a3432af8e800e8", "name": "CVE-2024-37891: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-37891: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: proxy-authorization request header is not stripped during cross-origin redirects\n\nurllib3 is a user-friendly HTTP client library for Python. When using urllib3's proxy support with `ProxyManager`, the `Proxy-Authorization` header is only sent to the configured proxy, as expected. However, when sending HTTP requests *without* using urllib3's proxy support, it's possible to accidentally configure the `Proxy-Authorization` header even though it won't have any effect as the request is not using a forwarding proxy or a tunneling proxy. In those cases, urllib3 doesn't treat the `Pr\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 1.26.19, 2.2.2\nSeverity: MEDIUM\nFix: Upgrade urllib3 to 1.26.19, 2.2.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4026e399dc634f85", "name": "CVE-2025-50181: urllib3 1.26.5 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-50181: urllib3 1.26.5 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation\n\nurllib3 is a user-friendly HTTP client library for Python. Prior to 2.5.0, it is possible to disable redirects for all requests by instantiating a PoolManager and specifying retries in a way that disable redirects. By default, requests and botocore users are not affected. An application attempting to mitigate SSRF or open redirect vulnerabilities by disabling redirects at the PoolManager level will remain vulnerable. This issue has been patched in version 2.5.0.\n\nPackage: urllib3\nInstalled: 1.26.5\nFixed in: 2.5.0\nSeverity: MEDIUM\nFix: Upgrade urllib3 to 2.5.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-39ebb853c9590a32", "name": "CVE-2025-66418: urllib3 2.0.7 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66418: urllib3 2.0.7 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3: Unbounded decompression chain leads to resource exhaustion\n\nurllib3 is a user-friendly HTTP client library for Python. Starting in version 1.24 and prior to 2.6.0, the number of links in the decompression chain was unbounded allowing a malicious server to insert a virtually unlimited number of compression steps leading to high CPU usage and massive memory allocation for the decompressed data. This vulnerability is fixed in 2.6.0.\n\nPackage: urllib3\nInstalled: 2.0.7\nFixed in: 2.6.0\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.6.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2731217d48f78201", "name": "CVE-2025-66471: urllib3 2.0.7 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-66471: urllib3 2.0.7 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3 Streaming API improperly handles highly compressed data\n\nurllib3 is a user-friendly HTTP client library for Python. Starting in version 1.0 and prior to 2.6.0, the Streaming API improperly handles highly compressed data. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. When streaming a compressed response, urllib3 can perform decoding or decompression based on the HTTP Content-Encoding header (e.g., gzip, deflate, b\n\nPackage: urllib3\nInstalled: 2.0.7\nFixed in: 2.6.0\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.6.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37132748d355dc65", "name": "CVE-2026-21441: urllib3 2.0.7 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-21441: urllib3 2.0.7 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3 vulnerable to decompression-bomb safeguard bypass when following HTTP redirects (streaming API)\n\nurllib3 is an HTTP client library for Python. urllib3's streaming API is designed for the efficient handling of large HTTP responses by reading the content in chunks, rather than loading the entire response body into memory at once. urllib3 can perform decoding or decompression based on the HTTP `Content-Encoding` header (e.g., `gzip`, `deflate`, `br`, or `zstd`). When using the streaming API, the library decompresses only the necessary bytes, enabling partial content consumption. Starting in ve\n\nPackage: urllib3\nInstalled: 2.0.7\nFixed in: 2.6.3\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.6.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ccc045460247335", "name": "CVE-2026-44431: urllib3 2.0.7 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2026-44431: urllib3 2.0.7 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3: Information disclosure via cross-origin redirects forwarding sensitive headers\n\nurllib3 is an HTTP client library for Python. From 1.23 to before 2.7.0, cross-origin redirects followed from the low-level API via ProxyManager.connection_from_url().urlopen(..., assert_same_host=False) still forward these sensitive headers. This vulnerability is fixed in 2.7.0.\n\nPackage: urllib3\nInstalled: 2.0.7\nFixed in: 2.7.0\nSeverity: HIGH\nFix: Upgrade urllib3 to 2.7.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21a320c5948b7474", "name": "CVE-2024-37891: urllib3 2.0.7 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2024-37891: urllib3 2.0.7 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: proxy-authorization request header is not stripped during cross-origin redirects\n\nurllib3 is a user-friendly HTTP client library for Python. When using urllib3's proxy support with `ProxyManager`, the `Proxy-Authorization` header is only sent to the configured proxy, as expected. However, when sending HTTP requests *without* using urllib3's proxy support, it's possible to accidentally configure the `Proxy-Authorization` header even though it won't have any effect as the request is not using a forwarding proxy or a tunneling proxy. In those cases, urllib3 doesn't treat the `Pr\n\nPackage: urllib3\nInstalled: 2.0.7\nFixed in: 1.26.19, 2.2.2\nSeverity: MEDIUM\nFix: Upgrade urllib3 to 1.26.19, 2.2.2"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4fd1acb5b771e5d", "name": "CVE-2025-50181: urllib3 2.0.7 \u2014 requirements.txt", "shortDescription": {"text": "CVE-2025-50181: urllib3 2.0.7 \u2014 requirements.txt"}, "fullDescription": {"text": "urllib3: urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation\n\nurllib3 is a user-friendly HTTP client library for Python. Prior to 2.5.0, it is possible to disable redirects for all requests by instantiating a PoolManager and specifying retries in a way that disable redirects. By default, requests and botocore users are not affected. An application attempting to mitigate SSRF or open redirect vulnerabilities by disabling redirects at the PoolManager level will remain vulnerable. This issue has been patched in version 2.5.0.\n\nPackage: urllib3\nInstalled: 2.0.7\nFixed in: 2.5.0\nSeverity: MEDIUM\nFix: Upgrade urllib3 to 2.5.0"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44d8c862013fd2e1", "name": "GHSA-4cc2-g9w2-fhf6: zeep 4.1.0 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-4cc2-g9w2-fhf6: zeep 4.1.0 \u2014 requirements.txt"}, "fullDescription": {"text": "Zeep: Server-Side Request Forgery (SSRF)\n\n## Summary\n\nWhen parsing a WSDL or XSD document, python-zeep follows transitive references \u2014 xsd:import, xsd:include, wsdl:import, and lxml entity/DTD resolution \u2014 and will fetch http/https URLs found in those references. The Settings.forbid_external option, intended to disable this transitive remote fetching, was defined but not wired to any logic from version 4.0.0 through 4.3.2 (a regression introduced when zeep moved off defusedxml in 4.0). As a result, setting `forbid_external=True` had no \n\nPackage: zeep\nInstalled: 4.1.0\nFixed in: 4.3.3\nSeverity: MEDIUM\nFix: Upgrade zeep to 4.3.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f93b15d9fc8f5159", "name": "GHSA-4cc2-g9w2-fhf6: zeep 4.2.1 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-4cc2-g9w2-fhf6: zeep 4.2.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Zeep: Server-Side Request Forgery (SSRF)\n\n## Summary\n\nWhen parsing a WSDL or XSD document, python-zeep follows transitive references \u2014 xsd:import, xsd:include, wsdl:import, and lxml entity/DTD resolution \u2014 and will fetch http/https URLs found in those references. The Settings.forbid_external option, intended to disable this transitive remote fetching, was defined but not wired to any logic from version 4.0.0 through 4.3.2 (a regression introduced when zeep moved off defusedxml in 4.0). As a result, setting `forbid_external=True` had no \n\nPackage: zeep\nInstalled: 4.2.1\nFixed in: 4.3.3\nSeverity: MEDIUM\nFix: Upgrade zeep to 4.3.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c25db23bc6981e7", "name": "GHSA-4cc2-g9w2-fhf6: zeep 4.3.1 \u2014 requirements.txt", "shortDescription": {"text": "GHSA-4cc2-g9w2-fhf6: zeep 4.3.1 \u2014 requirements.txt"}, "fullDescription": {"text": "Zeep: Server-Side Request Forgery (SSRF)\n\n## Summary\n\nWhen parsing a WSDL or XSD document, python-zeep follows transitive references \u2014 xsd:import, xsd:include, wsdl:import, and lxml entity/DTD resolution \u2014 and will fetch http/https URLs found in those references. The Settings.forbid_external option, intended to disable this transitive remote fetching, was defined but not wired to any logic from version 4.0.0 through 4.3.2 (a regression introduced when zeep moved off defusedxml in 4.0). As a result, setting `forbid_external=True` had no \n\nPackage: zeep\nInstalled: 4.3.1\nFixed in: 4.3.3\nSeverity: MEDIUM\nFix: Upgrade zeep to 4.3.3"}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91963e2a03e976dd", "name": "Secret leak: Asymmetric Private Key \u2014 addons/account_peppol/tools/private_key.pem", "shortDescription": {"text": "Secret leak: Asymmetric Private Key \u2014 addons/account_peppol/tools/private_key.pem"}, "fullDescription": {"text": "Trivy detected a possible secret in `addons/account_peppol/tools/private_key.pem`.\n\nRule: private-key\nSeverity: HIGH\nMatch (redacted): ****************************************************************\n\nAction: rotate the credential and remove it from the repo. Use a secrets manager or environment variables."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea8fcddc6425c3f9", "name": "Secret leak: Asymmetric Private Key \u2014 addons/iot_box_image/overwrite_after_init/etc/ssl/private/nginx-cert.key", "shortDescription": {"text": "Secret leak: Asymmetric Private Key \u2014 addons/iot_box_image/overwrite_after_init/etc/ssl/private/nginx-cert.key"}, "fullDescription": {"text": "Trivy detected a possible secret in `addons/iot_box_image/overwrite_after_init/etc/ssl/private/nginx-cert.key`.\n\nRule: private-key\nSeverity: HIGH\nMatch (redacted): ****************************************************************\n\nAction: rotate the credential and remove it from the repo. Use a secrets manager or environment variables."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a82aa16b56af3f1d", "name": "Secret leak: Asymmetric Private Key \u2014 addons/l10n_it_edi/data/pkey.key", "shortDescription": {"text": "Secret leak: Asymmetric Private Key \u2014 addons/l10n_it_edi/data/pkey.key"}, "fullDescription": {"text": "Trivy detected a possible secret in `addons/l10n_it_edi/data/pkey.key`.\n\nRule: private-key\nSeverity: HIGH\nMatch (redacted): ****************************************************************\n\nAction: rotate the credential and remove it from the repo. Use a secrets manager or environment variables."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e6d5842f9765076", "name": "Privileged port 993 in use", "shortDescription": {"text": "Privileged port 993 in use"}, "fullDescription": {"text": "Port 993 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04e58317aa463149", "name": "Insecure pattern 'exec_used' in setup.py:10", "shortDescription": {"text": "Insecure pattern 'exec_used' in setup.py:10"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8c8144f95de8e45d", "name": "Insecure pattern 'weak_hash' in odoo/addons/base/models/ir_attachment.py:476", "shortDescription": {"text": "Insecure pattern 'weak_hash' in odoo/addons/base/models/ir_attachment.py:476"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-997afdff993ac219", "name": "Insecure pattern 'tls_verify_false' in odoo/cli/deploy.py:77", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in odoo/cli/deploy.py:77"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-696a567ee5a273d6", "name": "Insecure pattern 'exec_used' in odoo/cli/shell.py:82", "shortDescription": {"text": "Insecure pattern 'exec_used' in odoo/cli/shell.py:82"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01cf9411792a62bd", "name": "Insecure pattern 'subprocess_shell_true' in odoo/service/server.py:1529", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in odoo/service/server.py:1529"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-089e0de226ea2a41", "name": "Insecure pattern 'subprocess_shell_true' in addons/iot_drivers/tools/upgrade.py:205", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in addons/iot_drivers/tools/upgrade.py:205"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79acebc1927e726f", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale_loyalty/static/src/interactions/checkout.js:16", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale_loyalty/static/src/interactions/checkout.js:16"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-31cc023c000ad570", "name": "Possible secret in addons/mail/static/lib/odoo_sfu/odoo_sfu.js", "shortDescription": {"text": "Possible secret in addons/mail/static/lib/odoo_sfu/odoo_sfu.js"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-282c65dc55188657", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/mail/static/src/core/common/message_model.js:559", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/mail/static/src/core/common/message_model.js:559"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-fa6c92f8c3bcf9d9", "name": "Possible secret in addons/l10n_es_edi_tbai/tests/common.py", "shortDescription": {"text": "Possible secret in addons/l10n_es_edi_tbai/tests/common.py"}, "fullDescription": {"text": "Detected 2 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-0ec7ed62c1c97b32", "name": "Insecure pattern 'domparser_html_parse' in addons/website_event/static/src/interactions/website_event_ticket_details.js:", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/website_event/static/src/interactions/website_event_ticket_details.js:90"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-d48d7c5b4b53a421", "name": "Insecure pattern 'domparser_html_parse' in addons/website_event/static/src/interactions/website_event_slot_details.js:10", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/website_event/static/src/interactions/website_event_slot_details.js:108"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-146d5f9eb090cadd", "name": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/js/utils.js:28", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/js/utils.js:28"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-7c96724af1024d02", "name": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/components/dialog/add_page_dialog.js:191", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/components/dialog/add_page_dialog.js:191"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-4b339d836c713ef2", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/website/static/src/builder/plugins/translation_plugin.js:368", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website/static/src/builder/plugins/translation_plugin.js:368"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-8ed5f67eceae563e", "name": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/builder/plugins/translation_plugin.js:340", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/builder/plugins/translation_plugin.js:340"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-4ab6a38e19d26ccc", "name": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/client_actions/website_preview/edit_website_systray", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/client_actions/website_preview/edit_website_systray_item.js:116"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-ffbb3c5f59ee80a9", "name": "Insecure pattern 'weak_hash' in addons/payment_asiapay/models/payment_provider.py:41", "shortDescription": {"text": "Insecure pattern 'weak_hash' in addons/payment_asiapay/models/payment_provider.py:41"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-01676e46c5a75c8b", "name": "Insecure pattern 'insert_adjacent_html' in addons/hr_homeworking_calendar/static/src/calendar/common/calendar_common_ren", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in addons/hr_homeworking_calendar/static/src/calendar/common/calendar_common_renderer.js:88"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-36806cceaf07d550", "name": "Insecure pattern 'weak_hash' in addons/certificate/models/key.py:13", "shortDescription": {"text": "Insecure pattern 'weak_hash' in addons/certificate/models/key.py:13"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96c75d4b2e315719", "name": "Insecure pattern 'weak_hash' in addons/auth_passkey/_vendor/webauthn/helpers/algorithms.py:10", "shortDescription": {"text": "Insecure pattern 'weak_hash' in addons/auth_passkey/_vendor/webauthn/helpers/algorithms.py:10"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0cc6cb223b20f076", "name": "Insecure pattern 'weak_hash' in addons/auth_passkey/_vendor/webauthn/helpers/tpm/structs.py:44", "shortDescription": {"text": "Insecure pattern 'weak_hash' in addons/auth_passkey/_vendor/webauthn/helpers/tpm/structs.py:44"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-183df042f9f93a52", "name": "Possible secret in addons/survey/tests/common.py", "shortDescription": {"text": "Possible secret in addons/survey/tests/common.py"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-f6850d6382710abe", "name": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_form.js:353", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_form.js:353"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-e7909247d2f2ca1e", "name": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_session_manage.js:429", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_session_manage.js:429"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-3dd3cdd30239fc60", "name": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_session_leaderboard.js:132", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_session_leaderboard.js:132"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-c8b2ff857c4b3670", "name": "Possible secret in addons/im_livechat/tests/common.py", "shortDescription": {"text": "Possible secret in addons/im_livechat/tests/common.py"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-4f8dea6fd473fa33", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_google_map/static/src/lib/markerclusterer.js:1073", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_google_map/static/src/lib/markerclusterer.js:1073"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-27dc50e9804dfccf", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/point_of_sale/static/src/app/utils/html-to-image.js:505", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/point_of_sale/static/src/app/utils/html-to-image.js:505"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-4c44f0a4fc71877f", "name": "Insecure pattern 'new_function_used' in addons/html_editor/static/lib/diff2html/diff2html.min.js:1", "shortDescription": {"text": "Insecure pattern 'new_function_used' in addons/html_editor/static/lib/diff2html/diff2html.min.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9682c4128d2b4860", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/fields/html_field.js:251", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/fields/html_field.js:251"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-aa808508d1d0533e", "name": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/fields/html_field.js:46", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/fields/html_field.js:46"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-33c9d1f69ccb3c9c", "name": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/utils/html.js:9", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/utils/html.js:9"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-97c312fee66f5198", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/components/html_viewer/html_viewer.js:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/components/html_viewer/html_viewer.js:200"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-2c2a13c20493af3b", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/core/clipboard_plugin.js:473", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/core/clipboard_plugin.js:473"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-d95eb4568696b244", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/public/html_migrations/html_migrations_i", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/public/html_migrations/html_migrations_interaction.js:47"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-57a0b4e5a202399c", "name": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/main/link/link_plugin.js:96", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/main/link/link_plugin.js:96"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-1201cba91c81509f", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/others/collaboration/collaboration_odoo_", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:601"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-1d05a67dc35dfc49", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/others/embedded_components/core/syntax_h", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/others/embedded_components/core/syntax_highlighting/syntax_highlighting_utils.js:80"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-9c0c10b597929ad1", "name": "Insecure pattern 'weak_hash' in addons/cloud_storage_google/utils/cloud_storage_google_utils.py:222", "shortDescription": {"text": "Insecure pattern 'weak_hash' in addons/cloud_storage_google/utils/cloud_storage_google_utils.py:222"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e2ebd3bf70c61319", "name": "Possible secret in addons/web/static/tests/_framework/mock_server/mock_models/res_users.js", "shortDescription": {"text": "Possible secret in addons/web/static/tests/_framework/mock_server/mock_models/res_users.js"}, "fullDescription": {"text": "Detected 2 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-cffae6db40d957f4", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/dompurify/DOMpurify.js:914", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/dompurify/DOMpurify.js:914"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-f47a27627866d7a2", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/qunit/qunit-2.9.1.js:4464", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/qunit/qunit-2.9.1.js:4464"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-31ab9d05e52f592b", "name": "Insecure pattern 'dangerous_innerhtml' in addons/web/static/lib/fullcalendar/core/index.global.js:3027", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in addons/web/static/lib/fullcalendar/core/index.global.js:3027"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-978380b489fee583", "name": "Insecure pattern 'new_function_used' in addons/web/static/lib/owl/owl.js:5857", "shortDescription": {"text": "Insecure pattern 'new_function_used' in addons/web/static/lib/owl/owl.js:5857"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ace798a4b0d52f2d", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/owl/owl.js:1463", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/owl/owl.js:1463"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-86265b65507fda9b", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/prismjs/prism.js:592", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/prismjs/prism.js:592"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-c60c4f946ba6d7e7", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/pdfjs/web/viewer.js:2394", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/pdfjs/web/viewer.js:2394"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-fa3cbce0a5a681c4", "name": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/core/file_upload/file_upload_service.js:95", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/core/file_upload/file_upload_service.js:95"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-9ec8eb13a2326e10", "name": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/core/network/download.js:544", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/core/network/download.js:544"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-af0d03045e4c149f", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/src/core/utils/html.js:256", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/src/core/utils/html.js:256"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-e97ed6826c250e7a", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/src/public/colibri.js:187", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/src/public/colibri.js:187"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-ebcd62c6a1f4639c", "name": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/webclient/debug/profiling/profiling_qweb.js:304", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/webclient/debug/profiling/profiling_qweb.js:304"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-630a10b6742ea220", "name": "Insecure pattern 'domparser_html_parse' in addons/html_builder/static/src/snippets/snippet_service.js:154", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_builder/static/src/snippets/snippet_service.js:154"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-08b9598aa4360fc6", "name": "Insecure pattern 'exec_used' in addons/html_builder/static/src/core/operation.js:40", "shortDescription": {"text": "Insecure pattern 'exec_used' in addons/html_builder/static/src/core/operation.js:40"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba2d51c947c44e94", "name": "Insecure pattern 'domparser_html_parse' in addons/html_builder/static/src/plugins/many2one_option_plugin.js:71", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_builder/static/src/plugins/many2one_option_plugin.js:71"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-0d01a8934864d469", "name": "Possible secret in addons/account/tests/common.py", "shortDescription": {"text": "Possible secret in addons/account/tests/common.py"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-22d89cc8730a74d3", "name": "Insecure pattern 'document_write' in addons/account_edi/models/account_edi_document.py:122", "shortDescription": {"text": "Insecure pattern 'document_write' in addons/account_edi/models/account_edi_document.py:122"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7937351971f12313", "name": "Insecure pattern 'direct_outerhtml_assignment' in addons/website_slides/static/src/interactions/course_page.js:68", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in addons/website_slides/static/src/interactions/course_page.js:68"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-9e55a3a43c28e2d5", "name": "Insecure pattern 'eval_used' in addons/partner_autocomplete/static/lib/jsvat.js:246", "shortDescription": {"text": "Insecure pattern 'eval_used' in addons/partner_autocomplete/static/lib/jsvat.js:246"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed38a7cf740422f9", "name": "Possible secret in addons/hr_holidays/tests/common.py", "shortDescription": {"text": "Possible secret in addons/hr_holidays/tests/common.py"}, "fullDescription": {"text": "Detected 2 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-3dba527c9ffab1c7", "name": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/js/variant_mixin.js:375", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/js/variant_mixin.js:375"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-b0fac36105795849", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale/static/src/js/website_sale_utils.js:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale/static/src/js/website_sale_utils.js:117"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-1c84e49c74b527b4", "name": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/js/website_sale_utils.js:132", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/js/website_sale_utils.js:132"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-93dc48ac5f162b95", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale/static/src/interactions/checkout.js:91", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale/static/src/interactions/checkout.js:91"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-d1a1a5e1119ecafd", "name": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/interactions/website_sale.js:269", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/interactions/website_sale.js:269"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-ab7b9494c37820b6", "name": "Possible secret in addons/analytic/tests/common.py", "shortDescription": {"text": "Possible secret in addons/analytic/tests/common.py"}, "fullDescription": {"text": "Detected 1 occurrence(s) matching password_literal. Rotate real credentials and move them to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.58}}, {"id": "scanner-2de387b34b024359", "name": "Insecure pattern 'direct_innerhtml_assignment' in addons/payment/static/src/interactions/payment_form.js:489", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/payment/static/src/interactions/payment_form.js:489"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 0.65}}, {"id": "scanner-9e7cd0c3669210a0", "name": "Insecure pattern 'subprocess_shell_true' in doc/cla/stats.py:29", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in doc/cla/stats.py:29"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c020c811b669b269", "name": "Insecure pattern 'exec_used' in setup/package.py:31", "shortDescription": {"text": "Insecure pattern 'exec_used' in setup/package.py:31"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74979cce51840597", "name": "Very large file: odoo/http.py (2901 lines)", "shortDescription": {"text": "Very large file: odoo/http.py (2901 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-434ed0963fbc65f5", "name": "Very large file: odoo/tests/common.py (2770 lines)", "shortDescription": {"text": "Very large file: odoo/tests/common.py (2770 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e510da6e4851698", "name": "Very large file: odoo/addons/base/models/ir_qweb.py (3058 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_qweb.py (3058 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a112f0144c2dd7a", "name": "Very large file: odoo/addons/base/models/ir_module.py (1101 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_module.py (1101 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd085dd3d9a158b5", "name": "Very large file: odoo/addons/base/models/ir_actions.py (1463 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_actions.py (1463 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0502480232bf8c7e", "name": "Very large file: odoo/addons/base/models/ir_actions_report.py (1217 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_actions_report.py (1217 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa7db75b43bcfa50", "name": "Very large file: odoo/addons/base/models/ir_mail_server.py (991 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_mail_server.py (991 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f48ffcc5015486e6", "name": "Very large file: odoo/addons/base/models/res_partner.py (1267 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/res_partner.py (1267 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38f4e72736717812", "name": "Very large file: odoo/addons/base/models/res_users.py (1843 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/res_users.py (1843 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cc63295d2bb13b9", "name": "Very large file: odoo/addons/base/models/ir_model.py (2725 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_model.py (2725 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a02655a485a6311", "name": "Very large file: odoo/addons/base/models/ir_ui_view.py (3623 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/models/ir_ui_view.py (3623 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd148deedd1f4b39", "name": "Very large file: odoo/addons/base/tests/test_views.py (6126 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/tests/test_views.py (6126 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff69f5560d4a8288", "name": "Very large file: odoo/addons/base/tests/test_res_partner.py (1318 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/tests/test_res_partner.py (1318 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba173984f48f31f1", "name": "Very large file: odoo/addons/base/tests/test_translate.py (2001 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/tests/test_translate.py (2001 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a8940b07d4511e6", "name": "Very large file: odoo/addons/base/tests/test_expression.py (2848 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/tests/test_expression.py (2848 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82863c3c356dd792", "name": "Very large file: odoo/addons/base/tests/test_qweb.py (2537 lines)", "shortDescription": {"text": "Very large file: odoo/addons/base/tests/test_qweb.py (2537 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b203f049a4f0e28", "name": "Very large file: odoo/addons/test_read_group/tests/test_formatted_read_group.py (2309 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_read_group/tests/test_formatted_read_group.py (2309 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5f64c9b48488876", "name": "Very large file: odoo/addons/test_read_group/tests/test_private_read_group.py (1517 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_read_group/tests/test_private_read_group.py (1517 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e47ece20b8cd3cf", "name": "Very large file: odoo/addons/test_assetsbundle/tests/test_assetsbundle.py (2107 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_assetsbundle/tests/test_assetsbundle.py (2107 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-545a26a4b37ddcb6", "name": "Very large file: odoo/addons/test_orm/models/test_orm.py (2537 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_orm/models/test_orm.py (2537 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-14c97414a0d763c7", "name": "Very large file: odoo/addons/test_orm/tests/test_onchange.py (1397 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_orm/tests/test_onchange.py (1397 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c3998a59d359592", "name": "Very large file: odoo/addons/test_orm/tests/test_fields.py (5408 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_orm/tests/test_fields.py (5408 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9b0cd4f1a153092", "name": "Very large file: odoo/addons/test_orm/tests/test_search.py (1960 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_orm/tests/test_search.py (1960 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8538d392659d48a8", "name": "Very large file: odoo/addons/test_orm/tests/test_properties.py (3521 lines)", "shortDescription": {"text": "Very large file: odoo/addons/test_orm/tests/test_properties.py (3521 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-668c5bfa4cb7f449", "name": "Very large file: odoo/upgrade_code/18.3-00-l10n-fiscal-position-taxes.py (1170 lines)", "shortDescription": {"text": "Very large file: odoo/upgrade_code/18.3-00-l10n-fiscal-position-taxes.py (1170 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba48bad6ca78a670", "name": "Very large file: odoo/orm/registry.py (1269 lines)", "shortDescription": {"text": "Very large file: odoo/orm/registry.py (1269 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29354a46da42bd72", "name": "Very large file: odoo/orm/models.py (7130 lines)", "shortDescription": {"text": "Very large file: odoo/orm/models.py (7130 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcbaa194bb5ab39d", "name": "Very large file: odoo/orm/fields.py (1937 lines)", "shortDescription": {"text": "Very large file: odoo/orm/fields.py (1937 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed302b229c3ad16f", "name": "Very large file: odoo/orm/domains.py (2023 lines)", "shortDescription": {"text": "Very large file: odoo/orm/domains.py (2023 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-715a4993fdc1c597", "name": "Very large file: odoo/orm/fields_relational.py (1779 lines)", "shortDescription": {"text": "Very large file: odoo/orm/fields_relational.py (1779 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82f85de76f336689", "name": "Very large file: odoo/service/server.py (1685 lines)", "shortDescription": {"text": "Very large file: odoo/service/server.py (1685 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-520ca2e35d12dc1a", "name": "Very large file: odoo/tools/translate.py (1994 lines)", "shortDescription": {"text": "Very large file: odoo/tools/translate.py (1994 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d77a24c6554d87d9", "name": "Very large file: odoo/tools/misc.py (1989 lines)", "shortDescription": {"text": "Very large file: odoo/tools/misc.py (1989 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34c3e158c5211d4c", "name": "Very large file: odoo/tools/config.py (1079 lines)", "shortDescription": {"text": "Very large file: odoo/tools/config.py (1079 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cb73c30444b9448", "name": "Very large file: addons/test_import_export/tests/test_import.py (1304 lines)", "shortDescription": {"text": "Very large file: addons/test_import_export/tests/test_import.py (1304 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9892f3508b4b4ed3", "name": "Very large file: addons/test_import_export/tests/test_load.py (1793 lines)", "shortDescription": {"text": "Very large file: addons/test_import_export/tests/test_load.py (1793 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f45b3a0519e7bfe", "name": "Very large file: addons/test_mail/tests/test_performance.py (2015 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_performance.py (2015 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-767c7564d72b4835", "name": "Very large file: addons/test_mail/tests/test_mail_mail.py (1186 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_mail.py (1186 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2fff4a2a3a3d669", "name": "Very large file: addons/test_mail/tests/test_message_track.py (1165 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_message_track.py (1165 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9c1d9ea6046472d", "name": "Very large file: addons/test_mail/tests/test_mail_followers.py (1070 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_followers.py (1070 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99224a2314603043", "name": "Very large file: addons/test_mail/tests/test_mail_gateway.py (2781 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_gateway.py (2781 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cba8f8b0ec66585a", "name": "Very large file: addons/test_mail/tests/test_mail_composer.py (3806 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_composer.py (3806 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b71a9c2f31fdcc79", "name": "Very large file: addons/test_mail/tests/test_mail_thread_internals.py (1620 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_thread_internals.py (1620 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9927ff524ef30466", "name": "Very large file: addons/test_mail/tests/test_mail_alias.py (1060 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_alias.py (1060 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f8caac4066308d2", "name": "Very large file: addons/test_mail/tests/test_mail_activity.py (966 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_mail_activity.py (966 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eac7bb101b55877c", "name": "Very large file: addons/test_mail/tests/test_message_post.py (2460 lines)", "shortDescription": {"text": "Very large file: addons/test_mail/tests/test_message_post.py (2460 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe99b756560b3da9", "name": "Very large file: addons/mail/models/mail_mail.py (1007 lines)", "shortDescription": {"text": "Very large file: addons/mail/models/mail_mail.py (1007 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81a3af263d14642a", "name": "Very large file: addons/mail/models/mail_message.py (1475 lines)", "shortDescription": {"text": "Very large file: addons/mail/models/mail_message.py (1475 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a102efd097f47db", "name": "Very large file: addons/mail/models/mail_thread.py (5118 lines)", "shortDescription": {"text": "Very large file: addons/mail/models/mail_thread.py (5118 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50939110048de98d", "name": "Very large file: addons/mail/models/discuss/discuss_channel.py (1690 lines)", "shortDescription": {"text": "Very large file: addons/mail/models/discuss/discuss_channel.py (1690 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acec5838d1774b2b", "name": "Very large file: addons/mail/tests/common.py (2107 lines)", "shortDescription": {"text": "Very large file: addons/mail/tests/common.py (2107 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb0e1829082ed1dd", "name": "Very large file: addons/mail/tests/discuss/test_rtc.py (1295 lines)", "shortDescription": {"text": "Very large file: addons/mail/tests/discuss/test_rtc.py (1295 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0fc23002053de03", "name": "Very large file: addons/mail/tests/discuss/test_discuss_channel.py (1045 lines)", "shortDescription": {"text": "Very large file: addons/mail/tests/discuss/test_discuss_channel.py (1045 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76f67bd2f01e0ca7", "name": "Very large file: addons/mail/static/tests/suggestion/suggestion.test.js (1406 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/suggestion/suggestion.test.js (1406 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5c98a3058dd5ac2", "name": "Very large file: addons/mail/static/tests/composer/composer.test.js (1944 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/composer/composer.test.js (1944 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e81579b3ffa4e2bd", "name": "Very large file: addons/mail/static/tests/mock_server/mail_mock_server.js (1714 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/mock_server/mail_mock_server.js (1714 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7a5e88323b93a24", "name": "Very large file: addons/mail/static/tests/message/message.test.js (2441 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/message/message.test.js (2441 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5b942390af0b02d", "name": "Very large file: addons/mail/static/tests/inline/convert_inline.test.js (1572 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/inline/convert_inline.test.js (1572 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0207d0344da3e350", "name": "Very large file: addons/mail/static/tests/discuss/call/call.test.js (1319 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/discuss/call/call.test.js (1319 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ba3dff7ee6a3f82", "name": "Very large file: addons/mail/static/tests/core/record.test.js (1487 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/core/record.test.js (1487 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ecd79937f8b948a", "name": "Very large file: addons/mail/static/tests/discuss_app/sidebar.test.js (1399 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/discuss_app/sidebar.test.js (1399 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a206e45144fa325", "name": "Very large file: addons/mail/static/tests/discuss_app/discuss.test.js (2566 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/discuss_app/discuss.test.js (2566 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a3c104a489bf565", "name": "Very large file: addons/mail/static/tests/messaging_menu/messaging_menu.test.js (1408 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/tests/messaging_menu/messaging_menu.test.js (1408 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e4cbc438c902788", "name": "Very large file: addons/mail/static/lib/lame/lame.js (15524 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/lib/lame/lame.js (15524 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f21efd42a3c21059", "name": "Very large file: addons/mail/static/lib/odoo_sfu/odoo_sfu.js (13832 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/lib/odoo_sfu/odoo_sfu.js (13832 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df6de0896f34017a", "name": "Very large file: addons/mail/static/src/discuss/call/common/rtc_service.js (2461 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/src/discuss/call/common/rtc_service.js (2461 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6924026d7a24a54a", "name": "Very large file: addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js (2213 lines)", "shortDescription": {"text": "Very large file: addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js (2213 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfc887d63c02a462", "name": "Very large file: addons/mail/wizard/mail_compose_message.py (1635 lines)", "shortDescription": {"text": "Very large file: addons/mail/wizard/mail_compose_message.py (1635 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25826457bd431cbc", "name": "Very large file: addons/stock_picking_batch/tests/test_batch_picking.py (1339 lines)", "shortDescription": {"text": "Very large file: addons/stock_picking_batch/tests/test_batch_picking.py (1339 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ba9418e93c1259d", "name": "Very large file: addons/sale_loyalty/models/sale_order.py (1566 lines)", "shortDescription": {"text": "Very large file: addons/sale_loyalty/models/sale_order.py (1566 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b395ce1c1d08b7f1", "name": "Very large file: addons/sale_loyalty/tests/test_program_numbers.py (2076 lines)", "shortDescription": {"text": "Very large file: addons/sale_loyalty/tests/test_program_numbers.py (2076 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa078ee0140659de", "name": "Very large file: addons/sale_loyalty/tests/test_loyalty.py (1333 lines)", "shortDescription": {"text": "Very large file: addons/sale_loyalty/tests/test_loyalty.py (1333 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b96d0ff76560d40e", "name": "Very large file: addons/account_edi_ubl_cii/models/account_edi_common.py (1155 lines)", "shortDescription": {"text": "Very large file: addons/account_edi_ubl_cii/models/account_edi_common.py (1155 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d9b4d831d20d13c", "name": "Very large file: addons/account_edi_ubl_cii/models/account_edi_ubl.py (4038 lines)", "shortDescription": {"text": "Very large file: addons/account_edi_ubl_cii/models/account_edi_ubl.py (4038 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fcf3fc97b3a32a6", "name": "Very large file: addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py (1319 lines)", "shortDescription": {"text": "Very large file: addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py (1319 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13fadcd6baadf1d8", "name": "Very large file: addons/pos_sale/tests/test_pos_sale_flow.py (2601 lines)", "shortDescription": {"text": "Very large file: addons/pos_sale/tests/test_pos_sale_flow.py (2601 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d9bf333cb00eb0d", "name": "Very large file: addons/product/models/product_product.py (1197 lines)", "shortDescription": {"text": "Very large file: addons/product/models/product_product.py (1197 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a36d9785fec975f", "name": "Very large file: addons/product/models/product_template.py (1598 lines)", "shortDescription": {"text": "Very large file: addons/product/models/product_template.py (1598 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d547421e764341f5", "name": "Very large file: addons/product/tests/test_variants.py (1750 lines)", "shortDescription": {"text": "Very large file: addons/product/tests/test_variants.py (1750 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e3932a4bbc100bb", "name": "Very large file: addons/purchase_mrp/tests/test_purchase_mrp_flow.py (1466 lines)", "shortDescription": {"text": "Very large file: addons/purchase_mrp/tests/test_purchase_mrp_flow.py (1466 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba1747583ff03744", "name": "Very large file: addons/sale/models/sale_order_line.py (1853 lines)", "shortDescription": {"text": "Very large file: addons/sale/models/sale_order_line.py (1853 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05d8660fad19d466", "name": "Very large file: addons/sale/models/sale_order.py (2302 lines)", "shortDescription": {"text": "Very large file: addons/sale/models/sale_order.py (2302 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f88561310b3d06e", "name": "Very large file: addons/sale/tests/test_sale_to_invoice.py (1543 lines)", "shortDescription": {"text": "Very large file: addons/sale/tests/test_sale_to_invoice.py (1543 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1de7c71909ddb16", "name": "Very large file: addons/sale/tests/test_taxes_downpayment.py (1204 lines)", "shortDescription": {"text": "Very large file: addons/sale/tests/test_taxes_downpayment.py (1204 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c1be70c6c7f5ca9", "name": "Very large file: addons/sale/tests/test_sale_order.py (1222 lines)", "shortDescription": {"text": "Very large file: addons/sale/tests/test_sale_order.py (1222 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e29f95c965dbfd54", "name": "Very large file: addons/sale/tests/test_sale_prices.py (1383 lines)", "shortDescription": {"text": "Very large file: addons/sale/tests/test_sale_prices.py (1383 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9528cbdf9ca5fd5a", "name": "Very large file: addons/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py (1132 lines)", "shortDescription": {"text": "Very large file: addons/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py (1132 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d85a42f569c4f8bb", "name": "Very large file: addons/l10n_es_edi_verifactu/models/verifactu_document.py (1215 lines)", "shortDescription": {"text": "Very large file: addons/l10n_es_edi_verifactu/models/verifactu_document.py (1215 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5800641c2cdbf87e", "name": "Very large file: addons/sale_stock/tests/test_anglo_saxon_valuation.py (1830 lines)", "shortDescription": {"text": "Very large file: addons/sale_stock/tests/test_anglo_saxon_valuation.py (1830 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3504f7496480502", "name": "Very large file: addons/sale_stock/tests/test_sale_stock.py (2765 lines)", "shortDescription": {"text": "Very large file: addons/sale_stock/tests/test_sale_stock.py (2765 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b337f55d82c48ec", "name": "Very large file: addons/purchase_stock/tests/test_reordering_rule.py (1506 lines)", "shortDescription": {"text": "Very large file: addons/purchase_stock/tests/test_reordering_rule.py (1506 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c9ceb8c342572b0", "name": "Very large file: addons/website/models/website.py (2430 lines)", "shortDescription": {"text": "Very large file: addons/website/models/website.py (2430 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d78ecca62ed18ab8", "name": "Very large file: addons/website/tests/test_views.py (1807 lines)", "shortDescription": {"text": "Very large file: addons/website/tests/test_views.py (1807 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe30ca5725c4c46d", "name": "Very large file: addons/website/static/tests/tours/website_form_editor.js (1358 lines)", "shortDescription": {"text": "Very large file: addons/website/static/tests/tours/website_form_editor.js (1358 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da2ab2c1a8a9a0ea", "name": "Very large file: addons/website/static/src/builder/plugins/form/form_option_plugin.js (1442 lines)", "shortDescription": {"text": "Very large file: addons/website/static/src/builder/plugins/form/form_option_plugin.js (1442 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee05f0bced900ff6", "name": "Very large file: addons/website/controllers/main.py (1424 lines)", "shortDescription": {"text": "Very large file: addons/website/controllers/main.py (1424 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-015d7915db41258a", "name": "Very large file: addons/l10n_it_edi/models/account_move.py (2613 lines)", "shortDescription": {"text": "Very large file: addons/l10n_it_edi/models/account_move.py (2613 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55eae2af38542409", "name": "Very large file: addons/base_import/models/base_import.py (1803 lines)", "shortDescription": {"text": "Very large file: addons/base_import/models/base_import.py (1803 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa048067ba73133c", "name": "Very large file: addons/base_import/static/tests/import_action.test.js (1809 lines)", "shortDescription": {"text": "Very large file: addons/base_import/static/tests/import_action.test.js (1809 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4834e8fcc361c9f", "name": "Very large file: addons/l10n_fr_pdp/tests/test_flow_lifecycle.py (2043 lines)", "shortDescription": {"text": "Very large file: addons/l10n_fr_pdp/tests/test_flow_lifecycle.py (2043 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5084f384eaf3f60d", "name": "Very large file: addons/survey/models/survey_survey.py (1313 lines)", "shortDescription": {"text": "Very large file: addons/survey/models/survey_survey.py (1313 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c487f01557a2812", "name": "Very large file: addons/survey/static/src/interactions/survey_form.js (1512 lines)", "shortDescription": {"text": "Very large file: addons/survey/static/src/interactions/survey_form.js (1512 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00f3bba10b59fc56", "name": "Very large file: addons/survey/controllers/main.py (930 lines)", "shortDescription": {"text": "Very large file: addons/survey/controllers/main.py (930 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c02db414518c31a3", "name": "Very large file: addons/stock/models/stock_move_line.py (1239 lines)", "shortDescription": {"text": "Very large file: addons/stock/models/stock_move_line.py (1239 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6019be232831329d", "name": "Very large file: addons/stock/models/stock_warehouse.py (1164 lines)", "shortDescription": {"text": "Very large file: addons/stock/models/stock_warehouse.py (1164 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1df15e24af5a18c", "name": "Very large file: addons/stock/models/stock_move.py (2828 lines)", "shortDescription": {"text": "Very large file: addons/stock/models/stock_move.py (2828 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a76817e4a5af54e5", "name": "Very large file: addons/stock/models/stock_quant.py (1563 lines)", "shortDescription": {"text": "Very large file: addons/stock/models/stock_quant.py (1563 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-351552905369855b", "name": "Very large file: addons/stock/models/stock_picking.py (2149 lines)", "shortDescription": {"text": "Very large file: addons/stock/models/stock_picking.py (2149 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d52badde1ea3a46", "name": "Very large file: addons/stock/models/product.py (1406 lines)", "shortDescription": {"text": "Very large file: addons/stock/models/product.py (1406 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1003bd883d973728", "name": "Very large file: addons/stock/tests/test_packing.py (2229 lines)", "shortDescription": {"text": "Very large file: addons/stock/tests/test_packing.py (2229 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2a0ea739422f879", "name": "Very large file: addons/stock/tests/test_report.py (2144 lines)", "shortDescription": {"text": "Very large file: addons/stock/tests/test_report.py (2144 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3f1775131128f3c", "name": "Very large file: addons/stock/tests/test_move2.py (3753 lines)", "shortDescription": {"text": "Very large file: addons/stock/tests/test_move2.py (3753 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11f00428e7b3e9bb", "name": "Very large file: addons/stock/tests/test_stock_flow.py (2892 lines)", "shortDescription": {"text": "Very large file: addons/stock/tests/test_stock_flow.py (2892 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf882649b78f8767", "name": "Very large file: addons/stock/tests/test_quant.py (1825 lines)", "shortDescription": {"text": "Very large file: addons/stock/tests/test_quant.py (1825 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-057651f48e1b4e61", "name": "Very large file: addons/stock/tests/test_move.py (7024 lines)", "shortDescription": {"text": "Very large file: addons/stock/tests/test_move.py (7024 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e351e56a4536581a", "name": "Very large file: addons/microsoft_calendar/tests/test_update_events.py (1525 lines)", "shortDescription": {"text": "Very large file: addons/microsoft_calendar/tests/test_update_events.py (1525 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db0a91ce1509f901", "name": "Very large file: addons/l10n_hu_edi/models/account_move.py (1061 lines)", "shortDescription": {"text": "Very large file: addons/l10n_hu_edi/models/account_move.py (1061 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6627592bd70b774f", "name": "Very large file: addons/hr_recruitment/models/hr_applicant.py (1116 lines)", "shortDescription": {"text": "Very large file: addons/hr_recruitment/models/hr_applicant.py (1116 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a2dcde6ab5d8baf", "name": "Very large file: addons/test_base_automation/tests/test_flow.py (1898 lines)", "shortDescription": {"text": "Very large file: addons/test_base_automation/tests/test_flow.py (1898 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bbfa54b138ef69c", "name": "Very large file: addons/stock_account/tests/test_stockvaluation.py (3671 lines)", "shortDescription": {"text": "Very large file: addons/stock_account/tests/test_stockvaluation.py (3671 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d99711479c5c482", "name": "Very large file: addons/base_automation/models/base_automation.py (1207 lines)", "shortDescription": {"text": "Very large file: addons/base_automation/models/base_automation.py (1207 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e31638a77b0d408e", "name": "Very large file: addons/point_of_sale/models/pos_order.py (2022 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/models/pos_order.py (2022 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b76b703e8cb0693", "name": "Very large file: addons/point_of_sale/models/pos_session.py (2002 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/models/pos_session.py (2002 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90ed35dbf48c3ecb", "name": "Very large file: addons/point_of_sale/models/pos_config.py (1283 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/models/pos_config.py (1283 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a06b589c43085f4", "name": "Very large file: addons/point_of_sale/tests/test_frontend.py (4075 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/tests/test_frontend.py (4075 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b3e1818009d5d20", "name": "Very large file: addons/point_of_sale/tests/test_pos_basic_config.py (1501 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/tests/test_pos_basic_config.py (1501 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ce0b3fa01655f07", "name": "Very large file: addons/point_of_sale/tests/test_point_of_sale_flow.py (2948 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/tests/test_point_of_sale_flow.py (2948 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b44f8c442c30e241", "name": "Very large file: addons/point_of_sale/static/tests/pos/tours/product_screen_tour.js (1327 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/static/tests/pos/tours/product_screen_tour.js (1327 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d00eb5a09deb261", "name": "Very large file: addons/point_of_sale/static/lib/qrcode.js (1472 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/static/lib/qrcode.js (1472 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-948b2fd26538f2a4", "name": "Very large file: addons/point_of_sale/static/src/app/services/pos_store.js (3155 lines)", "shortDescription": {"text": "Very large file: addons/point_of_sale/static/src/app/services/pos_store.js (3155 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69a3c76f624e3669", "name": "Very large file: addons/l10n_my_edi/models/myinvois_document.py (1126 lines)", "shortDescription": {"text": "Very large file: addons/l10n_my_edi/models/myinvois_document.py (1126 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d4b763bad2d4c2d", "name": "Very large file: addons/test_discuss_full/tests/test_performance.py (1864 lines)", "shortDescription": {"text": "Very large file: addons/test_discuss_full/tests/test_performance.py (1864 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28a10b820b281d66", "name": "Very large file: addons/html_editor/static/tests/collaboration.test.js (1911 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/collaboration.test.js (1911 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-179b04f32fe71dfb", "name": "Very large file: addons/html_editor/static/tests/html_field.test.js (2862 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/html_field.test.js (2862 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a51e71c7f6f66c06", "name": "Very large file: addons/html_editor/static/tests/selection.test.js (1447 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/selection.test.js (1447 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db3526b695e31154", "name": "Very large file: addons/html_editor/static/tests/history.test.js (1212 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/history.test.js (1212 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-19425319d5f8d3ef", "name": "Very large file: addons/html_editor/static/tests/color_selector.test.js (1429 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/color_selector.test.js (1429 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ea9b6af5ea4a225", "name": "Very large file: addons/html_editor/static/tests/syntax_highlighting.test.js (1441 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/syntax_highlighting.test.js (1441 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-298e6edfb3f035f7", "name": "Very large file: addons/html_editor/static/tests/embedded_components.test.js (1789 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/embedded_components.test.js (1789 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2669673d93695f48", "name": "Very large file: addons/html_editor/static/tests/odoo_collaboration.test.js (1214 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/odoo_collaboration.test.js (1214 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47410fd44d6be238", "name": "Very large file: addons/html_editor/static/tests/caption.test.js (1519 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/caption.test.js (1519 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34c3f7f7935067d4", "name": "Very large file: addons/html_editor/static/tests/paste.test.js (4835 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/paste.test.js (4835 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc645e473220cb76", "name": "Very large file: addons/html_editor/static/tests/toolbar.test.js (2256 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/toolbar.test.js (2256 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36530d29664cf9d3", "name": "Very large file: addons/html_editor/static/tests/embedded_components_plugins/toggle_block.test.js (1477 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/embedded_components_plugins/toggle_block.test.js (1477 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3471cde42bf89aba", "name": "Very large file: addons/html_editor/static/tests/table/selection.test.js (2834 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/table/selection.test.js (2834 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81c7767b71c83ceb", "name": "Very large file: addons/html_editor/static/tests/table/ui.test.js (1773 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/table/ui.test.js (1773 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32b996e8a0580a76", "name": "Very large file: addons/html_editor/static/tests/list/delete_forward.test.js (1546 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/list/delete_forward.test.js (1546 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00268d2f7d80ea35", "name": "Very large file: addons/html_editor/static/tests/list/delete_backward.test.js (3142 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/list/delete_backward.test.js (3142 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54e21f5d7c5c1871", "name": "Very large file: addons/html_editor/static/tests/delete/backward.test.js (2586 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/delete/backward.test.js (2586 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37abd2c6eaab79f9", "name": "Very large file: addons/html_editor/static/tests/delete/forward.test.js (1883 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/delete/forward.test.js (1883 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b86880fa65384776", "name": "Very large file: addons/html_editor/static/tests/link/popover.test.js (2075 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/link/popover.test.js (2075 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9af263e14b83a259", "name": "Very large file: addons/html_editor/static/tests/format/remove_format.test.js (1237 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/tests/format/remove_format.test.js (1237 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d20947bb42c4efd", "name": "Very large file: addons/html_editor/static/lib/cropperjs/cropper.js (3576 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/lib/cropperjs/cropper.js (3576 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dd0156cb5be2f15", "name": "Very large file: addons/html_editor/static/src/core/history_plugin.js (1922 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/src/core/history_plugin.js (1922 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35fca11162fac923", "name": "Very large file: addons/html_editor/static/src/core/delete_plugin.js (1484 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/src/core/delete_plugin.js (1484 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12ec99240139c860", "name": "Very large file: addons/html_editor/static/src/main/table/table_plugin.js (1505 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/src/main/table/table_plugin.js (1505 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7099faf974fb3e42", "name": "Very large file: addons/html_editor/static/src/main/list/list_plugin.js (1327 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/src/main/list/list_plugin.js (1327 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1e054975208453b", "name": "Very large file: addons/html_editor/static/src/main/link/link_plugin.js (1468 lines)", "shortDescription": {"text": "Very large file: addons/html_editor/static/src/main/link/link_plugin.js (1468 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4eed884c8968d366", "name": "Very large file: addons/l10n_eu_oss/models/eu_tax_map.py (2409 lines)", "shortDescription": {"text": "Very large file: addons/l10n_eu_oss/models/eu_tax_map.py (2409 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbdc25941e6ad119", "name": "Very large file: addons/purchase/models/purchase_order.py (1417 lines)", "shortDescription": {"text": "Very large file: addons/purchase/models/purchase_order.py (1417 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a33dcae2980ece86", "name": "Very large file: addons/purchase/tests/test_purchase.py (1431 lines)", "shortDescription": {"text": "Very large file: addons/purchase/tests/test_purchase.py (1431 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-804a211a92347d16", "name": "Very large file: addons/purchase/tests/test_purchase_invoice.py (1442 lines)", "shortDescription": {"text": "Very large file: addons/purchase/tests/test_purchase_invoice.py (1442 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9b7e4dc7eda8887", "name": "Very large file: addons/web/models/models.py (2360 lines)", "shortDescription": {"text": "Very large file: addons/web/models/models.py (2360 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c221f019237d9c3", "name": "Very large file: addons/web/static/tests/mock_server/mock_server.test.js (2101 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/mock_server/mock_server.test.js (2101 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0cf9543956556c1", "name": "Very large file: addons/web/static/tests/search/search_panel_desktop.test.js (3460 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/search/search_panel_desktop.test.js (3460 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22318592d8306d96", "name": "Very large file: addons/web/static/tests/search/search_bar.test.js (2039 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/search/search_bar.test.js (2039 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3baa43fc8b09a341", "name": "Very large file: addons/web/static/tests/legacy/mock_server_tests.js (1616 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/legacy/mock_server_tests.js (1616 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2154daf59633368a", "name": "Very large file: addons/web/static/tests/legacy/helpers/mock_server.js (2607 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/legacy/helpers/mock_server.js (2607 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d75d645ad37f516", "name": "Very large file: addons/web/static/tests/core/router.test.js (1964 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/core/router.test.js (1964 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc177ece23a39caa", "name": "Very large file: addons/web/static/tests/core/dropdown/dropdown.test.js (1557 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/core/dropdown/dropdown.test.js (1557 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0c710227519f617", "name": "Very large file: addons/web/static/tests/core/domain_selector/domain_selector.test.js (2831 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/core/domain_selector/domain_selector.test.js (2831 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-609812868587c0df", "name": "Very large file: addons/web/static/tests/public/interaction.test.js (3109 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/public/interaction.test.js (3109 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48b5c2d320299f7f", "name": "Very large file: addons/web/static/tests/_framework/mock_server/mock_model.js (3797 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/_framework/mock_server/mock_model.js (3797 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-736676187379478a", "name": "Very large file: addons/web/static/tests/webclient/settings_form_view/settings_form_view.test.js (2395 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/webclient/settings_form_view/settings_form_view.test.js (2395 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a0525e8babbf1f0", "name": "Very large file: addons/web/static/tests/webclient/actions/load_state.test.js (2490 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/webclient/actions/load_state.test.js (2490 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-843c9cea5c7f767f", "name": "Very large file: addons/web/static/tests/webclient/actions/window_action.test.js (2794 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/webclient/actions/window_action.test.js (2794 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53eae99a734246db", "name": "Very large file: addons/web/static/tests/views/pivot_view.test.js (4094 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/pivot_view.test.js (4094 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37d12331f30d0e80", "name": "Very large file: addons/web/static/tests/views/fields/many2many_field.test.js (2104 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/fields/many2many_field.test.js (2104 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddb1889637892f65", "name": "Very large file: addons/web/static/tests/views/fields/many2one_field.test.js (4174 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/fields/many2one_field.test.js (4174 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dee0bec7ddf2846", "name": "Very large file: addons/web/static/tests/views/fields/properties_field.test.js (3175 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/fields/properties_field.test.js (3175 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d8778c321d747626", "name": "Very large file: addons/web/static/tests/views/fields/daterange_field.test.js (1377 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/fields/daterange_field.test.js (1377 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8971cc0a68206e9", "name": "Very large file: addons/web/static/tests/views/fields/many2many_tags_field.test.js (2063 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/fields/many2many_tags_field.test.js (2063 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2df13a05c4b28b04", "name": "Very large file: addons/web/static/tests/views/fields/one2many_field.test.js (13779 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/fields/one2many_field.test.js (13779 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbfeebf5f1cde5c9", "name": "Very large file: addons/web/static/tests/views/form/form_view.test.js (13476 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/form/form_view.test.js (13476 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ae2ac1e75fbdbba", "name": "Very large file: addons/web/static/tests/views/list/column_widths.test.js (1625 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/list/column_widths.test.js (1625 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b917c276c7f25ea0", "name": "Very large file: addons/web/static/tests/views/list/list_view.test.js (19655 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/list/list_view.test.js (19655 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15449d42432aa4d6", "name": "Very large file: addons/web/static/tests/views/kanban/kanban_view.test.js (15073 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/kanban/kanban_view.test.js (15073 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f6adbee45d33e6a", "name": "Very large file: addons/web/static/tests/views/calendar/calendar_view.test.js (5985 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/calendar/calendar_view.test.js (5985 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff66d4e4b405de97", "name": "Very large file: addons/web/static/tests/views/graph/graph_view.test.js (3175 lines)", "shortDescription": {"text": "Very large file: addons/web/static/tests/views/graph/graph_view.test.js (3175 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20bf8fa2ca8db4f4", "name": "Very large file: addons/web/static/lib/stacktracejs/stacktrace.js (3024 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/stacktracejs/stacktrace.js (3024 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d522b9bac11054bc", "name": "Very large file: addons/web/static/lib/dompurify/DOMpurify.js (1562 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/dompurify/DOMpurify.js (1562 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-762d4ccc4399a148", "name": "Very large file: addons/web/static/lib/qunit/qunit-2.9.1.js (6612 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/qunit/qunit-2.9.1.js (6612 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-895f44456577cca2", "name": "Very large file: addons/web/static/lib/Chart/Chart.js (14946 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/Chart/Chart.js (14946 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2df62ed72fc9ffa4", "name": "Very large file: addons/web/static/lib/jquery/jquery.js (10992 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/jquery/jquery.js (10992 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f328dc3cb2aad08", "name": "Very large file: addons/web/static/lib/hoot-dom/helpers/events.js (2992 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/hoot-dom/helpers/events.js (2992 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb2a8247861ce4cb", "name": "Very large file: addons/web/static/lib/hoot-dom/helpers/dom.js (2149 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/hoot-dom/helpers/dom.js (2149 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dae3a944bcbdc5e2", "name": "Very large file: addons/web/static/lib/diff_match_patch/diff_match_patch.js (1568 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/diff_match_patch/diff_match_patch.js (1568 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bee35a38009293e", "name": "Very large file: addons/web/static/lib/fullcalendar/daygrid/index.global.js (1040 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/fullcalendar/daygrid/index.global.js (1040 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f2deab66a2c548a", "name": "Very large file: addons/web/static/lib/fullcalendar/interaction/index.global.js (2115 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/fullcalendar/interaction/index.global.js (2115 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f2f9675dc12116c3", "name": "Very large file: addons/web/static/lib/fullcalendar/timegrid/index.global.js (1198 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/fullcalendar/timegrid/index.global.js (1198 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e21f97021ce254d", "name": "Very large file: addons/web/static/lib/fullcalendar/core/locales-all.global.js (1933 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/fullcalendar/core/locales-all.global.js (1933 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4efa6d9cad992f0", "name": "Very large file: addons/web/static/lib/fullcalendar/core/index.global.js (9856 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/fullcalendar/core/index.global.js (9856 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be81651524446a52", "name": "Very large file: addons/web/static/lib/owl/owl.js (6389 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/owl/owl.js (6389 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fffd2dd16332dc1e", "name": "Very large file: addons/web/static/lib/popper/popper.js (1825 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/popper/popper.js (1825 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1292c8772246169e", "name": "Very large file: addons/web/static/lib/luxon/luxon.js (8606 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/luxon/luxon.js (8606 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2716f96f9ace486e", "name": "Very large file: addons/web/static/lib/ace/ace.js (21442 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/ace/ace.js (21442 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf65dac6091e785b", "name": "Very large file: addons/web/static/lib/ace/mode-javascript.js (1190 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/ace/mode-javascript.js (1190 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-275b480cbd2d8f6e", "name": "Very large file: addons/web/static/lib/prismjs/prism.js (2843 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/prismjs/prism.js (2843 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13c41a1f14598c08", "name": "Very large file: addons/web/static/lib/hoot/hoot_utils.js (2095 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/hoot/hoot_utils.js (2095 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3921b81d309ca277", "name": "Very large file: addons/web/static/lib/hoot/tests/hoot-dom/events.test.js (2138 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/hoot/tests/hoot-dom/events.test.js (2138 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39ae44e020309060", "name": "Very large file: addons/web/static/lib/hoot/core/expect.js (2497 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/hoot/core/expect.js (2497 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be408a77807fc92f", "name": "Very large file: addons/web/static/lib/hoot/core/runner.js (2020 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/hoot/core/runner.js (2020 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2a6bfc160f85444", "name": "Very large file: addons/web/static/lib/pdfjs/web/viewer.js (15352 lines)", "shortDescription": {"text": "Very large file: addons/web/static/lib/pdfjs/web/viewer.js (15352 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f949a22801750c2", "name": "Very large file: addons/web/static/src/search/search_model.js (2349 lines)", "shortDescription": {"text": "Very large file: addons/web/static/src/search/search_model.js (2349 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2aa7dbf3f03d8e19", "name": "Very large file: addons/web/static/src/core/emoji_picker/emoji_data.js (21892 lines)", "shortDescription": {"text": "Very large file: addons/web/static/src/core/emoji_picker/emoji_data.js (21892 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30a363697c5bbf0c", "name": "Very large file: addons/web/static/src/model/relational_model/record.js (1405 lines)", "shortDescription": {"text": "Very large file: addons/web/static/src/model/relational_model/record.js (1405 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e9f61c086a0f26f", "name": "Very large file: addons/web/static/src/webclient/actions/action_service.js (1892 lines)", "shortDescription": {"text": "Very large file: addons/web/static/src/webclient/actions/action_service.js (1892 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b53078f108bcd0eb", "name": "Very large file: addons/web/static/src/views/list/list_renderer.js (2310 lines)", "shortDescription": {"text": "Very large file: addons/web/static/src/views/list/list_renderer.js (2310 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17515ed112de96fd", "name": "Very large file: addons/web/static/src/views/pivot/pivot_model.js (1598 lines)", "shortDescription": {"text": "Very large file: addons/web/static/src/views/pivot/pivot_model.js (1598 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99d44bd9466239cb", "name": "Very large file: addons/google_calendar/tests/test_sync_google2odoo.py (2667 lines)", "shortDescription": {"text": "Very large file: addons/google_calendar/tests/test_sync_google2odoo.py (2667 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb9e6dd540da8fbf", "name": "Very large file: addons/google_calendar/tests/test_sync_odoo2google.py (1118 lines)", "shortDescription": {"text": "Very large file: addons/google_calendar/tests/test_sync_odoo2google.py (1118 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-646a34303a4675db", "name": "Very large file: addons/resource/models/resource_calendar.py (1013 lines)", "shortDescription": {"text": "Very large file: addons/resource/models/resource_calendar.py (1013 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4fa1d9f9dafe7da", "name": "Very large file: addons/web_hierarchy/static/tests/hierarchy_view.test.js (1576 lines)", "shortDescription": {"text": "Very large file: addons/web_hierarchy/static/tests/hierarchy_view.test.js (1576 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94313fcf49aee851", "name": "Very large file: addons/hr/models/hr_employee.py (1875 lines)", "shortDescription": {"text": "Very large file: addons/hr/models/hr_employee.py (1875 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d9a12b419dc856b", "name": "Very large file: addons/pos_loyalty/tests/test_frontend.py (3785 lines)", "shortDescription": {"text": "Very large file: addons/pos_loyalty/tests/test_frontend.py (3785 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a47a4b8ef8eadd20", "name": "Very large file: addons/pos_loyalty/static/src/app/models/pos_order.js (1485 lines)", "shortDescription": {"text": "Very large file: addons/pos_loyalty/static/src/app/models/pos_order.js (1485 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-028fc4f55da03d2d", "name": "Very large file: addons/hr_expense/models/hr_expense.py (1841 lines)", "shortDescription": {"text": "Very large file: addons/hr_expense/models/hr_expense.py (1841 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c6e51d5b4650045", "name": "Very large file: addons/hr_expense/tests/test_expenses.py (1242 lines)", "shortDescription": {"text": "Very large file: addons/hr_expense/tests/test_expenses.py (1242 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d15cc7a13d54201", "name": "Very large file: addons/crm/models/crm_lead.py (2890 lines)", "shortDescription": {"text": "Very large file: addons/crm/models/crm_lead.py (2890 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-433487cacb5858fa", "name": "Very large file: addons/crm/tests/test_crm_lead.py (1230 lines)", "shortDescription": {"text": "Very large file: addons/crm/tests/test_crm_lead.py (1230 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53b5eb2b18fe76f1", "name": "Very large file: addons/crm/tests/test_crm_pls.py (1005 lines)", "shortDescription": {"text": "Very large file: addons/crm/tests/test_crm_pls.py (1005 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79784b7961b11196", "name": "Very large file: addons/mass_mailing/models/mailing.py (1547 lines)", "shortDescription": {"text": "Very large file: addons/mass_mailing/models/mailing.py (1547 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31c3779181da9342", "name": "Very large file: addons/account/models/account_report.py (967 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_report.py (967 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b811a748ef48e38e", "name": "Very large file: addons/account/models/account_payment.py (1246 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_payment.py (1246 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e118df5b272c489", "name": "Very large file: addons/account/models/chart_template.py (1537 lines)", "shortDescription": {"text": "Very large file: addons/account/models/chart_template.py (1537 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8605336da2e8e57d", "name": "Very large file: addons/account/models/account_journal_dashboard.py (1200 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_journal_dashboard.py (1200 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90a47d51469a1ed1", "name": "Very large file: addons/account/models/account_account.py (1659 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_account.py (1659 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38561eeca9fb2267", "name": "Very large file: addons/account/models/account_journal.py (1307 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_journal.py (1307 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7356a5473cbfdce2", "name": "Very large file: addons/account/models/account_move.py (7389 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_move.py (7389 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3a86485fac597ae", "name": "Very large file: addons/account/models/account_move_line.py (3776 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_move_line.py (3776 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd2088e3fed8995b", "name": "Very large file: addons/account/models/company.py (1156 lines)", "shortDescription": {"text": "Very large file: addons/account/models/company.py (1156 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a16684dcebed8273", "name": "Very large file: addons/account/models/partner.py (1191 lines)", "shortDescription": {"text": "Very large file: addons/account/models/partner.py (1191 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6db85d0b0fbb513", "name": "Very large file: addons/account/models/account_tax.py (5308 lines)", "shortDescription": {"text": "Very large file: addons/account/models/account_tax.py (5308 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e7aff828dedfab4", "name": "Very large file: addons/account/tests/test_account_incoming_supplier_invoice.py (1067 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_incoming_supplier_invoice.py (1067 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ff88b2896cfa1d2", "name": "Very large file: addons/account/tests/test_account_move_entry.py (1477 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_move_entry.py (1477 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7af2bb4f97451d88", "name": "Very large file: addons/account/tests/test_taxes_global_discount.py (1986 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_taxes_global_discount.py (1986 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ed039189acf5837", "name": "Very large file: addons/account/tests/test_chart_template.py (1105 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_chart_template.py (1105 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbc929e1fc988d18", "name": "Very large file: addons/account/tests/test_account_move_line_tax_details.py (1397 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_move_line_tax_details.py (1397 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8c2628115a64de1", "name": "Very large file: addons/account/tests/test_account_analytic.py (1181 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_analytic.py (1181 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-11159e3c3f4ced6e", "name": "Very large file: addons/account/tests/test_account_bank_statement.py (1474 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_bank_statement.py (1474 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff55f7f3b2d9aea8", "name": "Very large file: addons/account/tests/test_account_account.py (1105 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_account.py (1105 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b20d6740f451fad4", "name": "Very large file: addons/account/tests/test_taxes_tax_totals_summary.py (2505 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_taxes_tax_totals_summary.py (2505 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3400b267404e6edf", "name": "Very large file: addons/account/tests/test_account_payment_register.py (2269 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_payment_register.py (2269 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61beaf3b226e2119", "name": "Very large file: addons/account/tests/test_taxes_downpayment.py (2156 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_taxes_downpayment.py (2156 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13be15e1ee9cfb37", "name": "Very large file: addons/account/tests/test_account_move_out_invoice.py (5218 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_move_out_invoice.py (5218 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d397c3cfb609fa5", "name": "Very large file: addons/account/tests/test_early_payment_discount.py (1229 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_early_payment_discount.py (1229 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0cc1afdba141e2f", "name": "Very large file: addons/account/tests/test_sequence_mixin.py (1129 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_sequence_mixin.py (1129 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9c522474a8b0a8c", "name": "Very large file: addons/account/tests/common.py (2562 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/common.py (2562 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-140b6ce67356fe33", "name": "Very large file: addons/account/tests/test_account_move_send.py (1300 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_move_send.py (1300 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3cc7160e7c425d3e", "name": "Very large file: addons/account/tests/test_account_move_reconcile.py (6156 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_move_reconcile.py (6156 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ca4e8435a572070", "name": "Very large file: addons/account/tests/test_account_move_in_invoice.py (3038 lines)", "shortDescription": {"text": "Very large file: addons/account/tests/test_account_move_in_invoice.py (3038 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6b99e5aafbe5a33", "name": "Very large file: addons/account/static/src/helpers/account_tax.js (2746 lines)", "shortDescription": {"text": "Very large file: addons/account/static/src/helpers/account_tax.js (2746 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c071eeeb30525a0b", "name": "Very large file: addons/account/wizard/account_payment_register.py (1369 lines)", "shortDescription": {"text": "Very large file: addons/account/wizard/account_payment_register.py (1369 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42d5795c49e66d02", "name": "Very large file: addons/l10n_account_withholding_tax/tests/test_account_withholding_flows.py (1151 lines)", "shortDescription": {"text": "Very large file: addons/l10n_account_withholding_tax/tests/test_account_withholding_flows.py (1151 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1078b6bf29967ff5", "name": "Very large file: addons/l10n_es_edi_sii/tests/test_edi_xml.py (1304 lines)", "shortDescription": {"text": "Very large file: addons/l10n_es_edi_sii/tests/test_edi_xml.py (1304 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7f6604c4c7670c9", "name": "Very large file: addons/sale_timesheet/tests/test_sale_timesheet.py (1677 lines)", "shortDescription": {"text": "Very large file: addons/sale_timesheet/tests/test_sale_timesheet.py (1677 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa024e17a7d9bcfa", "name": "Very large file: addons/sale_timesheet/tests/test_sale_service.py (998 lines)", "shortDescription": {"text": "Very large file: addons/sale_timesheet/tests/test_sale_service.py (998 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c145f9cb7b59c18", "name": "Very large file: addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin.test.js (1898 lines)", "shortDescription": {"text": "Very large file: addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin.test.js (1898 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc3913ed6ca5102b", "name": "Very large file: addons/spreadsheet/static/tests/lists/list_plugin.test.js (1396 lines)", "shortDescription": {"text": "Very large file: addons/spreadsheet/static/tests/lists/list_plugin.test.js (1396 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3aa5127b1a0f45b", "name": "Very large file: addons/spreadsheet/static/tests/pivots/model/pivot_plugin.test.js (2637 lines)", "shortDescription": {"text": "Very large file: addons/spreadsheet/static/tests/pivots/model/pivot_plugin.test.js (2637 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60bf414128853e3e", "name": "Very large file: addons/spreadsheet/static/tests/global_filters/global_filters_model.test.js (3485 lines)", "shortDescription": {"text": "Very large file: addons/spreadsheet/static/tests/global_filters/global_filters_model.test.js (3485 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4656ac01683dc5bd", "name": "Very large file: addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js (5322 lines)", "shortDescription": {"text": "Very large file: addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js (5322 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a7f49466a106ebae", "name": "Very large file: addons/hr_attendance/tests/test_hr_attendance_overtime.py (1798 lines)", "shortDescription": {"text": "Very large file: addons/hr_attendance/tests/test_hr_attendance_overtime.py (1798 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f9b2dee6241b55b", "name": "Very large file: addons/website_slides/models/slide_slide.py (1339 lines)", "shortDescription": {"text": "Very large file: addons/website_slides/models/slide_slide.py (1339 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a9ecbdcbf831ccc", "name": "Very large file: addons/website_slides/models/slide_channel.py (1084 lines)", "shortDescription": {"text": "Very large file: addons/website_slides/models/slide_channel.py (1084 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba5e93bc923a3106", "name": "Very large file: addons/website_slides/controllers/main.py (1617 lines)", "shortDescription": {"text": "Very large file: addons/website_slides/controllers/main.py (1617 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16b703f49dd22798", "name": "Very large file: addons/project_purchase/tests/test_project_profitability.py (1075 lines)", "shortDescription": {"text": "Very large file: addons/project_purchase/tests/test_project_profitability.py (1075 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbe25c76176d5e98", "name": "Very large file: addons/l10n_gr_edi/models/preferred_classification.py (967 lines)", "shortDescription": {"text": "Very large file: addons/l10n_gr_edi/models/preferred_classification.py (967 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33b1e7eabcccdc80", "name": "Very large file: addons/pos_restaurant/static/tests/tours/pos_restaurant_tour.js (1314 lines)", "shortDescription": {"text": "Very large file: addons/pos_restaurant/static/tests/tours/pos_restaurant_tour.js (1314 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09c8c6cbfbb66599", "name": "Very large file: addons/sale_mrp/tests/test_sale_mrp_flow.py (3038 lines)", "shortDescription": {"text": "Very large file: addons/sale_mrp/tests/test_sale_mrp_flow.py (3038 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41b8830784c9e634", "name": "Very large file: addons/hr_holidays/models/hr_leave.py (1656 lines)", "shortDescription": {"text": "Very large file: addons/hr_holidays/models/hr_leave.py (1656 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47ac522751a0a297", "name": "Very large file: addons/hr_holidays/models/hr_leave_allocation.py (1103 lines)", "shortDescription": {"text": "Very large file: addons/hr_holidays/models/hr_leave_allocation.py (1103 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4545183820026a95", "name": "Very large file: addons/hr_holidays/tests/test_leave_requests.py (2381 lines)", "shortDescription": {"text": "Very large file: addons/hr_holidays/tests/test_leave_requests.py (2381 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9afde896b3da29bb", "name": "Very large file: addons/hr_holidays/tests/test_accrual_allocations.py (5148 lines)", "shortDescription": {"text": "Very large file: addons/hr_holidays/tests/test_accrual_allocations.py (5148 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9405a24d58635ae7", "name": "Very large file: addons/website_sale/controllers/main.py (2019 lines)", "shortDescription": {"text": "Very large file: addons/website_sale/controllers/main.py (2019 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e809c2e18bf8a99", "name": "Very large file: addons/mrp_subcontracting/tests/test_subcontracting.py (1799 lines)", "shortDescription": {"text": "Very large file: addons/mrp_subcontracting/tests/test_subcontracting.py (1799 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-413567583473b552", "name": "Very large file: addons/sale_project/tests/test_sale_project.py (2049 lines)", "shortDescription": {"text": "Very large file: addons/sale_project/tests/test_sale_project.py (2049 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d175ff38b95dd47", "name": "Very large file: addons/sale_project/tests/test_project_profitability.py (1215 lines)", "shortDescription": {"text": "Very large file: addons/sale_project/tests/test_project_profitability.py (1215 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d5a9b21f75687de", "name": "Very large file: addons/calendar/models/calendar_event.py (1789 lines)", "shortDescription": {"text": "Very large file: addons/calendar/models/calendar_event.py (1789 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd451a5d424a4e7b", "name": "Very large file: addons/calendar/tests/test_event_recurrence.py (1118 lines)", "shortDescription": {"text": "Very large file: addons/calendar/tests/test_event_recurrence.py (1118 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0e81be625edd3fd", "name": "Very large file: addons/event/tests/test_event_internals.py (1177 lines)", "shortDescription": {"text": "Very large file: addons/event/tests/test_event_internals.py (1177 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ef6f2b2c88df4b9", "name": "Very large file: addons/event/tests/test_event_mail_schedule.py (1153 lines)", "shortDescription": {"text": "Very large file: addons/event/tests/test_event_mail_schedule.py (1153 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6d7506cf9163f84", "name": "Very large file: addons/mrp/models/mrp_workorder.py (959 lines)", "shortDescription": {"text": "Very large file: addons/mrp/models/mrp_workorder.py (959 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9cbba048ceae5e32", "name": "Very large file: addons/mrp/models/mrp_production.py (3206 lines)", "shortDescription": {"text": "Very large file: addons/mrp/models/mrp_production.py (3206 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a0954d7a6bc0740b", "name": "Very large file: addons/mrp/tests/test_backorder.py (1184 lines)", "shortDescription": {"text": "Very large file: addons/mrp/tests/test_backorder.py (1184 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54635a038ccd2a0f", "name": "Very large file: addons/mrp/tests/test_procurement.py (1606 lines)", "shortDescription": {"text": "Very large file: addons/mrp/tests/test_procurement.py (1606 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f72b1308ed001377", "name": "Very large file: addons/mrp/tests/test_bom.py (3104 lines)", "shortDescription": {"text": "Very large file: addons/mrp/tests/test_bom.py (3104 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbf569472b7da855", "name": "Very large file: addons/mrp/tests/test_order.py (5731 lines)", "shortDescription": {"text": "Very large file: addons/mrp/tests/test_order.py (5731 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62026d0167f711ca", "name": "Very large file: addons/mrp/tests/test_unbuild.py (1230 lines)", "shortDescription": {"text": "Very large file: addons/mrp/tests/test_unbuild.py (1230 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f3797c9ad543d8c", "name": "Very large file: addons/mrp/report/mrp_report_mo_overview.py (1021 lines)", "shortDescription": {"text": "Very large file: addons/mrp/report/mrp_report_mo_overview.py (1021 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b08ce54463bb2c43", "name": "Very large file: addons/project/models/project_project.py (1462 lines)", "shortDescription": {"text": "Very large file: addons/project/models/project_project.py (1462 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc6fc9aa09b00e01", "name": "Very large file: addons/project/models/project_task.py (2271 lines)", "shortDescription": {"text": "Very large file: addons/project/models/project_task.py (2271 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48e7272da583ee99", "name": "Very large file: addons/payment/models/payment_transaction.py (1280 lines)", "shortDescription": {"text": "Very large file: addons/payment/models/payment_transaction.py (1280 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bac01db139ce5438", "name": "1666 TODO/FIXME markers", "shortDescription": {"text": "1666 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 150 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 832 placeholder/mock markers across 331 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c463134657060e5", "name": "Stub function `lobject` (body is just `pass`/`return`) \u2014 odoo/sql_db.py:597", "shortDescription": {"text": "Stub function `lobject` (body is just `pass`/`return`) \u2014 odoo/sql_db.py:597"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-951e4957a05d324d", "name": "Stub function `fake_start_response` (body is just `pass`/`return`) \u2014 odoo/http.py:2839", "shortDescription": {"text": "Stub function `fake_start_response` (body is just `pass`/`return`) \u2014 odoo/http.py:2839"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf4749beeb1fa817", "name": "Legacy-named symbol `_url_unquote_legacy` in odoo/_monkeypatches/werkzeug.py:169", "shortDescription": {"text": "Legacy-named symbol `_url_unquote_legacy` in odoo/_monkeypatches/werkzeug.py:169"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24d7ce703cd3ab7b", "name": "Stub function `setup` (body is just `pass`/`return`) \u2014 odoo/_monkeypatches/num2words.py:316", "shortDescription": {"text": "Stub function `setup` (body is just `pass`/`return`) \u2014 odoo/_monkeypatches/num2words.py:316"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46dad2611c596b8d", "name": "Legacy-named symbol `object_copy` in odoo/addons/base/models/ir_actions.py:615", "shortDescription": {"text": "Legacy-named symbol `object_copy` in odoo/addons/base/models/ir_actions.py:615"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce57cb9663a764b1", "name": "Network/subprocess call without timeout or try/except \u2014 odoo/addons/base/models/ir_actions_report.py:49", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 odoo/addons/base/models/ir_actions_report.py:49"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-c8589d62bd57fcdd", "name": "Stub function `_get_res_city_by_name` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/res_partner.py:1256", "shortDescription": {"text": "Stub function `_get_res_city_by_name` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/res_partner.py:1256"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74154a5df42edb91", "name": "Stub function `_sanitize_cookies` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/ir_http.py:294", "shortDescription": {"text": "Stub function `_sanitize_cookies` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/ir_http.py:294"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-941e2ddbfcdbe224", "name": "Stub function `_validate_tag_form` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/ir_ui_view.py:1864", "shortDescription": {"text": "Stub function `_validate_tag_form` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/ir_ui_view.py:1864"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d9da9ded30bb368d", "name": "Stub function `print_progress` (body is just `pass`/`return`) \u2014 odoo/cli/upgrade_code.py:128", "shortDescription": {"text": "Stub function `print_progress` (body is just `pass`/`return`) \u2014 odoo/cli/upgrade_code.py:128"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5cd82fdae70ef35", "name": "Stub function `acquire` (body is just `pass`/`return`) \u2014 odoo/orm/registry.py:1191", "shortDescription": {"text": "Stub function `acquire` (body is just `pass`/`return`) \u2014 odoo/orm/registry.py:1191"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b4e8b09223a1134", "name": "Legacy-named symbol `fields_to_copy` in odoo/orm/models.py:5436", "shortDescription": {"text": "Legacy-named symbol `fields_to_copy` in odoo/orm/models.py:5436"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4a2ca9d33bc5507", "name": "Commented-code block (5 lines) in odoo/orm/model_classes.py:59", "shortDescription": {"text": "Commented-code block (5 lines) in odoo/orm/model_classes.py:59"}, "fullDescription": {"text": "4 of 5 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-ec5cabda5170bed9", "name": "Network/subprocess call without timeout or try/except \u2014 odoo/service/db.py:299", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 odoo/service/db.py:299"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-72778d9d375ba52f", "name": "Network/subprocess call without timeout or try/except \u2014 odoo/service/server.py:1529", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 odoo/service/server.py:1529"}, "fullDescription": {"text": "`subprocess.call(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-2e7dd2410febf296", "name": "Stub function `process_work` (body is just `pass`/`return`) \u2014 odoo/service/server.py:1297", "shortDescription": {"text": "Stub function `process_work` (body is just `pass`/`return`) \u2014 odoo/service/server.py:1297"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70d26f1f141bdc28", "name": "Stub function `emit` (body is just `pass`/`return`) \u2014 odoo/tools/misc.py:782", "shortDescription": {"text": "Stub function `emit` (body is just `pass`/`return`) \u2014 odoo/tools/misc.py:782"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ba82b96f5f0577d", "name": "Stub function `fn` (body is just `pass`/`return`) \u2014 odoo/tools/func.py:56", "shortDescription": {"text": "Stub function `fn` (body is just `pass`/`return`) \u2014 odoo/tools/func.py:56"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d9aa0bb5a0d5ccc", "name": "Stub function `_set_opt_strings` (body is just `pass`/`return`) \u2014 odoo/tools/config.py:128", "shortDescription": {"text": "Stub function `_set_opt_strings` (body is just `pass`/`return`) \u2014 odoo/tools/config.py:128"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82fa31482b531176", "name": "Stub function `copy_noop` (body is just `pass`/`return`) \u2014 odoo/tools/populate.py:237", "shortDescription": {"text": "Stub function `copy_noop` (body is just `pass`/`return`) \u2014 odoo/tools/populate.py:237"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82acc5f6668141fd", "name": "Legacy-named symbol `is_legacy` in odoo/tools/js_transpiler.py:546", "shortDescription": {"text": "Legacy-named symbol `is_legacy` in odoo/tools/js_transpiler.py:546"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9042e5ef55e2f64", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/main.py:137", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/main.py:137"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-67123ae62970d975", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/browser.py:92", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/browser.py:92"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-9211a56a6d2417d5", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/interfaces/display_interface_L.p", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/interfaces/display_interface_L.py:17"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-eaf10b71d78762de", "name": "Stub function `_get_raw_response` (body is just `pass`/`return`) \u2014 addons/iot_drivers/iot_handlers/drivers/serial_base_d", "shortDescription": {"text": "Stub function `_get_raw_response` (body is just `pass`/`return`) \u2014 addons/iot_drivers/iot_handlers/drivers/serial_base_driver.py:88"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84e7f1f476ab94cb", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/drivers/display_driver_L.py:129", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/drivers/display_driver_L.py:129"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-afa68ba9af8729c4", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/drivers/keyboard_usb_driver_L.py", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/drivers/keyboard_usb_driver_L.py:178"}, "fullDescription": {"text": "`subprocess.call(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-9e8651a6c6da28f4", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/upgrade.py:29", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/upgrade.py:29"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-378084780ccd0ae4", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/wifi.py:36", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/wifi.py:36"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-c08c476e4ae83104", "name": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/helpers.py:219", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/helpers.py:219"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-d770ff79bfa112ae", "name": "Stub function `start_nginx_server` (body is just `pass`/`return`) \u2014 addons/iot_drivers/tools/helpers.py:123", "shortDescription": {"text": "Stub function `start_nginx_server` (body is just `pass`/`return`) \u2014 addons/iot_drivers/tools/helpers.py:123"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3cf07371241a676", "name": "Legacy-named symbol `gift_card_copy` in addons/website_sale_loyalty/static/src/interactions/gift_card_copy.js:23", "shortDescription": {"text": "Legacy-named symbol `gift_card_copy` in addons/website_sale_loyalty/static/src/interactions/gift_card_copy.js:23"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17790fdc049989e5", "name": "Legacy-named symbol `trackingOld` in addons/l10n_dk_nemhandel/models/res_partner.py:189", "shortDescription": {"text": "Legacy-named symbol `trackingOld` in addons/l10n_dk_nemhandel/models/res_partner.py:189"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36bdd734ed87ecdd", "name": "Stub function `_mock_update_user_data` (body is just `pass`/`return`) \u2014 addons/l10n_dk_nemhandel/tools/demo_utils.py:121", "shortDescription": {"text": "Stub function `_mock_update_user_data` (body is just `pass`/`return`) \u2014 addons/l10n_dk_nemhandel/tools/demo_utils.py:121"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25e3b0213b4cf3f0", "name": "Legacy-named symbol `att_copy` in addons/mail/models/mail_template.py:286", "shortDescription": {"text": "Legacy-named symbol `att_copy` in addons/mail/models/mail_template.py:286"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0bcfd113a202057", "name": "Stub function `_extras_to_store` (body is just `pass`/`return`) \u2014 addons/mail/models/mail_message.py:1316", "shortDescription": {"text": "Stub function `_extras_to_store` (body is just `pass`/`return`) \u2014 addons/mail/models/mail_message.py:1316"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cccaa43409ebd410", "name": "Legacy-named symbol `inbuf_old` in addons/mail/static/lib/lame/lame.js:10289", "shortDescription": {"text": "Legacy-named symbol `inbuf_old` in addons/mail/static/lib/lame/lame.js:10289"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bffa3d2d55154d4", "name": "Commented-code block (6 lines) in addons/mail/static/lib/odoo_sfu/odoo_sfu.js:3079", "shortDescription": {"text": "Commented-code block (6 lines) in addons/mail/static/lib/odoo_sfu/odoo_sfu.js:3079"}, "fullDescription": {"text": "3 of 6 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-d7e973a8e59d91e0", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/mail/static/src/service_worker.js:190", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/mail/static/src/service_worker.js:190"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-8c90ca8d8978f8b4", "name": "Legacy-named symbol `audio_worklet_processor_v2` in addons/mail/static/src/utils/common/media_monitoring.js:156", "shortDescription": {"text": "Legacy-named symbol `audio_worklet_processor_v2` in addons/mail/static/src/utils/common/media_monitoring.js:156"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-675698cfb12b12a8", "name": "Legacy-named symbol `audio_worklet_processor_v2` in addons/mail/controllers/discuss/rtc.py:111", "shortDescription": {"text": "Legacy-named symbol `audio_worklet_processor_v2` in addons/mail/controllers/discuss/rtc.py:111"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc4d21906f788c5e", "name": "Commented-code block (9 lines) in addons/stock_landed_costs/models/stock_landed_cost.py:134", "shortDescription": {"text": "Commented-code block (9 lines) in addons/stock_landed_costs/models/stock_landed_cost.py:134"}, "fullDescription": {"text": "8 of 9 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-b871e8d55e674adb", "name": "Stub function `_add_purchase_order_base_lines_vals` (body is just `pass`/`return`) \u2014 addons/purchase_edi_ubl_bis3/models", "shortDescription": {"text": "Stub function `_add_purchase_order_base_lines_vals` (body is just `pass`/`return`) \u2014 addons/purchase_edi_ubl_bis3/models/purchase_edi_xml_ubl_bis3.py:118"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5383c73487e3b38", "name": "Legacy-named symbol `charge_copy` in addons/account_edi_ubl_cii/models/account_edi_common.py:1131", "shortDescription": {"text": "Legacy-named symbol `charge_copy` in addons/account_edi_ubl_cii/models/account_edi_common.py:1131"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c2a0a0a7d4c5aa7", "name": "Stub function `_ubl_add_delivery_party_endpoint_id_node` (body is just `pass`/`return`) \u2014 addons/account_edi_ubl_cii/mod", "shortDescription": {"text": "Stub function `_ubl_add_delivery_party_endpoint_id_node` (body is just `pass`/`return`) \u2014 addons/account_edi_ubl_cii/models/account_edi_ubl_pint.py:221"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91dea9606989917d", "name": "Commented-code block (9 lines) in addons/account_edi_ubl_cii/models/account_edi_ubl.py:3157", "shortDescription": {"text": "Commented-code block (9 lines) in addons/account_edi_ubl_cii/models/account_edi_ubl.py:3157"}, "fullDescription": {"text": "7 of 9 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-dfbf9e57db74e4fc", "name": "Stub function `_add_invoice_seller_supplier_party_nodes` (body is just `pass`/`return`) \u2014 addons/account_edi_ubl_cii/mod", "shortDescription": {"text": "Stub function `_add_invoice_seller_supplier_party_nodes` (body is just `pass`/`return`) \u2014 addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:303"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-881ebcfbfc30490f", "name": "Legacy-named symbol `o_btn_char_copy` in addons/auth_totp_portal/static/src/interactions/totp_enable.js:50", "shortDescription": {"text": "Legacy-named symbol `o_btn_char_copy` in addons/auth_totp_portal/static/src/interactions/totp_enable.js:50"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4788b184a7e7f8c6", "name": "Commented-code block (5 lines) in addons/auth_oauth/models/res_users.py:137", "shortDescription": {"text": "Commented-code block (5 lines) in addons/auth_oauth/models/res_users.py:137"}, "fullDescription": {"text": "4 of 5 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-aa07d59ee3bbf2d1", "name": "Stub function `_payment_request_from_kiosk` (body is just `pass`/`return`) \u2014 addons/pos_self_order/models/pos_payment_me", "shortDescription": {"text": "Stub function `_payment_request_from_kiosk` (body is just `pass`/`return`) \u2014 addons/pos_self_order/models/pos_payment_method.py:8"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7411651b52c51315", "name": "Legacy-named symbol `templates_to_copy` in addons/product/models/product_product.py:797", "shortDescription": {"text": "Legacy-named symbol `templates_to_copy` in addons/product/models/product_product.py:797"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b80fe42e0c2c2b44", "name": "Stub function `_compute_purchase_ok` (body is just `pass`/`return`) \u2014 addons/product/models/product_template.py:202", "shortDescription": {"text": "Stub function `_compute_purchase_ok` (body is just `pass`/`return`) \u2014 addons/product/models/product_template.py:202"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41319482512f7f43", "name": "Stub function `_get_additional_data_field` (body is just `pass`/`return`) \u2014 addons/account_qr_code_emv/models/res_bank.p", "shortDescription": {"text": "Stub function `_get_additional_data_field` (body is just `pass`/`return`) \u2014 addons/account_qr_code_emv/models/res_bank.py:54"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd6b176a995f053b", "name": "Legacy-named symbol `invoicing_legacy` in addons/sale/models/sale_order_line.py:1008", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale/models/sale_order_line.py:1008"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af3c9e5036558787", "name": "Legacy-named symbol `move_to_copy` in addons/purchase_stock/models/stock_rule.py:394", "shortDescription": {"text": "Legacy-named symbol `move_to_copy` in addons/purchase_stock/models/stock_rule.py:394"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e346999a7a3538a", "name": "Legacy-named symbol `_post_copy` in addons/website/models/ir_module_module.py:181", "shortDescription": {"text": "Legacy-named symbol `_post_copy` in addons/website/models/ir_module_module.py:181"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2618dfbf8db2b868", "name": "Legacy-named symbol `key_copy` in addons/website/models/website.py:1285", "shortDescription": {"text": "Legacy-named symbol `key_copy` in addons/website/models/website.py:1285"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6bd64c7f81b1b8a", "name": "Stub function `configurator_addons_apply` (body is just `pass`/`return`) \u2014 addons/website/models/website.py:1108", "shortDescription": {"text": "Stub function `configurator_addons_apply` (body is just `pass`/`return`) \u2014 addons/website/models/website.py:1108"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-237f25d2c8b42388", "name": "Legacy-named symbol `_post_copy` in addons/website/models/theme_models.py:249", "shortDescription": {"text": "Legacy-named symbol `_post_copy` in addons/website/models/theme_models.py:249"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93219d51e8c15dfa", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/website/static/src/js/utils.js:24", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/website/static/src/js/utils.js:24"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-d01c7c86e87af770", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/website/static/src/interactions/image_shape_hover_effect.js:", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/website/static/src/interactions/image_shape_hover_effect.js:51"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-f511d123f01f3775", "name": "Legacy-named symbol `error_description_copy` in addons/l10n_it_edi/models/account_move.py:2492", "shortDescription": {"text": "Legacy-named symbol `error_description_copy` in addons/l10n_it_edi/models/account_move.py:2492"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4357c5c0814f07dc", "name": "Stub function `_inverse_public_key` (body is just `pass`/`return`) \u2014 addons/auth_passkey/models/auth_passkey_key.py:59", "shortDescription": {"text": "Stub function `_inverse_public_key` (body is just `pass`/`return`) \u2014 addons/auth_passkey/models/auth_passkey_key.py:59"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68cb2e790031490f", "name": "Legacy-named symbol `trackingOld` in addons/l10n_fr_pdp/models/res_partner.py:172", "shortDescription": {"text": "Legacy-named symbol `trackingOld` in addons/l10n_fr_pdp/models/res_partner.py:172"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bddb7fb1297be9e", "name": "Legacy-named symbol `o_survey_session_copy` in addons/survey/static/src/interactions/survey_session_manage.js:27", "shortDescription": {"text": "Legacy-named symbol `o_survey_session_copy` in addons/survey/static/src/interactions/survey_session_manage.js:27"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1d65c9ea6ddae15", "name": "Stub function `_inverse_send_email` (body is just `pass`/`return`) \u2014 addons/survey/wizard/survey_invite.py:70", "shortDescription": {"text": "Stub function `_inverse_send_email` (body is just `pass`/`return`) \u2014 addons/survey/wizard/survey_invite.py:70"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c083ae91a2631530", "name": "Legacy-named symbol `first_agent_message_dt_legacy` in addons/im_livechat/report/im_livechat_report_channel.py:120", "shortDescription": {"text": "Legacy-named symbol `first_agent_message_dt_legacy` in addons/im_livechat/report/im_livechat_report_channel.py:120"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a39eaefe32734447", "name": "Legacy-named symbol `WebsiteForumLegacy` in addons/website_forum/controllers/legacy.py:7", "shortDescription": {"text": "Legacy-named symbol `WebsiteForumLegacy` in addons/website_forum/controllers/legacy.py:7"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb09beb873d963de", "name": "Legacy-named symbol `move_to_copy` in addons/stock/models/stock_rule.py:256", "shortDescription": {"text": "Legacy-named symbol `move_to_copy` in addons/stock/models/stock_rule.py:256"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc3dbda31c8d0fe7", "name": "Stub function `_assign_picking_post_process` (body is just `pass`/`return`) \u2014 addons/stock/models/stock_move.py:1595", "shortDescription": {"text": "Stub function `_assign_picking_post_process` (body is just `pass`/`return`) \u2014 addons/stock/models/stock_move.py:1595"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38b29b38db03d4c5", "name": "Legacy-named symbol `event_copy` in addons/microsoft_calendar/models/calendar.py:243", "shortDescription": {"text": "Legacy-named symbol `event_copy` in addons/microsoft_calendar/models/calendar.py:243"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16b4788052df8c6c", "name": "Stub function `action_print_as_pdf` (body is just `pass`/`return`) \u2014 addons/stock_account/report/stock_valuation_report.", "shortDescription": {"text": "Stub function `action_print_as_pdf` (body is just `pass`/`return`) \u2014 addons/stock_account/report/stock_valuation_report.py:151"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4a817371f66a796", "name": "Legacy-named symbol `record_copy` in addons/base_automation/models/base_automation.py:527", "shortDescription": {"text": "Legacy-named symbol `record_copy` in addons/base_automation/models/base_automation.py:527"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79d879bb6b6f7bd8", "name": "Network/subprocess call without timeout or try/except \u2014 addons/google_gmail/models/google_gmail_mixin.py:185", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/google_gmail/models/google_gmail_mixin.py:185"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-855599da30383486", "name": "Stub function `_run_check_identification` (body is just `pass`/`return`) \u2014 addons/l10n_latam_base/models/res_partner.py:", "shortDescription": {"text": "Stub function `_run_check_identification` (body is just `pass`/`return`) \u2014 addons/l10n_latam_base/models/res_partner.py:21"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-502697ddba86a67b", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/html_editor/static/src/utils/image_processing.js:59", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/html_editor/static/src/utils/image_processing.js:59"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-540446b5f0c07b27", "name": "Commented-code block (12 lines) in addons/html_editor/static/src/core/selection_plugin.js:959", "shortDescription": {"text": "Commented-code block (12 lines) in addons/html_editor/static/src/core/selection_plugin.js:959"}, "fullDescription": {"text": "8 of 12 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-162bc2105b2d477f", "name": "Commented-code block (11 lines) in addons/html_editor/static/src/core/line_break_plugin.js:122", "shortDescription": {"text": "Commented-code block (11 lines) in addons/html_editor/static/src/core/line_break_plugin.js:122"}, "fullDescription": {"text": "8 of 11 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-f46d2a4bc968cc4b", "name": "Commented-code block (5 lines) in addons/html_editor/static/src/main/table/table_plugin.js:663", "shortDescription": {"text": "Commented-code block (5 lines) in addons/html_editor/static/src/main/table/table_plugin.js:663"}, "fullDescription": {"text": "3 of 5 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-4f21ddcbd5bdf41e", "name": "Commented-code block (6 lines) in addons/html_editor/static/src/others/collaboration/collaboration_plugin.js:273", "shortDescription": {"text": "Commented-code block (6 lines) in addons/html_editor/static/src/others/collaboration/collaboration_plugin.js:273"}, "fullDescription": {"text": "3 of 6 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-8a30d743f761d082", "name": "Commented-code block (6 lines) in addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:192", "shortDescription": {"text": "Commented-code block (6 lines) in addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:192"}, "fullDescription": {"text": "5 of 6 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-e9a9de917a07da51", "name": "Network/subprocess call without timeout or try/except \u2014 addons/html_editor/controllers/main.py:518", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/html_editor/controllers/main.py:518"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-a7ddb19baadc2c54", "name": "Stub function `_merge_po_post_process` (body is just `pass`/`return`) \u2014 addons/purchase/models/purchase_order.py:916", "shortDescription": {"text": "Stub function `_merge_po_post_process` (body is just `pass`/`return`) \u2014 addons/purchase/models/purchase_order.py:916"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01ad1b6fa6bda80e", "name": "Legacy-named symbol `invoicing_legacy` in addons/purchase/models/purchase_order_line.py:195", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/purchase/models/purchase_order_line.py:195"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0dea4067efd8c1ab", "name": "Stub function `_add_sale_order_base_lines_vals` (body is just `pass`/`return`) \u2014 addons/sale_edi_ubl/models/sale_edi_xml", "shortDescription": {"text": "Stub function `_add_sale_order_base_lines_vals` (body is just `pass`/`return`) \u2014 addons/sale_edi_ubl/models/sale_edi_xml_ubl_bis3.py:104"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58f9074483229c95", "name": "Legacy-named symbol `pdataOld` in addons/web/static/lib/jquery/jquery.js:6053", "shortDescription": {"text": "Legacy-named symbol `pdataOld` in addons/web/static/lib/jquery/jquery.js:6053"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68915b9ea55f07ec", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:8550", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:8550"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-ac3ae38acbe2cc98", "name": "Legacy-named symbol `idxInOld` in addons/web/static/lib/owl/owl.js:1367", "shortDescription": {"text": "Legacy-named symbol `idxInOld` in addons/web/static/lib/owl/owl.js:1367"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4e6cbc6d6e7a5c6", "name": "Legacy-named symbol `ace_deprecated` in addons/web/static/lib/ace/theme-monokai.js:1", "shortDescription": {"text": "Legacy-named symbol `ace_deprecated` in addons/web/static/lib/ace/theme-monokai.js:1"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df960735c7eac04f", "name": "Legacy-named symbol `deep_copy` in addons/web/static/lib/ace/ace.js:307", "shortDescription": {"text": "Legacy-named symbol `deep_copy` in addons/web/static/lib/ace/ace.js:307"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2108fe049f8c6be", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web/static/src/service_worker.js:14", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web/static/src/service_worker.js:14"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-ebf71a726e538b0e", "name": "Commented-code block (5 lines) in addons/web/static/src/core/utils/patch.js:33", "shortDescription": {"text": "Commented-code block (5 lines) in addons/web/static/src/core/utils/patch.js:33"}, "fullDescription": {"text": "5 of 5 consecutive comment lines look like executable statements. Confirm the block is obsolete, then delete it or recover it from git history when needed."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 0.72}}, {"id": "scanner-9cbe3bbee8e78b12", "name": "Legacy-named symbol `o_database_backup` in addons/web/static/src/public/database_manager.js:52", "shortDescription": {"text": "Legacy-named symbol `o_database_backup` in addons/web/static/src/public/database_manager.js:52"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2532ce700d82f6b6", "name": "Legacy-named symbol `resources_to_copy` in addons/resource/models/resource_mixin.py:72", "shortDescription": {"text": "Legacy-named symbol `resources_to_copy` in addons/resource/models/resource_mixin.py:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ee69da3e55d17db", "name": "Legacy-named symbol `version_to_copy` in addons/hr/models/hr_employee.py:581", "shortDescription": {"text": "Legacy-named symbol `version_to_copy` in addons/hr/models/hr_employee.py:581"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36290108bb1eacf4", "name": "Network/subprocess call without timeout or try/except \u2014 addons/microsoft_outlook/models/microsoft_outlook_mixin.py:183", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/microsoft_outlook/models/microsoft_outlook_mixin.py:183"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-27e6fd5de7a883eb", "name": "Legacy-named symbol `mass_mailing_copy` in addons/mass_mailing/models/mailing.py:625", "shortDescription": {"text": "Legacy-named symbol `mass_mailing_copy` in addons/mass_mailing/models/mailing.py:625"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4baec207b61b90f4", "name": "Stub function `action_reload` (body is just `pass`/`return`) \u2014 addons/mass_mailing/models/mailing.py:651", "shortDescription": {"text": "Stub function `action_reload` (body is just `pass`/`return`) \u2014 addons/mass_mailing/models/mailing.py:651"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-174f031a2d511c1e", "name": "Legacy-named symbol `MailingLegacy` in addons/mass_mailing/controllers/legacy.py:10", "shortDescription": {"text": "Legacy-named symbol `MailingLegacy` in addons/mass_mailing/controllers/legacy.py:10"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d12b804747cb3b2", "name": "Legacy-named symbol `bank_statement_one_month_old` in addons/account/demo/account_demo.py:560", "shortDescription": {"text": "Legacy-named symbol `bank_statement_one_month_old` in addons/account/demo/account_demo.py:560"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-362d283233fd08c2", "name": "Stub function `_get_qr_vals` (body is just `pass`/`return`) \u2014 addons/account/models/res_partner_bank.py:190", "shortDescription": {"text": "Stub function `_get_qr_vals` (body is just `pass`/`return`) \u2014 addons/account/models/res_partner_bank.py:190"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ebb1ca33a42ce283", "name": "Legacy-named symbol `invoicing_legacy` in addons/account/models/account_move.py:55", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/account/models/account_move.py:55"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-011c65171f420613", "name": "Stub function `_compute_made_sequence_gap` (body is just `pass`/`return`) \u2014 addons/account/models/account_move.py:972", "shortDescription": {"text": "Stub function `_compute_made_sequence_gap` (body is just `pass`/`return`) \u2014 addons/account/models/account_move.py:972"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-678f3e23c94edf7e", "name": "Legacy-named symbol `trackingOld` in addons/account/models/account_tax.py:440", "shortDescription": {"text": "Legacy-named symbol `trackingOld` in addons/account/models/account_tax.py:440"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2cabf97e5572687e", "name": "Legacy-named symbol `invoicing_legacy` in addons/account/controllers/portal.py:63", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/account/controllers/portal.py:63"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a03b6962183ebb4", "name": "Legacy-named symbol `heartbeatKillOld` in addons/bus/static/src/multi_tab_fallback_service.js:46", "shortDescription": {"text": "Legacy-named symbol `heartbeatKillOld` in addons/bus/static/src/multi_tab_fallback_service.js:46"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41c1df8c2cdf37df", "name": "Legacy-named symbol `trackingOld` in addons/account_peppol/models/res_partner.py:95", "shortDescription": {"text": "Legacy-named symbol `trackingOld` in addons/account_peppol/models/res_partner.py:95"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b36bc21c1f77a977", "name": "Legacy-named symbol `signing_certificate_v2` in addons/l10n_eg_edi_eta/models/eta_thumb_drive.py:125", "shortDescription": {"text": "Legacy-named symbol `signing_certificate_v2` in addons/l10n_eg_edi_eta/models/eta_thumb_drive.py:125"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-515ec28d935b4d22", "name": "Legacy-named symbol `is_deprecated` in addons/payment_paymob/models/payment_provider.py:102", "shortDescription": {"text": "Legacy-named symbol `is_deprecated` in addons/payment_paymob/models/payment_provider.py:102"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb3d73b5b4ece42b", "name": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/hr_timesheet.py:97", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/hr_timesheet.py:97"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-351c8ffd5fdfcfb3", "name": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/sale_order_line.py:167", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/sale_order_line.py:167"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d8c1a2c9dd18f03", "name": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/account_move_line.py:24", "shortDescription": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/account_move_line.py:24"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-905000e36b2c039f", "name": "Legacy-named symbol `_generate_overtime_vals_v2` in addons/hr_attendance/models/hr_attendance.py:347", "shortDescription": {"text": "Legacy-named symbol `_generate_overtime_vals_v2` in addons/hr_attendance/models/hr_attendance.py:347"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1ca50985b0e90d1", "name": "Legacy-named symbol `_generate_overtime_vals_v2` in addons/hr_attendance/models/hr_attendance_overtime_rule.py:700", "shortDescription": {"text": "Legacy-named symbol `_generate_overtime_vals_v2` in addons/hr_attendance/models/hr_attendance_overtime_rule.py:700"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77631ce46799aba9", "name": "Legacy-named symbol `WebsiteSlidesLegacy` in addons/website_slides/controllers/legacy.py:8", "shortDescription": {"text": "Legacy-named symbol `WebsiteSlidesLegacy` in addons/website_slides/controllers/legacy.py:8"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b53cb564c30a7e7", "name": "Stub function `_add_invoice_delivery_nodes` (body is just `pass`/`return`) \u2014 addons/l10n_jo_edi/models/account_edi_xml_u", "shortDescription": {"text": "Stub function `_add_invoice_delivery_nodes` (body is just `pass`/`return`) \u2014 addons/l10n_jo_edi/models/account_edi_xml_ubl_21_jo.py:199"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8af3cbf440c9caa4", "name": "Legacy-named symbol `move_to_copy` in addons/mrp_subcontracting/models/stock_rule.py:11", "shortDescription": {"text": "Legacy-named symbol `move_to_copy` in addons/mrp_subcontracting/models/stock_rule.py:11"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e579b71827198eb7", "name": "Stub function `_compute_analytic_distribution` (body is just `pass`/`return`) \u2014 addons/analytic/models/analytic_mixin.py", "shortDescription": {"text": "Stub function `_compute_analytic_distribution` (body is just `pass`/`return`) \u2014 addons/analytic/models/analytic_mixin.py:77"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6db3052d5f0bc3d8", "name": "Legacy-named symbol `_get_recurring_fields_to_copy` in addons/sale_project/models/project_task_recurrence.py:10", "shortDescription": {"text": "Legacy-named symbol `_get_recurring_fields_to_copy` in addons/sale_project/models/project_task_recurrence.py:10"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd1c65569226cf73", "name": "Stub function `_add_pos_order_payment_means_nodes` (body is just `pass`/`return`) \u2014 addons/pos_edi_ubl/models/pos_edi_ub", "shortDescription": {"text": "Stub function `_add_pos_order_payment_means_nodes` (body is just `pass`/`return`) \u2014 addons/pos_edi_ubl/models/pos_edi_ubl_21.py:108"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6bebf9a55881f3c4", "name": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web_unsplash/static/src/frontend/unsplash_beacon.js:27", "shortDescription": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web_unsplash/static/src/frontend/unsplash_beacon.js:27"}, "fullDescription": {"text": "This fetch result is neither awaited, returned, assigned, nor followed by `.catch(...)`. A network failure can therefore become an unhandled promise rejection. Await/return the promise or attach an explicit rejection handler."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-07568b8c4e1a0516", "name": "Network/subprocess call without timeout or try/except \u2014 addons/web_unsplash/controllers/main.py:37", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/web_unsplash/controllers/main.py:37"}, "fullDescription": {"text": "`requests.get(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-f8d0cbfbdfcebb73", "name": "Legacy-named symbol `move_to_copy` in addons/mrp/models/stock_rule.py:246", "shortDescription": {"text": "Legacy-named symbol `move_to_copy` in addons/mrp/models/stock_rule.py:246"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4d19ff3afd9be3a", "name": "Legacy-named symbol `_get_recurring_fields_to_copy` in addons/project/models/project_task_recurrence.py:41", "shortDescription": {"text": "Legacy-named symbol `_get_recurring_fields_to_copy` in addons/project/models/project_task_recurrence.py:41"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ace618d9a8351fc2", "name": "Network/subprocess call without timeout or try/except \u2014 setup/package.py:122", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 setup/package.py:122"}, "fullDescription": {"text": "`subprocess.call(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 0.85}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same substantial AST body hash:\naddons/cloud_storage_azure/utils/cleanup_cloud_storage_azure.py:95:get_blobs_to_be_deleted, addons/cloud_storage_google/utils/cleanup_cloud_storage_google.py:88:get_blobs_to_be_deleted\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5789932c5c8f09a", "name": "Proxy-Authorization leak in requests <2.31.0 (requests@2.25.1)", "shortDescription": {"text": "Proxy-Authorization leak in requests <2.31.0 (requests@2.25.1)"}, "fullDescription": {"text": "Package `requests` at declared version `2.25.1` matches a known-vulnerable release (CVE: CVE-2023-32681). Upgrade to a patched version per the upstream advisory. This is an embedded trip-wire \u2014 run the trivy adapter or OSV / Snyk / Dependabot for comprehensive coverage."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da010e22322e4a6a", "name": "Vulnerable dependency cbor2 5.4.2.post1: GHSA-3c37-wwvx-h642", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.2.post1: GHSA-3c37-wwvx-h642"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.2.post1` (declared in `requirements.txt`) is affected by GHSA-3c37-wwvx-h642.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3c37-wwvx-h642\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-776d287f8b2f40e6", "name": "Vulnerable dependency cbor2 5.4.2.post1: GHSA-wcj4-jw5j-44wh", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.2.post1: GHSA-wcj4-jw5j-44wh"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.2.post1` (declared in `requirements.txt`) is affected by GHSA-wcj4-jw5j-44wh.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-wcj4-jw5j-44wh\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8569f7a2e4555cbb", "name": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2024-155", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2024-155"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.2.post1` (declared in `requirements.txt`) is affected by PYSEC-2024-155.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2024-155\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-999407985ebd9684", "name": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2025-238", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2025-238"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.2.post1` (declared in `requirements.txt`) is affected by PYSEC-2025-238.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2025-238\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4651eac521dae5b7", "name": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2025-90", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2025-90"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.2.post1` (declared in `requirements.txt`) is affected by PYSEC-2025-90.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2025-90\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f262d7f5c16c4c0", "name": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2026-2123", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2026-2123"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.2.post1` (declared in `requirements.txt`) is affected by PYSEC-2026-2123.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2123\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3f123ec4b0b57079", "name": "Vulnerable dependency cbor2 5.4.6: GHSA-3c37-wwvx-h642", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.6: GHSA-3c37-wwvx-h642"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.6` (declared in `requirements.txt`) is affected by GHSA-3c37-wwvx-h642.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3c37-wwvx-h642\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-751eacff503bc325", "name": "Vulnerable dependency cbor2 5.4.6: GHSA-wcj4-jw5j-44wh", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.6: GHSA-wcj4-jw5j-44wh"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.6` (declared in `requirements.txt`) is affected by GHSA-wcj4-jw5j-44wh.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-wcj4-jw5j-44wh\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f273a2a242e5d4e", "name": "Vulnerable dependency cbor2 5.4.6: PYSEC-2024-155", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2024-155"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.6` (declared in `requirements.txt`) is affected by PYSEC-2024-155.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2024-155\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e759da65cd9e421", "name": "Vulnerable dependency cbor2 5.4.6: PYSEC-2025-238", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2025-238"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.6` (declared in `requirements.txt`) is affected by PYSEC-2025-238.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2025-238\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-291142a434a4ee90", "name": "Vulnerable dependency cbor2 5.4.6: PYSEC-2025-90", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2025-90"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.6` (declared in `requirements.txt`) is affected by PYSEC-2025-90.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2025-90\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aee29b2932a2282a", "name": "Vulnerable dependency cbor2 5.4.6: PYSEC-2026-2123", "shortDescription": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2026-2123"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.4.6` (declared in `requirements.txt`) is affected by PYSEC-2026-2123.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2123\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f827ea7599883fa6", "name": "Vulnerable dependency cbor2 5.6.2: GHSA-3c37-wwvx-h642", "shortDescription": {"text": "Vulnerable dependency cbor2 5.6.2: GHSA-3c37-wwvx-h642"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.6.2` (declared in `requirements.txt`) is affected by GHSA-3c37-wwvx-h642.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3c37-wwvx-h642\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52ddc4bcfe9da10b", "name": "Vulnerable dependency cbor2 5.6.2: GHSA-wcj4-jw5j-44wh", "shortDescription": {"text": "Vulnerable dependency cbor2 5.6.2: GHSA-wcj4-jw5j-44wh"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.6.2` (declared in `requirements.txt`) is affected by GHSA-wcj4-jw5j-44wh.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-wcj4-jw5j-44wh\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a6f7acaad84db93", "name": "Vulnerable dependency cbor2 5.6.2: PYSEC-2025-238", "shortDescription": {"text": "Vulnerable dependency cbor2 5.6.2: PYSEC-2025-238"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.6.2` (declared in `requirements.txt`) is affected by PYSEC-2025-238.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2025-238\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-883d81e11a8009e6", "name": "Vulnerable dependency cbor2 5.6.2: PYSEC-2025-90", "shortDescription": {"text": "Vulnerable dependency cbor2 5.6.2: PYSEC-2025-90"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.6.2` (declared in `requirements.txt`) is affected by PYSEC-2025-90.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2025-90\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1c6a3c1fee2bcd9c", "name": "Vulnerable dependency cbor2 5.6.2: PYSEC-2026-2123", "shortDescription": {"text": "Vulnerable dependency cbor2 5.6.2: PYSEC-2026-2123"}, "fullDescription": {"text": "OSV.dev reports `cbor2` at version `5.6.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2123.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2123\nFix: upgrade `cbor2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0cd8caaf37ea541", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-3ww4-gg4f-jr7f", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-3ww4-gg4f-jr7f"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-3ww4-gg4f-jr7f.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3ww4-gg4f-jr7f\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cda4386982bf6fbe", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-537c-gmf6-5ccf", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-537c-gmf6-5ccf"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-537c-gmf6-5ccf.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-537c-gmf6-5ccf\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78bcb03e16bcbf4d", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-5cpq-8wj7-hf2v", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-5cpq-8wj7-hf2v"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-5cpq-8wj7-hf2v.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-5cpq-8wj7-hf2v\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e56d043bea0e20e", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-9v9h-cgj8-h64p", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-9v9h-cgj8-h64p"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-9v9h-cgj8-h64p.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9v9h-cgj8-h64p\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1dffdf8c8f89d474", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-jfhm-5ghh-2f97", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-jfhm-5ghh-2f97"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-jfhm-5ghh-2f97.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jfhm-5ghh-2f97\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2983349048d9a5e3", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-jm77-qphf-c4w8", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-jm77-qphf-c4w8"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-jm77-qphf-c4w8.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jm77-qphf-c4w8\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0c566015343bd129", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-m959-cc7f-wv43", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-m959-cc7f-wv43"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-m959-cc7f-wv43.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-m959-cc7f-wv43\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d800508c02bc4e10", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-r6ph-v2qm-q3c2", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-r6ph-v2qm-q3c2"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-r6ph-v2qm-q3c2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-r6ph-v2qm-q3c2\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9c26ca9b4814e3c", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-v8gr-m533-ghj9", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-v8gr-m533-ghj9"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-v8gr-m533-ghj9.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-v8gr-m533-ghj9\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f50b63825517d16a", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-w7pp-m8wf-vj6r", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-w7pp-m8wf-vj6r"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-w7pp-m8wf-vj6r.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-w7pp-m8wf-vj6r\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84af4d6e5d5b1f40", "name": "Vulnerable dependency cryptography 3.4.8: GHSA-x4qr-2fvf-3mr5", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-x4qr-2fvf-3mr5"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by GHSA-x4qr-2fvf-3mr5.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-x4qr-2fvf-3mr5\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-545f5a649a73cbee", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2023-11", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2023-11"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2023-11.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-11\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0da139d979465122", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2023-254", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2023-254"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2023-254.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-254\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-60e970ebca26528f", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-1283", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-1283"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2026-1283.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1283\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81dcde9b9760fd88", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-1285", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-1285"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2026-1285.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1285\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8693ecd3431be9cb", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-2141", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-2141"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2026-2141.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2141\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b496aae761de9b7c", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-35", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-35"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2026-35.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-35\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5efd791101a7d7e1", "name": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-800", "shortDescription": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-800"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `3.4.8` (declared in `requirements.txt`) is affected by PYSEC-2026-800.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-800\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-10234913a5d83aa4", "name": "Vulnerable dependency cryptography 42.0.8: GHSA-537c-gmf6-5ccf", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-537c-gmf6-5ccf"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by GHSA-537c-gmf6-5ccf.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-537c-gmf6-5ccf\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-579bb33a3687e191", "name": "Vulnerable dependency cryptography 42.0.8: GHSA-79v4-65xg-pq4g", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-79v4-65xg-pq4g"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by GHSA-79v4-65xg-pq4g.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-79v4-65xg-pq4g\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-94ba1aeffe920791", "name": "Vulnerable dependency cryptography 42.0.8: GHSA-h4gh-qq45-vh27", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-h4gh-qq45-vh27"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by GHSA-h4gh-qq45-vh27.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-h4gh-qq45-vh27\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93977bedf6028876", "name": "Vulnerable dependency cryptography 42.0.8: GHSA-m959-cc7f-wv43", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-m959-cc7f-wv43"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by GHSA-m959-cc7f-wv43.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-m959-cc7f-wv43\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7742bf03f54b2edd", "name": "Vulnerable dependency cryptography 42.0.8: GHSA-r6ph-v2qm-q3c2", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-r6ph-v2qm-q3c2"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by GHSA-r6ph-v2qm-q3c2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-r6ph-v2qm-q3c2\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-71fd1712e6b24518", "name": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-1284", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-1284"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by PYSEC-2026-1284.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1284\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f9446cfd2f0bb7c", "name": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-2141", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-2141"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by PYSEC-2026-2141.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2141\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-193f9ebb347b48f5", "name": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-35", "shortDescription": {"text": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-35"}, "fullDescription": {"text": "OSV.dev reports `cryptography` at version `42.0.8` (declared in `requirements.txt`) is affected by PYSEC-2026-35.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-35\nFix: upgrade `cryptography` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-763a80ef0068f6a5", "name": "Vulnerable dependency gevent 21.8.0: GHSA-x7m3-jprg-wc5g", "shortDescription": {"text": "Vulnerable dependency gevent 21.8.0: GHSA-x7m3-jprg-wc5g"}, "fullDescription": {"text": "OSV.dev reports `gevent` at version `21.8.0` (declared in `requirements.txt`) is affected by GHSA-x7m3-jprg-wc5g.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-x7m3-jprg-wc5g\nFix: upgrade `gevent` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f8398fa90f71986", "name": "Vulnerable dependency gevent 21.8.0: PYSEC-2023-177", "shortDescription": {"text": "Vulnerable dependency gevent 21.8.0: PYSEC-2023-177"}, "fullDescription": {"text": "OSV.dev reports `gevent` at version `21.8.0` (declared in `requirements.txt`) is affected by PYSEC-2023-177.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-177\nFix: upgrade `gevent` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bcc3a59512fe2a64", "name": "Vulnerable dependency gevent 22.10.2: GHSA-x7m3-jprg-wc5g", "shortDescription": {"text": "Vulnerable dependency gevent 22.10.2: GHSA-x7m3-jprg-wc5g"}, "fullDescription": {"text": "OSV.dev reports `gevent` at version `22.10.2` (declared in `requirements.txt`) is affected by GHSA-x7m3-jprg-wc5g.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-x7m3-jprg-wc5g\nFix: upgrade `gevent` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4b4c78eafd954d6", "name": "Vulnerable dependency gevent 22.10.2: PYSEC-2023-177", "shortDescription": {"text": "Vulnerable dependency gevent 22.10.2: PYSEC-2023-177"}, "fullDescription": {"text": "OSV.dev reports `gevent` at version `22.10.2` (declared in `requirements.txt`) is affected by PYSEC-2023-177.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-177\nFix: upgrade `gevent` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b6f97af361a2761a", "name": "Vulnerable dependency idna 2.10: GHSA-65pc-fj4g-8rjx", "shortDescription": {"text": "Vulnerable dependency idna 2.10: GHSA-65pc-fj4g-8rjx"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `2.10` (declared in `requirements.txt`) is affected by GHSA-65pc-fj4g-8rjx.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-65pc-fj4g-8rjx\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-831db662fbcf8181", "name": "Vulnerable dependency idna 2.10: GHSA-jjg7-2v4v-x38h", "shortDescription": {"text": "Vulnerable dependency idna 2.10: GHSA-jjg7-2v4v-x38h"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `2.10` (declared in `requirements.txt`) is affected by GHSA-jjg7-2v4v-x38h.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jjg7-2v4v-x38h\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d34eef29cff01f0", "name": "Vulnerable dependency idna 2.10: PYSEC-2024-60", "shortDescription": {"text": "Vulnerable dependency idna 2.10: PYSEC-2024-60"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `2.10` (declared in `requirements.txt`) is affected by PYSEC-2024-60.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2024-60\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-942cf532f34795a2", "name": "Vulnerable dependency idna 2.10: PYSEC-2026-215", "shortDescription": {"text": "Vulnerable dependency idna 2.10: PYSEC-2026-215"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `2.10` (declared in `requirements.txt`) is affected by PYSEC-2026-215.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-215\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e431dec93306c633", "name": "Vulnerable dependency idna 3.6: GHSA-65pc-fj4g-8rjx", "shortDescription": {"text": "Vulnerable dependency idna 3.6: GHSA-65pc-fj4g-8rjx"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `3.6` (declared in `requirements.txt`) is affected by GHSA-65pc-fj4g-8rjx.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-65pc-fj4g-8rjx\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b855d0be07cd56fe", "name": "Vulnerable dependency idna 3.6: GHSA-jjg7-2v4v-x38h", "shortDescription": {"text": "Vulnerable dependency idna 3.6: GHSA-jjg7-2v4v-x38h"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `3.6` (declared in `requirements.txt`) is affected by GHSA-jjg7-2v4v-x38h.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jjg7-2v4v-x38h\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6bc033ff9fa2c928", "name": "Vulnerable dependency idna 3.6: PYSEC-2024-60", "shortDescription": {"text": "Vulnerable dependency idna 3.6: PYSEC-2024-60"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `3.6` (declared in `requirements.txt`) is affected by PYSEC-2024-60.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2024-60\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a44d54ed50a18a2", "name": "Vulnerable dependency idna 3.6: PYSEC-2026-215", "shortDescription": {"text": "Vulnerable dependency idna 3.6: PYSEC-2026-215"}, "fullDescription": {"text": "OSV.dev reports `idna` at version `3.6` (declared in `requirements.txt`) is affected by PYSEC-2026-215.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-215\nFix: upgrade `idna` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9ebb6ecf0236529", "name": "Vulnerable dependency Jinja2 3.0.3: GHSA-cpwx-vrp4-4pq7", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-cpwx-vrp4-4pq7"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by GHSA-cpwx-vrp4-4pq7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-cpwx-vrp4-4pq7\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d962e2f60f9bb30", "name": "Vulnerable dependency Jinja2 3.0.3: GHSA-gmj6-6f8f-6699", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-gmj6-6f8f-6699"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by GHSA-gmj6-6f8f-6699.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-gmj6-6f8f-6699\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a68fd3a42960d5b3", "name": "Vulnerable dependency Jinja2 3.0.3: GHSA-h5c8-rqwp-cp95", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-h5c8-rqwp-cp95"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by GHSA-h5c8-rqwp-cp95.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-h5c8-rqwp-cp95\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd1a051799abb907", "name": "Vulnerable dependency Jinja2 3.0.3: GHSA-h75v-3vvj-5mfj", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-h75v-3vvj-5mfj"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by GHSA-h75v-3vvj-5mfj.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-h75v-3vvj-5mfj\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1596704675be5f8b", "name": "Vulnerable dependency Jinja2 3.0.3: GHSA-q2x7-8rv6-6q7h", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-q2x7-8rv6-6q7h"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by GHSA-q2x7-8rv6-6q7h.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-q2x7-8rv6-6q7h\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f71e5d5516240f0f", "name": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1471", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1471"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by PYSEC-2026-1471.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1471\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d11ecfbfd67ae24", "name": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1472", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1472"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by PYSEC-2026-1472.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1472\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab5f6ea65bd6835e", "name": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1473", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1473"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by PYSEC-2026-1473.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1473\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5c1c061c2785805", "name": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1474", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1474"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by PYSEC-2026-1474.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1474\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-25092ece3bd10c37", "name": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1475", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1475"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.0.3` (declared in `requirements.txt`) is affected by PYSEC-2026-1475.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1475\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-178f184de2d1be64", "name": "Vulnerable dependency Jinja2 3.1.2: GHSA-cpwx-vrp4-4pq7", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-cpwx-vrp4-4pq7"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by GHSA-cpwx-vrp4-4pq7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-cpwx-vrp4-4pq7\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b49dec9c19e1d2d6", "name": "Vulnerable dependency Jinja2 3.1.2: GHSA-gmj6-6f8f-6699", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-gmj6-6f8f-6699"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by GHSA-gmj6-6f8f-6699.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-gmj6-6f8f-6699\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7061b3c91d760e64", "name": "Vulnerable dependency Jinja2 3.1.2: GHSA-h5c8-rqwp-cp95", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-h5c8-rqwp-cp95"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by GHSA-h5c8-rqwp-cp95.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-h5c8-rqwp-cp95\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-43712be10f564795", "name": "Vulnerable dependency Jinja2 3.1.2: GHSA-h75v-3vvj-5mfj", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-h75v-3vvj-5mfj"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by GHSA-h75v-3vvj-5mfj.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-h75v-3vvj-5mfj\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bff250c3ced958f5", "name": "Vulnerable dependency Jinja2 3.1.2: GHSA-q2x7-8rv6-6q7h", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-q2x7-8rv6-6q7h"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by GHSA-q2x7-8rv6-6q7h.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-q2x7-8rv6-6q7h\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f91315c5be0c98d", "name": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1471", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1471"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by PYSEC-2026-1471.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1471\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78f9a8a00f33b2ec", "name": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1472", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1472"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by PYSEC-2026-1472.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1472\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e2fa83db287f390", "name": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1473", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1473"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by PYSEC-2026-1473.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1473\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-71daf142da189043", "name": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1474", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1474"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by PYSEC-2026-1474.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1474\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f204718e4b0c11d1", "name": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1475", "shortDescription": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1475"}, "fullDescription": {"text": "OSV.dev reports `Jinja2` at version `3.1.2` (declared in `requirements.txt`) is affected by PYSEC-2026-1475.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1475\nFix: upgrade `Jinja2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-656c08b5a39d9103", "name": "Vulnerable dependency lxml 4.8.0: GHSA-vfmq-68hx-4jfw", "shortDescription": {"text": "Vulnerable dependency lxml 4.8.0: GHSA-vfmq-68hx-4jfw"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `4.8.0` (declared in `requirements.txt`) is affected by GHSA-vfmq-68hx-4jfw (aka CVE-2026-41066).\n\nlxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to local files\n\nAliases: CVE-2026-41066, PYSEC-2026-87\nAdvisory: https://osv.dev/vulnerability/GHSA-vfmq-68hx-4jfw\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-774722fc255b3c2f", "name": "Vulnerable dependency lxml 4.8.0: GHSA-wrxv-2j5q-m38w", "shortDescription": {"text": "Vulnerable dependency lxml 4.8.0: GHSA-wrxv-2j5q-m38w"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `4.8.0` (declared in `requirements.txt`) is affected by GHSA-wrxv-2j5q-m38w.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-wrxv-2j5q-m38w\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-663957195094f58c", "name": "Vulnerable dependency lxml 4.8.0: PYSEC-2022-230", "shortDescription": {"text": "Vulnerable dependency lxml 4.8.0: PYSEC-2022-230"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `4.8.0` (declared in `requirements.txt`) is affected by PYSEC-2022-230.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2022-230\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a24d5a2b74f2a1f5", "name": "Vulnerable dependency lxml 4.9.3: GHSA-vfmq-68hx-4jfw", "shortDescription": {"text": "Vulnerable dependency lxml 4.9.3: GHSA-vfmq-68hx-4jfw"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `4.9.3` (declared in `requirements.txt`) is affected by GHSA-vfmq-68hx-4jfw (aka CVE-2026-41066).\n\nlxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to local files\n\nAliases: CVE-2026-41066, PYSEC-2026-87\nAdvisory: https://osv.dev/vulnerability/GHSA-vfmq-68hx-4jfw\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-920a38a32d5e6f8b", "name": "Vulnerable dependency lxml 5.2.1: GHSA-vfmq-68hx-4jfw", "shortDescription": {"text": "Vulnerable dependency lxml 5.2.1: GHSA-vfmq-68hx-4jfw"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `5.2.1` (declared in `requirements.txt`) is affected by GHSA-vfmq-68hx-4jfw (aka CVE-2026-41066).\n\nlxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to local files\n\nAliases: CVE-2026-41066, PYSEC-2026-87\nAdvisory: https://osv.dev/vulnerability/GHSA-vfmq-68hx-4jfw\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e68d25815da25c5", "name": "Vulnerable dependency lxml 5.4.0: GHSA-vfmq-68hx-4jfw", "shortDescription": {"text": "Vulnerable dependency lxml 5.4.0: GHSA-vfmq-68hx-4jfw"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-vfmq-68hx-4jfw (aka CVE-2026-41066).\n\nlxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to local files\n\nAliases: CVE-2026-41066, PYSEC-2026-87\nAdvisory: https://osv.dev/vulnerability/GHSA-vfmq-68hx-4jfw\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f597d00bd5afee05", "name": "Vulnerable dependency lxml 6.0.2: GHSA-vfmq-68hx-4jfw", "shortDescription": {"text": "Vulnerable dependency lxml 6.0.2: GHSA-vfmq-68hx-4jfw"}, "fullDescription": {"text": "OSV.dev reports `lxml` at version `6.0.2` (declared in `requirements.txt`) is affected by GHSA-vfmq-68hx-4jfw (aka CVE-2026-41066).\n\nlxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to local files\n\nAliases: CVE-2026-41066, PYSEC-2026-87\nAdvisory: https://osv.dev/vulnerability/GHSA-vfmq-68hx-4jfw\nFix: upgrade `lxml` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec794a74a88e3fc6", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-3f63-hfp8-52jq", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-3f63-hfp8-52jq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-3f63-hfp8-52jq.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3f63-hfp8-52jq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56b8382fd6a17788", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-44wm-f244-xhp3", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-44wm-f244-xhp3"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-44wm-f244-xhp3.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-44wm-f244-xhp3\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2921db269b769b4", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-45hq-cxwh-f6vc", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-45hq-cxwh-f6vc"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-45hq-cxwh-f6vc (aka CVE-2026-55379).\n\nPillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via font loading\n\nAliases: BIT-pillow-2026-55379, CVE-2026-55379, PYSEC-2026-2255\nAdvisory: https://osv.dev/vulnerability/GHSA-45hq-cxwh-f6vc\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6a1ab249c24f208", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-4x4j-2g7c-83w6", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-4x4j-2g7c-83w6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-4x4j-2g7c-83w6 (aka CVE-2026-55798).\n\nPillow: WindowsViewer.get_command() OS command injection via unescaped shell path\n\nAliases: BIT-pillow-2026-55798, CVE-2026-55798, PYSEC-2026-2257\nAdvisory: https://osv.dev/vulnerability/GHSA-4x4j-2g7c-83w6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a41958b4dcd0c13", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-5x94-69rx-g8h2", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-5x94-69rx-g8h2"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-5x94-69rx-g8h2 (aka CVE-2026-54060).\n\nPillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-54060, CVE-2026-54060, GHSA-5x94-69rx-g8h2, PYSEC-2026-2254\nAdvisory: https://osv.dev/vulnerability/GHSA-5x94-69rx-g8h2\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5f2543dfddd9fa06", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-62p4-gmf7-7g93", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-62p4-gmf7-7g93"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-62p4-gmf7-7g93 (aka CVE-2026-54058).\n\nPillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files)\n\nAliases: BIT-pillow-2026-54058, CVE-2026-54058, PYSEC-2026-3493\nAdvisory: https://osv.dev/vulnerability/GHSA-62p4-gmf7-7g93\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72e67c544ab12b06", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-6r8x-57c9-28j4", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-6r8x-57c9-28j4"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-6r8x-57c9-28j4 (aka CVE-2026-59199).\n\nPillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow\n\nAliases: BIT-pillow-2026-59199, CVE-2026-59199, PYSEC-2026-3451\nAdvisory: https://osv.dev/vulnerability/GHSA-6r8x-57c9-28j4\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1cd0eb1fb14b29bd", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-8ghj-p4vj-mr35", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-8ghj-p4vj-mr35"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-8ghj-p4vj-mr35.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-8ghj-p4vj-mr35\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2bf3d645f1b75c5", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-8v84-f9pq-wr9x", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-8v84-f9pq-wr9x"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-8v84-f9pq-wr9x (aka CVE-2026-54059).\n\nPillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via PCF font loading\n\nAliases: BIT-pillow-2026-54059, CVE-2026-54059, GHSA-8v84-f9pq-wr9x, PYSEC-2026-2253\nAdvisory: https://osv.dev/vulnerability/GHSA-8v84-f9pq-wr9x\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01ee9d0f31ff73a6", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-9hw9-ch79-4vh6", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-9hw9-ch79-4vh6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-9hw9-ch79-4vh6 (aka CVE-2026-59205).\n\nPillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch\n\nAliases: BIT-pillow-2026-59205, CVE-2026-59205, PYSEC-2026-3453\nAdvisory: https://osv.dev/vulnerability/GHSA-9hw9-ch79-4vh6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-889acd311f4ce26a", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-fj7v-r99m-22gq", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-fj7v-r99m-22gq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-fj7v-r99m-22gq (aka CVE-2026-59198).\n\nPillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images\n\nAliases: BIT-pillow-2026-59198, CVE-2026-59198, PYSEC-2026-3494\nAdvisory: https://osv.dev/vulnerability/GHSA-fj7v-r99m-22gq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-328766002a09ee10", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-j7hp-h8jx-5ppr", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-j7hp-h8jx-5ppr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-j7hp-h8jx-5ppr.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-j7hp-h8jx-5ppr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-05a2f9fdf4ace0ba", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-jjj6-mw9f-p565", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-jjj6-mw9f-p565"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-jjj6-mw9f-p565 (aka CVE-2026-59200).\n\nPillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()\n\nAliases: BIT-pillow-2026-59200, CVE-2026-59200, PYSEC-2026-3495\nAdvisory: https://osv.dev/vulnerability/GHSA-jjj6-mw9f-p565\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37e30b5ddbcd32cd", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-m2vv-5vj5-2hm7", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-m2vv-5vj5-2hm7"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-m2vv-5vj5-2hm7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-m2vv-5vj5-2hm7\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-110e25768447c313", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-phj9-mv4w-65pm", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-phj9-mv4w-65pm"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-phj9-mv4w-65pm (aka CVE-2026-55380).\n\nPillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-55380, CVE-2026-55380, PYSEC-2026-2256\nAdvisory: https://osv.dev/vulnerability/GHSA-phj9-mv4w-65pm\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8b1a6c0bf466e19", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-r73j-pqj5-w3x7 (aka CVE-2026-42310).\n\nPillow has a PDF Parsing Trailer Infinite Loop (DoS)\n\nAliases: BIT-pillow-2026-42310, CVE-2026-42310, PYSEC-2026-2874\nAdvisory: https://osv.dev/vulnerability/GHSA-r73j-pqj5-w3x7\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-966726da535e9e8f", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-vjc4-5qp5-m44j", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-vjc4-5qp5-m44j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-vjc4-5qp5-m44j (aka CVE-2026-59204).\n\nPillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service\n\nAliases: BIT-pillow-2026-59204, CVE-2026-59204, PYSEC-2026-3496\nAdvisory: https://osv.dev/vulnerability/GHSA-vjc4-5qp5-m44j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d0d15c2f8248ba5c", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-wjx4-4jcj-g98j", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-wjx4-4jcj-g98j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-wjx4-4jcj-g98j (aka CVE-2026-42308).\n\nPillow has an integer overflow when processing fonts\n\nAliases: BIT-pillow-2026-42308, CVE-2026-42308, GHSA-wjx4-4jcj-g98j, PYSEC-2026-165\nAdvisory: https://osv.dev/vulnerability/GHSA-wjx4-4jcj-g98j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-879607f9e0394fb1", "name": "Vulnerable dependency Pillow 9.0.1: GHSA-xj96-63gp-2gmr", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-xj96-63gp-2gmr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by GHSA-xj96-63gp-2gmr (aka CVE-2026-59197).\n\nPillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`\n\nAliases: BIT-pillow-2026-59197, CVE-2026-59197, PYSEC-2026-3454\nAdvisory: https://osv.dev/vulnerability/GHSA-xj96-63gp-2gmr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-247a332d7481bc33", "name": "Vulnerable dependency Pillow 9.0.1: PYSEC-2022-42979", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2022-42979"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by PYSEC-2022-42979.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2022-42979\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28b61e090acd168f", "name": "Vulnerable dependency Pillow 9.0.1: PYSEC-2023-175", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2023-175"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by PYSEC-2023-175.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-175\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9530fbd13c27228", "name": "Vulnerable dependency Pillow 9.0.1: PYSEC-2023-227", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2023-227"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by PYSEC-2023-227.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-227\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24ea59a90a602a8b", "name": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-1793", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-1793"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-1793.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1793\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-758f0e5fbd56c8b5", "name": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-1794", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-1794"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-1794.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1794\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9aa4dd371605d7e", "name": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-457", "shortDescription": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-457"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-457.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-457\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a06f18c919e2746a", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-3f63-hfp8-52jq", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-3f63-hfp8-52jq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-3f63-hfp8-52jq.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3f63-hfp8-52jq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4bb92406a94c50b6", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-44wm-f244-xhp3", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-44wm-f244-xhp3"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-44wm-f244-xhp3.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-44wm-f244-xhp3\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8604c5c22f74c00f", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-45hq-cxwh-f6vc", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-45hq-cxwh-f6vc"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-45hq-cxwh-f6vc (aka CVE-2026-55379).\n\nPillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via font loading\n\nAliases: BIT-pillow-2026-55379, CVE-2026-55379, PYSEC-2026-2255\nAdvisory: https://osv.dev/vulnerability/GHSA-45hq-cxwh-f6vc\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-88f3bfccb8d6eb41", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-4x4j-2g7c-83w6", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-4x4j-2g7c-83w6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-4x4j-2g7c-83w6 (aka CVE-2026-55798).\n\nPillow: WindowsViewer.get_command() OS command injection via unescaped shell path\n\nAliases: BIT-pillow-2026-55798, CVE-2026-55798, PYSEC-2026-2257\nAdvisory: https://osv.dev/vulnerability/GHSA-4x4j-2g7c-83w6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d90680e8311a27d5", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-5x94-69rx-g8h2", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-5x94-69rx-g8h2"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-5x94-69rx-g8h2 (aka CVE-2026-54060).\n\nPillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-54060, CVE-2026-54060, GHSA-5x94-69rx-g8h2, PYSEC-2026-2254\nAdvisory: https://osv.dev/vulnerability/GHSA-5x94-69rx-g8h2\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d8b93ac37a6faceb", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-62p4-gmf7-7g93", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-62p4-gmf7-7g93"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-62p4-gmf7-7g93 (aka CVE-2026-54058).\n\nPillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files)\n\nAliases: BIT-pillow-2026-54058, CVE-2026-54058, PYSEC-2026-3493\nAdvisory: https://osv.dev/vulnerability/GHSA-62p4-gmf7-7g93\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ac44a8d4e8844223", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-6r8x-57c9-28j4", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-6r8x-57c9-28j4"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-6r8x-57c9-28j4 (aka CVE-2026-59199).\n\nPillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow\n\nAliases: BIT-pillow-2026-59199, CVE-2026-59199, PYSEC-2026-3451\nAdvisory: https://osv.dev/vulnerability/GHSA-6r8x-57c9-28j4\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d6384316241ae95", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-8ghj-p4vj-mr35", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-8ghj-p4vj-mr35"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-8ghj-p4vj-mr35.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-8ghj-p4vj-mr35\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fbfd450cdbec9be", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-8v84-f9pq-wr9x", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-8v84-f9pq-wr9x"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-8v84-f9pq-wr9x (aka CVE-2026-54059).\n\nPillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via PCF font loading\n\nAliases: BIT-pillow-2026-54059, CVE-2026-54059, GHSA-8v84-f9pq-wr9x, PYSEC-2026-2253\nAdvisory: https://osv.dev/vulnerability/GHSA-8v84-f9pq-wr9x\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0b7113a1cddca9f6", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-9hw9-ch79-4vh6", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-9hw9-ch79-4vh6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-9hw9-ch79-4vh6 (aka CVE-2026-59205).\n\nPillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch\n\nAliases: BIT-pillow-2026-59205, CVE-2026-59205, PYSEC-2026-3453\nAdvisory: https://osv.dev/vulnerability/GHSA-9hw9-ch79-4vh6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16e173aea4f9dfe1", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-fj7v-r99m-22gq", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-fj7v-r99m-22gq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-fj7v-r99m-22gq (aka CVE-2026-59198).\n\nPillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images\n\nAliases: BIT-pillow-2026-59198, CVE-2026-59198, PYSEC-2026-3494\nAdvisory: https://osv.dev/vulnerability/GHSA-fj7v-r99m-22gq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9267e1afa7306778", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-j7hp-h8jx-5ppr", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-j7hp-h8jx-5ppr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-j7hp-h8jx-5ppr.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-j7hp-h8jx-5ppr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4584dec53668c904", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-jjj6-mw9f-p565", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-jjj6-mw9f-p565"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-jjj6-mw9f-p565 (aka CVE-2026-59200).\n\nPillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()\n\nAliases: BIT-pillow-2026-59200, CVE-2026-59200, PYSEC-2026-3495\nAdvisory: https://osv.dev/vulnerability/GHSA-jjj6-mw9f-p565\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-af52a46d8ed930d7", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-phj9-mv4w-65pm", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-phj9-mv4w-65pm"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-phj9-mv4w-65pm (aka CVE-2026-55380).\n\nPillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-55380, CVE-2026-55380, PYSEC-2026-2256\nAdvisory: https://osv.dev/vulnerability/GHSA-phj9-mv4w-65pm\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8923482adfeb7a01", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-r73j-pqj5-w3x7 (aka CVE-2026-42310).\n\nPillow has a PDF Parsing Trailer Infinite Loop (DoS)\n\nAliases: BIT-pillow-2026-42310, CVE-2026-42310, PYSEC-2026-2874\nAdvisory: https://osv.dev/vulnerability/GHSA-r73j-pqj5-w3x7\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76813bfbba6a69c8", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-vjc4-5qp5-m44j", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-vjc4-5qp5-m44j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-vjc4-5qp5-m44j (aka CVE-2026-59204).\n\nPillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service\n\nAliases: BIT-pillow-2026-59204, CVE-2026-59204, PYSEC-2026-3496\nAdvisory: https://osv.dev/vulnerability/GHSA-vjc4-5qp5-m44j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4192b2a1ef22b3a1", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-wjx4-4jcj-g98j", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-wjx4-4jcj-g98j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-wjx4-4jcj-g98j (aka CVE-2026-42308).\n\nPillow has an integer overflow when processing fonts\n\nAliases: BIT-pillow-2026-42308, CVE-2026-42308, GHSA-wjx4-4jcj-g98j, PYSEC-2026-165\nAdvisory: https://osv.dev/vulnerability/GHSA-wjx4-4jcj-g98j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e173797820cd8f16", "name": "Vulnerable dependency Pillow 9.4.0: GHSA-xj96-63gp-2gmr", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-xj96-63gp-2gmr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by GHSA-xj96-63gp-2gmr (aka CVE-2026-59197).\n\nPillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`\n\nAliases: BIT-pillow-2026-59197, CVE-2026-59197, PYSEC-2026-3454\nAdvisory: https://osv.dev/vulnerability/GHSA-xj96-63gp-2gmr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ad622687ce41b160", "name": "Vulnerable dependency Pillow 9.4.0: PYSEC-2023-175", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2023-175"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by PYSEC-2023-175.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-175\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbc5028affe36ca3", "name": "Vulnerable dependency Pillow 9.4.0: PYSEC-2023-227", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2023-227"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by PYSEC-2023-227.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-227\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44e57dea1b76df2c", "name": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-1793", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-1793"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1793.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1793\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3864582ad919c89", "name": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-1794", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-1794"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1794.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1794\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6404836804c1027", "name": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-457", "shortDescription": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-457"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `9.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-457.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-457\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa888c6581659e3e", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-44wm-f244-xhp3", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-44wm-f244-xhp3"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-44wm-f244-xhp3.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-44wm-f244-xhp3\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b66769029b6440e7", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-45hq-cxwh-f6vc", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-45hq-cxwh-f6vc"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-45hq-cxwh-f6vc (aka CVE-2026-55379).\n\nPillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via font loading\n\nAliases: BIT-pillow-2026-55379, CVE-2026-55379, PYSEC-2026-2255\nAdvisory: https://osv.dev/vulnerability/GHSA-45hq-cxwh-f6vc\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0331143560bfd141", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-4x4j-2g7c-83w6", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-4x4j-2g7c-83w6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-4x4j-2g7c-83w6 (aka CVE-2026-55798).\n\nPillow: WindowsViewer.get_command() OS command injection via unescaped shell path\n\nAliases: BIT-pillow-2026-55798, CVE-2026-55798, PYSEC-2026-2257\nAdvisory: https://osv.dev/vulnerability/GHSA-4x4j-2g7c-83w6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5608c8896325703", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-5x94-69rx-g8h2", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-5x94-69rx-g8h2"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-5x94-69rx-g8h2 (aka CVE-2026-54060).\n\nPillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-54060, CVE-2026-54060, GHSA-5x94-69rx-g8h2, PYSEC-2026-2254\nAdvisory: https://osv.dev/vulnerability/GHSA-5x94-69rx-g8h2\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb38c3e81586355a", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-62p4-gmf7-7g93", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-62p4-gmf7-7g93"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-62p4-gmf7-7g93 (aka CVE-2026-54058).\n\nPillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files)\n\nAliases: BIT-pillow-2026-54058, CVE-2026-54058, PYSEC-2026-3493\nAdvisory: https://osv.dev/vulnerability/GHSA-62p4-gmf7-7g93\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0a00e13f035d0a18", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-6r8x-57c9-28j4", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-6r8x-57c9-28j4"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-6r8x-57c9-28j4 (aka CVE-2026-59199).\n\nPillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow\n\nAliases: BIT-pillow-2026-59199, CVE-2026-59199, PYSEC-2026-3451\nAdvisory: https://osv.dev/vulnerability/GHSA-6r8x-57c9-28j4\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4811d4e7456e4176", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-8v84-f9pq-wr9x", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-8v84-f9pq-wr9x"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-8v84-f9pq-wr9x (aka CVE-2026-54059).\n\nPillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via PCF font loading\n\nAliases: BIT-pillow-2026-54059, CVE-2026-54059, GHSA-8v84-f9pq-wr9x, PYSEC-2026-2253\nAdvisory: https://osv.dev/vulnerability/GHSA-8v84-f9pq-wr9x\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-080a6ff425be54f5", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-9hw9-ch79-4vh6", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-9hw9-ch79-4vh6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-9hw9-ch79-4vh6 (aka CVE-2026-59205).\n\nPillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch\n\nAliases: BIT-pillow-2026-59205, CVE-2026-59205, PYSEC-2026-3453\nAdvisory: https://osv.dev/vulnerability/GHSA-9hw9-ch79-4vh6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bbe19ede90b0f5b", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-fj7v-r99m-22gq", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-fj7v-r99m-22gq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-fj7v-r99m-22gq (aka CVE-2026-59198).\n\nPillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images\n\nAliases: BIT-pillow-2026-59198, CVE-2026-59198, PYSEC-2026-3494\nAdvisory: https://osv.dev/vulnerability/GHSA-fj7v-r99m-22gq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2360f76453c7d2c1", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-jjj6-mw9f-p565", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-jjj6-mw9f-p565"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-jjj6-mw9f-p565 (aka CVE-2026-59200).\n\nPillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()\n\nAliases: BIT-pillow-2026-59200, CVE-2026-59200, PYSEC-2026-3495\nAdvisory: https://osv.dev/vulnerability/GHSA-jjj6-mw9f-p565\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d02711dda669074a", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-phj9-mv4w-65pm", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-phj9-mv4w-65pm"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-phj9-mv4w-65pm (aka CVE-2026-55380).\n\nPillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-55380, CVE-2026-55380, PYSEC-2026-2256\nAdvisory: https://osv.dev/vulnerability/GHSA-phj9-mv4w-65pm\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e0d8c701481c83f", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-r73j-pqj5-w3x7 (aka CVE-2026-42310).\n\nPillow has a PDF Parsing Trailer Infinite Loop (DoS)\n\nAliases: BIT-pillow-2026-42310, CVE-2026-42310, PYSEC-2026-2874\nAdvisory: https://osv.dev/vulnerability/GHSA-r73j-pqj5-w3x7\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-019d0d63b22da0f6", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-vjc4-5qp5-m44j", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-vjc4-5qp5-m44j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-vjc4-5qp5-m44j (aka CVE-2026-59204).\n\nPillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service\n\nAliases: BIT-pillow-2026-59204, CVE-2026-59204, PYSEC-2026-3496\nAdvisory: https://osv.dev/vulnerability/GHSA-vjc4-5qp5-m44j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4bd97db11412a204", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-wjx4-4jcj-g98j", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-wjx4-4jcj-g98j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-wjx4-4jcj-g98j (aka CVE-2026-42308).\n\nPillow has an integer overflow when processing fonts\n\nAliases: BIT-pillow-2026-42308, CVE-2026-42308, GHSA-wjx4-4jcj-g98j, PYSEC-2026-165\nAdvisory: https://osv.dev/vulnerability/GHSA-wjx4-4jcj-g98j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-afa8ae332351afdf", "name": "Vulnerable dependency Pillow 10.2.0: GHSA-xj96-63gp-2gmr", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-xj96-63gp-2gmr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by GHSA-xj96-63gp-2gmr (aka CVE-2026-59197).\n\nPillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`\n\nAliases: BIT-pillow-2026-59197, CVE-2026-59197, PYSEC-2026-3454\nAdvisory: https://osv.dev/vulnerability/GHSA-xj96-63gp-2gmr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e0f59f3700e849ac", "name": "Vulnerable dependency Pillow 10.2.0: PYSEC-2026-1793", "shortDescription": {"text": "Vulnerable dependency Pillow 10.2.0: PYSEC-2026-1793"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `10.2.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1793.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1793\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68c98e2991bc834a", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-45hq-cxwh-f6vc", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-45hq-cxwh-f6vc"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-45hq-cxwh-f6vc (aka CVE-2026-55379).\n\nPillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via font loading\n\nAliases: BIT-pillow-2026-55379, CVE-2026-55379, PYSEC-2026-2255\nAdvisory: https://osv.dev/vulnerability/GHSA-45hq-cxwh-f6vc\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1469544aeca9b09b", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-4x4j-2g7c-83w6", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-4x4j-2g7c-83w6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-4x4j-2g7c-83w6 (aka CVE-2026-55798).\n\nPillow: WindowsViewer.get_command() OS command injection via unescaped shell path\n\nAliases: BIT-pillow-2026-55798, CVE-2026-55798, PYSEC-2026-2257\nAdvisory: https://osv.dev/vulnerability/GHSA-4x4j-2g7c-83w6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d9860cbcf088d77", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-5x94-69rx-g8h2", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-5x94-69rx-g8h2"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-5x94-69rx-g8h2 (aka CVE-2026-54060).\n\nPillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-54060, CVE-2026-54060, GHSA-5x94-69rx-g8h2, PYSEC-2026-2254\nAdvisory: https://osv.dev/vulnerability/GHSA-5x94-69rx-g8h2\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2491b0e22484a259", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-62p4-gmf7-7g93", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-62p4-gmf7-7g93"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-62p4-gmf7-7g93 (aka CVE-2026-54058).\n\nPillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files)\n\nAliases: BIT-pillow-2026-54058, CVE-2026-54058, PYSEC-2026-3493\nAdvisory: https://osv.dev/vulnerability/GHSA-62p4-gmf7-7g93\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-978c592d6cb23f01", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-6r8x-57c9-28j4", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-6r8x-57c9-28j4"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-6r8x-57c9-28j4 (aka CVE-2026-59199).\n\nPillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow\n\nAliases: BIT-pillow-2026-59199, CVE-2026-59199, PYSEC-2026-3451\nAdvisory: https://osv.dev/vulnerability/GHSA-6r8x-57c9-28j4\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4dae43157b09dc8", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-8v84-f9pq-wr9x", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-8v84-f9pq-wr9x"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-8v84-f9pq-wr9x (aka CVE-2026-54059).\n\nPillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via PCF font loading\n\nAliases: BIT-pillow-2026-54059, CVE-2026-54059, GHSA-8v84-f9pq-wr9x, PYSEC-2026-2253\nAdvisory: https://osv.dev/vulnerability/GHSA-8v84-f9pq-wr9x\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1306797e78efebb8", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-9hw9-ch79-4vh6", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-9hw9-ch79-4vh6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-9hw9-ch79-4vh6 (aka CVE-2026-59205).\n\nPillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch\n\nAliases: BIT-pillow-2026-59205, CVE-2026-59205, PYSEC-2026-3453\nAdvisory: https://osv.dev/vulnerability/GHSA-9hw9-ch79-4vh6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6b7330af1473c50e", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-cfh3-3jmp-rvhc", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-cfh3-3jmp-rvhc"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-cfh3-3jmp-rvhc.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-cfh3-3jmp-rvhc\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f92b932c0117352", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-fj7v-r99m-22gq", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-fj7v-r99m-22gq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-fj7v-r99m-22gq (aka CVE-2026-59198).\n\nPillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images\n\nAliases: BIT-pillow-2026-59198, CVE-2026-59198, PYSEC-2026-3494\nAdvisory: https://osv.dev/vulnerability/GHSA-fj7v-r99m-22gq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53e9ff419e0768c2", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-jjj6-mw9f-p565", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-jjj6-mw9f-p565"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-jjj6-mw9f-p565 (aka CVE-2026-59200).\n\nPillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()\n\nAliases: BIT-pillow-2026-59200, CVE-2026-59200, PYSEC-2026-3495\nAdvisory: https://osv.dev/vulnerability/GHSA-jjj6-mw9f-p565\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-30010b2ef949202b", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-phj9-mv4w-65pm", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-phj9-mv4w-65pm"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-phj9-mv4w-65pm (aka CVE-2026-55380).\n\nPillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-55380, CVE-2026-55380, PYSEC-2026-2256\nAdvisory: https://osv.dev/vulnerability/GHSA-phj9-mv4w-65pm\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f2c45d99d50ae2d3", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-pwv6-vv43-88gr", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-pwv6-vv43-88gr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-pwv6-vv43-88gr.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-pwv6-vv43-88gr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ed92de831947127", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-r73j-pqj5-w3x7 (aka CVE-2026-42310).\n\nPillow has a PDF Parsing Trailer Infinite Loop (DoS)\n\nAliases: BIT-pillow-2026-42310, CVE-2026-42310, PYSEC-2026-2874\nAdvisory: https://osv.dev/vulnerability/GHSA-r73j-pqj5-w3x7\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a7e1a5aa0e36dcc", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-vjc4-5qp5-m44j", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-vjc4-5qp5-m44j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-vjc4-5qp5-m44j (aka CVE-2026-59204).\n\nPillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service\n\nAliases: BIT-pillow-2026-59204, CVE-2026-59204, PYSEC-2026-3496\nAdvisory: https://osv.dev/vulnerability/GHSA-vjc4-5qp5-m44j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e4b2c446c966e93", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-whj4-6x5x-4v2j", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-whj4-6x5x-4v2j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-whj4-6x5x-4v2j.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-whj4-6x5x-4v2j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-94e7de0a1c3963a8", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-wjx4-4jcj-g98j", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-wjx4-4jcj-g98j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-wjx4-4jcj-g98j (aka CVE-2026-42308).\n\nPillow has an integer overflow when processing fonts\n\nAliases: BIT-pillow-2026-42308, CVE-2026-42308, GHSA-wjx4-4jcj-g98j, PYSEC-2026-165\nAdvisory: https://osv.dev/vulnerability/GHSA-wjx4-4jcj-g98j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c19bf16bb2a95458", "name": "Vulnerable dependency Pillow 11.1.0: GHSA-xj96-63gp-2gmr", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-xj96-63gp-2gmr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by GHSA-xj96-63gp-2gmr (aka CVE-2026-59197).\n\nPillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`\n\nAliases: BIT-pillow-2026-59197, CVE-2026-59197, PYSEC-2026-3454\nAdvisory: https://osv.dev/vulnerability/GHSA-xj96-63gp-2gmr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2eb8c449da9276d3", "name": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2249", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2249"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2249.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2249\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8bf7e7913916970", "name": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2250", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2250"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2250.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2250\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-275947cf7e458f58", "name": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2252", "shortDescription": {"text": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2252"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `11.1.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2252.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2252\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27870b72251e655f", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-45hq-cxwh-f6vc", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-45hq-cxwh-f6vc"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-45hq-cxwh-f6vc (aka CVE-2026-55379).\n\nPillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via font loading\n\nAliases: BIT-pillow-2026-55379, CVE-2026-55379, PYSEC-2026-2255\nAdvisory: https://osv.dev/vulnerability/GHSA-45hq-cxwh-f6vc\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45ebb3ee92cd8401", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-4x4j-2g7c-83w6", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-4x4j-2g7c-83w6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-4x4j-2g7c-83w6 (aka CVE-2026-55798).\n\nPillow: WindowsViewer.get_command() OS command injection via unescaped shell path\n\nAliases: BIT-pillow-2026-55798, CVE-2026-55798, PYSEC-2026-2257\nAdvisory: https://osv.dev/vulnerability/GHSA-4x4j-2g7c-83w6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a5d144500276f7f", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-5x94-69rx-g8h2", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-5x94-69rx-g8h2"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-5x94-69rx-g8h2 (aka CVE-2026-54060).\n\nPillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-54060, CVE-2026-54060, GHSA-5x94-69rx-g8h2, PYSEC-2026-2254\nAdvisory: https://osv.dev/vulnerability/GHSA-5x94-69rx-g8h2\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de3511209b622fbc", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-5xmw-vc9v-4wf2", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-5xmw-vc9v-4wf2"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-5xmw-vc9v-4wf2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-5xmw-vc9v-4wf2\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-efe56e53b23a0027", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-62p4-gmf7-7g93", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-62p4-gmf7-7g93"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-62p4-gmf7-7g93 (aka CVE-2026-54058).\n\nPillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files)\n\nAliases: BIT-pillow-2026-54058, CVE-2026-54058, PYSEC-2026-3493\nAdvisory: https://osv.dev/vulnerability/GHSA-62p4-gmf7-7g93\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-31a1163486ea4e05", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-6r8x-57c9-28j4", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-6r8x-57c9-28j4"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-6r8x-57c9-28j4 (aka CVE-2026-59199).\n\nPillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow\n\nAliases: BIT-pillow-2026-59199, CVE-2026-59199, PYSEC-2026-3451\nAdvisory: https://osv.dev/vulnerability/GHSA-6r8x-57c9-28j4\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a180a8ff2b39143c", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-8v84-f9pq-wr9x", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-8v84-f9pq-wr9x"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-8v84-f9pq-wr9x (aka CVE-2026-54059).\n\nPillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` \u2014 bomb protection bypass via PCF font loading\n\nAliases: BIT-pillow-2026-54059, CVE-2026-54059, GHSA-8v84-f9pq-wr9x, PYSEC-2026-2253\nAdvisory: https://osv.dev/vulnerability/GHSA-8v84-f9pq-wr9x\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e9453ec6e2f2c24", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-9hw9-ch79-4vh6", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-9hw9-ch79-4vh6"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-9hw9-ch79-4vh6 (aka CVE-2026-59205).\n\nPillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch\n\nAliases: BIT-pillow-2026-59205, CVE-2026-59205, PYSEC-2026-3453\nAdvisory: https://osv.dev/vulnerability/GHSA-9hw9-ch79-4vh6\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82a4ed431b0be45c", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-fj7v-r99m-22gq", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-fj7v-r99m-22gq"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-fj7v-r99m-22gq (aka CVE-2026-59198).\n\nPillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images\n\nAliases: BIT-pillow-2026-59198, CVE-2026-59198, PYSEC-2026-3494\nAdvisory: https://osv.dev/vulnerability/GHSA-fj7v-r99m-22gq\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a6bbcbd26fab03ff", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-jjj6-mw9f-p565", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-jjj6-mw9f-p565"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-jjj6-mw9f-p565 (aka CVE-2026-59200).\n\nPillow: Decompression Bomb DoS via PdfParser.PdfStream.decode()\n\nAliases: BIT-pillow-2026-59200, CVE-2026-59200, PYSEC-2026-3495\nAdvisory: https://osv.dev/vulnerability/GHSA-jjj6-mw9f-p565\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fa0a04a83e0afb3d", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-pg7v-jwj7-p798", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-pg7v-jwj7-p798"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-pg7v-jwj7-p798.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-pg7v-jwj7-p798\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9b4cce2e0e97bd64", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-phj9-mv4w-65pm", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-phj9-mv4w-65pm"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-phj9-mv4w-65pm (aka CVE-2026-55380).\n\nPillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()`\n\nAliases: BIT-pillow-2026-55380, CVE-2026-55380, PYSEC-2026-2256\nAdvisory: https://osv.dev/vulnerability/GHSA-phj9-mv4w-65pm\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d3ac74ebc8b73cf5", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-pwv6-vv43-88gr", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-pwv6-vv43-88gr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-pwv6-vv43-88gr.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-pwv6-vv43-88gr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2815246aa6124ca9", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-r73j-pqj5-w3x7", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-r73j-pqj5-w3x7"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-r73j-pqj5-w3x7 (aka CVE-2026-42310).\n\nPillow has a PDF Parsing Trailer Infinite Loop (DoS)\n\nAliases: BIT-pillow-2026-42310, CVE-2026-42310, PYSEC-2026-2874\nAdvisory: https://osv.dev/vulnerability/GHSA-r73j-pqj5-w3x7\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15533a9b3db6f772", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-vjc4-5qp5-m44j", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-vjc4-5qp5-m44j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-vjc4-5qp5-m44j (aka CVE-2026-59204).\n\nPillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service\n\nAliases: BIT-pillow-2026-59204, CVE-2026-59204, PYSEC-2026-3496\nAdvisory: https://osv.dev/vulnerability/GHSA-vjc4-5qp5-m44j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4e372df61a8081e", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-whj4-6x5x-4v2j", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-whj4-6x5x-4v2j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-whj4-6x5x-4v2j.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-whj4-6x5x-4v2j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7232902e414908d5", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-wjx4-4jcj-g98j", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-wjx4-4jcj-g98j"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-wjx4-4jcj-g98j (aka CVE-2026-42308).\n\nPillow has an integer overflow when processing fonts\n\nAliases: BIT-pillow-2026-42308, CVE-2026-42308, GHSA-wjx4-4jcj-g98j, PYSEC-2026-165\nAdvisory: https://osv.dev/vulnerability/GHSA-wjx4-4jcj-g98j\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41504a9b4b7ba080", "name": "Vulnerable dependency Pillow 12.1.1: GHSA-xj96-63gp-2gmr", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-xj96-63gp-2gmr"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by GHSA-xj96-63gp-2gmr (aka CVE-2026-59197).\n\nPillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand`\n\nAliases: BIT-pillow-2026-59197, CVE-2026-59197, PYSEC-2026-3454\nAdvisory: https://osv.dev/vulnerability/GHSA-xj96-63gp-2gmr\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "high", "confidence": 1.0}}, {"id": "scanner-405d24f0050b965a", "name": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2250", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2250"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2250.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2250\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2956e0c758a46fb1", "name": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2251", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2251"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2251.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2251\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-99e80d49630abd5e", "name": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2252", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2252"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2252.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2252\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44923b86a988846c", "name": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-3452", "shortDescription": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-3452"}, "fullDescription": {"text": "OSV.dev reports `Pillow` at version `12.1.1` (declared in `requirements.txt`) is affected by PYSEC-2026-3452.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3452\nFix: upgrade `Pillow` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d78ca6f282aa84f", "name": "Vulnerable dependency pyopenssl 21.0.0: GHSA-vp96-hxj8-p424", "shortDescription": {"text": "Vulnerable dependency pyopenssl 21.0.0: GHSA-vp96-hxj8-p424"}, "fullDescription": {"text": "OSV.dev reports `pyopenssl` at version `21.0.0` (declared in `requirements.txt`) is affected by GHSA-vp96-hxj8-p424.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-vp96-hxj8-p424\nFix: upgrade `pyopenssl` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-666a9d843a49eb61", "name": "Vulnerable dependency pyopenssl 21.0.0: PYSEC-2026-2268", "shortDescription": {"text": "Vulnerable dependency pyopenssl 21.0.0: PYSEC-2026-2268"}, "fullDescription": {"text": "OSV.dev reports `pyopenssl` at version `21.0.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2268.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2268\nFix: upgrade `pyopenssl` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a777c85649b777f", "name": "Vulnerable dependency pyopenssl 24.1.0: GHSA-5pwr-322w-8jr4", "shortDescription": {"text": "Vulnerable dependency pyopenssl 24.1.0: GHSA-5pwr-322w-8jr4"}, "fullDescription": {"text": "OSV.dev reports `pyopenssl` at version `24.1.0` (declared in `requirements.txt`) is affected by GHSA-5pwr-322w-8jr4.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-5pwr-322w-8jr4\nFix: upgrade `pyopenssl` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f310b527ca2d77e", "name": "Vulnerable dependency pyopenssl 24.1.0: GHSA-vp96-hxj8-p424", "shortDescription": {"text": "Vulnerable dependency pyopenssl 24.1.0: GHSA-vp96-hxj8-p424"}, "fullDescription": {"text": "OSV.dev reports `pyopenssl` at version `24.1.0` (declared in `requirements.txt`) is affected by GHSA-vp96-hxj8-p424.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-vp96-hxj8-p424\nFix: upgrade `pyopenssl` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7198e81ea9f23d5a", "name": "Vulnerable dependency pyopenssl 24.1.0: PYSEC-2026-2268", "shortDescription": {"text": "Vulnerable dependency pyopenssl 24.1.0: PYSEC-2026-2268"}, "fullDescription": {"text": "OSV.dev reports `pyopenssl` at version `24.1.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2268.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2268\nFix: upgrade `pyopenssl` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a11a9eecc34c55b", "name": "Vulnerable dependency pyopenssl 24.1.0: PYSEC-2026-2269", "shortDescription": {"text": "Vulnerable dependency pyopenssl 24.1.0: PYSEC-2026-2269"}, "fullDescription": {"text": "OSV.dev reports `pyopenssl` at version `24.1.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2269.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2269\nFix: upgrade `pyopenssl` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc7a1d9afb32d6c4", "name": "Vulnerable dependency PyPDF2 1.26.0: GHSA-jrm6-h9cq-8gqw", "shortDescription": {"text": "Vulnerable dependency PyPDF2 1.26.0: GHSA-jrm6-h9cq-8gqw"}, "fullDescription": {"text": "OSV.dev reports `PyPDF2` at version `1.26.0` (declared in `requirements.txt`) is affected by GHSA-jrm6-h9cq-8gqw.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jrm6-h9cq-8gqw\nFix: upgrade `PyPDF2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc8da0db76dbde90", "name": "Vulnerable dependency PyPDF2 1.26.0: GHSA-xcjx-m2pj-8g79", "shortDescription": {"text": "Vulnerable dependency PyPDF2 1.26.0: GHSA-xcjx-m2pj-8g79"}, "fullDescription": {"text": "OSV.dev reports `PyPDF2` at version `1.26.0` (declared in `requirements.txt`) is affected by GHSA-xcjx-m2pj-8g79.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-xcjx-m2pj-8g79\nFix: upgrade `PyPDF2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91c3dafcefdd6c7e", "name": "Vulnerable dependency PyPDF2 1.26.0: PYSEC-2022-194", "shortDescription": {"text": "Vulnerable dependency PyPDF2 1.26.0: PYSEC-2022-194"}, "fullDescription": {"text": "OSV.dev reports `PyPDF2` at version `1.26.0` (declared in `requirements.txt`) is affected by PYSEC-2022-194.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2022-194\nFix: upgrade `PyPDF2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8dfd122c8c377f38", "name": "Vulnerable dependency PyPDF2 1.26.0: PYSEC-2026-1837", "shortDescription": {"text": "Vulnerable dependency PyPDF2 1.26.0: PYSEC-2026-1837"}, "fullDescription": {"text": "OSV.dev reports `PyPDF2` at version `1.26.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1837.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1837\nFix: upgrade `PyPDF2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e5cc43354cc1cb6", "name": "Vulnerable dependency PyPDF2 2.12.1: GHSA-4vvm-4w3v-6mr8", "shortDescription": {"text": "Vulnerable dependency PyPDF2 2.12.1: GHSA-4vvm-4w3v-6mr8"}, "fullDescription": {"text": "OSV.dev reports `PyPDF2` at version `2.12.1` (declared in `requirements.txt`) is affected by GHSA-4vvm-4w3v-6mr8.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4vvm-4w3v-6mr8\nFix: upgrade `PyPDF2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-976f71a3f3402a1c", "name": "Vulnerable dependency PyPDF2 2.12.1: PYSEC-2026-1835", "shortDescription": {"text": "Vulnerable dependency PyPDF2 2.12.1: PYSEC-2026-1835"}, "fullDescription": {"text": "OSV.dev reports `PyPDF2` at version `2.12.1` (declared in `requirements.txt`) is affected by PYSEC-2026-1835.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1835\nFix: upgrade `PyPDF2` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebdc5d5c54ea40d8", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-248m-82v9-q6g6", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-248m-82v9-q6g6"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-248m-82v9-q6g6.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-248m-82v9-q6g6\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c16c4cb25f66fd89", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-2q4j-m29v-hq73", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-2q4j-m29v-hq73"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-2q4j-m29v-hq73.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2q4j-m29v-hq73\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb15f42543d84802", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-2rw7-x74f-jg35", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-2rw7-x74f-jg35"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-2rw7-x74f-jg35.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2rw7-x74f-jg35\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aff779c9c7409972", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-3crg-w4f6-42mx", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-3crg-w4f6-42mx"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-3crg-w4f6-42mx.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-3crg-w4f6-42mx\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1bde668d4248715d", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-4f6g-68pf-7vhv", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-4f6g-68pf-7vhv"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-4f6g-68pf-7vhv.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4f6g-68pf-7vhv\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dee16f3bc25ecf12", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-4pxv-j86v-mhcw", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-4pxv-j86v-mhcw"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-4pxv-j86v-mhcw.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4pxv-j86v-mhcw\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3a9171ae719ba8e7", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-4xc4-762w-m6cg", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-4xc4-762w-m6cg"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-4xc4-762w-m6cg.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4xc4-762w-m6cg\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e434c63f34d0fd8d", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-52x6-gq3r-vpf4", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-52x6-gq3r-vpf4"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-52x6-gq3r-vpf4.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-52x6-gq3r-vpf4\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f40201b12204259", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-55h5-xmcq-c37v", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-55h5-xmcq-c37v"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-55h5-xmcq-c37v.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-55h5-xmcq-c37v\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb779b5f24439ac3", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-5hgr-hg42-57jg", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-5hgr-hg42-57jg"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-5hgr-hg42-57jg.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-5hgr-hg42-57jg\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-416e24e4ab2525a7", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-5qjq-93h5-hrgp", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-5qjq-93h5-hrgp"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-5qjq-93h5-hrgp.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-5qjq-93h5-hrgp\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-52c6c49c75bdf4b5", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-5xf7-4p34-54qr", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-5xf7-4p34-54qr"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-5xf7-4p34-54qr.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-5xf7-4p34-54qr\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec0f67f6a680ce48", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-7gw9-cf7v-778f", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-7gw9-cf7v-778f"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-7gw9-cf7v-778f.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-7gw9-cf7v-778f\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1a27638d34d2fc1", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-7hfw-26vp-jp8m", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-7hfw-26vp-jp8m"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-7hfw-26vp-jp8m.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-7hfw-26vp-jp8m\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb9e1dadbedeca11", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-87mj-5ggw-8qc3", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-87mj-5ggw-8qc3"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-87mj-5ggw-8qc3.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-87mj-5ggw-8qc3\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03d7158ed719e44d", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-996q-pr4m-cvgq", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-996q-pr4m-cvgq"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-996q-pr4m-cvgq.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-996q-pr4m-cvgq\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6dfe6f12a3a367c3", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-9m86-7pmv-2852", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-9m86-7pmv-2852"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-9m86-7pmv-2852.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9m86-7pmv-2852\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9a9833d5144aada", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-9mvc-8737-8j8h", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-9mvc-8737-8j8h"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-9mvc-8737-8j8h.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9mvc-8737-8j8h\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d0cfd056d8b9f438", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-cj93-chg6-vgv8", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-cj93-chg6-vgv8"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-cj93-chg6-vgv8.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-cj93-chg6-vgv8\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-790b1ec4e93950a8", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-f2v5-7jq9-h8cg", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-f2v5-7jq9-h8cg"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-f2v5-7jq9-h8cg.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-f2v5-7jq9-h8cg\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ae13f47fc8833e3", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-g867-7843-wf8q", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-g867-7843-wf8q"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-g867-7843-wf8q.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-g867-7843-wf8q\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b0336e23b02172c", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-g9xf-7f8q-9mcj", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-g9xf-7f8q-9mcj"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-g9xf-7f8q-9mcj.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-g9xf-7f8q-9mcj\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-05ba6639825bff2d", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-hqmh-ppp3-xvm7", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-hqmh-ppp3-xvm7"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-hqmh-ppp3-xvm7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-hqmh-ppp3-xvm7\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0f9334b4134acc79", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-j543-4vmf-qm7v", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-j543-4vmf-qm7v"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-j543-4vmf-qm7v.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-j543-4vmf-qm7v\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-330d680a8064929b", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-jfx9-29x2-rv3j", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-jfx9-29x2-rv3j"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-jfx9-29x2-rv3j.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jfx9-29x2-rv3j\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-70e7cc53bb543571", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-jj6c-8h6c-hppx", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-jj6c-8h6c-hppx"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-jj6c-8h6c-hppx.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jj6c-8h6c-hppx\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8aed3a51d1c6534", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-jm82-fx9c-mx94", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-jm82-fx9c-mx94"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-jm82-fx9c-mx94.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-jm82-fx9c-mx94\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9203ed27c5faa676", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-m2v9-299j-rv96", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-m2v9-299j-rv96"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-m2v9-299j-rv96.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-m2v9-299j-rv96\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-848ac3df51675fed", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-m449-cwjh-6pw7", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-m449-cwjh-6pw7"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-m449-cwjh-6pw7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-m449-cwjh-6pw7\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15f9340913bb0b22", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-qpxp-75px-xjcp", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-qpxp-75px-xjcp"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-qpxp-75px-xjcp.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-qpxp-75px-xjcp\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8291a361e1497547", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-vr63-x8vc-m265", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-vr63-x8vc-m265"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-vr63-x8vc-m265.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-vr63-x8vc-m265\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a43c13926f365181", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-wgvp-vg3v-2xq3", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-wgvp-vg3v-2xq3"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-wgvp-vg3v-2xq3.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-wgvp-vg3v-2xq3\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a2853fc94e9e2805", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-wjqc-6w8f-h24c", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-wjqc-6w8f-h24c"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-wjqc-6w8f-h24c.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-wjqc-6w8f-h24c\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-36bbdb7fa34a6885", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-x284-j5p8-9c5p", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-x284-j5p8-9c5p"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-x284-j5p8-9c5p.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-x284-j5p8-9c5p\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b251f5f0cc5aad1d", "name": "Vulnerable dependency PyPDF 5.4.0: GHSA-x7hp-r3qg-r3cj", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-x7hp-r3qg-r3cj"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by GHSA-x7hp-r3qg-r3cj.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-x7hp-r3qg-r3cj\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e1098d868f5c91d", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1827", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1827"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1827.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1827\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-819883679546c458", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1828", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1828"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1828.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1828\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91207a5d271330b8", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1829", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1829"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1829.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1829\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78bfd2bd4cf72794", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1830", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1830"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1830.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1830\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-37d461dedabc6220", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1831", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1831"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1831.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1831\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1878633299ec188", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1832", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1832"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1832.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1832\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5c99baf0061b021", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1833", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1833"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1833.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1833\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb10cd2f27fb0364", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3004", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3004"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3004.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3004\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ae44e51da5b6c8e", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3005", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3005"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3005.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3005\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8beb52a37cc2d8f9", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3006", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3006"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3006.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3006\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d7cb126f456735c", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3007", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3007"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3007.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3007\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64796b8c9b2cf34b", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3009", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3009"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3009.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3009\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9dcdef58eb6d2586", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3010", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3010"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3010.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3010\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2391cf9f9451584c", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3011", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3011"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3011.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3011\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f444c51278db2dac", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3012", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3012"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3012.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3012\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e0b200ad407165d6", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3013", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3013"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3013.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3013\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84258cef8ebd4044", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3014", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3014"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3014.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3014\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b96f95efedff476", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3015", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3015"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3015.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3015\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c5b71aa8726cf95", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3016", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3016"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3016.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3016\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-91a735889069083c", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3017", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3017"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3017.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3017\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eb874e036a8256b2", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3018", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3018"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3018.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3018\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2dba292ae4d322fb", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3019", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3019"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3019.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3019\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b20d8361d3042870", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3020", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3020"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3020.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3020\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44e9b475e35387b1", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3021", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3021"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3021.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3021\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-04951ee412c51381", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3022", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3022"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3022.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3022\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb6e29bb50dfcb7f", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3023", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3023"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3023.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3023\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79a5a4ea3d79a93c", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3024", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3024"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3024.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3024\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8fc2cf495721fd4a", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3025", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3025"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3025.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3025\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-986fa58e8b35d140", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3026", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3026"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3026.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3026\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dfd0b3dd0e4494d1", "name": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3027", "shortDescription": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3027"}, "fullDescription": {"text": "OSV.dev reports `PyPDF` at version `5.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-3027.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3027\nFix: upgrade `PyPDF` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9443e919f18cf607", "name": "Vulnerable dependency python-ldap 3.4.0: GHSA-p34h-wq7j-h5v6", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.0: GHSA-p34h-wq7j-h5v6"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.0` (declared in `requirements.txt`) is affected by GHSA-p34h-wq7j-h5v6.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-p34h-wq7j-h5v6\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f176da615976ab85", "name": "Vulnerable dependency python-ldap 3.4.0: GHSA-r7r6-cc7p-4v5m", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.0: GHSA-r7r6-cc7p-4v5m"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.0` (declared in `requirements.txt`) is affected by GHSA-r7r6-cc7p-4v5m.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-r7r6-cc7p-4v5m\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c02818afb5464dae", "name": "Vulnerable dependency python-ldap 3.4.0: PYSEC-2026-1846", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.0: PYSEC-2026-1846"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1846.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1846\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fbcc8b26b9cdb5c", "name": "Vulnerable dependency python-ldap 3.4.0: PYSEC-2026-1847", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.0: PYSEC-2026-1847"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1847.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1847\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d55f8739cf4a41c5", "name": "Vulnerable dependency python-ldap 3.4.4: GHSA-p34h-wq7j-h5v6", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.4: GHSA-p34h-wq7j-h5v6"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.4` (declared in `requirements.txt`) is affected by GHSA-p34h-wq7j-h5v6.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-p34h-wq7j-h5v6\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3aaf3913c204e184", "name": "Vulnerable dependency python-ldap 3.4.4: GHSA-r7r6-cc7p-4v5m", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.4: GHSA-r7r6-cc7p-4v5m"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.4` (declared in `requirements.txt`) is affected by GHSA-r7r6-cc7p-4v5m.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-r7r6-cc7p-4v5m\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-347cd99a134e69b7", "name": "Vulnerable dependency python-ldap 3.4.4: PYSEC-2026-1846", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.4: PYSEC-2026-1846"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.4` (declared in `requirements.txt`) is affected by PYSEC-2026-1846.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1846\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fd173b4da1cdb838", "name": "Vulnerable dependency python-ldap 3.4.4: PYSEC-2026-1847", "shortDescription": {"text": "Vulnerable dependency python-ldap 3.4.4: PYSEC-2026-1847"}, "fullDescription": {"text": "OSV.dev reports `python-ldap` at version `3.4.4` (declared in `requirements.txt`) is affected by PYSEC-2026-1847.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1847\nFix: upgrade `python-ldap` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-72f6c58618a693f4", "name": "Vulnerable dependency reportlab 3.6.8: GHSA-9q9m-c65c-37pq", "shortDescription": {"text": "Vulnerable dependency reportlab 3.6.8: GHSA-9q9m-c65c-37pq"}, "fullDescription": {"text": "OSV.dev reports `reportlab` at version `3.6.8` (declared in `requirements.txt`) is affected by GHSA-9q9m-c65c-37pq.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9q9m-c65c-37pq\nFix: upgrade `reportlab` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90cbedc13554ed7e", "name": "Vulnerable dependency reportlab 3.6.8: PYSEC-2026-1871", "shortDescription": {"text": "Vulnerable dependency reportlab 3.6.8: PYSEC-2026-1871"}, "fullDescription": {"text": "OSV.dev reports `reportlab` at version `3.6.8` (declared in `requirements.txt`) is affected by PYSEC-2026-1871.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1871\nFix: upgrade `reportlab` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ece74fccfead06b", "name": "Vulnerable dependency reportlab 3.6.12: GHSA-9q9m-c65c-37pq", "shortDescription": {"text": "Vulnerable dependency reportlab 3.6.12: GHSA-9q9m-c65c-37pq"}, "fullDescription": {"text": "OSV.dev reports `reportlab` at version `3.6.12` (declared in `requirements.txt`) is affected by GHSA-9q9m-c65c-37pq.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9q9m-c65c-37pq\nFix: upgrade `reportlab` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5da3757826ea4c19", "name": "Vulnerable dependency reportlab 3.6.12: PYSEC-2026-1871", "shortDescription": {"text": "Vulnerable dependency reportlab 3.6.12: PYSEC-2026-1871"}, "fullDescription": {"text": "OSV.dev reports `reportlab` at version `3.6.12` (declared in `requirements.txt`) is affected by PYSEC-2026-1871.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1871\nFix: upgrade `reportlab` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ced390b9a474c0f", "name": "Vulnerable dependency requests 2.25.1: GHSA-9hjg-9r4m-mvj7", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: GHSA-9hjg-9r4m-mvj7"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by GHSA-9hjg-9r4m-mvj7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-100a7dbec0df542f", "name": "Vulnerable dependency requests 2.25.1: GHSA-9wx4-h78v-vm56", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: GHSA-9wx4-h78v-vm56"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by GHSA-9wx4-h78v-vm56.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9wx4-h78v-vm56\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f1731d4ec87cb23", "name": "Vulnerable dependency requests 2.25.1: GHSA-gc5v-m9x4-r6x2", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: GHSA-gc5v-m9x4-r6x2"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by GHSA-gc5v-m9x4-r6x2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-gc5v-m9x4-r6x2\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e7efd36258f1c01", "name": "Vulnerable dependency requests 2.25.1: GHSA-j8r2-6x86-q33q", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: GHSA-j8r2-6x86-q33q"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by GHSA-j8r2-6x86-q33q.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-j8r2-6x86-q33q\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce312364fbc5db2e", "name": "Vulnerable dependency requests 2.25.1: PYSEC-2023-74", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2023-74"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by PYSEC-2023-74.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-74\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d570ad23ccabee27", "name": "Vulnerable dependency requests 2.25.1: PYSEC-2026-1872", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2026-1872"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by PYSEC-2026-1872.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1872\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0071703ca47968c3", "name": "Vulnerable dependency requests 2.25.1: PYSEC-2026-1873", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2026-1873"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by PYSEC-2026-1873.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1873\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a4a349b8cf22ba9", "name": "Vulnerable dependency requests 2.25.1: PYSEC-2026-2275", "shortDescription": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2026-2275"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.25.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2275.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2275\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-22effbbdb5019c73", "name": "Vulnerable dependency requests 2.31.0: GHSA-9hjg-9r4m-mvj7", "shortDescription": {"text": "Vulnerable dependency requests 2.31.0: GHSA-9hjg-9r4m-mvj7"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.31.0` (declared in `requirements.txt`) is affected by GHSA-9hjg-9r4m-mvj7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9hjg-9r4m-mvj7\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cae360caa80e45b3", "name": "Vulnerable dependency requests 2.31.0: GHSA-9wx4-h78v-vm56", "shortDescription": {"text": "Vulnerable dependency requests 2.31.0: GHSA-9wx4-h78v-vm56"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.31.0` (declared in `requirements.txt`) is affected by GHSA-9wx4-h78v-vm56.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-9wx4-h78v-vm56\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad35ea12adf56e07", "name": "Vulnerable dependency requests 2.31.0: GHSA-gc5v-m9x4-r6x2", "shortDescription": {"text": "Vulnerable dependency requests 2.31.0: GHSA-gc5v-m9x4-r6x2"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.31.0` (declared in `requirements.txt`) is affected by GHSA-gc5v-m9x4-r6x2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-gc5v-m9x4-r6x2\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9fb8559226d3bb9", "name": "Vulnerable dependency requests 2.31.0: PYSEC-2026-1872", "shortDescription": {"text": "Vulnerable dependency requests 2.31.0: PYSEC-2026-1872"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.31.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1872.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1872\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f82c87ba15854df2", "name": "Vulnerable dependency requests 2.31.0: PYSEC-2026-1873", "shortDescription": {"text": "Vulnerable dependency requests 2.31.0: PYSEC-2026-1873"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.31.0` (declared in `requirements.txt`) is affected by PYSEC-2026-1873.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1873\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35632a1987b812a1", "name": "Vulnerable dependency requests 2.31.0: PYSEC-2026-2275", "shortDescription": {"text": "Vulnerable dependency requests 2.31.0: PYSEC-2026-2275"}, "fullDescription": {"text": "OSV.dev reports `requests` at version `2.31.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2275.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2275\nFix: upgrade `requests` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5d5fb4d24a17e3b", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-2xpw-w6gg-jr37", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-2xpw-w6gg-jr37"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-2xpw-w6gg-jr37.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2xpw-w6gg-jr37\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16afc98f594d7228", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-34jh-p97f-mpxf", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-34jh-p97f-mpxf"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-34jh-p97f-mpxf.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-34jh-p97f-mpxf\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8bbdc27a3add212", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-38jv-5279-wg99", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-38jv-5279-wg99"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-38jv-5279-wg99.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-38jv-5279-wg99\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-137c66d3615ca524", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-g4mx-q9vg-27p4", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-g4mx-q9vg-27p4"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-g4mx-q9vg-27p4.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-g4mx-q9vg-27p4\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a65cd5f764196be0", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-gm62-xv2j-4w53", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-gm62-xv2j-4w53"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-gm62-xv2j-4w53.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-gm62-xv2j-4w53\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0538a2b12de262", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-pq67-6m6q-mj2v", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-pq67-6m6q-mj2v"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-pq67-6m6q-mj2v.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-pq67-6m6q-mj2v\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d24298dddcb08d4c", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-qccp-gfcp-xxvc", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-qccp-gfcp-xxvc"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-qccp-gfcp-xxvc.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-qccp-gfcp-xxvc\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-343ac8c738089bda", "name": "Vulnerable dependency urllib3 1.26.5: GHSA-v845-jxx5-vc9f", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-v845-jxx5-vc9f"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by GHSA-v845-jxx5-vc9f.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-v845-jxx5-vc9f\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-77fff2910a0005f1", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2023-192", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2023-192"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2023-192.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-192\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4fa5fb215db2120c", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2023-212", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2023-212"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2023-212.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-212\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7246bbc8debb1285", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-141", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-141"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2026-141.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-141\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-414031c3821f261d", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1994", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1994"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2026-1994.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1994\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c8df989cde5fb846", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1995", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1995"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2026-1995.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1995\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1841c3e3098fb727", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1996", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1996"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2026-1996.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1996\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-76b9832e03b7f1e1", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1998", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1998"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2026-1998.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1998\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08b5889b3a2513e6", "name": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1999", "shortDescription": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1999"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `1.26.5` (declared in `requirements.txt`) is affected by PYSEC-2026-1999.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1999\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4a4507e18e6ecbc", "name": "Vulnerable dependency urllib3 2.0.7: GHSA-2xpw-w6gg-jr37", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-2xpw-w6gg-jr37"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by GHSA-2xpw-w6gg-jr37.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2xpw-w6gg-jr37\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41c5d9f0c406875a", "name": "Vulnerable dependency urllib3 2.0.7: GHSA-34jh-p97f-mpxf", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-34jh-p97f-mpxf"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by GHSA-34jh-p97f-mpxf.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-34jh-p97f-mpxf\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48257a5c3a7795ff", "name": "Vulnerable dependency urllib3 2.0.7: GHSA-38jv-5279-wg99", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-38jv-5279-wg99"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by GHSA-38jv-5279-wg99.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-38jv-5279-wg99\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1a4606fc7324226", "name": "Vulnerable dependency urllib3 2.0.7: GHSA-gm62-xv2j-4w53", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-gm62-xv2j-4w53"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by GHSA-gm62-xv2j-4w53.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-gm62-xv2j-4w53\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7abb5fd85a5c42a1", "name": "Vulnerable dependency urllib3 2.0.7: GHSA-pq67-6m6q-mj2v", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-pq67-6m6q-mj2v"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by GHSA-pq67-6m6q-mj2v.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-pq67-6m6q-mj2v\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f668e8c492e924dd", "name": "Vulnerable dependency urllib3 2.0.7: GHSA-qccp-gfcp-xxvc", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-qccp-gfcp-xxvc"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by GHSA-qccp-gfcp-xxvc.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-qccp-gfcp-xxvc\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c443212c66795920", "name": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-141", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-141"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by PYSEC-2026-141.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-141\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-436cdbc850c5f3c3", "name": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1994", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1994"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by PYSEC-2026-1994.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1994\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-afc69b30d4f50ff2", "name": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1995", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1995"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by PYSEC-2026-1995.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1995\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a575ed02e1f104c8", "name": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1996", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1996"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by PYSEC-2026-1996.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1996\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ffb531ef045e7f7", "name": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1998", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1998"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by PYSEC-2026-1998.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1998\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e7237229500ab2d", "name": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1999", "shortDescription": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1999"}, "fullDescription": {"text": "OSV.dev reports `urllib3` at version `2.0.7` (declared in `requirements.txt`) is affected by PYSEC-2026-1999.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-1999\nFix: upgrade `urllib3` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d346c10b627d3652", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-29vq-49wr-vm6x", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-29vq-49wr-vm6x"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-29vq-49wr-vm6x.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-29vq-49wr-vm6x\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3f107ade9badb87", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-2g68-c3qc-8985", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-2g68-c3qc-8985"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-2g68-c3qc-8985.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2g68-c3qc-8985\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d062920f7d531ba", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-87hc-h4r5-73f7", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-87hc-h4r5-73f7"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-87hc-h4r5-73f7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-87hc-h4r5-73f7\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92e649d029c3b52e", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-f9vj-2wh5-fj8j", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-f9vj-2wh5-fj8j"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-f9vj-2wh5-fj8j.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-f9vj-2wh5-fj8j\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-491c55a0e8683726", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-hgf8-39gv-g3f2", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-hgf8-39gv-g3f2"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-hgf8-39gv-g3f2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-hgf8-39gv-g3f2\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e9c78baba376179", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-hrfv-mqp8-q5rw", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-hrfv-mqp8-q5rw"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-hrfv-mqp8-q5rw.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-hrfv-mqp8-q5rw\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6edbca24b9b5382f", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-px8h-6qxv-m22q", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-px8h-6qxv-m22q"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-px8h-6qxv-m22q.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-px8h-6qxv-m22q\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ea24480208c9606", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-q34m-jh98-gwm2", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-q34m-jh98-gwm2"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-q34m-jh98-gwm2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-q34m-jh98-gwm2\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a34488bcad0a27a", "name": "Vulnerable dependency Werkzeug 2.0.2: GHSA-xg9f-g7g7-2323", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-xg9f-g7g7-2323"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by GHSA-xg9f-g7g7-2323.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-xg9f-g7g7-2323\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3f2a043d0ee43d41", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2022-203", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2022-203"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2022-203.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2022-203\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-317e569467a67d94", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-221", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-221"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2023-221.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-221\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b9a70a65867877c", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-57", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-57"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2023-57.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-57\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a1d42c87e7438da3", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-58", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-58"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2023-58.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-58\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1cbd978a2ae62744", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2043", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2043"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2043.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2043\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d75426f73c6ba60c", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2044", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2044"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2044.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2044\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9351591ddb80001f", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2045", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2045"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2045.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2045\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0861599468ca1dea", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2046", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2046"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2046.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2046\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79f9074e67199a28", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2320", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2320"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2320.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2320\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5d139667ff0d76a", "name": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-3417", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-3417"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.0.2` (declared in `requirements.txt`) is affected by PYSEC-2026-3417.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3417\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f7b727deb2c26776", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-29vq-49wr-vm6x", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-29vq-49wr-vm6x"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-29vq-49wr-vm6x.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-29vq-49wr-vm6x\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c51e3322d35be568", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-2g68-c3qc-8985", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-2g68-c3qc-8985"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-2g68-c3qc-8985.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2g68-c3qc-8985\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-674a4e2f51aeb2c2", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-87hc-h4r5-73f7", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-87hc-h4r5-73f7"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-87hc-h4r5-73f7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-87hc-h4r5-73f7\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6261cd12283ab3c6", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-f9vj-2wh5-fj8j", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-f9vj-2wh5-fj8j"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-f9vj-2wh5-fj8j.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-f9vj-2wh5-fj8j\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cc32e69ad5e06355", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-hgf8-39gv-g3f2", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-hgf8-39gv-g3f2"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-hgf8-39gv-g3f2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-hgf8-39gv-g3f2\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9554bf20d372c820", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-hrfv-mqp8-q5rw", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-hrfv-mqp8-q5rw"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-hrfv-mqp8-q5rw.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-hrfv-mqp8-q5rw\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2544d737f5556a87", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-px8h-6qxv-m22q", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-px8h-6qxv-m22q"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-px8h-6qxv-m22q.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-px8h-6qxv-m22q\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f6d053102a47a7f8", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-q34m-jh98-gwm2", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-q34m-jh98-gwm2"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-q34m-jh98-gwm2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-q34m-jh98-gwm2\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-40aeb6387e35b2bc", "name": "Vulnerable dependency Werkzeug 2.2.2: GHSA-xg9f-g7g7-2323", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-xg9f-g7g7-2323"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by GHSA-xg9f-g7g7-2323.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-xg9f-g7g7-2323\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1e1f16cde118323c", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-221", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-221"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2023-221.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-221\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-462e1607dd362eb9", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-57", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-57"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2023-57.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-57\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-45e53a7b6d8a1252", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-58", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-58"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2023-58.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2023-58\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f97b27d78e72492b", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2043", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2043"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2043.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2043\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19894d98f9bfe0ad", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2044", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2044"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2044.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2044\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d05a923e289fb525", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2045", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2045"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2045.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2045\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-92f2b8b21f9414b2", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2046", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2046"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2046.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2046\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-65ef639364126699", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2320", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2320"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2026-2320.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2320\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2734e0519621598", "name": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-3417", "shortDescription": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-3417"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `2.2.2` (declared in `requirements.txt`) is affected by PYSEC-2026-3417.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3417\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1ab0f13a22d9a0b", "name": "Vulnerable dependency Werkzeug 3.0.1: GHSA-29vq-49wr-vm6x", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-29vq-49wr-vm6x"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by GHSA-29vq-49wr-vm6x.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-29vq-49wr-vm6x\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-478cc478ae4f822d", "name": "Vulnerable dependency Werkzeug 3.0.1: GHSA-2g68-c3qc-8985", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-2g68-c3qc-8985"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by GHSA-2g68-c3qc-8985.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-2g68-c3qc-8985\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb86851119bca9a8", "name": "Vulnerable dependency Werkzeug 3.0.1: GHSA-87hc-h4r5-73f7", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-87hc-h4r5-73f7"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by GHSA-87hc-h4r5-73f7.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-87hc-h4r5-73f7\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e75306238748c0f1", "name": "Vulnerable dependency Werkzeug 3.0.1: GHSA-f9vj-2wh5-fj8j", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-f9vj-2wh5-fj8j"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by GHSA-f9vj-2wh5-fj8j.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-f9vj-2wh5-fj8j\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db109ed949ffc9d0", "name": "Vulnerable dependency Werkzeug 3.0.1: GHSA-hgf8-39gv-g3f2", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-hgf8-39gv-g3f2"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by GHSA-hgf8-39gv-g3f2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-hgf8-39gv-g3f2\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-871ac1aeb9bcae06", "name": "Vulnerable dependency Werkzeug 3.0.1: GHSA-q34m-jh98-gwm2", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-q34m-jh98-gwm2"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by GHSA-q34m-jh98-gwm2.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-q34m-jh98-gwm2\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81d3e3e59d8f32ac", "name": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2043", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2043"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2043.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2043\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-65f9269e12f3a54d", "name": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2044", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2044"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2044.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2044\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be9862964c4cbb8b", "name": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2045", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2045"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2045.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2045\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e51d17a6523e3c51", "name": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2046", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2046"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2046.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2046\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81e4c9660ab30834", "name": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2320", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2320"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2320.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2320\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8fbe580577a3b3ee", "name": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-3417", "shortDescription": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-3417"}, "fullDescription": {"text": "OSV.dev reports `Werkzeug` at version `3.0.1` (declared in `requirements.txt`) is affected by PYSEC-2026-3417.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-3417\nFix: upgrade `Werkzeug` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4b7505ab0132f12", "name": "Vulnerable dependency zeep 4.1.0: GHSA-4cc2-g9w2-fhf6", "shortDescription": {"text": "Vulnerable dependency zeep 4.1.0: GHSA-4cc2-g9w2-fhf6"}, "fullDescription": {"text": "OSV.dev reports `zeep` at version `4.1.0` (declared in `requirements.txt`) is affected by GHSA-4cc2-g9w2-fhf6.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4cc2-g9w2-fhf6\nFix: upgrade `zeep` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eac8c0ba798b52fd", "name": "Vulnerable dependency zeep 4.1.0: PYSEC-2026-2323", "shortDescription": {"text": "Vulnerable dependency zeep 4.1.0: PYSEC-2026-2323"}, "fullDescription": {"text": "OSV.dev reports `zeep` at version `4.1.0` (declared in `requirements.txt`) is affected by PYSEC-2026-2323.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2323\nFix: upgrade `zeep` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b2e1c9d37749d9b4", "name": "Vulnerable dependency zeep 4.2.1: GHSA-4cc2-g9w2-fhf6", "shortDescription": {"text": "Vulnerable dependency zeep 4.2.1: GHSA-4cc2-g9w2-fhf6"}, "fullDescription": {"text": "OSV.dev reports `zeep` at version `4.2.1` (declared in `requirements.txt`) is affected by GHSA-4cc2-g9w2-fhf6.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4cc2-g9w2-fhf6\nFix: upgrade `zeep` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0824f657ae3d405a", "name": "Vulnerable dependency zeep 4.2.1: PYSEC-2026-2323", "shortDescription": {"text": "Vulnerable dependency zeep 4.2.1: PYSEC-2026-2323"}, "fullDescription": {"text": "OSV.dev reports `zeep` at version `4.2.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2323.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2323\nFix: upgrade `zeep` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8e2809b63f90718", "name": "Vulnerable dependency zeep 4.3.1: GHSA-4cc2-g9w2-fhf6", "shortDescription": {"text": "Vulnerable dependency zeep 4.3.1: GHSA-4cc2-g9w2-fhf6"}, "fullDescription": {"text": "OSV.dev reports `zeep` at version `4.3.1` (declared in `requirements.txt`) is affected by GHSA-4cc2-g9w2-fhf6.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/GHSA-4cc2-g9w2-fhf6\nFix: upgrade `zeep` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-837f33787fa922a7", "name": "Vulnerable dependency zeep 4.3.1: PYSEC-2026-2323", "shortDescription": {"text": "Vulnerable dependency zeep 4.3.1: PYSEC-2026-2323"}, "fullDescription": {"text": "OSV.dev reports `zeep` at version `4.3.1` (declared in `requirements.txt`) is affected by PYSEC-2026-2323.\n\nNo summary published yet.\n\nAdvisory: https://osv.dev/vulnerability/PYSEC-2026-2323\nFix: upgrade `zeep` past the affected range per the advisory."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9983baf1ecc7ec34", "name": "Dependency cbor2 is a major version behind", "shortDescription": {"text": "Dependency cbor2 is a major version behind"}, "fullDescription": {"text": "`cbor2` is pinned at `5.4.2.post1` in `requirements.txt` while the latest release on the pypi registry is `6.1.3` \u2014 1 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `cbor2` to `6.1.3`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "low", "confidence": 0.9}}, {"id": "scanner-880aba1366c5f122", "name": "Dependency chardet is two or more major versions behind", "shortDescription": {"text": "Dependency chardet is two or more major versions behind"}, "fullDescription": {"text": "`chardet` is pinned at `4.0.0` in `requirements.txt` while the latest release on the pypi registry is `7.4.3` \u2014 3 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `chardet` to `7.4.3`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-919befa0d6d81842", "name": "Dependency cryptography is two or more major versions behind", "shortDescription": {"text": "Dependency cryptography is two or more major versions behind"}, "fullDescription": {"text": "`cryptography` is pinned at `3.4.8` in `requirements.txt` while the latest release on the pypi registry is `49.0.0` \u2014 46 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `cryptography` to `49.0.0`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-7f61a2a96e995a05", "name": "Dependency geoip2 is two or more major versions behind", "shortDescription": {"text": "Dependency geoip2 is two or more major versions behind"}, "fullDescription": {"text": "`geoip2` is pinned at `2.9.0` in `requirements.txt` while the latest release on the pypi registry is `5.3.0` \u2014 3 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `geoip2` to `5.3.0`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-52256dc9dc096646", "name": "Dependency gevent is two or more major versions behind", "shortDescription": {"text": "Dependency gevent is two or more major versions behind"}, "fullDescription": {"text": "`gevent` is pinned at `21.8.0` in `requirements.txt` while the latest release on the pypi registry is `26.7.0` \u2014 5 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `gevent` to `26.7.0`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-636c0fe46aac43f2", "name": "Dependency greenlet is two or more major versions behind", "shortDescription": {"text": "Dependency greenlet is two or more major versions behind"}, "fullDescription": {"text": "`greenlet` is pinned at `1.1.2` in `requirements.txt` while the latest release on the pypi registry is `3.5.4` \u2014 2 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `greenlet` to `3.5.4`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-718e36d96f901905", "name": "Dependency idna is a major version behind", "shortDescription": {"text": "Dependency idna is a major version behind"}, "fullDescription": {"text": "`idna` is pinned at `2.10` in `requirements.txt` while the latest release on the pypi registry is `3.18` \u2014 1 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `idna` to `3.18`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "low", "confidence": 0.9}}, {"id": "scanner-2e12615a1d076b0a", "name": "Dependency lxml is two or more major versions behind", "shortDescription": {"text": "Dependency lxml is two or more major versions behind"}, "fullDescription": {"text": "`lxml` is pinned at `4.8.0` in `requirements.txt` while the latest release on the pypi registry is `6.1.1` \u2014 2 major version(s) behind. Old majors stop receiving security backports and accumulate known CVEs. Review the upstream changelog / migration guide and upgrade `lxml` to `6.1.1`."}, "properties": {"scanner": "scanner-primary", "layer": "dependencies", "severity": "medium", "confidence": 0.9}}, {"id": "scanner-c8577d2af972da86", "name": "Dangling fetch: GET /iot_drivers/iot_logs (addons/iot_drivers/static/src/app/logs.js:3)", "shortDescription": {"text": "Dangling fetch: GET /iot_drivers/iot_logs (addons/iot_drivers/static/src/app/logs.js:3)"}, "fullDescription": {"text": "`addons/iot_drivers/static/src/app/logs.js:3` calls `GET /iot_drivers/iot_logs` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/iot_drivers/iot_logs`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-6cdca403af7fd746", "name": "Dangling fetch: GET /iot_drivers/data (addons/iot_drivers/static/src/app/status.js:20)", "shortDescription": {"text": "Dangling fetch: GET /iot_drivers/data (addons/iot_drivers/static/src/app/status.js:20)"}, "fullDescription": {"text": "`addons/iot_drivers/static/src/app/status.js:20` calls `GET /iot_drivers/data` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/iot_drivers/data`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-8cc8e08a1f5d085f", "name": "Dangling fetch: CALL /web/dataset/call_kw/mail.push.device/register_devices (addons/mail/static/src/service_worker.js:31", "shortDescription": {"text": "Dangling fetch: CALL /web/dataset/call_kw/mail.push.device/register_devices (addons/mail/static/src/service_worker.js:311)"}, "fullDescription": {"text": "`addons/mail/static/src/service_worker.js:311` calls `CALL /web/dataset/call_kw/mail.push.device/register_devices` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/web/dataset/call_kw/mail.push.device/register_devices`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-1f5548bdd0e70fdb", "name": "Dangling fetch: GET /web/bundle/${bundle} (addons/web/static/lib/hoot/ui/setup_hoot_ui.js:73)", "shortDescription": {"text": "Dangling fetch: GET /web/bundle/${bundle} (addons/web/static/lib/hoot/ui/setup_hoot_ui.js:73)"}, "fullDescription": {"text": "`addons/web/static/lib/hoot/ui/setup_hoot_ui.js:73` calls `GET /web/bundle/${bundle}` but no backend route in the scanned graph matches that path. This is a likely runtime 404 unless an external gateway or unsupported router provides it.\n\nTool: fetch\nNormalized path used for matching: `/web/bundle/<p>`"}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 0.9}}, {"id": "scanner-666814b15efc5c6b", "name": "421 backend endpoints not called by scanned frontend", "shortDescription": {"text": "421 backend endpoints not called by scanned frontend"}, "fullDescription": {"text": "No scanned frontend call matched these backend routes. Sample: ANY /test_http/greeting-public, ANY /test_http/greeting-user, ANY /test_http/greeting-bearer, ANY /test_http/wsgi_environ, ANY /test_http/echo-http-get, ANY /test_http/echo-http-post, ANY /test_http/echo-http-csrf, ANY /test_http/echo-http-context-lang + 413 more. This is fine when endpoints serve external clients (mobile apps, SDKs, third-party integrations, server-side webhooks). Otherwise document consumers or remove dead routes."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/1515"}, "properties": {"repository": "odoo/odoo", "repoUrl": "https://github.com/odoo/odoo.git", "branch": "19.0"}, "results": [{"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import ansitoimg` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155774, "scanner": "repobility-supply-chain", "fingerprint": "b60da8d32633add24886e437bc973587981a1decb65ec516e1c7863c62ff4afe", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|b60da8d32633add24886e437bc973587981a1decb65ec516e1c7863c62ff4afe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `try:` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155773, "scanner": "repobility-supply-chain", "fingerprint": "2b769b4c7e3a7e8562dc7bf5f53a7a734e5d8c5e46f551bc9c17f2b9506ca204", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|2b769b4c7e3a7e8562dc7bf5f53a7a734e5d8c5e46f551bc9c17f2b9506ca204"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 36}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import tempfile` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155772, "scanner": "repobility-supply-chain", "fingerprint": "0cdb7ec15b1cbca622a0b1370103eca635fddeaa8cd373b2a587d4cc15261404", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|0cdb7ec15b1cbca622a0b1370103eca635fddeaa8cd373b2a587d4cc15261404"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 34}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import shutil` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155771, "scanner": "repobility-supply-chain", "fingerprint": "c04f897df48d25ad55fe003bb4d7b6325a68163685becfa196fbf5ef2f024556", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c04f897df48d25ad55fe003bb4d7b6325a68163685becfa196fbf5ef2f024556"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import re` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155770, "scanner": "repobility-supply-chain", "fingerprint": "52f8e2799f997fc4794639d5ba6414c2efee15e8f3492b06f54c21c9a6f1e3c4", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|52f8e2799f997fc4794639d5ba6414c2efee15e8f3492b06f54c21c9a6f1e3c4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import os` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155769, "scanner": "repobility-supply-chain", "fingerprint": "c36fd7f9f349cfad367bd14ef7021175bbb963f39b5880d23fd2de2732d39f5e", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c36fd7f9f349cfad367bd14ef7021175bbb963f39b5880d23fd2de2732d39f5e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import json` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155768, "scanner": "repobility-supply-chain", "fingerprint": "2f87b35b138722ebada7501a8ea26bde60772a2f4c7a9ba81c01e1fa4cfe56fa", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|2f87b35b138722ebada7501a8ea26bde60772a2f4c7a9ba81c01e1fa4cfe56fa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import itertools` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155767, "scanner": "repobility-supply-chain", "fingerprint": "f7c31351ba12d3037ac8e2c7684cc0b835d9c749f21c3bd7a4a998a7d74564b3", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f7c31351ba12d3037ac8e2c7684cc0b835d9c749f21c3bd7a4a998a7d74564b3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import gzip` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155766, "scanner": "repobility-supply-chain", "fingerprint": "e3216a2f211bac2647588aa57b281a97711405a94798cd9633fe010099b5878d", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|e3216a2f211bac2647588aa57b281a97711405a94798cd9633fe010099b5878d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `import argparse` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155765, "scanner": "repobility-supply-chain", "fingerprint": "6859fcfd4626bbec5e80c3bd66e393c21014d5c6b4d613dc0d8cee395161c2de", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|6859fcfd4626bbec5e80c3bd66e393c21014d5c6b4d613dc0d8cee395161c2de"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `\"\"\"` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155764, "scanner": "repobility-supply-chain", "fingerprint": "eca929c8e9607ba2bad05795f3b8eef93d4aa1c5dbcc784d7ecee73f0eb87296", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|eca929c8e9607ba2bad05795f3b8eef93d4aa1c5dbcc784d7ecee73f0eb87296"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `...` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155763, "scanner": "repobility-supply-chain", "fingerprint": "50ac016c9964b9af3f1329088edbe0564f40df4cda8e5e760389b189059b9068", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|50ac016c9964b9af3f1329088edbe0564f40df4cda8e5e760389b189059b9068"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `TODO:` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155762, "scanner": "repobility-supply-chain", "fingerprint": "f9fc463ae03a3fad65d8f06bb8af24f60f454b6d9dc48e4f8a2c52a105ef1554", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f9fc463ae03a3fad65d8f06bb8af24f60f454b6d9dc48e4f8a2c52a105ef1554"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `This script was heavily reworked but is not in a final version:` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155761, "scanner": "repobility-supply-chain", "fingerprint": "981610b4dde950526c9f22fe57cf2c8a1f77e4ed1dee51cfadfa97cbbfeb896b", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|981610b4dde950526c9f22fe57cf2c8a1f77e4ed1dee51cfadfa97cbbfeb896b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 15}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `requirements necessating showing the row)` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155760, "scanner": "repobility-supply-chain", "fingerprint": "9fc90ff3fdef08823007c6361ee0a57e7d9834eeebc4a860fa2325201094cac2", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|9fc90ff3fdef08823007c6361ee0a57e7d9834eeebc4a860fa2325201094cac2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `checking multiple releases: one of the other releases may mismatch the its` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155759, "scanner": "repobility-supply-chain", "fingerprint": "2a7f7617f0e1f32bf8b69a237ae04d7881085cd0b4518de3ec5358b12149d0d7", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|2a7f7617f0e1f32bf8b69a237ae04d7881085cd0b4518de3ec5358b12149d0d7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `* empty or green cells mean that specific release matches its requirement (happens when` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155758, "scanner": "repobility-supply-chain", "fingerprint": "7cbb9364bac4e6c54618b0cb0fd64945ede433bea7a07fa00d3b6550742788ea", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|7cbb9364bac4e6c54618b0cb0fd64945ede433bea7a07fa00d3b6550742788ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `matching requirements version` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155757, "scanner": "repobility-supply-chain", "fingerprint": "781a6222e250fe16babe2bfd78700238cc0998c665a4d112ae16e3bfaaced6b1", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|781a6222e250fe16babe2bfd78700238cc0998c665a4d112ae16e3bfaaced6b1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 10}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `* only shows requirements for which at least one release diverges from the` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155756, "scanner": "repobility-supply-chain", "fingerprint": "f484ac61a4f4725a642d1e5ce3de301f8705726dbd825aa812c86747d0b2d63c", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f484ac61a4f4725a642d1e5ce3de301f8705726dbd825aa812c86747d0b2d63c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 9}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `requirements.` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155755, "scanner": "repobility-supply-chain", "fingerprint": "33408aa7d3ab455bfa492f6cae897676815969e0380d910c52acc36f754604ac", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|33408aa7d3ab455bfa492f6cae897676815969e0380d910c52acc36f754604ac"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 7}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `against a release which bundles Python 3.5, checks the 3.5 version of` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155754, "scanner": "repobility-supply-chain", "fingerprint": "dc229302da26bfec98bdfa30a4437d9e6644a976e60ef4240ec30da37bc64853", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|dc229302da26bfec98bdfa30a4437d9e6644a976e60ef4240ec30da37bc64853"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 6}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `versions, taking distribution's Python version in account e.g. if checking` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155753, "scanner": "repobility-supply-chain", "fingerprint": "0857c2a3a90a2be9d495a814a06e2dadc0b3ec1ce483db83aa3503af204e8755", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|0857c2a3a90a2be9d495a814a06e2dadc0b3ec1ce483db83aa3503af204e8755"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 5}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `Checks versions from the requirements files against distribution-provided` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155752, "scanner": "repobility-supply-chain", "fingerprint": "c7d85a2b4972a9e9ec0dc5343eeb8198c8276b660a469421fefed4ae64a5275a", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|c7d85a2b4972a9e9ec0dc5343eeb8198c8276b660a469421fefed4ae64a5275a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 4}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `\"\"\"` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155751, "scanner": "repobility-supply-chain", "fingerprint": "6a6f154ef836a3bb82186ad9c19b59c6270e3edac89c84fe64c2eb75d1a48753", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|6a6f154ef836a3bb82186ad9c19b59c6270e3edac89c84fe64c2eb75d1a48753"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 3}}}]}, {"ruleId": "MINED124", "level": "warning", "message": {"text": "[MINED124] requirements.txt: `pytz  # no version pinning to avoid OS perturbations` has no version pin: Unpinned pip requirement means every fresh install may resolve a different version. Newer releases can introduce malicious code (typosquats, account compromises). Reproducible installs need exact pins."}, "properties": {"repobilityId": 155750, "scanner": "repobility-supply-chain", "fingerprint": "f735c7676a3a8d1a14d890ad6f040482f03c4def742f783f65a763321653f6ec", "category": "dependency", "severity": "medium", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "unpinned-pip-requirement", "owasp": null, "cwe_ids": ["CWE-1357"], "languages": ["python"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f735c7676a3a8d1a14d890ad6f040482f03c4def742f783f65a763321653f6ec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 79}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155749, "scanner": "repobility-ast-engine", "fingerprint": "64a73042800962f39612510d61b9b4c4f05a32e95fb9fa305d87de3ed431f669", "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|64a73042800962f39612510d61b9b4c4f05a32e95fb9fa305d87de3ed431f669"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/iot_handlers/drivers/serial_base_driver.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `export` (dict): `def export(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too."}, "properties": {"repobilityId": 155748, "scanner": "repobility-ast-engine", "fingerprint": "d38f7220cab91eeaaa482f5f33203ce25c26cc0c14775ab5ef271536dde9fc04", "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|d38f7220cab91eeaaa482f5f33203ce25c26cc0c14775ab5ef271536dde9fc04"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/test_import_export/tests/test_export.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `export` (list): `def export(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too."}, "properties": {"repobilityId": 155747, "scanner": "repobility-ast-engine", "fingerprint": "95b37c71f82bfa82be432387a81763800e3f17cb2efaa5d2dca4ab50c5c47211", "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|95b37c71f82bfa82be432387a81763800e3f17cb2efaa5d2dca4ab50c5c47211"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/test_import_export/tests/test_export.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `launch_perf` (dict): `def launch_perf(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too."}, "properties": {"repobilityId": 155746, "scanner": "repobility-ast-engine", "fingerprint": "0ffdc298ae81f82d1b244262b25277e971ece7c75165b21a7573e596837d189d", "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|0ffdc298ae81f82d1b244262b25277e971ece7c75165b21a7573e596837d189d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/test_orm/tests/test_timeit.py"}, "region": {"startLine": 71}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155741, "scanner": "repobility-ast-engine", "fingerprint": "6dc52b6f4b0b1c958824a08753f9bd86c36e833491579ceb5e865182ae38aa4f", "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|6dc52b6f4b0b1c958824a08753f9bd86c36e833491579ceb5e865182ae38aa4f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_model.py"}, "region": {"startLine": 2268}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155740, "scanner": "repobility-ast-engine", "fingerprint": "b9c9845711ff2891ae5c9f929b3c47e07b17e4b9df4e40a503d0c027831cc530", "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|b9c9845711ff2891ae5c9f929b3c47e07b17e4b9df4e40a503d0c027831cc530"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_model.py"}, "region": {"startLine": 2564}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155735, "scanner": "repobility-ast-engine", "fingerprint": "3d4f9ecccdc1fcad8f2aab70888a2e5f8526a9b55089944d788da586856e3f12", "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|3d4f9ecccdc1fcad8f2aab70888a2e5f8526a9b55089944d788da586856e3f12"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_actions.py"}, "region": {"startLine": 351}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155704, "scanner": "repobility-ast-engine", "fingerprint": "a1f1cc4b9665db76a278dc5b1f68561b257b361806b472e7b28b5ebbf5b8cde6", "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|a1f1cc4b9665db76a278dc5b1f68561b257b361806b472e7b28b5ebbf5b8cde6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/cli/start.py"}, "region": {"startLine": 58}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155700, "scanner": "repobility-ast-engine", "fingerprint": "2b45b3448003f074337f86a195fcf185ad027690cf10e83209a94449a5ab1114", "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|2b45b3448003f074337f86a195fcf185ad027690cf10e83209a94449a5ab1114"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/registry.py"}, "region": {"startLine": 667}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155699, "scanner": "repobility-ast-engine", "fingerprint": "462f03b2a497110ac9bec5ebc78d8136aeeee1cd6dba48a5d758f75d5685f18d", "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|462f03b2a497110ac9bec5ebc78d8136aeeee1cd6dba48a5d758f75d5685f18d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/registry.py"}, "region": {"startLine": 725}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155697, "scanner": "repobility-ast-engine", "fingerprint": "1dff006291db1b36f54ed43074e331309433f1acf7e904386ff0f39e3928407d", "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|1dff006291db1b36f54ed43074e331309433f1acf7e904386ff0f39e3928407d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/barcode.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155692, "scanner": "repobility-ast-engine", "fingerprint": "5439e0f1f9c292c8d0bb1a81dfa70ded7f867b9dfdbedd049ac9617f983b9291", "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|5439e0f1f9c292c8d0bb1a81dfa70ded7f867b9dfdbedd049ac9617f983b9291"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/misc.py"}, "region": {"startLine": 1560}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155691, "scanner": "repobility-ast-engine", "fingerprint": "49473527d7314fce6f65af03e23ff668fc04272fe93d6fa3ec3a9ad72c1496fe", "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|49473527d7314fce6f65af03e23ff668fc04272fe93d6fa3ec3a9ad72c1496fe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/misc.py"}, "region": {"startLine": 1505}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 155690, "scanner": "repobility-ast-engine", "fingerprint": "045f679a428d237ce4f9746308d0a0c0bebeef0dc0413719e317e3a1355bc038", "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|045f679a428d237ce4f9746308d0a0c0bebeef0dc0413719e317e3a1355bc038"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/misc.py"}, "region": {"startLine": 943}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `_babel_extract_terms` (dict): `def _babel_extract_terms(... = []/{}/set())` \u2014 Python's default value is constructed ONCE at function definition time and shared across all calls. Mutating it in one call mutates it for every future call too."}, "properties": {"repobilityId": 155687, "scanner": "repobility-ast-engine", "fingerprint": "410ee1a95fbd64711c2457a2c44c7bc5ec979911701711d6aafd0ce403bf054c", "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|410ee1a95fbd64711c2457a2c44c7bc5ec979911701711d6aafd0ce403bf054c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/translate.py"}, "region": {"startLine": 1436}}}]}, {"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 155659, "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": "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": 155658, "scanner": "repobility-access-control", "fingerprint": "f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10", "category": "auth", "severity": "medium", "confidence": 0.92, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Static route and framework evidence require project-owner confirmation.", "evidence": {"scanner": "repobility-access-control", "frameworks": ["Django"], "expected_files": [".repobility/access.yml", ".repobility/access.yaml", ".repobility/access.json", ".repobility/authorization.yml"], "correlation_key": "fp|f1305052c3ba1e6c1cdb5dccc19e58a8168cf78b176658f32b1fc823df3e9d10"}}}, {"ruleId": "SEC087", "level": "warning", "message": {"text": "[SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; using it for tokens/keys/nonces is predictable. Ported from gosec G404 / eslint detect-pseudoRandomBytes concept (Apache-2.0)."}, "properties": {"repobilityId": 155657, "scanner": "repobility-threat-engine", "fingerprint": "d48de9671020c85cd41db84d6c4d7195d3b9dedaa8a72b8cdadf7f9a3d09aeaf", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Math.random()}`);\n    root.style.zIndex = \"calc(9e999)\";\n    root.style.position = \"relativ", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC087", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d48de9671020c85cd41db84d6c4d7195d3b9dedaa8a72b8cdadf7f9a3d09aeaf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/static/src/embed/common/boot_helpers.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "SEC046", "level": "warning", "message": {"text": "[SEC046] Client-side open redirect \u2014 window.location = server-supplied URL: Assigning window.location from a server-supplied URL trusts the server endpoint to never return a hostile destination. If that endpoint is ever subverted (compromised admin, JSON injection, MITM on a webhook), users get redirected to a phishing site they trust because the original page is yours. CWE-601 (server-side OR client-side). Complement to server-side SEC030."}, "properties": {"repobilityId": 155633, "scanner": "repobility-threat-engine", "fingerprint": "c21192177d7ac3afeb45c11bb729f9f4784ddcb9631203acd645fc491dea812d", "category": "open_redirect", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "window.location.assign(response.", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC046", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|c21192177d7ac3afeb45c11bb729f9f4784ddcb9631203acd645fc491dea812d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/calendar/static/src/components/calendar_provider_config/calendar_connect_provider.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "SEC045", "level": "warning", "message": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use object introspection (().__class__.__mro__[-1].__subclasses__()) to reach os.system. CWE-95 (eval injection)."}, "properties": {"repobilityId": 155629, "scanner": "repobility-threat-engine", "fingerprint": "446176d942ece2cad9fdd11ca49f654a2ee26546d7df31ca5f1803c92cd59dbf", "category": "injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".exec(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|25|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/youtube_plugin.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "SEC045", "level": "warning", "message": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use object introspection (().__class__.__mro__[-1].__subclasses__()) to reach os.system. CWE-95 (eval injection)."}, "properties": {"repobilityId": 155628, "scanner": "repobility-threat-engine", "fingerprint": "dc416f88d2e77f5cf1d81d4958a14b3891b460107d07a89a46d72a302d038b36", "category": "injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|40|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/operation.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "SEC045", "level": "warning", "message": {"text": "[SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data \u2014 even admin-stored data \u2014 is a lateral-movement vector after any one credential compromise. Sandboxes (__builtins__ cleared) are escapable: attackers use object introspection (().__class__.__mro__[-1].__subclasses__()) to reach os.system. CWE-95 (eval injection)."}, "properties": {"repobilityId": 155627, "scanner": "repobility-threat-engine", "fingerprint": "5b373773df1ea67d9ef0c468e916ed652e56ac6015cb238b2d63e606bf7dc652", "category": "injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".exec(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|34|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_import/static/src/binary_file_manager.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "SEC127", "level": "warning", "message": {"text": "[SEC127] AI agent stub \u2014 TODO: implement / pass placeholder body: Function body left as TODO/pass/raise NotImplementedError after an AI scaffolding pass. The route appears to exist (and may even pass shallow CI), but invoking it crashes or silently no-ops. AI agents consistently emit these when their context window runs out mid-implementation. Production callers hitting these stubs is a classic AI-generated-incident."}, "properties": {"repobilityId": 155624, "scanner": "repobility-threat-engine", "fingerprint": "fa02f9e6d961f29545fd555d87d24f179b25fdf16ab638c1af5ded658e62e95e", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "def on_barcode_scanned(self, barcode):\n        raise NotImplementedError", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC127", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|fa02f9e6d961f29545fd555d87d24f179b25fdf16ab638c1af5ded658e62e95e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/barcodes/models/barcode_events_mixin.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "SEC015", "level": "warning", "message": {"text": "[SEC015] Insecure Randomness for Security: Weak PRNG used in security-sensitive context. Output is predictable."}, "properties": {"repobilityId": 155617, "scanner": "repobility-threat-engine", "fingerprint": "67d381d6c03382eb6c8a9a59ef417f9a3e78cde43bb5208b54726ebc44c982d7", "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 make_key", "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|token|164|sec015"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/models/auth_passkey_key.py"}, "region": {"startLine": 164}}}]}, {"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": 155600, "scanner": "repobility-threat-engine", "fingerprint": "4cb0c0e48ef54075d58b7cf19402178d8a55e9f5960829f33137fff3631a56a2", "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|4cb0c0e48ef54075d58b7cf19402178d8a55e9f5960829f33137fff3631a56a2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/attachment_indexation/models/ir_attachment.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "SEC041", "level": "warning", "message": {"text": "[SEC041] Tabnabbing \u2014 target=\"_blank\" without rel=\"noopener noreferrer\": <a target=\"_blank\"> without rel=\"noopener noreferrer\" leaks window.opener to the opened page. The opened page can then run window.opener.location = 'phishing-site' and the parent tab quietly navigates to attacker-controlled content (reverse tabnabbing). OWASP-classic; modern browsers default rel='noopener' for new windows but explicit attribute is still required for compatibility."}, "properties": {"repobilityId": 155595, "scanner": "repobility-threat-engine", "fingerprint": "3acfe4fea76daacb232ba808fecb33164b16ed80247513474d9655e4abcd60e4", "category": "security", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "<a class='btn btn-link' href='${params.get_credits_url}' target='_blank'>", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC041", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|security|token|28|sec041"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iap_mail/static/src/js/services/iap_notification_service.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "SEC041", "level": "warning", "message": {"text": "[SEC041] Tabnabbing \u2014 target=\"_blank\" without rel=\"noopener noreferrer\": <a target=\"_blank\"> without rel=\"noopener noreferrer\" leaks window.opener to the opened page. The opened page can then run window.opener.location = 'phishing-site' and the parent tab quietly navigates to attacker-controlled content (reverse tabnabbing). OWASP-classic; modern browsers default rel='noopener' for new windows but explicit attribute is still required for compatibility."}, "properties": {"repobilityId": 155594, "scanner": "repobility-threat-engine", "fingerprint": "9d75322119043baace2346ae0b7a3f76237bb7f91a48f9fa1c71c043766827e5", "category": "security", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "window.open(this.inputRef.el.value, \"_blank\")", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC041", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|security|token|45|sec041"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/building_blocks/builder_urlpicker.js"}, "region": {"startLine": 45}}}]}, {"ruleId": "SEC041", "level": "warning", "message": {"text": "[SEC041] Tabnabbing \u2014 target=\"_blank\" without rel=\"noopener noreferrer\": <a target=\"_blank\"> without rel=\"noopener noreferrer\" leaks window.opener to the opened page. The opened page can then run window.opener.location = 'phishing-site' and the parent tab quietly navigates to attacker-controlled content (reverse tabnabbing). OWASP-classic; modern browsers default rel='noopener' for new windows but explicit attribute is still required for compatibility."}, "properties": {"repobilityId": 155593, "scanner": "repobility-threat-engine", "fingerprint": "c1139f35f746128d007c2e7bc064134961b0c8cf58e0242e12eb3048c25f8dab", "category": "security", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "window.open(`${window.location.origin}/odoo/action-doc_api_key_wizard`, \"_blank\")", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC041", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|security|token|35|sec041"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/api_doc/static/src/components/doc_modal_api_key.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `portal_my_journal_unsubscribe` has cognitive complexity 16 (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: else=2, except=1, if=8, nested_bonus=3, or=2."}, "properties": {"repobilityId": 155555, "scanner": "repobility-threat-engine", "fingerprint": "89161a5e313b0fe74cf41a7930c3fa3c1d377598e1a2d6d103898ea44b73d405", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 16 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "portal_my_journal_unsubscribe", "breakdown": {"if": 8, "or": 2, "else": 2, "except": 1, "nested_bonus": 3}, "complexity": 16, "correlation_key": "fp|89161a5e313b0fe74cf41a7930c3fa3c1d377598e1a2d6d103898ea44b73d405"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/controllers/portal.py"}, "region": {"startLine": 188}}}]}, {"ruleId": "CORE_NO_CI", "level": "warning", "message": {"text": "No CI/CD configuration found"}, "properties": {"repobilityId": 155549, "scanner": "repobility-core", "fingerprint": "ca5da3551af97272c4f099fc472740148135a15816b81b90bd862e8f91ec66ce", "category": "practices", "severity": "medium", "confidence": null, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"rule_id": "CORE_NO_CI", "scanner": "repobility-core", "correlation_key": "repo|practices|core_no_ci"}}}, {"ruleId": "SEC006", "level": "note", "message": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "properties": {"repobilityId": 155651, "scanner": "repobility-threat-engine", "fingerprint": "59e3ec365a0f9de67c833845b990cc782dc55fa6795ebd92537f875fba3620c4", "category": "injection", "severity": "low", "confidence": 0.4, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "evidence": {"match": ".innerHTML = u", "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "rule_id": "SEC006", "scanner": "repobility-threat-engine", "confidence": 0.4, "correlation_key": "code|injection|token|47|sec006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/public/html_migrations/html_migrations_interaction.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "SEC006", "level": "note", "message": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "properties": {"repobilityId": 155650, "scanner": "repobility-threat-engine", "fingerprint": "55d98e549d82f41fcec26f95641cb071f9e4e09a7a58345243e3634302814f2e", "category": "injection", "severity": "low", "confidence": 0.4, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "evidence": {"match": ".innerHTML = P", "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "rule_id": "SEC006", "scanner": "repobility-threat-engine", "confidence": 0.4, "correlation_key": "code|injection|token|80|sec006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/embedded_components/core/syntax_highlighting/syntax_highlighting_utils.js"}, "region": {"startLine": 80}}}]}, {"ruleId": "SEC006", "level": "note", "message": {"text": "[SEC006] XSS Risk: Direct HTML injection without sanitization."}, "properties": {"repobilityId": 155649, "scanner": "repobility-threat-engine", "fingerprint": "95ba41d3f66b76821364700dde04ae2c1dcd4a4a694f3096b49eff41e68c78e9", "category": "injection", "severity": "low", "confidence": 0.4, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "evidence": {"match": ".innerHTML = c", "reason": "No user-input source (request/query/fetch/URL) found \u2014 may be static content", "rule_id": "SEC006", "scanner": "repobility-threat-engine", "confidence": 0.4, "correlation_key": "code|injection|token|200|sec006"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/components/html_viewer/html_viewer.js"}, "region": {"startLine": 200}}}]}, {"ruleId": "SEC132", "level": "note", "message": {"text": "[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template literals since ES6). Not a vulnerability on its own, but a style signature of cross-language AI rewrites \u2014 the model wrote idiomatic Java/C# and then translated mechanically. When this style appears in only *some* files of a repo, it's a strong indicator of an AI-driven rewrite that needs a human review p"}, "properties": {"repobilityId": 155647, "scanner": "repobility-threat-engine", "fingerprint": "a5aa42f9a53e4589e8d61756b69fe7747773625aa560f587b9f310ac662a7320", "category": "quality", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "\"Position \" + position + \" does not exist. Do not use arbitrary numbers.\"", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC132", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|a5aa42f9a53e4589e8d61756b69fe7747773625aa560f587b9f310ac662a7320"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/utils/option_sequence.js"}, "region": {"startLine": 69}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `portal_my_invoice_detail` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, else=1, except=1, if=3, nested_bonus=2, or=1."}, "properties": {"repobilityId": 155556, "scanner": "repobility-threat-engine", "fingerprint": "2bfa2fa7f18c13fc00b1ce9c6765dbbe5cc9c6332b7caf8c6128705de4a49015", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 9 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "portal_my_invoice_detail", "breakdown": {"if": 3, "or": 1, "elif": 1, "else": 1, "except": 1, "nested_bonus": 2}, "complexity": 9, "correlation_key": "fp|2bfa2fa7f18c13fc00b1ce9c6765dbbe5cc9c6332b7caf8c6128705de4a49015"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/controllers/portal.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `download_invoice_documents_filetype` has cognitive complexity 10 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, for=1, if=4, nested_bonus=4."}, "properties": {"repobilityId": 155554, "scanner": "repobility-threat-engine", "fingerprint": "121a0646e462c848e4a4a5f8a9335c033e7121ee108c6e45a636ae36ca55d9d0", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 10 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "download_invoice_documents_filetype", "breakdown": {"if": 4, "for": 1, "elif": 1, "nested_bonus": 4}, "complexity": 10, "correlation_key": "fp|121a0646e462c848e4a4a5f8a9335c033e7121ee108c6e45a636ae36ca55d9d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/controllers/download_docs.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "SEC047", "level": "note", "message": {"text": "[SEC047] Unbounded ORM search([]) in a request handler: An unbounded .search([]) call inside an HTTP route loads every row of the model into memory. Fine for small tables, but a denial-of-service primitive once the table grows past ~10k rows. CWE-770 (uncontrolled resource consumption)."}, "properties": {"repobilityId": 155552, "scanner": "repobility-threat-engine", "fingerprint": "f68e428d054e3f6a1ac7157e36e7a22e828f5a365242d1800834371f91329a9c", "category": "quality", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".search([])", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC047", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f68e428d054e3f6a1ac7157e36e7a22e828f5a365242d1800834371f91329a9c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_edi/models/account_journal.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "SEC047", "level": "note", "message": {"text": "[SEC047] Unbounded ORM search([]) in a request handler: An unbounded .search([]) call inside an HTTP route loads every row of the model into memory. Fine for small tables, but a denial-of-service primitive once the table grows past ~10k rows. CWE-770 (uncontrolled resource consumption)."}, "properties": {"repobilityId": 155551, "scanner": "repobility-threat-engine", "fingerprint": "87dfd2937eada125168559a3538e7880025927abd468874b4ffeca8ba0b74a4b", "category": "quality", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".search([])", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC047", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|87dfd2937eada125168559a3538e7880025927abd468874b4ffeca8ba0b74a4b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_edi/models/account_edi_format.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "SEC047", "level": "note", "message": {"text": "[SEC047] Unbounded ORM search([]) in a request handler: An unbounded .search([]) call inside an HTTP route loads every row of the model into memory. Fine for small tables, but a denial-of-service primitive once the table grows past ~10k rows. CWE-770 (uncontrolled resource consumption)."}, "properties": {"repobilityId": 155550, "scanner": "repobility-threat-engine", "fingerprint": "3f8038bceaeef9843653272473404528f94ed9684bed10ec518a9b2b38754ec0", "category": "quality", "severity": "low", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".search([])", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC047", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|3f8038bceaeef9843653272473404528f94ed9684bed10ec518a9b2b38754ec0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/__init__.py"}, "region": {"startLine": 10}}}]}, {"ruleId": "MINED098", "level": "none", "message": {"text": "[MINED098] Global Scope Pollution: Attaching libraries/objects directly to the global window scope (e.g., `window.axios = axios;`) makes the code harder to test and increases the risk of naming collisions."}, "properties": {"repobilityId": 155656, "scanner": "repobility-threat-engine", "fingerprint": "9bc26deb364f85f1ad509f57a81f3bd89fb445bb3e02eed9b5db21c35b5d6636", "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": "global-scope-pollution", "owasp": null, "cwe_ids": [], "languages": ["javascript"], "precision": 1.0, "promoted_at": "2026-05-18T15:01:13.611213+00:00", "triaged_in_corpus": 12, "observations_count": 173528, "ai_coder_pattern_id": 55}, "scanner": "repobility-threat-engine", "correlation_key": "fp|9bc26deb364f85f1ad509f57a81f3bd89fb445bb3e02eed9b5db21c35b5d6636"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/static/src/core/common/chat_window_patch.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "MINED073", "level": "none", "message": {"text": "[MINED073] Redos Greedy Quantifier: Pattern with nested quantifiers like (a+)+ applied to network/user data \u2014 denial of service."}, "properties": {"repobilityId": 155648, "scanner": "repobility-threat-engine", "fingerprint": "2fc4180a90d69aa8fc3cdb81faa72d27c5a93a000f27a0f8ee8ab53387e37244", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "redos-greedy-quantifier", "owasp": "A06:2021", "cwe_ids": ["CWE-1333", "CWE-400"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348072+00:00", "triaged_in_corpus": 12, "observations_count": 12702, "ai_coder_pattern_id": 35}, "scanner": "repobility-threat-engine", "correlation_key": "fp|2fc4180a90d69aa8fc3cdb81faa72d27c5a93a000f27a0f8ee8ab53387e37244"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/models/ir_websocket.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "SEC001", "level": "none", "message": {"text": "[SEC001] Hardcoded Password: Hardcoded password found in source code."}, "properties": {"repobilityId": 155638, "scanner": "repobility-threat-engine", "fingerprint": "d1d82858e85ac9a3b3db5f629fbe2aeabdbf2b446708f6bbeb5e960d7d74e2cd", "category": "credential_exposure", "severity": "info", "confidence": 0.15, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Value looks like a development placeholder, not a live credential Collapsed 1 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "password = '<redacted>'", "reason": "Value looks like a development placeholder, not a live credential", "rule_id": "SEC001", "scanner": "repobility-threat-engine", "confidence": 0.15, "correlation_key": "secret|token|3|password redacted", "duplicate_count": 1, "duplicate_rule_ids": ["SEC001"], "duplicate_scanners": ["repobility-threat-engine"], "duplicate_fingerprints": ["d1d82858e85ac9a3b3db5f629fbe2aeabdbf2b446708f6bbeb5e960d7d74e2cd", "ed79619c9e7515f2a4320f3b6706b2d9cb1ef511b964f8321fd711686c445755"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/cloud_storage_azure/utils/cleanup_cloud_storage_azure.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 11 more): Same pattern found in 11 additional files. Review if needed."}, "properties": {"repobilityId": 155637, "scanner": "repobility-threat-engine", "fingerprint": "6e6b1fa9aa37cd5353c53477b8935ccc1c8f42b61f420ebd0ceb44871ba243eb", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 11 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 11 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|6e6b1fa9aa37cd5353c53477b8935ccc1c8f42b61f420ebd0ceb44871ba243eb"}}}, {"ruleId": "SEC027", "level": "none", "message": {"text": "[SEC027] XML External Entity (XXE) \u2014 Node.js xml parsers (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 155623, "scanner": "repobility-threat-engine", "fingerprint": "e36994aa64d72d276dc58a2181b9babaeb5f8b49a9d920f484486b634d28d0cf", "category": "xxe", "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": "SEC027", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|e36994aa64d72d276dc58a2181b9babaeb5f8b49a9d920f484486b634d28d0cf"}}}, {"ruleId": "SEC043", "level": "none", "message": {"text": "[SEC043] Secret stored in Odoo ir.config_parameter \u2014 broadly readable (and 10 more): Same pattern found in 10 additional files. Review if needed."}, "properties": {"repobilityId": 155619, "scanner": "repobility-threat-engine", "fingerprint": "98034b78fcf2cb5401eadfee48f548c769e055e22083c6851e736b3f51812b9d", "category": "secret", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 10 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 10 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC043", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|98034b78fcf2cb5401eadfee48f548c769e055e22083c6851e736b3f51812b9d"}}}, {"ruleId": "MINED072", "level": "none", "message": {"text": "[MINED072] Python Pass Only Class (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 155616, "scanner": "repobility-threat-engine", "fingerprint": "ab8da9b5986ecd12b37a79c2996b8e50407d9cea73fb774fd0a38602f68fdc76", "category": "quality", "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": {"mined": true, "mining": {"slug": "python-pass-only-class", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348069+00:00", "triaged_in_corpus": 10, "observations_count": 14245, "ai_coder_pattern_id": 143}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|ab8da9b5986ecd12b37a79c2996b8e50407d9cea73fb774fd0a38602f68fdc76", "aggregated_count": 1}}}, {"ruleId": "MINED072", "level": "none", "message": {"text": "[MINED072] Python Pass Only Class: class Foo: pass \u2014 stub waiting to be filled in."}, "properties": {"repobilityId": 155615, "scanner": "repobility-threat-engine", "fingerprint": "5d333ee929b53ab6b004f1b0bdd60db00c6cd891368c874175b3971904670fdd", "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-pass-only-class", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348069+00:00", "triaged_in_corpus": 10, "observations_count": 14245, "ai_coder_pattern_id": 143}, "scanner": "repobility-threat-engine", "correlation_key": "fp|5d333ee929b53ab6b004f1b0bdd60db00c6cd891368c874175b3971904670fdd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/google_calendar/utils/google_calendar.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED072", "level": "none", "message": {"text": "[MINED072] Python Pass Only Class: class Foo: pass \u2014 stub waiting to be filled in."}, "properties": {"repobilityId": 155614, "scanner": "repobility-threat-engine", "fingerprint": "0d38d4559d950f6f8b64280e9ce8bea551b60225944e72d5de653fb1c165bcf1", "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-pass-only-class", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348069+00:00", "triaged_in_corpus": 10, "observations_count": 14245, "ai_coder_pattern_id": 143}, "scanner": "repobility-threat-engine", "correlation_key": "fp|0d38d4559d950f6f8b64280e9ce8bea551b60225944e72d5de653fb1c165bcf1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_signup/models/res_partner.py"}, "region": {"startLine": 12}}}]}, {"ruleId": "MINED072", "level": "none", "message": {"text": "[MINED072] Python Pass Only Class: class Foo: pass \u2014 stub waiting to be filled in."}, "properties": {"repobilityId": 155613, "scanner": "repobility-threat-engine", "fingerprint": "b0f52980e11eb5e719429775d258e4e2fd0da658f908e40813180d92bc19f3f2", "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-pass-only-class", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348069+00:00", "triaged_in_corpus": 10, "observations_count": 14245, "ai_coder_pattern_id": 143}, "scanner": "repobility-threat-engine", "correlation_key": "fp|b0f52980e11eb5e719429775d258e4e2fd0da658f908e40813180d92bc19f3f2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/helpers/exceptions.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "MINED004", "level": "none", "message": {"text": "[MINED004] Weak Crypto (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "properties": {"repobilityId": 155612, "scanner": "repobility-threat-engine", "fingerprint": "3d94e880c2e8a0bb4b06b2e51a89f1e2b3c179247361f3b31060096e31f982c7", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "weak-crypto", "owasp": "A02:2021", "cwe_ids": ["CWE-327"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347906+00:00", "triaged_in_corpus": 15, "observations_count": 303181, "ai_coder_pattern_id": 13}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|3d94e880c2e8a0bb4b06b2e51a89f1e2b3c179247361f3b31060096e31f982c7", "aggregated_count": 3}}}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 155608, "scanner": "repobility-threat-engine", "fingerprint": "6532fa83488bcd28293d48d05e0b1dbaca2ec2acbb84dc50cabb1ff70d0c7b85", "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|6532fa83488bcd28293d48d05e0b1dbaca2ec2acbb84dc50cabb1ff70d0c7b85"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/registration/formats/android_safetynet.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED062", "level": "none", "message": {"text": "[MINED062] Python Dataclass No Fields: @dataclass over an empty class \u2014 unfinished model."}, "properties": {"repobilityId": 155607, "scanner": "repobility-threat-engine", "fingerprint": "659820baf92d73cb83b54584c14a130bb5e7c8310a2fbdb3b00242ff25fcb4be", "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|659820baf92d73cb83b54584c14a130bb5e7c8310a2fbdb3b00242ff25fcb4be"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/authentication/verify_authentication_response.py"}, "region": {"startLine": 28}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https (and 6 more): Same pattern found in 6 additional files. Review if needed."}, "properties": {"repobilityId": 155606, "scanner": "repobility-threat-engine", "fingerprint": "e7cd40d7b324241c80937e7a6f550054df46cdde533de8ce7a56977f55a98866", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 6 additional occurrences found. The top occurrences remain visible as actionable findings.", "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", "aggregated": true, "correlation_key": "fp|e7cd40d7b324241c80937e7a6f550054df46cdde533de8ce7a56977f55a98866", "aggregated_count": 6}}}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 155605, "scanner": "repobility-threat-engine", "fingerprint": "0a7c6a0f8e28a4a4a244989eab53a4d61ddd25570fc6a88327ccbadbebffcc3d", "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|0a7c6a0f8e28a4a4a244989eab53a4d61ddd25570fc6a88327ccbadbebffcc3d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_iban/models/res_partner_bank.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 155604, "scanner": "repobility-threat-engine", "fingerprint": "32c285836bb8bc44c27525a248df26cffa63fba2879f7d49e08c14e7089c3106", "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|32c285836bb8bc44c27525a248df26cffa63fba2879f7d49e08c14e7089c3106"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_geolocalize/models/base_geocoder.py"}, "region": {"startLine": 94}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 155603, "scanner": "repobility-threat-engine", "fingerprint": "17fd4a9761cd1bb3573c091f7c1f603bbba3c135ca4d5b58cfd6b73eee5e1567", "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|17fd4a9761cd1bb3573c091f7c1f603bbba3c135ca4d5b58cfd6b73eee5e1567"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_oauth/controllers/main.py"}, "region": {"startLine": 76}}}]}, {"ruleId": "MINED088", "level": "none", "message": {"text": "[MINED088] React Conditional Hook: useState/useEffect inside if/loop violates Rules of Hooks."}, "properties": {"repobilityId": 155599, "scanner": "repobility-threat-engine", "fingerprint": "b33e75525ba13ee46c92a6f8ce3aac0df6060c522b956ce2db524798852eb467", "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-conditional-hook", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348143+00:00", "triaged_in_corpus": 20, "observations_count": 600, "ai_coder_pattern_id": 139}, "scanner": "repobility-threat-engine", "correlation_key": "fp|b33e75525ba13ee46c92a6f8ce3aac0df6060c522b956ce2db524798852eb467"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/media/image_toolbar_dropdown.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "MINED088", "level": "none", "message": {"text": "[MINED088] React Conditional Hook: useState/useEffect inside if/loop violates Rules of Hooks."}, "properties": {"repobilityId": 155598, "scanner": "repobility-threat-engine", "fingerprint": "67d37961a232d92113c6bc24249bf0e296c557b54cc78eb49fe6c1dcc4ae2aae", "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-conditional-hook", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348143+00:00", "triaged_in_corpus": 20, "observations_count": 600, "ai_coder_pattern_id": 139}, "scanner": "repobility-threat-engine", "correlation_key": "fp|67d37961a232d92113c6bc24249bf0e296c557b54cc78eb49fe6c1dcc4ae2aae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/building_blocks/builder_list.js"}, "region": {"startLine": 75}}}]}, {"ruleId": "MINED088", "level": "none", "message": {"text": "[MINED088] React Conditional Hook: useState/useEffect inside if/loop violates Rules of Hooks."}, "properties": {"repobilityId": 155597, "scanner": "repobility-threat-engine", "fingerprint": "fb07fac930041f12c8bd4d9d2041d27c7c88509da4924f5aab7d3c60197dee78", "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-conditional-hook", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348143+00:00", "triaged_in_corpus": 20, "observations_count": 600, "ai_coder_pattern_id": 139}, "scanner": "repobility-threat-engine", "correlation_key": "fp|fb07fac930041f12c8bd4d9d2041d27c7c88509da4924f5aab7d3c60197dee78"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/api_doc/static/src/utils/doc_ui_store.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "SEC041", "level": "none", "message": {"text": "[SEC041] Tabnabbing \u2014 target=\"_blank\" without rel=\"noopener noreferrer\" (and 4 more): Same pattern found in 4 additional files. Review if needed."}, "properties": {"repobilityId": 155596, "scanner": "repobility-threat-engine", "fingerprint": "a97c7de41c6b2c7d1727e9699cae690457bf784eba999a96e493342f63dadd13", "category": "security", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 4 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 4 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC041", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|a97c7de41c6b2c7d1727e9699cae690457bf784eba999a96e493342f63dadd13"}}}, {"ruleId": "SEC044", "level": "none", "message": {"text": "[SEC044] CSRF disabled on destructive HTTP endpoint: An auth='user' endpoint with csrf=False can be triggered cross-site by any logged-in user clicking a malicious page that POSTs to the endpoint. When the path is destructive (delete card, cancel subscription, remove account), this is an immediate CSRF attack primitive. CWE-352."}, "properties": {"repobilityId": 155592, "scanner": "repobility-threat-engine", "fingerprint": "b45da1fb0c8944eb85f2c8b09bf3eb0985a1cdcf74bde6f2643aa346644cdf05", "category": "csrf", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Safe pattern 'webhook|/callback|/notify|/event' detected on same line", "evidence": {"match": "@http.route('/base_vat/1/webhook_update_vies', type='http', csrf=False, save_session=False, auth='pu", "reason": "Safe pattern 'webhook|/callback|/notify|/event' detected on same line", "rule_id": "SEC044", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "fp|b45da1fb0c8944eb85f2c8b09bf3eb0985a1cdcf74bde6f2643aa346644cdf05"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_vat/controllers/webhook.py"}, "region": {"startLine": 11}}}]}, {"ruleId": "SEC020", "level": "none", "message": {"text": "[SEC020] Secret Printed to Logs (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "properties": {"repobilityId": 155590, "scanner": "repobility-threat-engine", "fingerprint": "501876d43fbaf15c6d4055194dcce53c187c4dbbef78a664b67e46162788cb51", "category": "credential_exposure", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 3 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|501876d43fbaf15c6d4055194dcce53c187c4dbbef78a664b67e46162788cb51"}}}, {"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": 155589, "scanner": "repobility-threat-engine", "fingerprint": "8f2e40a25bec50dc860e5eecb9a029b9963ddb0b5b3a71a83fe07b0294bd7f05", "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.exception('error when resetting password')", "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|11|logger.exception error when resetting password"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_signup/controllers/main.py"}, "region": {"startLine": 112}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout (and 11 more): Same pattern found in 11 additional files. Review if needed."}, "properties": {"repobilityId": 155586, "scanner": "repobility-threat-engine", "fingerprint": "94ff92b9b1277d2bf2912f951449509073b42466b47da11ee3b91388203e328d", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 11 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "python-requests-no-timeout", "owasp": null, "cwe_ids": ["CWE-400"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348058+00:00", "triaged_in_corpus": 12, "observations_count": 45429, "ai_coder_pattern_id": 122}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|94ff92b9b1277d2bf2912f951449509073b42466b47da11ee3b91388203e328d", "aggregated_count": 11}}}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 155585, "scanner": "repobility-threat-engine", "fingerprint": "0276b0f9809e11b71686724b50ac873fc7d95328076cd2dd00b0b70bf5b4392e", "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|0276b0f9809e11b71686724b50ac873fc7d95328076cd2dd00b0b70bf5b4392e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_geolocalize/models/base_geocoder.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 155584, "scanner": "repobility-threat-engine", "fingerprint": "9278377b773da3fd009474103776541eb9512c5ea9a628c4b4b1a2903f36377f", "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|9278377b773da3fd009474103776541eb9512c5ea9a628c4b4b1a2903f36377f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_oauth/models/res_users.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "MINED067", "level": "none", "message": {"text": "[MINED067] Python Requests No Timeout: requests.get/post/etc. without timeout= can hang forever."}, "properties": {"repobilityId": 155583, "scanner": "repobility-threat-engine", "fingerprint": "08240216b5776a897b4302bff1d36e7ed0031ea72c0359553e36717995ff4773", "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|08240216b5776a897b4302bff1d36e7ed0031ea72c0359553e36717995ff4773"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_edi_proxy_client/models/account_edi_proxy_user.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "SEC078", "level": "none", "message": {"text": "[SEC078] Python: requests without timeout (and 12 more): Same pattern found in 12 additional files. Review if needed."}, "properties": {"repobilityId": 155582, "scanner": "repobility-threat-engine", "fingerprint": "e5a3e51ee338bd5789b4d8548a80f110a29bd1e8f81e89a729221474dd71dbfc", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 12 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 12 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|e5a3e51ee338bd5789b4d8548a80f110a29bd1e8f81e89a729221474dd71dbfc"}}}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod (and 20 more): Same pattern found in 20 additional files. Review if needed."}, "properties": {"repobilityId": 155578, "scanner": "repobility-threat-engine", "fingerprint": "fb9fb002bf587f4fed1decfa21432ba221db6d030b7a6ee9ca0c881453dc1abd", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 20 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|fb9fb002bf587f4fed1decfa21432ba221db6d030b7a6ee9ca0c881453dc1abd", "aggregated_count": 20}}}, {"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": 155577, "scanner": "repobility-threat-engine", "fingerprint": "6c08490b848c5883c71f8d6d896f89b0a8cc4600c1de083a6a008bcba28c5976", "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|6c08490b848c5883c71f8d6d896f89b0a8cc4600c1de083a6a008bcba28c5976"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/api_doc/static/src/doc_model_store.js"}, "region": {"startLine": 77}}}]}, {"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": 155576, "scanner": "repobility-threat-engine", "fingerprint": "27b437768bd6b097165c7fe260e9838d12e91136e5bc2f761bc891758b4261db", "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|27b437768bd6b097165c7fe260e9838d12e91136e5bc2f761bc891758b4261db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/api_doc/static/src/components/doc_model.js"}, "region": {"startLine": 156}}}]}, {"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": 155575, "scanner": "repobility-threat-engine", "fingerprint": "d8462cf3d54da4a87d19acc13462f97b829b1ba7ffc1d2b4930283f8302e5fa1", "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|d8462cf3d54da4a87d19acc13462f97b829b1ba7ffc1d2b4930283f8302e5fa1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/static/src/views/upload_file_from_data_hook.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "MINED031", "level": "none", "message": {"text": "[MINED031] React Direct State Mutation (and 74 more): Same pattern found in 74 additional files. Review if needed."}, "properties": {"repobilityId": 155574, "scanner": "repobility-threat-engine", "fingerprint": "0c5661946071c0facbed2d1ebc10480fb39465172c302221f45c64c97c3d89a7", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 74 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "react-direct-state-mutation", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347971+00:00", "triaged_in_corpus": 15, "observations_count": 6168, "ai_coder_pattern_id": 137}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|0c5661946071c0facbed2d1ebc10480fb39465172c302221f45c64c97c3d89a7", "aggregated_count": 74}}}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function (and 18 more): Same pattern found in 18 additional files. Review if needed."}, "properties": {"repobilityId": 155569, "scanner": "repobility-threat-engine", "fingerprint": "9f490f319b1c4d599df8462bea952b94d5deb8e267e5973f634ba121af49752a", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 18 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "stub-only-function", "owasp": null, "cwe_ids": ["CWE-1188"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348017+00:00", "triaged_in_corpus": 12, "observations_count": 633513, "ai_coder_pattern_id": 2}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|9f490f319b1c4d599df8462bea952b94d5deb8e267e5973f634ba121af49752a", "aggregated_count": 18}}}, {"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": 155568, "scanner": "repobility-threat-engine", "fingerprint": "3d9ad2aa026b4ff269fe907b9b9d8fea3a94b517311a0476c7eb57191fa0d948", "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|3d9ad2aa026b4ff269fe907b9b9d8fea3a94b517311a0476c7eb57191fa0d948"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/ir_actions_report.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "MINED050", "level": "none", "message": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "properties": {"repobilityId": 155567, "scanner": "repobility-threat-engine", "fingerprint": "172cc31b8881e6943d7f2a9dd8f931e70b5ff65fe1529a4105229b37293fd60a", "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|172cc31b8881e6943d7f2a9dd8f931e70b5ff65fe1529a4105229b37293fd60a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/account_analytic_plan.py"}, "region": {"startLine": 55}}}]}, {"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": 155566, "scanner": "repobility-threat-engine", "fingerprint": "5c9d4fc30a77d8aff604c9ff771334eee1e19c7fe57a1496cde1d3b98991e9da", "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|5c9d4fc30a77d8aff604c9ff771334eee1e19c7fe57a1496cde1d3b98991e9da"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/account_analytic_distribution_model.py"}, "region": {"startLine": 68}}}]}, {"ruleId": "MINED001", "level": "none", "message": {"text": "[MINED001] Bare Except Pass (and 8 more): Same pattern found in 8 additional files. Review if needed."}, "properties": {"repobilityId": 155565, "scanner": "repobility-threat-engine", "fingerprint": "1dde69328f4e1e63a3b4133ede4884828afe4ac50599ac6b7fdbedad8e8b0855", "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": "bare-except-pass", "owasp": null, "cwe_ids": ["CWE-755"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347744+00:00", "triaged_in_corpus": 15, "observations_count": 1550824, "ai_coder_pattern_id": 6}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|1dde69328f4e1e63a3b4133ede4884828afe4ac50599ac6b7fdbedad8e8b0855", "aggregated_count": 8}}}, {"ruleId": "SEC128", "level": "none", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 82 more): Same pattern found in 82 additional files. Review if needed."}, "properties": {"repobilityId": 155561, "scanner": "repobility-threat-engine", "fingerprint": "28878f3fdbf4b8017f87f98d0c864e0301c16082a6a5c5b0aeed66eb706498e2", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 82 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 82 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|28878f3fdbf4b8017f87f98d0c864e0301c16082a6a5c5b0aeed66eb706498e2"}}}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 238 more): Same pattern found in 238 additional files. Review if needed."}, "properties": {"repobilityId": 155557, "scanner": "repobility-threat-engine", "fingerprint": "8dadcce403c101fe16095cca96fe2a993da3562ea186c82800b92e7be4e89312", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 238 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "download_invoice_documents_filetype", "breakdown": {"if": 4, "for": 1, "elif": 1, "nested_bonus": 4}, "aggregated": true, "complexity": 10, "correlation_key": "fp|8dadcce403c101fe16095cca96fe2a993da3562ea186c82800b92e7be4e89312", "aggregated_count": 238}}}, {"ruleId": "SEC047", "level": "none", "message": {"text": "[SEC047] Unbounded ORM search([]) in a request handler (and 12 more): Same pattern found in 12 additional files. Review if needed."}, "properties": {"repobilityId": 155553, "scanner": "repobility-threat-engine", "fingerprint": "63675fa409ec99b8393e4974860b4b2f86c825d093ad03253c89f7ae15cd91af", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 12 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 12 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC047", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|63675fa409ec99b8393e4974860b4b2f86c825d093ad03253c89f7ae15cd91af"}}}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_ir_sequence_date_range_3_unlink: Test function `test_ir_sequence_date_range_3_unlink` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155731, "scanner": "repobility-ast-engine", "fingerprint": "d88ec3610b0156e0b552a06790e06d7f488bdd8c1ede8aa1826ec347de3cec05", "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|d88ec3610b0156e0b552a06790e06d7f488bdd8c1ede8aa1826ec347de3cec05"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_sequence_date_range.py"}, "region": {"startLine": 87}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_ir_sequence_date_range_3_unlink: Test function `test_ir_sequence_date_range_3_unlink` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155730, "scanner": "repobility-ast-engine", "fingerprint": "07a8bdc40b8cd9d71ee6b1ef2e4fd7be41a504b6bb1e0260249e21d1db956eb0", "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|07a8bdc40b8cd9d71ee6b1ef2e4fd7be41a504b6bb1e0260249e21d1db956eb0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_sequence_date_range.py"}, "region": {"startLine": 46}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_memory_profiler: Test function `test_memory_profiler` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155729, "scanner": "repobility-ast-engine", "fingerprint": "0c3ec589d4f2dc422d55a93ddff99a1f745c895707f8f58b2be2411264e6e177", "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|0c3ec589d4f2dc422d55a93ddff99a1f745c895707f8f58b2be2411264e6e177"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_profiler.py"}, "region": {"startLine": 711}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_convert_empty: Test function `test_convert_empty` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155728, "scanner": "repobility-ast-engine", "fingerprint": "7389841ec9aeb14a600170b09a818b4c4e9ade316daf982518120611287462fb", "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|7389841ec9aeb14a600170b09a818b4c4e9ade316daf982518120611287462fb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_profiler.py"}, "region": {"startLine": 86}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_computed_fields_without_dependencies: Test function `test_computed_fields_without_dependencies` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155727, "scanner": "repobility-ast-engine", "fingerprint": "5d8a1857adc985a9c871cb0272bd5fc5de8e43d73e13aa101e631023f861509f", "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|5d8a1857adc985a9c871cb0272bd5fc5de8e43d73e13aa101e631023f861509f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_display_name.py"}, "region": {"startLine": 84}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_form_new_record: Test function `test_form_new_record` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155726, "scanner": "repobility-ast-engine", "fingerprint": "3c54ef7e02082af5e01b6774887efd1e909a80aa053fef340bfa4cdf001d57b4", "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|3c54ef7e02082af5e01b6774887efd1e909a80aa053fef340bfa4cdf001d57b4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_display_name.py"}, "region": {"startLine": 53}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_display_name_new_record: Test function `test_display_name_new_record` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155725, "scanner": "repobility-ast-engine", "fingerprint": "c9a7b2c469eef3df29736dc8543d5023e74988b28542e9be007dfcf165d8d2be", "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|c9a7b2c469eef3df29736dc8543d5023e74988b28542e9be007dfcf165d8d2be"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_display_name.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_10_init_update_incompatible_with_multidb: Test function `test_10_init_update_incompatible_with_multidb` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155724, "scanner": "repobility-ast-engine", "fingerprint": "eff966827b28775fe185d3a42b94698ec9d7a47179c54e050f3fcdf765dbd60d", "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|eff966827b28775fe185d3a42b94698ec9d7a47179c54e050f3fcdf765dbd60d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_configmanager.py"}, "region": {"startLine": 731}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_06_syslog_logfile_exclusive_cli: Test function `test_06_syslog_logfile_exclusive_cli` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155723, "scanner": "repobility-ast-engine", "fingerprint": "fd95c806cf3267c94a1f1c2651e03a23d161a8c5d41266cc1d69aab38c6e77fe", "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|fd95c806cf3267c94a1f1c2651e03a23d161a8c5d41266cc1d69aab38c6e77fe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_configmanager.py"}, "region": {"startLine": 725}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_07_environ: Test function `test_07_environ` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155722, "scanner": "repobility-ast-engine", "fingerprint": "c1995784860b6bb412f542e2dbd562fdd374105096884a5f681e760790d7ce92", "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|c1995784860b6bb412f542e2dbd562fdd374105096884a5f681e760790d7ce92"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_configmanager.py"}, "region": {"startLine": 598}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_01_default_config: Test function `test_01_default_config` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155721, "scanner": "repobility-ast-engine", "fingerprint": "38c4bb82c9ea83f978210054c87034e6d217d5717a03d2ba717a44c8763a69b6", "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|38c4bb82c9ea83f978210054c87034e6d217d5717a03d2ba717a44c8763a69b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_configmanager.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_rename_without_view: Test function `test_rename_without_view` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155720, "scanner": "repobility-ast-engine", "fingerprint": "440dfefe5f4934f4a95888d618432e137d7721619307909be4b16d1d82347591", "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|440dfefe5f4934f4a95888d618432e137d7721619307909be4b16d1d82347591"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_actions.py"}, "region": {"startLine": 702}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_remove_without_view: Test function `test_remove_without_view` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155719, "scanner": "repobility-ast-engine", "fingerprint": "5e0ef236062de8d83d4136bfaeb9dcafb7456c5e5ee847e7fe9a29213fa4b6f6", "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|5e0ef236062de8d83d4136bfaeb9dcafb7456c5e5ee847e7fe9a29213fa4b6f6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_actions.py"}, "region": {"startLine": 697}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_55_access_error_message: Test function `test_55_access_error_message` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155718, "scanner": "repobility-ast-engine", "fingerprint": "a61492678777167127de8f2a47186759410b0994d59e822e88d8a72cf4bb91ab", "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|a61492678777167127de8f2a47186759410b0994d59e822e88d8a72cf4bb91ab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_actions.py"}, "region": {"startLine": 513}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_default: Test function `test_default` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155717, "scanner": "repobility-ast-engine", "fingerprint": "66217f525129555e3369c08935ee02330a2e854bf11d9a134e35f1a3f53a818e", "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|66217f525129555e3369c08935ee02330a2e854bf11d9a134e35f1a3f53a818e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_orm.py"}, "region": {"startLine": 278}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_write_duplicate: Test function `test_write_duplicate` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155716, "scanner": "repobility-ast-engine", "fingerprint": "df7d356ab093ed95aa5db0e1d484071840bbc267e0facad68e8ba26686947e03", "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|df7d356ab093ed95aa5db0e1d484071840bbc267e0facad68e8ba26686947e03"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_orm.py"}, "region": {"startLine": 208}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_read: Test function `test_read` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155715, "scanner": "repobility-ast-engine", "fingerprint": "128681cf372d97bd2722b4627c1e10cd1cf94d26918af8691f2add1aa5f74c2a", "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|128681cf372d97bd2722b4627c1e10cd1cf94d26918af8691f2add1aa5f74c2a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_orm.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_eml_message_serialization_with_non_ascii: Test function `test_eml_message_serialization_with_non_ascii` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155714, "scanner": "repobility-ast-engine", "fingerprint": "dc8445ca04e1a83e794de3473a65374036cc04b389438f55077d11080c31b68c", "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|dc8445ca04e1a83e794de3473a65374036cc04b389438f55077d11080c31b68c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_mail_server.py"}, "region": {"startLine": 512}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_mail_server_config_cli: Test function `test_mail_server_config_cli` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155713, "scanner": "repobility-ast-engine", "fingerprint": "423ce494dcda3418f447f90344a99e517d3859cefab1e9b9ab5e65dd4e05ce5a", "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|423ce494dcda3418f447f90344a99e517d3859cefab1e9b9ab5e65dd4e05ce5a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/tests/test_ir_mail_server.py"}, "region": {"startLine": 436}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_standalone: Test function `test_standalone` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155712, "scanner": "repobility-ast-engine", "fingerprint": "35323860e2da83d32ce620bc997c84882be8ea2ad9314a39b6cbdb92bd0c7f68", "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|35323860e2da83d32ce620bc997c84882be8ea2ad9314a39b6cbdb92bd0c7f68"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tests/test_module_operations.py"}, "region": {"startLine": 178}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_uninstall: Test function `test_uninstall` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155711, "scanner": "repobility-ast-engine", "fingerprint": "055f014bf00ea6121e3b0dea5534aa684244635873c2f7325b7b1c0b6cd6d65c", "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|055f014bf00ea6121e3b0dea5534aa684244635873c2f7325b7b1c0b6cd6d65c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tests/test_module_operations.py"}, "region": {"startLine": 160}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_cycle: Test function `test_cycle` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155710, "scanner": "repobility-ast-engine", "fingerprint": "aadcedfc0d5a952464ae062c792a625d8f2b1fb0e7117fd5d81c759ca7be3cab", "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|aadcedfc0d5a952464ae062c792a625d8f2b1fb0e7117fd5d81c759ca7be3cab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tests/test_module_operations.py"}, "region": {"startLine": 126}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_xsd: Test function `test_xsd` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155708, "scanner": "repobility-ast-engine", "fingerprint": "038939737969957824d3fe8258cb813de2fa549bc2e55cf0bec389bc3cc117a9", "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|038939737969957824d3fe8258cb813de2fa549bc2e55cf0bec389bc3cc117a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tests/common.py"}, "region": {"startLine": 185}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_python_expr: Test function `test_python_expr` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155694, "scanner": "repobility-ast-engine", "fingerprint": "629594e56e1ec34d21d38862265c5a9d80800ba16145c7f7a6618e1d19487351", "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|629594e56e1ec34d21d38862265c5a9d80800ba16145c7f7a6618e1d19487351"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/safe_eval.py"}, "region": {"startLine": 422}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.postrollback` used but never assigned in __init__: Method `commit` of class `Cursor` reads `self.postrollback`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155685, "scanner": "repobility-ast-engine", "fingerprint": "dabfe401b708f77781ed32062b071aa4f5de69a3b1c2c621cd625cda6a65ee06", "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|dabfe401b708f77781ed32062b071aa4f5de69a3b1c2c621cd625cda6a65ee06"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 567}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.prerollback` used but never assigned in __init__: Method `commit` of class `Cursor` reads `self.prerollback`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155684, "scanner": "repobility-ast-engine", "fingerprint": "d1de0706670da2c33f268d1adad8d3af7e7e8fc65dc9f75bb63e31b62483c9cf", "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|d1de0706670da2c33f268d1adad8d3af7e7e8fc65dc9f75bb63e31b62483c9cf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 566}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._now` used but never assigned in __init__: Method `commit` of class `Cursor` reads `self._now`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155683, "scanner": "repobility-ast-engine", "fingerprint": "1fa6906ebc0ab75824d7351ee8b1e8c8ad41d6feb739f51a7bf221ff308c3485", "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|1fa6906ebc0ab75824d7351ee8b1e8c8ad41d6feb739f51a7bf221ff308c3485"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 565}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.cache` used but never assigned in __init__: Method `_close` of class `Cursor` reads `self.cache`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155682, "scanner": "repobility-ast-engine", "fingerprint": "ad5ed53e873b85465d6f9902f0666e7ffa43c18148a75a4542bfa8cb82630f8a", "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|ad5ed53e873b85465d6f9902f0666e7ffa43c18148a75a4542bfa8cb82630f8a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 534}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.connection` used but never assigned in __init__: Method `_format` of class `Cursor` reads `self.connection`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155681, "scanner": "repobility-ast-engine", "fingerprint": "fb73fa41776d50cde5e780cee052cddd338afe4685ad1e849b23a0f0a8270ebd", "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|fb73fa41776d50cde5e780cee052cddd338afe4685ad1e849b23a0f0a8270ebd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 411}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._cr` used but never assigned in __init__: Method `_close` of class `_FlushingSavepoint` reads `self._cr`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155680, "scanner": "repobility-ast-engine", "fingerprint": "d689b03b2b38cf2ae57be432ad3014e470bc6b75e3d9c8d9a3d1e5019fd41e3f", "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|d689b03b2b38cf2ae57be432ad3014e470bc6b75e3d9c8d9a3d1e5019fd41e3f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._cr` used but never assigned in __init__: Method `_close` of class `_FlushingSavepoint` reads `self._cr`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155679, "scanner": "repobility-ast-engine", "fingerprint": "448429819b3964526f4b9181841de7e96146325c36d4ac16ef75da085105324d", "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|448429819b3964526f4b9181841de7e96146325c36d4ac16ef75da085105324d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 143}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._cr` used but never assigned in __init__: Method `rollback` of class `_FlushingSavepoint` reads `self._cr`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155678, "scanner": "repobility-ast-engine", "fingerprint": "1166af96fbab3f446bd6acbb6e84e669bfd9b24046b2f3963c81d68b520574b6", "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|1166af96fbab3f446bd6acbb6e84e669bfd9b24046b2f3963c81d68b520574b6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 139}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._cr` used but never assigned in __init__: Method `rollback` of class `_FlushingSavepoint` reads `self._cr`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155677, "scanner": "repobility-ast-engine", "fingerprint": "e0aa3c708f818143e8bd40dff166b512f1fe07d759d2b3289f78bd55b325f546", "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|e0aa3c708f818143e8bd40dff166b512f1fe07d759d2b3289f78bd55b325f546"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py"}, "region": {"startLine": 138}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build_image` of class `DockerIot` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155676, "scanner": "repobility-ast-engine", "fingerprint": "1a0c0185b40866dc7779323b1d33bb79a133da823346a34a7a061743e9152765", "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|1a0c0185b40866dc7779323b1d33bb79a133da823346a34a7a061743e9152765"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 431}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.docker_dir` used but never assigned in __init__: Method `build_image` of class `DockerIot` reads `self.docker_dir`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155675, "scanner": "repobility-ast-engine", "fingerprint": "12c453c1bd0667d5b29feb91bcaf125445fb9dfa2419e1ff13e5860d0a4fe8f9", "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|12c453c1bd0667d5b29feb91bcaf125445fb9dfa2419e1ff13e5860d0a4fe8f9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 431}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.tag` used but never assigned in __init__: Method `build_image` of class `DockerIot` reads `self.tag`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155674, "scanner": "repobility-ast-engine", "fingerprint": "00322039a8ddecab95f603bab1e76713381315362910ccb9d49ecd2aa0cfb46a", "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|00322039a8ddecab95f603bab1e76713381315362910ccb9d49ecd2aa0cfb46a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 432}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerWine` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155673, "scanner": "repobility-ast-engine", "fingerprint": "9eaf52a4bf100c8ac934d260d7c4c4821734dae33014603f2a83ec70466dc500", "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|9eaf52a4bf100c8ac934d260d7c4c4821734dae33014603f2a83ec70466dc500"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 417}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `start_test` of class `DockerRpm` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155672, "scanner": "repobility-ast-engine", "fingerprint": "a652756c07c74c68542c2ecb695962cbffbe8d6fb92fd445492c0f20fd890565", "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|a652756c07c74c68542c2ecb695962cbffbe8d6fb92fd445492c0f20fd890565"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 362}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerRpm` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155671, "scanner": "repobility-ast-engine", "fingerprint": "a8fc2842ac6c864520a2fa50842ae8cb97061b07e4cc2a55374d0d6a114cdfc6", "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|a8fc2842ac6c864520a2fa50842ae8cb97061b07e4cc2a55374d0d6a114cdfc6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 358}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerRpm` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155670, "scanner": "repobility-ast-engine", "fingerprint": "1757ab6c901bcb5886852327428ac49af1cfc8d4e293ff953ef4f8c38ba78fa5", "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|1757ab6c901bcb5886852327428ac49af1cfc8d4e293ff953ef4f8c38ba78fa5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 357}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `start_test` of class `DockerDeb` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155669, "scanner": "repobility-ast-engine", "fingerprint": "3a2e2c812dd4a9471d025815df5e6d43a7de1bd81fc90b11441f45e8a7d61a71", "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|3a2e2c812dd4a9471d025815df5e6d43a7de1bd81fc90b11441f45e8a7d61a71"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 334}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `start_test` of class `DockerDeb` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155668, "scanner": "repobility-ast-engine", "fingerprint": "861cfad241562da9f62277ec0b9ec0187372e42ed5ccb7e9d5f78f58885d3707", "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|861cfad241562da9f62277ec0b9ec0187372e42ed5ccb7e9d5f78f58885d3707"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 325}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerDeb` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155667, "scanner": "repobility-ast-engine", "fingerprint": "b3ee86e6b7f5ccd8180b3d33e37c831651123775f5b1c91a9e4f5eddd8a542aa", "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|b3ee86e6b7f5ccd8180b3d33e37c831651123775f5b1c91a9e4f5eddd8a542aa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 321}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `start_test` of class `DockerTgz` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155666, "scanner": "repobility-ast-engine", "fingerprint": "a9f43412b25ebac6fff10683736d70e7ce875c9fc82e5119aff18aaac8555f38", "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|a9f43412b25ebac6fff10683736d70e7ce875c9fc82e5119aff18aaac8555f38"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 304}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `start_test` of class `DockerTgz` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155665, "scanner": "repobility-ast-engine", "fingerprint": "cc1c856efdcbdcc83580b93aa7c5f31d23a8420d4f074b2dc58284a28099620c", "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|cc1c856efdcbdcc83580b93aa7c5f31d23a8420d4f074b2dc58284a28099620c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 290}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerTgz` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155664, "scanner": "repobility-ast-engine", "fingerprint": "b45323fba80eeee78b1e697ac533cd9400fd1ed1a864b2a973c44383494abad1", "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|b45323fba80eeee78b1e697ac533cd9400fd1ed1a864b2a973c44383494abad1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 286}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerTgz` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155663, "scanner": "repobility-ast-engine", "fingerprint": "d4ce20dfbfee752f0c0c7d0eef8980a5d83e567c5ee7d45e5fe4044b8cdda155", "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|d4ce20dfbfee752f0c0c7d0eef8980a5d83e567c5ee7d45e5fe4044b8cdda155"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.args` used but never assigned in __init__: Method `build` of class `DockerTgz` reads `self.args`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155662, "scanner": "repobility-ast-engine", "fingerprint": "066f93846f99964e128d19b6719d5004474db15844f23909d01fbebf8c8f1fcb", "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|066f93846f99964e128d19b6719d5004474db15844f23909d01fbebf8c8f1fcb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 284}}}]}, {"ruleId": "MINED106", "level": "error", "message": {"text": "[MINED106] Phantom test coverage: test_odoo: Test function `test_odoo` runs code but contains no assert / expect / should call \u2014 it passes regardless of behaviour. Adds line coverage without verifying anything."}, "properties": {"repobilityId": 155661, "scanner": "repobility-ast-engine", "fingerprint": "961080ecf8fe32e0ca7772c6ba83cf3af17ed18083f64c14e2bda29b57a3f3d4", "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|961080ecf8fe32e0ca7772c6ba83cf3af17ed18083f64c14e2bda29b57a3f3d4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 252}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._release` used but never assigned in __init__: Method `get_version` of class `Debian` reads `self._release`, but no assignment to it exists in __init__ (and no class-level fallback). This raises AttributeError the first time the method runs against an instance."}, "properties": {"repobilityId": 155660, "scanner": "repobility-ast-engine", "fingerprint": "d342b530fb8a8a9fa66b32a7e56d75151e925b47e0249cffb77b1ee881a9923b", "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|d342b530fb8a8a9fa66b32a7e56d75151e925b47e0249cffb77b1ee881a9923b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/requirements-check.py"}, "region": {"startLine": 230}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 155655, "scanner": "repobility-threat-engine", "fingerprint": "08b546b4ac990465e30d3f395d7b87c42334b6be8fd1a5077b0296d69eca0d18", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map((attr) => `[${attr}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|08b546b4ac990465e30d3f395d7b87c42334b6be8fd1a5077b0296d69eca0d18"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/qweb_plugin.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 155654, "scanner": "repobility-threat-engine", "fingerprint": "36986d4f9ac7328d59f4cb910d6d117d20ceca6ef2a1463f17caae5d0a68f16c", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map((heading) => `[data-embedded] ${heading}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|36986d4f9ac7328d59f4cb910d6d117d20ceca6ef2a1463f17caae5d0a68f16c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/embedded_components/core/table_of_content/table_of_content_manager.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "SEC040", "level": "error", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data: Setting .innerHTML with a template literal that interpolates server-supplied or user-supplied data is the canonical stored/reflected XSS vector. The browser parses the HTML and executes any <script> or event-handler attributes in the data. CWE-79. Especially dangerous when the data comes from a CV parser, profile field, or any user-input pipeline."}, "properties": {"repobilityId": 155653, "scanner": "repobility-threat-engine", "fingerprint": "11561388c4a97fe9c3df8d208ab7ee2af1066050ba1338aac7ad94bd348b486b", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map((color) => `${color.hex} ${color.percentage}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|11561388c4a97fe9c3df8d208ab7ee2af1066050ba1338aac7ad94bd348b486b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/font/gradient_picker/gradient_picker.js"}, "region": {"startLine": 199}}}]}, {"ruleId": "MINED027", "level": "error", "message": {"text": "[MINED027] React State Array Mutation: state.X.push/splice/sort followed by setState \u2014 React skips re-render on mutated reference."}, "properties": {"repobilityId": 155652, "scanner": "repobility-threat-engine", "fingerprint": "6fd0df565ebb8a1fe19b723d4ae34f7e15208810314a35536cf99516c96c042c", "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": "react-state-array-mutation", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347961+00:00", "triaged_in_corpus": 15, "observations_count": 14444, "ai_coder_pattern_id": 136}, "scanner": "repobility-threat-engine", "correlation_key": "fp|6fd0df565ebb8a1fe19b723d4ae34f7e15208810314a35536cf99516c96c042c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/chatgpt/chatgpt_translate_dialog.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "SEC103", "level": "error", "message": {"text": "[SEC103] LDAP injection \u2014 non-constant search filter: User input concatenated into an LDAP search filter. Attackers inject `*)(uid=*` style payloads to bypass auth or enumerate accounts."}, "properties": {"repobilityId": 155646, "scanner": "repobility-threat-engine", "fingerprint": "139ca846a04dd66e4a676c4e2ace6a24f6b4dc88b20dcf99e0e004d39216f7ac", "category": "injection", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".search(r'(\\w+_R\\d+(?:T\\d+)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC103", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|199|sec103"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/google_calendar/utils/google_event.py"}, "region": {"startLine": 199}}}]}, {"ruleId": "SEC004", "level": "error", "message": {"text": "[SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection."}, "properties": {"repobilityId": 155643, "scanner": "repobility-threat-engine", "fingerprint": "15d6ae916216fd408e841b7b856e5c0f7d2a3a5f90783e20010b7440354d0ca0", "category": "injection", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".execute(\n            f'UPDATE", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC004", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|89|sec004"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/event_product/models/event_type_ticket.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "SEC004", "level": "error", "message": {"text": "[SEC004] SQL Injection Risk: String interpolation in SQL execution. Allows SQL injection."}, "properties": {"repobilityId": 155642, "scanner": "repobility-threat-engine", "fingerprint": "4770369ed426f328b49a7b8e17ea73a78262520bea25b3476e9493ff0ee2504b", "category": "injection", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".execute(\n            f'UPDATE", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC004", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|122|sec004"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/event_booth_sale/models/event_booth_category.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "SEC013", "level": "error", "message": {"text": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files."}, "properties": {"repobilityId": 155641, "scanner": "repobility-threat-engine", "fingerprint": "6743c62bf4b4bac313fe23c28839c72d6a4fe8f369d37d9ad19e0c1a11ebb9d8", "category": "path_traversal", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "User-controlled input detected in file path construction", "evidence": {"match": "open(params", "reason": "User-controlled input detected in file path construction", "rule_id": "SEC013", "scanner": "repobility-threat-engine", "confidence": 0.8, "correlation_key": "code|path_traversal|token|24|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/dynamic_placeholder_plugin.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "SEC013", "level": "error", "message": {"text": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files."}, "properties": {"repobilityId": 155640, "scanner": "repobility-threat-engine", "fingerprint": "1850ca5b759c0a4368901fe9e9072eb6de998547025a01f52342c48b6cd25669", "category": "path_traversal", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "User-controlled input detected in file path construction", "evidence": {"match": "open(this.input", "reason": "User-controlled input detected in file path construction", "rule_id": "SEC013", "scanner": "repobility-threat-engine", "confidence": 0.8, "correlation_key": "code|path_traversal|token|45|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/building_blocks/builder_urlpicker.js"}, "region": {"startLine": 45}}}]}, {"ruleId": "SEC013", "level": "error", "message": {"text": "[SEC013] Path Traversal \u2014 User Input in File Path: User-controlled input used in file path without sanitization. Allows reading arbitrary files."}, "properties": {"repobilityId": 155639, "scanner": "repobility-threat-engine", "fingerprint": "25c97bbe6307df2d373d8720f0cb0cabd99873a1dc309aac5ff112a22dce223f", "category": "path_traversal", "severity": "high", "confidence": 0.8, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "User-controlled input detected in file path construction", "evidence": {"match": "open(owner.root.el.query", "reason": "User-controlled input detected in file path construction", "rule_id": "SEC013", "scanner": "repobility-threat-engine", "confidence": 0.8, "correlation_key": "code|path_traversal|token|35|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/crm_livechat/static/src/core/thread_actions.js"}, "region": {"startLine": 35}}}]}, {"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": 155636, "scanner": "repobility-threat-engine", "fingerprint": "b8e50d25168d0c504401dc716454ad03bb4178c8579f0e79125abc3408f6ef48", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.put(upload_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b8e50d25168d0c504401dc716454ad03bb4178c8579f0e79125abc3408f6ef48"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/cloud_storage_google/models/res_config_settings.py"}, "region": {"startLine": 68}}}]}, {"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": 155635, "scanner": "repobility-threat-engine", "fingerprint": "ae5194cf5828b416dd7b3d4a0cdeabd8d6818d6dc6a05204a4776ebab4ff7a1d", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.post(azure_token_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ae5194cf5828b416dd7b3d4a0cdeabd8d6818d6dc6a05204a4776ebab4ff7a1d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/cloud_storage_azure/utils/cleanup_cloud_storage_azure.py"}, "region": {"startLine": 55}}}]}, {"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": 155634, "scanner": "repobility-threat-engine", "fingerprint": "7bf909363e7cc447e8944d9f4f4bf8180c989b134aa765d8cf9e14b7151ed776", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.put(upload_url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|7bf909363e7cc447e8944d9f4f4bf8180c989b134aa765d8cf9e14b7151ed776"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/cloud_storage_azure/models/res_config_settings.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "SEC085", "level": "error", "message": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "properties": {"repobilityId": 155632, "scanner": "repobility-threat-engine", "fingerprint": "713ecdd31aff37d22aee0acf6dcd6296b4f670dc2e7f1272b25cdb485507a1f8", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(url", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|713ecdd31aff37d22aee0acf6dcd6296b4f670dc2e7f1272b25cdb485507a1f8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/youtube_plugin.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "SEC085", "level": "error", "message": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "properties": {"repobilityId": 155631, "scanner": "repobility-threat-engine", "fingerprint": "944706537d7b4e06a56a2bf201eb8ff91068ffa1276a22d41a6bce453895baa6", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(action", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|944706537d7b4e06a56a2bf201eb8ff91068ffa1276a22d41a6bce453895baa6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/operation.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "SEC085", "level": "error", "message": {"text": "[SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived input enables command injection. Ported from eslint-plugin-security detect-child-process (Apache-2.0)."}, "properties": {"repobilityId": 155630, "scanner": "repobility-threat-engine", "fingerprint": "e2c27aa35edc05cf15100370e0a7b8f6dd3806c3928e5f59127dff9ee6291fed", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(async", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|e2c27aa35edc05cf15100370e0a7b8f6dd3806c3928e5f59127dff9ee6291fed"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_import/static/src/binary_file_manager.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "SEC083", "level": "error", "message": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "properties": {"repobilityId": 155626, "scanner": "repobility-threat-engine", "fingerprint": "fd6ea77333379984e2f7fa30b52825c123a56f1ca18d3f4594fc97c2fc9921e0", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(session", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|fd6ea77333379984e2f7fa30b52825c123a56f1ca18d3f4594fc97c2fc9921e0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/barcodes_gs1_nomenclature/static/src/js/barcode_service.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "SEC083", "level": "error", "message": {"text": "[SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) \u2014 variable input can craft a ReDoS pattern. Ported from eslint-plugin-security detect-non-literal-regexp (Apache-2.0)."}, "properties": {"repobilityId": 155625, "scanner": "repobility-threat-engine", "fingerprint": "6a9155f58e5ccfadae6f852cbffd4142e931dbb896ff311ec0b432ce7e4308dd", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new RegExp(nomenclatureSeparator", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6a9155f58e5ccfadae6f852cbffd4142e931dbb896ff311ec0b432ce7e4308dd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/barcodes_gs1_nomenclature/static/src/js/barcode_parser.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "SEC027", "level": "error", "message": {"text": "[SEC027] XML External Entity (XXE) \u2014 Node.js xml parsers: Node.js XML parsers can expand external entities if not configured. libxmljs in particular has had XXE CVEs."}, "properties": {"repobilityId": 155622, "scanner": "repobility-threat-engine", "fingerprint": "505a7d33e8a0279d179d0bb2314454085a0cac4fef2d8b54b5b186880009a138", "category": "xxe", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new DOMParser()", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC027", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|505a7d33e8a0279d179d0bb2314454085a0cac4fef2d8b54b5b186880009a138"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/many2one_option_plugin.js"}, "region": {"startLine": 71}}}]}, {"ruleId": "SEC027", "level": "error", "message": {"text": "[SEC027] XML External Entity (XXE) \u2014 Node.js xml parsers: Node.js XML parsers can expand external entities if not configured. libxmljs in particular has had XXE CVEs."}, "properties": {"repobilityId": 155621, "scanner": "repobility-threat-engine", "fingerprint": "fb9a02b9d2d2c848d05ab8aeed5fd71e041f2b132a6adfaec7fd9c3644bff4b8", "category": "xxe", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new DOMParser()", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC027", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|fb9a02b9d2d2c848d05ab8aeed5fd71e041f2b132a6adfaec7fd9c3644bff4b8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/image_shapes/convert-to-percentages.js"}, "region": {"startLine": 52}}}]}, {"ruleId": "SEC027", "level": "error", "message": {"text": "[SEC027] XML External Entity (XXE) \u2014 Node.js xml parsers: Node.js XML parsers can expand external entities if not configured. libxmljs in particular has had XXE CVEs."}, "properties": {"repobilityId": 155620, "scanner": "repobility-threat-engine", "fingerprint": "f4de430281b1892547e3c64576d038b4f76842a8ed9ee29684d3d054d2b4a2c5", "category": "xxe", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new DOMParser()", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC027", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f4de430281b1892547e3c64576d038b4f76842a8ed9ee29684d3d054d2b4a2c5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_totp_portal/static/src/interactions/totp_enable.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "SEC043", "level": "error", "message": {"text": "[SEC043] Secret stored in Odoo ir.config_parameter \u2014 broadly readable: ir.config_parameter is readable by any user with read access on the model \u2014 typically all internal users. Storing API keys, OAuth client secrets, or passwords there means any admin-account compromise, or any third-party module with broad read scope, exposes the credential. Odoo-specific instance of CWE-922 (insecure storage of sensitive info)."}, "properties": {"repobilityId": 155618, "scanner": "repobility-threat-engine", "fingerprint": "51d869a873a5626587f01cb6d7a82c984e540b0ccaadaf00770686e164c48847", "category": "secret", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found Collapsed 2 duplicate scanner signal(s) for the same underlying issue.", "evidence": {"match": "get_param('auth_password", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC043", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "secret|token|1|get_param auth_password", "duplicate_count": 2, "duplicate_rule_ids": ["SEC043"], "duplicate_scanners": ["repobility-threat-engine"], "duplicate_fingerprints": ["51d869a873a5626587f01cb6d7a82c984e540b0ccaadaf00770686e164c48847", "6f3359eb34a0919b6c110b79d29685e588396aabbe0fcf1239e2535102d8d57c", "7ba5559b9a8dada1f171070b43798d370850f7bad4bc7544ea4ccff2e1a68ba9"]}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_password_policy/models/res_users.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "MINED004", "level": "error", "message": {"text": "[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums)."}, "properties": {"repobilityId": 155611, "scanner": "repobility-threat-engine", "fingerprint": "cd70fca49083af80c5d0a7cb0e5420c259a387a56624bf9ba61ad96fb9b49934", "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": "weak-crypto", "owasp": "A02:2021", "cwe_ids": ["CWE-327"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347906+00:00", "triaged_in_corpus": 15, "observations_count": 303181, "ai_coder_pattern_id": 13}, "scanner": "repobility-threat-engine", "correlation_key": "fp|cd70fca49083af80c5d0a7cb0e5420c259a387a56624bf9ba61ad96fb9b49934"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_totp/models/totp.py"}, "region": {"startLine": 15}}}]}, {"ruleId": "MINED004", "level": "error", "message": {"text": "[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums)."}, "properties": {"repobilityId": 155610, "scanner": "repobility-threat-engine", "fingerprint": "42095d78153021987eed4be92f8f9fec868f9533563bb1ce98bb313b53769368", "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": "weak-crypto", "owasp": "A02:2021", "cwe_ids": ["CWE-327"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347906+00:00", "triaged_in_corpus": 15, "observations_count": 303181, "ai_coder_pattern_id": 13}, "scanner": "repobility-threat-engine", "correlation_key": "fp|42095d78153021987eed4be92f8f9fec868f9533563bb1ce98bb313b53769368"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/helpers/hash_by_alg.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "MINED004", "level": "error", "message": {"text": "[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums)."}, "properties": {"repobilityId": 155609, "scanner": "repobility-threat-engine", "fingerprint": "8f41de93903e94b73f3a5166e1ac1931bf41a6347c7777283189393e71ad476b", "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": "weak-crypto", "owasp": "A02:2021", "cwe_ids": ["CWE-327"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347906+00:00", "triaged_in_corpus": 15, "observations_count": 303181, "ai_coder_pattern_id": 13}, "scanner": "repobility-threat-engine", "correlation_key": "fp|8f41de93903e94b73f3a5166e1ac1931bf41a6347c7777283189393e71ad476b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/helpers/algorithms.py"}, "region": {"startLine": 10}}}]}, {"ruleId": "SEC030", "level": "error", "message": {"text": "[SEC030] Open Redirect \u2014 user-controlled redirect target: Redirect target is taken directly from user input without validating that the destination is local to the site. Attackers craft phishing URLs that appear to come from your domain but land on attacker-controlled pages \u2014 common in OAuth callback flows, post-login redirects, and `next=` parameters. CWE-601."}, "properties": {"repobilityId": 155602, "scanner": "repobility-threat-engine", "fingerprint": "3faca22b672b39be55516f783269c0f947587fe95e5edbcdb921a20c875bd8cf", "category": "open_redirect", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "redirect(request.params.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC030", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|3faca22b672b39be55516f783269c0f947587fe95e5edbcdb921a20c875bd8cf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_signup/controllers/main.py"}, "region": {"startLine": 33}}}]}, {"ruleId": "SEC030", "level": "error", "message": {"text": "[SEC030] Open Redirect \u2014 user-controlled redirect target: Redirect target is taken directly from user input without validating that the destination is local to the site. Attackers craft phishing URLs that appear to come from your domain but land on attacker-controlled pages \u2014 common in OAuth callback flows, post-login redirects, and `next=` parameters. CWE-601."}, "properties": {"repobilityId": 155601, "scanner": "repobility-threat-engine", "fingerprint": "950cfba9197b82af39e20eaa67c7b8336223f70a06b5c440be331721603d334a", "category": "open_redirect", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "redirect(request.params.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC030", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|950cfba9197b82af39e20eaa67c7b8336223f70a06b5c440be331721603d334a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_oauth/controllers/main.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "SEC044", "level": "error", "message": {"text": "[SEC044] CSRF disabled on destructive HTTP endpoint: An auth='user' endpoint with csrf=False can be triggered cross-site by any logged-in user clicking a malicious page that POSTs to the endpoint. When the path is destructive (delete card, cancel subscription, remove account), this is an immediate CSRF attack primitive. CWE-352."}, "properties": {"repobilityId": 155591, "scanner": "repobility-threat-engine", "fingerprint": "9d6c26901fcec4dd15db0dab951ec309ab707f2c31b61310fdff079d076f10ea", "category": "csrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "@http.route(\n        '/peppol/webhook/new-message',\n        type='http',\n        auth='public',", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC044", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|9d6c26901fcec4dd15db0dab951ec309ab707f2c31b61310fdff079d076f10ea"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_peppol/controllers/webhooks.py"}, "region": {"startLine": 7}}}]}, {"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": 155588, "scanner": "repobility-threat-engine", "fingerprint": "94fb3c9e1116c5d1e8e92804208fa4f49e3d9af2dee41c45c1fb8f866b06a6ce", "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.warning(\"Trial captcha verification for ip address %s failed error codes %r. token was: [%s]\"", "reason": "Credential-bearing variable appears to be printed or logged", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.85, "correlation_key": "secret|token|11|logger.warning trial captcha verification for ip address s failed error codes r. token was: s"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/google_recaptcha/models/ir_http.py"}, "region": {"startLine": 111}}}]}, {"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": 155587, "scanner": "repobility-threat-engine", "fingerprint": "ba4a3f52cadc6934a46622b42526df41fb7f160a69aea4627ee931d30fd44a57", "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.warning(\"Invalid request token auth_type=%s connect_token=<redacted> auth_token=<redacted>\", auth_type, conne", "reason": "Credential-bearing variable appears to be printed or logged", "rule_id": "SEC020", "scanner": "repobility-threat-engine", "confidence": 0.85, "correlation_key": "secret|token|2|logger.warning invalid request token auth_type s connect_token redacted auth_token redacted auth_type conne"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_peppol/controllers/authentication.py"}, "region": {"startLine": 24}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 155581, "scanner": "repobility-threat-engine", "fingerprint": "2209c20a3c87e88f87938e4f8f0ce3fa9b99fa2f5c969fccac15b088e1024527", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.get(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|2209c20a3c87e88f87938e4f8f0ce3fa9b99fa2f5c969fccac15b088e1024527"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/base_geolocalize/models/base_geocoder.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 155580, "scanner": "repobility-threat-engine", "fingerprint": "f704f7d259c9633311718d45b7b693fcf10592292acc7203d77eeb951795e382", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.post(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f704f7d259c9633311718d45b7b693fcf10592292acc7203d77eeb951795e382"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/api_doc/static/src/utils/doc_code_gen.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "SEC078", "level": "error", "message": {"text": "[SEC078] Python: requests without timeout: requests.get/post without a timeout will hang indefinitely on a non-responsive server, causing thread exhaustion and ReDoS. Ported from bandit B113 (Apache-2.0). NOTE: this regex is heuristic; a real AST check is preferred for accuracy."}, "properties": {"repobilityId": 155579, "scanner": "repobility-threat-engine", "fingerprint": "d0b817d33a257b4a7ee84c1dbf068bb43e3faa40cb337af1714ce89b65399d31", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "requests.post(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC078", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d0b817d33a257b4a7ee84c1dbf068bb43e3faa40cb337af1714ce89b65399d31"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_edi_proxy_client/models/account_edi_proxy_user.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "MINED031", "level": "error", "message": {"text": "[MINED031] React Direct State Mutation: this.state.X = Y mutates without setState. React wont re-render."}, "properties": {"repobilityId": 155573, "scanner": "repobility-threat-engine", "fingerprint": "718d9dfd24e75083a956af61ac0dc174f6e6d0a5ce54dba472f8926675ff1434", "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": "react-direct-state-mutation", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347971+00:00", "triaged_in_corpus": 15, "observations_count": 6168, "ai_coder_pattern_id": 137}, "scanner": "repobility-threat-engine", "correlation_key": "fp|718d9dfd24e75083a956af61ac0dc174f6e6d0a5ce54dba472f8926675ff1434"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/static/src/components/tax_totals/tax_totals.js"}, "region": {"startLine": 70}}}]}, {"ruleId": "MINED031", "level": "error", "message": {"text": "[MINED031] React Direct State Mutation: this.state.X = Y mutates without setState. React wont re-render."}, "properties": {"repobilityId": 155572, "scanner": "repobility-threat-engine", "fingerprint": "9a9cec85c621cbea5b3b6eaa44a35c896f2f02f11dcd541ce6a405b104f9c431", "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": "react-direct-state-mutation", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347971+00:00", "triaged_in_corpus": 15, "observations_count": 6168, "ai_coder_pattern_id": 137}, "scanner": "repobility-threat-engine", "correlation_key": "fp|9a9cec85c621cbea5b3b6eaa44a35c896f2f02f11dcd541ce6a405b104f9c431"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/static/src/components/product_catalog/search/search_panel.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "MINED031", "level": "error", "message": {"text": "[MINED031] React Direct State Mutation: this.state.X = Y mutates without setState. React wont re-render."}, "properties": {"repobilityId": 155571, "scanner": "repobility-threat-engine", "fingerprint": "02a7fe47a9b72e36f01fc4a7500af20042cffac003b38bae1462301cf811d97f", "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": "react-direct-state-mutation", "owasp": null, "cwe_ids": ["CWE-682"], "languages": ["typescript", "tsx", "javascript", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347971+00:00", "triaged_in_corpus": 15, "observations_count": 6168, "ai_coder_pattern_id": 137}, "scanner": "repobility-threat-engine", "correlation_key": "fp|02a7fe47a9b72e36f01fc4a7500af20042cffac003b38bae1462301cf811d97f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/static/src/components/account_move_form/account_move_form.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "MINED009", "level": "error", "message": {"text": "[MINED009] Floats For Money: Variable named price/amount/cost typed as float instead of Decimal."}, "properties": {"repobilityId": 155570, "scanner": "repobility-threat-engine", "fingerprint": "d1b4ccdb89e666f85110c5852568d86362701973758b9ee3dad1b6369abe543d", "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": "floats-for-money", "owasp": null, "cwe_ids": ["CWE-682"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347918+00:00", "triaged_in_corpus": 15, "observations_count": 208571, "ai_coder_pattern_id": 20}, "scanner": "repobility-threat-engine", "correlation_key": "fp|d1b4ccdb89e666f85110c5852568d86362701973758b9ee3dad1b6369abe543d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/account_reconcile_model.py"}, "region": {"startLine": 71}}}]}, {"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": 155564, "scanner": "repobility-threat-engine", "fingerprint": "f7b395d6ccf85c321190517bbde6e332df07ee59318f61588564b8fee981f85f", "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|f7b395d6ccf85c321190517bbde6e332df07ee59318f61588564b8fee981f85f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/attachment_indexation/models/ir_attachment.py"}, "region": {"startLine": 81}}}]}, {"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": 155563, "scanner": "repobility-threat-engine", "fingerprint": "bae3e807a3afc6bfbffdd6d42f0d5cfcc61b8e524dce59417cab82b7d616b974", "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|bae3e807a3afc6bfbffdd6d42f0d5cfcc61b8e524dce59417cab82b7d616b974"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/account_analytic_plan.py"}, "region": {"startLine": 54}}}]}, {"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": 155562, "scanner": "repobility-threat-engine", "fingerprint": "7028c7a85e5941689d97413963e740265785de6f52821a392f240e4d4952f791", "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|7028c7a85e5941689d97413963e740265785de6f52821a392f240e4d4952f791"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/account_analytic_distribution_model.py"}, "region": {"startLine": 67}}}]}, {"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": 155560, "scanner": "repobility-threat-engine", "fingerprint": "30a11e679a7ccbd9c6f22b0a6e6231eaf0566c3cb58c3814032f2523d705679b", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "root.update({ amount: root.data.installments_switch_amount });", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|30a11e679a7ccbd9c6f22b0a6e6231eaf0566c3cb58c3814032f2523d705679b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/static/src/components/account_payment_register_html/account_payment_register_html.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "SEC128", "level": "error", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work completes \u2014 DB writes lost, emails not sent, race conditions. This is one of the top-3 errors AI coders make: they understand async-shape but drop the await keyword when chaining multiple ops. Surfaces as flaky tests or silently dropped data in production."}, "properties": {"repobilityId": 155559, "scanner": "repobility-threat-engine", "fingerprint": "6007f6fe60974ece389d0372dc06ab0abf1958625e1e1c20e349fbaaede27418", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "data.update({'display_name_in_footer': True})", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6007f6fe60974ece389d0372dc06ab0abf1958625e1e1c20e349fbaaede27418"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/models/ir_actions_report.py"}, "region": {"startLine": 70}}}]}, {"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": 155558, "scanner": "repobility-threat-engine", "fingerprint": "cdd3e6f4152d9c71b379061ffe6d2946f6bdfd71a3092c7971b63ef4af96542f", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "values.update({\n            'invoices': invoices,\n            'pager': pager,\n        })", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|cdd3e6f4152d9c71b379061ffe6d2946f6bdfd71a3092c7971b63ef4af96542f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/controllers/portal.py"}, "region": {"startLine": 94}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155745, "scanner": "repobility-ast-engine", "fingerprint": "dce4b7ff8762c7bb4c553db7dbeec336be1a2f2ad38dbcb3debb745113ee2dd2", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|dce4b7ff8762c7bb4c553db7dbeec336be1a2f2ad38dbcb3debb745113ee2dd2"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/test_assetsbundle/tests/test_assetsbundle.py"}, "region": {"startLine": 638}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `string` used but not imported: The file uses `string.something(...)` but never imports `string`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155744, "scanner": "repobility-ast-engine", "fingerprint": "8233696e4b1e0e279fa2d58feeed56e77dd8e3b00c6d5328267a3c6e57e53844", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|8233696e4b1e0e279fa2d58feeed56e77dd8e3b00c6d5328267a3c6e57e53844"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/assetsbundle.py"}, "region": {"startLine": 398}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `queue` used but not imported: The file uses `queue.something(...)` but never imports `queue`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155743, "scanner": "repobility-ast-engine", "fingerprint": "3d34b475a008b726292e0de9f9f6f1ee9669addf083b30e106d235e1bc7e84e3", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3d34b475a008b726292e0de9f9f6f1ee9669addf083b30e106d235e1bc7e84e3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_ui_view.py"}, "region": {"startLine": 1026}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `warnings` used but not imported: The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155742, "scanner": "repobility-ast-engine", "fingerprint": "99a29259fbb58d0dc9647a45f7a2ad8fd7642c5496117415032ba733228c8f71", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|99a29259fbb58d0dc9647a45f7a2ad8fd7642c5496117415032ba733228c8f71"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_fields.py"}, "region": {"startLine": 668}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `platform` used but not imported: The file uses `platform.something(...)` but never imports `platform`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155739, "scanner": "repobility-ast-engine", "fingerprint": "294ed733540313ab57057d50c98a5a7378d5868b0f055d611618391da95dcc2b", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|294ed733540313ab57057d50c98a5a7378d5868b0f055d611618391da95dcc2b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/res_device.py"}, "region": {"startLine": 74}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `stat` used but not imported: The file uses `stat.something(...)` but never imports `stat`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155738, "scanner": "repobility-ast-engine", "fingerprint": "997baf8da1f0df997b0f6a6c29c114e0d9a8ba36963daf6d50c5e1ae0aa6b0c6", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|997baf8da1f0df997b0f6a6c29c114e0d9a8ba36963daf6d50c5e1ae0aa6b0c6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_attachment.py"}, "region": {"startLine": 931}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `operator` used but not imported: The file uses `operator.something(...)` but never imports `operator`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155737, "scanner": "repobility-ast-engine", "fingerprint": "47149bc9d8ddf0759735f4d030a737c2dd31cd3b0121d6afb456228b6565ebf8", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|47149bc9d8ddf0759735f4d030a737c2dd31cd3b0121d6afb456228b6565ebf8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/res_partner.py"}, "region": {"startLine": 177}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `queue` used but not imported: The file uses `queue.something(...)` but never imports `queue`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155736, "scanner": "repobility-ast-engine", "fingerprint": "59dcdef7994e845823f87623702ddd26ecb2e3ee8cf0eff11e2ca97ed98b2758", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|59dcdef7994e845823f87623702ddd26ecb2e3ee8cf0eff11e2ca97ed98b2758"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_autovacuum.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `warnings` used but not imported: The file uses `warnings.something(...)` but never imports `warnings`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155734, "scanner": "repobility-ast-engine", "fingerprint": "f3e304fe3835fb00a97758469dd996689310a19766fe9e1abe96d2424e1e9495", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|f3e304fe3835fb00a97758469dd996689310a19766fe9e1abe96d2424e1e9495"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_actions.py"}, "region": {"startLine": 765}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `datetime` used but not imported: The file uses `datetime.something(...)` but never imports `datetime`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155733, "scanner": "repobility-ast-engine", "fingerprint": "61955b569fd02ae07f3296468f098bb0097a40b19d82851f07ee11d77cd8566c", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|61955b569fd02ae07f3296468f098bb0097a40b19d82851f07ee11d77cd8566c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_actions.py"}, "region": {"startLine": 518}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155732, "scanner": "repobility-ast-engine", "fingerprint": "daaf6668bccb9acf2f1bff4101c3ec387a7e652d1771d86b9eb9647d7704c4a8", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|daaf6668bccb9acf2f1bff4101c3ec387a7e652d1771d86b9eb9647d7704c4a8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_module.py"}, "region": {"startLine": 179}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `atexit` used but not imported: The file uses `atexit.something(...)` but never imports `atexit`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155709, "scanner": "repobility-ast-engine", "fingerprint": "321ab7afcd1fb06e4f21a675f37c40d74267d7e59fe1a65da00daecb1a742abe", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|321ab7afcd1fb06e4f21a675f37c40d74267d7e59fe1a65da00daecb1a742abe"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tests/common.py"}, "region": {"startLine": 2487}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `stat` used but not imported: The file uses `stat.something(...)` but never imports `stat`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155707, "scanner": "repobility-ast-engine", "fingerprint": "3522c6bfbb77a05a6d75dd854360d1937cd8d1eb8c85ff9fdd893ce369e59bb7", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|3522c6bfbb77a05a6d75dd854360d1937cd8d1eb8c85ff9fdd893ce369e59bb7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tests/result.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `html` used but not imported: The file uses `html.something(...)` but never imports `html`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155706, "scanner": "repobility-ast-engine", "fingerprint": "6ddf3045ed4668a132662ac0c12a7f922f5a8fec46bd4175585ed5e482316584", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|6ddf3045ed4668a132662ac0c12a7f922f5a8fec46bd4175585ed5e482316584"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/lxml.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `string` used but not imported: The file uses `string.something(...)` but never imports `string`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155705, "scanner": "repobility-ast-engine", "fingerprint": "2b96c0a3a53b2bf20493edf626c110376d431558bd3ef10a11afe1cbf66557df", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|2b96c0a3a53b2bf20493edf626c110376d431558bd3ef10a11afe1cbf66557df"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/werkzeug.py"}, "region": {"startLine": 431}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `operator` used but not imported: The file uses `operator.something(...)` but never imports `operator`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155703, "scanner": "repobility-ast-engine", "fingerprint": "67a8116de55f8a3d297ad66152760ffb02eae0a19d96238589588639308de633", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|67a8116de55f8a3d297ad66152760ffb02eae0a19d96238589588639308de633"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/fields_properties.py"}, "region": {"startLine": 744}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `operator` used but not imported: The file uses `operator.something(...)` but never imports `operator`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155702, "scanner": "repobility-ast-engine", "fingerprint": "1e4aa143eafa287f5859635c8080179be597e62c79db0b2270d75724c9bba822", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|1e4aa143eafa287f5859635c8080179be597e62c79db0b2270d75724c9bba822"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/fields.py"}, "region": {"startLine": 1317}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `operator` used but not imported: The file uses `operator.something(...)` but never imports `operator`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155701, "scanner": "repobility-ast-engine", "fingerprint": "20d68eb364b08d83478dd5a5bdd10b605f5d1cbb066088835dbe87221de214eb", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|20d68eb364b08d83478dd5a5bdd10b605f5d1cbb066088835dbe87221de214eb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/models.py"}, "region": {"startLine": 1456}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `queue` used but not imported: The file uses `queue.something(...)` but never imports `queue`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155698, "scanner": "repobility-ast-engine", "fingerprint": "0af4129562116e4af2254a20e039457b598a21457c2d3a902a4797f239d07a9b", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|0af4129562116e4af2254a20e039457b598a21457c2d3a902a4797f239d07a9b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/registry.py"}, "region": {"startLine": 358}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `locale` used but not imported: The file uses `locale.something(...)` but never imports `locale`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155696, "scanner": "repobility-ast-engine", "fingerprint": "94711f34efe27ea5c2d3ff91547113e583e41af16810c5a7cd77924e0eed23b7", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|94711f34efe27ea5c2d3ff91547113e583e41af16810c5a7cd77924e0eed23b7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/date_utils.py"}, "region": {"startLine": 447}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `stat` used but not imported: The file uses `stat.something(...)` but never imports `stat`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155695, "scanner": "repobility-ast-engine", "fingerprint": "852bcabad1fb0b264deff985471cb849144d3eba89e05381b443821b99d7c1c1", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|852bcabad1fb0b264deff985471cb849144d3eba89e05381b443821b99d7c1c1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/cache.py"}, "region": {"startLine": 285}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `locale` used but not imported: The file uses `locale.something(...)` but never imports `locale`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155693, "scanner": "repobility-ast-engine", "fingerprint": "a701f6b9f91b2edd1d9d63fa3642c80f5708a1d891e87fd2660960bbf1f8e081", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|a701f6b9f91b2edd1d9d63fa3642c80f5708a1d891e87fd2660960bbf1f8e081"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/i18n.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `string` used but not imported: The file uses `string.something(...)` but never imports `string`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155689, "scanner": "repobility-ast-engine", "fingerprint": "9529fd14ee0becb230e64b8473d7ac53265206b5ac766bc35079e81731dd862a", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|9529fd14ee0becb230e64b8473d7ac53265206b5ac766bc35079e81731dd862a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/misc.py"}, "region": {"startLine": 1964}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `locale` used but not imported: The file uses `locale.something(...)` but never imports `locale`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155688, "scanner": "repobility-ast-engine", "fingerprint": "e42fb5cbf9a3d222e774ae497ae353777515e5bbd5ebc078923af26d777486c6", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|e42fb5cbf9a3d222e774ae497ae353777515e5bbd5ebc078923af26d777486c6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/tools/misc.py"}, "region": {"startLine": 643}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `stat` used but not imported: The file uses `stat.something(...)` but never imports `stat`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 155686, "scanner": "repobility-ast-engine", "fingerprint": "d5f772155492646f344a3c4133c6ad5877bacf0af900792eae2b1715a4bd63ce", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "missing-import-python", "owasp": "A06:2021", "cwe_ids": ["CWE-1075"], "languages": ["python"], "observations_count": 2192}, "scanner": "repobility-ast-engine", "correlation_key": "fp|d5f772155492646f344a3c4133c6ad5877bacf0af900792eae2b1715a4bd63ce"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/http.py"}, "region": {"startLine": 543}}}]}, {"ruleId": "MINED007", "level": "error", "message": {"text": "[MINED007] Sql String Concat: cursor.execute(f\"... {user_input} ...\") \u2014 SQL injection."}, "properties": {"repobilityId": 155645, "scanner": "repobility-threat-engine", "fingerprint": "adfdd3e8e69bc7aa48d8f8e194f924329b9743dacaaad2b3fb82433c66fbb2a4", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "sql-string-concat", "owasp": "A03:2021", "cwe_ids": ["CWE-89"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347914+00:00", "triaged_in_corpus": 20, "observations_count": 210457, "ai_coder_pattern_id": 12}, "scanner": "repobility-threat-engine", "correlation_key": "fp|adfdd3e8e69bc7aa48d8f8e194f924329b9743dacaaad2b3fb82433c66fbb2a4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/event_product/models/event_type_ticket.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "MINED007", "level": "error", "message": {"text": "[MINED007] Sql String Concat: cursor.execute(f\"... {user_input} ...\") \u2014 SQL injection."}, "properties": {"repobilityId": 155644, "scanner": "repobility-threat-engine", "fingerprint": "e0a04e925257be390b6b50cfeff733b7bca82df1640cf2e3966f2dfdf03e2078", "category": "quality", "severity": "critical", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "sql-string-concat", "owasp": "A03:2021", "cwe_ids": ["CWE-89"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347914+00:00", "triaged_in_corpus": 20, "observations_count": 210457, "ai_coder_pattern_id": 12}, "scanner": "repobility-threat-engine", "correlation_key": "fp|e0a04e925257be390b6b50cfeff733b7bca82df1640cf2e3966f2dfdf03e2078"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/event_booth_sale/models/event_booth_category.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-329492dd27d5d056", "level": "note", "message": {"text": "Possibly dead Python function: undecimalize"}, "properties": {"repobilityId": "2bb3309162fe81ee", "scanner": "scanner-primary", "fingerprint": "329492dd27d5d056", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab52b703fa119ae4", "level": "note", "message": {"text": "Possibly dead Python function: split_for_in_conditions"}, "properties": {"repobilityId": "f098ecd5f5e206e1", "scanner": "scanner-primary", "fingerprint": "ab52b703fa119ae4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py:265"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2fb1d77ea865630", "level": "note", "message": {"text": "Possibly dead Python function: lobject"}, "properties": {"repobilityId": "c99ad908ea87d81c", "scanner": "scanner-primary", "fingerprint": "b2fb1d77ea865630", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/sql_db.py:597"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d8d24dcb7fa43d86", "level": "note", "message": {"text": "Possibly dead Python function: is_method_a_route"}, "properties": {"repobilityId": "50258039f4104649", "scanner": "scanner-primary", "fingerprint": "d8d24dcb7fa43d86", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/http.py:910"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7bd3d30a67daad25", "level": "note", "message": {"text": "Possibly dead Python function: fake_app"}, "properties": {"repobilityId": "4aefa97965b1e2a8", "scanner": "scanner-primary", "fingerprint": "7bd3d30a67daad25", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/http.py:2837"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50d3e983e2099c12", "level": "note", "message": {"text": "Possibly dead Python function: fake_start_response"}, "properties": {"repobilityId": "b56ee45c65829b89", "scanner": "scanner-primary", "fingerprint": "50d3e983e2099c12", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/http.py:2839"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-788bf80fa9d706bd", "level": "note", "message": {"text": "Possibly dead Python function: showwarning_with_traceback"}, "properties": {"repobilityId": "4821b6b4de2635cd", "scanner": "scanner-primary", "fingerprint": "788bf80fa9d706bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/netsvc.py:345"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2479700d1766173f", "level": "note", "message": {"text": "Possibly dead Python function: distribute_not"}, "properties": {"repobilityId": "228e7913f005c77b", "scanner": "scanner-primary", "fingerprint": "2479700d1766173f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/osv/expression.py:252"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0832be5b8ff63e65", "level": "note", "message": {"text": "Possibly dead Python function: domain_combine_anies"}, "properties": {"repobilityId": "1e12ad080fc423e3", "scanner": "scanner-primary", "fingerprint": "0832be5b8ff63e65", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/osv/expression.py:274"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eeb60d330f58d6f6", "level": "note", "message": {"text": "Possibly dead Python function: normalize_leaf"}, "properties": {"repobilityId": "8a61e547feac92b1", "scanner": "scanner-primary", "fingerprint": "eeb60d330f58d6f6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/osv/expression.py:367"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0cd2a0ecf8367b2c", "level": "note", "message": {"text": "Possibly dead Python function: is_boolean"}, "properties": {"repobilityId": "4a1e3f5d46f76969", "scanner": "scanner-primary", "fingerprint": "0cd2a0ecf8367b2c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/osv/expression.py:404"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-180738123c813315", "level": "note", "message": {"text": "Possibly dead Python function: check_leaf"}, "properties": {"repobilityId": "321c7729db47a8fe", "scanner": "scanner-primary", "fingerprint": "180738123c813315", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/osv/expression.py:409"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e5174feb2228854c", "level": "note", "message": {"text": "Possibly dead Python function: url_fix"}, "properties": {"repobilityId": "ca5b619417c306a1", "scanner": "scanner-primary", "fingerprint": "e5174feb2228854c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/werkzeug.py:729"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d7bf559edf480554", "level": "note", "message": {"text": "Possibly dead Python function: url_decode_stream"}, "properties": {"repobilityId": "6d4fe4078fd9ab10", "scanner": "scanner-primary", "fingerprint": "d7bf559edf480554", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/werkzeug.py:809"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-864aa8eb3c0ceb20", "level": "note", "message": {"text": "Possibly dead Python function: url_encode_stream"}, "properties": {"repobilityId": "ff562e49416f0dd9", "scanner": "scanner-primary", "fingerprint": "864aa8eb3c0ceb20", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/werkzeug.py:910"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2ed42c894a4c922", "level": "note", "message": {"text": "Possibly dead Python function: gevent_wait_callback"}, "properties": {"repobilityId": "f44609655254c7fc", "scanner": "scanner-primary", "fingerprint": "a2ed42c894a4c922", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/site.py:36"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d1ff0453d1374b2", "level": "note", "message": {"text": "Possibly dead Python function: new_get_soap_client"}, "properties": {"repobilityId": "954edae3822ca1db", "scanner": "scanner-primary", "fingerprint": "8d1ff0453d1374b2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/stdnum.py:9"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-607463e5857c2fc9", "level": "note", "message": {"text": "Possibly dead Python function: pool_init"}, "properties": {"repobilityId": "29acb373c4f3b953", "scanner": "scanner-primary", "fingerprint": "607463e5857c2fc9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/urllib3.py:6"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-741e8c2633128306", "level": "note", "message": {"text": "Possibly dead Python function: new_json"}, "properties": {"repobilityId": "b11d4335a5a689dc", "scanner": "scanner-primary", "fingerprint": "741e8c2633128306", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/requests.py:22"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7de33175972f2f17", "level": "note", "message": {"text": "Possibly dead Python function: parse_minus"}, "properties": {"repobilityId": "3a39016ca3c84471", "scanner": "scanner-primary", "fingerprint": "7de33175972f2f17", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/num2words.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fdccecebf419c688", "level": "note", "message": {"text": "Possibly dead Python function: str_to_number"}, "properties": {"repobilityId": "97c4bb38f653f9da", "scanner": "scanner-primary", "fingerprint": "fdccecebf419c688", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/num2words.py:107"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-121a43350a6d7f0a", "level": "note", "message": {"text": "Possibly dead Python function: verify_ordinal"}, "properties": {"repobilityId": "42447ecb6b093a3f", "scanner": "scanner-primary", "fingerprint": "121a43350a6d7f0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/num2words.py:203"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ede94f4c406432a", "level": "note", "message": {"text": "Possibly dead Python function: to_ordinal_num"}, "properties": {"repobilityId": "dc6fb717ac568788", "scanner": "scanner-primary", "fingerprint": "6ede94f4c406432a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/num2words.py:857"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f251aa6550453bed", "level": "note", "message": {"text": "Possibly dead Python function: to_splitnum"}, "properties": {"repobilityId": "3e605a83a9fd9d92", "scanner": "scanner-primary", "fingerprint": "f251aa6550453bed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/num2words.py:223"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03b84ae17ba77f42", "level": "note", "message": {"text": "Possibly dead Python function: to_year"}, "properties": {"repobilityId": "b019d7e31a7d47ce", "scanner": "scanner-primary", "fingerprint": "03b84ae17ba77f42", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/_monkeypatches/num2words.py:860"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-09ed84b2e2a860f0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 odoo/addons/test_main_flows/static/tests/tours/main_flow.js:132"}, "properties": {"repobilityId": "46e71086a1467d7f", "scanner": "scanner-primary", "fingerprint": "09ed84b2e2a860f0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/test_main_flows/static/tests/tours/main_flow.js"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-58c6298d90160611", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/rating/static/tests/mock_server/models/rating_rating.js:6"}, "properties": {"repobilityId": "b6fda2d81862ce1b", "scanner": "scanner-primary", "fingerprint": "58c6298d90160611", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/rating/static/tests/mock_server/models/rating_rating.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-92a392333f5c3dbc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_bubble/chat_bubble.test.js:115"}, "properties": {"repobilityId": "a05fa668f5aae071", "scanner": "scanner-primary", "fingerprint": "92a392333f5c3dbc", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/chat_bubble/chat_bubble.test.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-43a00e0e9d482edc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/message/message.test.js:348"}, "properties": {"repobilityId": "2dbc2a99aece13f8", "scanner": "scanner-primary", "fingerprint": "43a00e0e9d482edc", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/message/message.test.js"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-0a961e81fd297d09", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chatter/web/form_renderer.test.js:20"}, "properties": {"repobilityId": "1a9eec29c0bfd982", "scanner": "scanner-primary", "fingerprint": "0a961e81fd297d09", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/chatter/web/form_renderer.test.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-4a60947de87154fc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_window/chat_window.test.js:448"}, "properties": {"repobilityId": "e9df5058262408d8", "scanner": "scanner-primary", "fingerprint": "4a60947de87154fc", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/chat_window/chat_window.test.js"}, "region": {"startLine": 448}}}]}, {"ruleId": "scanner-3925a29bbb73783a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/chat_window/chat_window_manager.test.js:48"}, "properties": {"repobilityId": "53a973d3bf0bca15", "scanner": "scanner-primary", "fingerprint": "3925a29bbb73783a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/chat_window/chat_window_manager.test.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-35c7c2e01e56dcc8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/discuss/call/call.test.js:73"}, "properties": {"repobilityId": "cbbbe34e566d82a6", "scanner": "scanner-primary", "fingerprint": "35c7c2e01e56dcc8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/discuss/call/call.test.js"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-3f41470d26f81ae6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/tests/crosstab/crosstab.test.js:111"}, "properties": {"repobilityId": "e00136bd37374472", "scanner": "scanner-primary", "fingerprint": "3f41470d26f81ae6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/tests/crosstab/crosstab.test.js"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-bd08a0a016a01fca", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/lib/lame/lame.js:5152"}, "properties": {"repobilityId": "0b0458eab94d3c22", "scanner": "scanner-primary", "fingerprint": "bd08a0a016a01fca", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/lib/lame/lame.js"}, "region": {"startLine": 5152}}}]}, {"ruleId": "scanner-d4f13a1031424be4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/lib/odoo_sfu/odoo_sfu.js:295"}, "properties": {"repobilityId": "498c8b1fe5dee78e", "scanner": "scanner-primary", "fingerprint": "d4f13a1031424be4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/lib/odoo_sfu/odoo_sfu.js"}, "region": {"startLine": 295}}}]}, {"ruleId": "scanner-2b55e8c04be8af1f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/chatter/web/chatter_patch.js:184"}, "properties": {"repobilityId": "1310df88a4defbe6", "scanner": "scanner-primary", "fingerprint": "2b55e8c04be8af1f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/chatter/web/chatter_patch.js"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-95c23d9914c36b83", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/utils/common/misc.js:77"}, "properties": {"repobilityId": "70f5d16fbec3d7a5", "scanner": "scanner-primary", "fingerprint": "95c23d9914c36b83", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/utils/common/misc.js"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-c4153dc7cb57a96d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/call/common/blur_manager.js:16"}, "properties": {"repobilityId": "100f628f2733ab19", "scanner": "scanner-primary", "fingerprint": "c4153dc7cb57a96d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/discuss/call/common/blur_manager.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-0ff9409384877482", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/core/common/thread_model_patch.js:210"}, "properties": {"repobilityId": "6ad6cfcdef3b65b6", "scanner": "scanner-primary", "fingerprint": "0ff9409384877482", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/discuss/core/common/thread_model_patch.js"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-cea2f6fe85bec678", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/discuss/core/public_web/discuss_command_palette.js:151"}, "properties": {"repobilityId": "7b047c0564a3508b", "scanner": "scanner-primary", "fingerprint": "cea2f6fe85bec678", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/discuss/core/public_web/discuss_command_palette.js"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-f880b2042e0235e2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/core/common/thread_model.js:242"}, "properties": {"repobilityId": "d3a95ff54a74161d", "scanner": "scanner-primary", "fingerprint": "f880b2042e0235e2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/core/common/thread_model.js"}, "region": {"startLine": 242}}}]}, {"ruleId": "scanner-1d56f1f9559219ae", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/core/web/store_service_patch.js:131"}, "properties": {"repobilityId": "8de17131594b473f", "scanner": "scanner-primary", "fingerprint": "1d56f1f9559219ae", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/core/web/store_service_patch.js"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-e4784da62d8aa4d6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/model/make_store.js:190"}, "properties": {"repobilityId": "77ce35575ed7207e", "scanner": "scanner-primary", "fingerprint": "e4784da62d8aa4d6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/model/make_store.js"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-40d646ec44c46a4c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js:787"}, "properties": {"repobilityId": "110f97153bd4c9db", "scanner": "scanner-primary", "fingerprint": "40d646ec44c46a4c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js"}, "region": {"startLine": 787}}}]}, {"ruleId": "scanner-f7ccf4d296f7b12f", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js:1318"}, "properties": {"repobilityId": "9101f0f1d00945cb", "scanner": "scanner-primary", "fingerprint": "f7ccf4d296f7b12f", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js"}, "region": {"startLine": 1318}}}]}, {"ruleId": "scanner-df5788e70c12ce8c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_comparison/static/src/interactions/comparison_page.js:25"}, "properties": {"repobilityId": "2853792829895e3a", "scanner": "scanner-primary", "fingerprint": "df5788e70c12ce8c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale_comparison/static/src/interactions/comparison_page.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-105e694ad9f8d3e0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_livechat/static/tests/mock_server/mock_models/discuss_channel.js:7"}, "properties": {"repobilityId": "f674106276f42d77", "scanner": "scanner-primary", "fingerprint": "105e694ad9f8d3e0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_livechat/static/tests/mock_server/mock_models/discuss_channel.js"}, "region": {"startLine": 7}}}]}, {"ruleId": "scanner-69f56e0a4f4df358", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_sale/static/src/app/models/pos_order_line.js:19"}, "properties": {"repobilityId": "c64c90b2bf7bc6e6", "scanner": "scanner-primary", "fingerprint": "69f56e0a4f4df358", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_sale/static/src/app/models/pos_order_line.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-057bdc220ac1aa7c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_sale/static/src/app/services/pos_store.js:373"}, "properties": {"repobilityId": "a80e7966d16f51f5", "scanner": "scanner-primary", "fingerprint": "057bdc220ac1aa7c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_sale/static/src/app/services/pos_store.js"}, "region": {"startLine": 373}}}]}, {"ruleId": "scanner-09e2d4474d9675d6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/auth_totp_portal/static/tests/totp_portal.js:16"}, "properties": {"repobilityId": "f2647ffd2400973d", "scanner": "scanner-primary", "fingerprint": "09e2d4474d9675d6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_totp_portal/static/tests/totp_portal.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-5459434eba2fce2a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/delivery_mondialrelay/static/src/components/mondialrelay_field.js:73"}, "properties": {"repobilityId": "b253fa06e77f9287", "scanner": "scanner-primary", "fingerprint": "5459434eba2fce2a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/delivery_mondialrelay/static/src/components/mondialrelay_field.js"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-24adc9b26e0da9ea", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/l10n_in_pos/static/src/app/models/pos_order.js:16"}, "properties": {"repobilityId": "9702312ed88a1b68", "scanner": "scanner-primary", "fingerprint": "24adc9b26e0da9ea", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/l10n_in_pos/static/src/app/models/pos_order.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-cd0af5d75fe5c424", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_payment/static/src/website_builder/donation_option_plugin.js:13"}, "properties": {"repobilityId": "60b4e4bc27e43a94", "scanner": "scanner-primary", "fingerprint": "cd0af5d75fe5c424", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_payment/static/src/website_builder/donation_option_plugin.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-eef0c8724f72a6e3", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website_payment/static/src/interactions/payment_form.js:115"}, "properties": {"repobilityId": "e9608902e3c7dbf9", "scanner": "scanner-primary", "fingerprint": "eef0c8724f72a6e3", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_payment/static/src/interactions/payment_form.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-7de01ef84af16701", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_payment/static/src/snippets/s_donation/donation_snippet.js:42"}, "properties": {"repobilityId": "223798bb0efdec14", "scanner": "scanner-primary", "fingerprint": "7de01ef84af16701", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_payment/static/src/snippets/s_donation/donation_snippet.js"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-f37fdfd0cd3efc71", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/pos_self_order/static/src/app/root.js:18"}, "properties": {"repobilityId": "b7e557fcefbfc6e9", "scanner": "scanner-primary", "fingerprint": "f37fdfd0cd3efc71", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/root.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-5e7b159f73da0f75", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/order_widget/order_widget.js:56"}, "properties": {"repobilityId": "546c9e3306f9cdcb", "scanner": "scanner-primary", "fingerprint": "5e7b159f73da0f75", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/components/order_widget/order_widget.js"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-4070555c7366287d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/attribute_selection/attribute_selection.js:61"}, "properties": {"repobilityId": "beb9081538cd22fb", "scanner": "scanner-primary", "fingerprint": "4070555c7366287d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/components/attribute_selection/attribute_selection.js"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-563ea63b986f33ca", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/components/preset_info_popup/preset_info_popup.js:84"}, "properties": {"repobilityId": "ff947ea8ae1d27d4", "scanner": "scanner-primary", "fingerprint": "563ea63b986f33ca", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/components/preset_info_popup/preset_info_popup.js"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-4cf320e483f13383", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/combo_page/combo_page.js:555"}, "properties": {"repobilityId": "05609dafb448100a", "scanner": "scanner-primary", "fingerprint": "4cf320e483f13383", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/pages/combo_page/combo_page.js"}, "region": {"startLine": 555}}}]}, {"ruleId": "scanner-8738cef734df97d2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/product_page/product_page.js:201"}, "properties": {"repobilityId": "06e1eafd4f19de6b", "scanner": "scanner-primary", "fingerprint": "8738cef734df97d2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/pages/product_page/product_page.js"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-a12e857e9e62758c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js:289"}, "properties": {"repobilityId": "9f3ec6807641fde7", "scanner": "scanner-primary", "fingerprint": "a12e857e9e62758c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-371d82599383b700", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/printer_service.js:8"}, "properties": {"repobilityId": "f0f3a4d5bf5e52e5", "scanner": "scanner-primary", "fingerprint": "371d82599383b700", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/services/printer_service.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-fb5b47134d40927a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/self_order_service.js:335"}, "properties": {"repobilityId": "6d407b52388a765b", "scanner": "scanner-primary", "fingerprint": "fb5b47134d40927a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/services/self_order_service.js"}, "region": {"startLine": 335}}}]}, {"ruleId": "scanner-93f08aabe8eb157a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/app/services/card_utils.js:209"}, "properties": {"repobilityId": "8bd9dc4ffae640a1", "scanner": "scanner-primary", "fingerprint": "93f08aabe8eb157a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/app/services/card_utils.js"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-dc55632337f8bdf8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_self_order/static/src/overrides/screens/ticket_screen/ticket_screen.js:26"}, "properties": {"repobilityId": "6a8666d8a11ca342", "scanner": "scanner-primary", "fingerprint": "dc55632337f8bdf8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_self_order/static/src/overrides/screens/ticket_screen/ticket_screen.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-87e311577b69921e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_stock_wishlist/static/src/interactions/add_product_to_wishlist_button.js:6"}, "properties": {"repobilityId": "85402b48d179f0c5", "scanner": "scanner-primary", "fingerprint": "87e311577b69921e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale_stock_wishlist/static/src/interactions/add_product_to_wishlist_button.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-161e25901d7360d7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale/static/src/js/sale_utils.js:26"}, "properties": {"repobilityId": "07eb268bb8007892", "scanner": "scanner-primary", "fingerprint": "161e25901d7360d7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/sale/static/src/js/sale_utils.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-1e2de0270b49cfd4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale/static/src/js/tours/tour_utils.js:39"}, "properties": {"repobilityId": "b495e99eda9c6e41", "scanner": "scanner-primary", "fingerprint": "1e2de0270b49cfd4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/sale/static/src/js/tours/tour_utils.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-4ebe9f58354bcf07", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale_stock/static/src/widgets/qty_at_date_widget.js:60"}, "properties": {"repobilityId": "174511a87e41a682", "scanner": "scanner-primary", "fingerprint": "4ebe9f58354bcf07", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/sale_stock/static/src/widgets/qty_at_date_widget.js"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-441a7b7baa10565d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/mock_server/mock_models/website_visitor.js:8"}, "properties": {"repobilityId": "f084d96d9253293d", "scanner": "scanner-primary", "fingerprint": "441a7b7baa10565d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/mock_server/mock_models/website_visitor.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-1694967b1793b165", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/zoomed_background_shape.test.js:27"}, "properties": {"repobilityId": "6af98d52cab03734", "scanner": "scanner-primary", "fingerprint": "1694967b1793b165", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/interactions/zoomed_background_shape.test.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-d8c1fd6f7bbbb708", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/carousel/carousel.test.js:76"}, "properties": {"repobilityId": "ba28d55793fd4eeb", "scanner": "scanner-primary", "fingerprint": "d8c1fd6f7bbbb708", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/interactions/carousel/carousel.test.js"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-a151eb5d47fbf4ff", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/gallery.test.js:11"}, "properties": {"repobilityId": "b47532540cc6e4bc", "scanner": "scanner-primary", "fingerprint": "a151eb5d47fbf4ff", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/interactions/snippets/gallery.test.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-6bfc98128aabb3fa", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/table_of_content.test.js:22"}, "properties": {"repobilityId": "617e97fdfb77a769", "scanner": "scanner-primary", "fingerprint": "6bfc98128aabb3fa", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/interactions/snippets/table_of_content.test.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-ecee79b722ec0728", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/gallery_slider.test.js:15"}, "properties": {"repobilityId": "7649332c2e7fa880", "scanner": "scanner-primary", "fingerprint": "ecee79b722ec0728", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/interactions/snippets/gallery_slider.test.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-193c94b62c37909f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/interactions/snippets/form.test.js:221"}, "properties": {"repobilityId": "43e790261630ce34", "scanner": "scanner-primary", "fingerprint": "193c94b62c37909f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/interactions/snippets/form.test.js"}, "region": {"startLine": 221}}}]}, {"ruleId": "scanner-b1f5ed2cf298acd9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/page_manager.js:4"}, "properties": {"repobilityId": "5e72a9a9846b2203", "scanner": "scanner-primary", "fingerprint": "b1f5ed2cf298acd9", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/page_manager.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-53c6ed9cc812f477", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/html_editor.js:335"}, "properties": {"repobilityId": "a2440f1c9d0bfdc3", "scanner": "scanner-primary", "fingerprint": "53c6ed9cc812f477", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/html_editor.js"}, "region": {"startLine": 335}}}]}, {"ruleId": "scanner-57994a660d666331", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/grid_layout.js:24"}, "properties": {"repobilityId": "70d8380119e2bd34", "scanner": "scanner-primary", "fingerprint": "57994a660d666331", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/grid_layout.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-50150741f55e6c5e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippets_all_drag_and_drop.js:69"}, "properties": {"repobilityId": "3825abecb78862d7", "scanner": "scanner-primary", "fingerprint": "50150741f55e6c5e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/snippets_all_drag_and_drop.js"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-6c2d77d3fcab4bf6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_social_media.js:9"}, "properties": {"repobilityId": "768b56d73af317fc", "scanner": "scanner-primary", "fingerprint": "6c2d77d3fcab4bf6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/snippet_social_media.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-609c98779fd5ec61", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_images_wall.js:82"}, "properties": {"repobilityId": "3a86c2ddb3e2e220", "scanner": "scanner-primary", "fingerprint": "609c98779fd5ec61", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/snippet_images_wall.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-d0746654b3488f6e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/snippet_countdown.js:36"}, "properties": {"repobilityId": "3002f6b5da1336f6", "scanner": "scanner-primary", "fingerprint": "d0746654b3488f6e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/snippet_countdown.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-d3eaf4e219feb714", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/client_action_redirect.js:68"}, "properties": {"repobilityId": "87e7460b9511fb35", "scanner": "scanner-primary", "fingerprint": "d3eaf4e219feb714", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/client_action_redirect.js"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-984db2ad69aa6b1c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/website_text_font_size.js:137"}, "properties": {"repobilityId": "78b02b8c8b3936fb", "scanner": "scanner-primary", "fingerprint": "984db2ad69aa6b1c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/website_text_font_size.js"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-866679193ecaeab9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tours/website_form_editor.js:273"}, "properties": {"repobilityId": "38e1cc2d4932f059", "scanner": "scanner-primary", "fingerprint": "866679193ecaeab9", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tours/website_form_editor.js"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-3494ef5ed5869676", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/tour_utils/lifecycle_patch_wysiwyg.js:34"}, "properties": {"repobilityId": "dc59aeb3f8d2b5e3", "scanner": "scanner-primary", "fingerprint": "3494ef5ed5869676", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/tour_utils/lifecycle_patch_wysiwyg.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-961957e70894dd80", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/translation.test.js:873"}, "properties": {"repobilityId": "d6be88176118bb14", "scanner": "scanner-primary", "fingerprint": "961957e70894dd80", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/translation.test.js"}, "region": {"startLine": 873}}}]}, {"ruleId": "scanner-a791f683e0c1547a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/builder_overlay.test.js:13"}, "properties": {"repobilityId": "b334cafe30caf5e2", "scanner": "scanner-primary", "fingerprint": "a791f683e0c1547a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/builder_overlay.test.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-8ae3b10180e806fb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_helpers.js:121"}, "properties": {"repobilityId": "2bbb8361a3948449", "scanner": "scanner-primary", "fingerprint": "8ae3b10180e806fb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/website_helpers.js"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-3cabd0dc0d8ea80f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/options/floating_blocks_option.test.js:10"}, "properties": {"repobilityId": "eb9f8564c82bf8ba", "scanner": "scanner-primary", "fingerprint": "3cabd0dc0d8ea80f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/options/floating_blocks_option.test.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-b2724c0f96e2c7e4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/image_gallery.test.js:84"}, "properties": {"repobilityId": "b2f15d3cc5fb89f2", "scanner": "scanner-primary", "fingerprint": "b2724c0f96e2c7e4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/website_builder/image_gallery.test.js"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-1d53750337028413", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/background_option.test.js:40"}, "properties": {"repobilityId": "e28ff1e6601b0628", "scanner": "scanner-primary", "fingerprint": "1d53750337028413", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/website_builder/background_option.test.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-a3d89428d25a97df", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/tests/builder/website_builder/popup_option.test.js:84"}, "properties": {"repobilityId": "664fc7822c19e1b2", "scanner": "scanner-primary", "fingerprint": "a3d89428d25a97df", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/tests/builder/website_builder/popup_option.test.js"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-3681be854c277cb5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/lib/multirange/multirange_custom.js:236"}, "properties": {"repobilityId": "8380433114086dc6", "scanner": "scanner-primary", "fingerprint": "3681be854c277cb5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/lib/multirange/multirange_custom.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-5ced665ec1dc89be", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/utils.js:23"}, "properties": {"repobilityId": "8ef2d60dc2bad4ff", "scanner": "scanner-primary", "fingerprint": "5ced665ec1dc89be", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/utils.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-73dfc2abdcd856b3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/text_processing.js:3"}, "properties": {"repobilityId": "41325da3d2eb216d", "scanner": "scanner-primary", "fingerprint": "73dfc2abdcd856b3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/text_processing.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-b058b4a8c3734618", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/tours/tour_utils.js:87"}, "properties": {"repobilityId": "c9bfef3928c6eab3", "scanner": "scanner-primary", "fingerprint": "b058b4a8c3734618", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/tours/tour_utils.js"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-5836b91224fec9df", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/snippets.animation.js:59"}, "properties": {"repobilityId": "5688c513d072d78a", "scanner": "scanner-primary", "fingerprint": "5836b91224fec9df", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/content/snippets.animation.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-9f2c6d5a9b4e9587", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/inject_dom.js:8"}, "properties": {"repobilityId": "b5adc097da55a87d", "scanner": "scanner-primary", "fingerprint": "9f2c6d5a9b4e9587", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/content/inject_dom.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-bb1237d035ee7893", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/auto_hide_menu.js:1"}, "properties": {"repobilityId": "f60cbca421005dbe", "scanner": "scanner-primary", "fingerprint": "bb1237d035ee7893", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/content/auto_hide_menu.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-592c6cdbadacdd3b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/js/content/adapt_content.js:4"}, "properties": {"repobilityId": "47c5dcafcaee05f7", "scanner": "scanner-primary", "fingerprint": "592c6cdbadacdd3b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/content/adapt_content.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5df4be76a9092e2d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/text_highlights.js:117"}, "properties": {"repobilityId": "24fc498da65840c5", "scanner": "scanner-primary", "fingerprint": "5df4be76a9092e2d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/text_highlights.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-f35f161f4129c7c8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/full_screen_height.js:38"}, "properties": {"repobilityId": "c641419e8888707b", "scanner": "scanner-primary", "fingerprint": "f35f161f4129c7c8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/full_screen_height.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-faa1a81a97b8d8fe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/footer_slideout.js:27"}, "properties": {"repobilityId": "69804af38e3afddd", "scanner": "scanner-primary", "fingerprint": "faa1a81a97b8d8fe", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/footer_slideout.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-7bf4c85b90950436", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/cookies/cookies_bar.js:52"}, "properties": {"repobilityId": "8d24c1b67f06c165", "scanner": "scanner-primary", "fingerprint": "7bf4c85b90950436", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/cookies/cookies_bar.js"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-548999c36d80fad2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/popup/popup.js:232"}, "properties": {"repobilityId": "aa2260b48a850383", "scanner": "scanner-primary", "fingerprint": "548999c36d80fad2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/popup/popup.js"}, "region": {"startLine": 232}}}]}, {"ruleId": "scanner-081a689566d23ff0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/interactions/video/media_video.js:17"}, "properties": {"repobilityId": "3182ecf65d2b263d", "scanner": "scanner-primary", "fingerprint": "081a689566d23ff0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/video/media_video.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-a2cdafaf96c8d289", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/fields/fields.js:28"}, "properties": {"repobilityId": "71d411f68084e1fd", "scanner": "scanner-primary", "fingerprint": "a2cdafaf96c8d289", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/components/fields/fields.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-fcbfe18f19ec4d0f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/resource_editor/resource_editor.js:173"}, "properties": {"repobilityId": "81784cbb279e06f8", "scanner": "scanner-primary", "fingerprint": "fcbfe18f19ec4d0f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/components/resource_editor/resource_editor.js"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-7280e5a8d51b9132", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/website_loader/website_loader.js:133"}, "properties": {"repobilityId": "ca4a826531b6ab18", "scanner": "scanner-primary", "fingerprint": "7280e5a8d51b9132", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/components/website_loader/website_loader.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-3774d69c4289521d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/autocomplete_with_pages/url_autocomplete.js:6"}, "properties": {"repobilityId": "630e1acad5daf293", "scanner": "scanner-primary", "fingerprint": "3774d69c4289521d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/components/autocomplete_with_pages/url_autocomplete.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-cd957741aa604c57", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/components/views/theme_preview_form.js:63"}, "properties": {"repobilityId": "a434ce044bed00b8", "scanner": "scanner-primary", "fingerprint": "cd957741aa604c57", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/components/views/theme_preview_form.js"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-2b419675b2d646d0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_website_form/form.edit.js:25"}, "properties": {"repobilityId": "f3d2825d14fb6a96", "scanner": "scanner-primary", "fingerprint": "2b419675b2d646d0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_website_form/form.edit.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-af22358e6f6cc679", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_website_form/form.js:148"}, "properties": {"repobilityId": "e04b61b75f971fd2", "scanner": "scanner-primary", "fingerprint": "af22358e6f6cc679", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_website_form/form.js"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-e3bb2e6802983f04", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_announcement_scroll/announcement_scroll.js:36"}, "properties": {"repobilityId": "508b832e6edec340", "scanner": "scanner-primary", "fingerprint": "e3bb2e6802983f04", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_announcement_scroll/announcement_scroll.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-c14500adc1cd1a20", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_image_gallery/gallery_slider.js:13"}, "properties": {"repobilityId": "593cd6f91c5893be", "scanner": "scanner-primary", "fingerprint": "c14500adc1cd1a20", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_image_gallery/gallery_slider.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-ac68a682835398fb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_image_gallery/gallery_slider_001.js:5"}, "properties": {"repobilityId": "15ddce8318bc1e3b", "scanner": "scanner-primary", "fingerprint": "ac68a682835398fb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_image_gallery/gallery_slider_001.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-90bd535c8e289e5f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_tabs/tabs.js:8"}, "properties": {"repobilityId": "b9ee8e8c8ca7237b", "scanner": "scanner-primary", "fingerprint": "90bd535c8e289e5f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_tabs/tabs.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-32bd884495aa7460", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/snippets/s_dynamic_snippet/dynamic_snippet.js:177"}, "properties": {"repobilityId": "85fa8c093e8babfc", "scanner": "scanner-primary", "fingerprint": "32bd884495aa7460", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/snippets/s_dynamic_snippet/dynamic_snippet.js"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-349b2b8d8f161c7c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/website_builder.js:98"}, "properties": {"repobilityId": "78ea11fa537d72f3", "scanner": "scanner-primary", "fingerprint": "349b2b8d8f161c7c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/website_builder.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-29fe60e13ad75432", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/translation_components/attributeTranslateDialog.js:20"}, "properties": {"repobilityId": "f9da37a02cc020b2", "scanner": "scanner-primary", "fingerprint": "29fe60e13ad75432", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/translation_components/attributeTranslateDialog.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-9a34b369d1ffa3a2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translate_setup_editor_plugin.js:4"}, "properties": {"repobilityId": "a32bf5ad2e1329c9", "scanner": "scanner-primary", "fingerprint": "9a34b369d1ffa3a2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/translate_setup_editor_plugin.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-009a60343ed6f430", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/customize_website_plugin.js:342"}, "properties": {"repobilityId": "c54e6ba61f9051d8", "scanner": "scanner-primary", "fingerprint": "009a60343ed6f430", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/customize_website_plugin.js"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-149199a7c4af72bb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/carousel_option_plugin.js:69"}, "properties": {"repobilityId": "c8c01c3588314ddc", "scanner": "scanner-primary", "fingerprint": "149199a7c4af72bb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/carousel_option_plugin.js"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-81342b5266da0180", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translation_plugin.js:246"}, "properties": {"repobilityId": "13b95e9a4bd8c92c", "scanner": "scanner-primary", "fingerprint": "81342b5266da0180", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/translation_plugin.js"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-094041dbc47a4484", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/searchbar_option_plugin.js:66"}, "properties": {"repobilityId": "626b23aeb8a007e7", "scanner": "scanner-primary", "fingerprint": "094041dbc47a4484", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/searchbar_option_plugin.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-9aa8f2d03ef99c6e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/media_list_item_option.js:6"}, "properties": {"repobilityId": "866b70e3159603c9", "scanner": "scanner-primary", "fingerprint": "9aa8f2d03ef99c6e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/media_list_item_option.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-ff35bfe5411aaf01", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/cover_properties_option_plugin.js:90"}, "properties": {"repobilityId": "ccb2d0e178b19b49", "scanner": "scanner-primary", "fingerprint": "ff35bfe5411aaf01", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/cover_properties_option_plugin.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-32bc06be5483dbcf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/image_gallery_option_plugin.js:66"}, "properties": {"repobilityId": "b4f41b973a42763e", "scanner": "scanner-primary", "fingerprint": "32bc06be5483dbcf", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/image_gallery_option_plugin.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-d19e3326b1c8b075", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/dynamic_snippet_option_plugin.js:108"}, "properties": {"repobilityId": "9a190ac370bd8e75", "scanner": "scanner-primary", "fingerprint": "d19e3326b1c8b075", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/dynamic_snippet_option_plugin.js"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-b19cbf5f57e8951c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/chart_option_plugin.js:270"}, "properties": {"repobilityId": "31c5ba2c65f7e4cb", "scanner": "scanner-primary", "fingerprint": "b19cbf5f57e8951c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/chart_option_plugin.js"}, "region": {"startLine": 270}}}]}, {"ruleId": "scanner-b3f2ac07d6115641", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/countdown_option_plugin.js:25"}, "properties": {"repobilityId": "56938edfb48e4693", "scanner": "scanner-primary", "fingerprint": "b3f2ac07d6115641", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/countdown_option_plugin.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-8fbcff7ee69d5405", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/social_media_links.js:36"}, "properties": {"repobilityId": "6243113515f9f894", "scanner": "scanner-primary", "fingerprint": "8fbcff7ee69d5405", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/social_media_links.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-9d0375017142608e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/blockquote_option_plugin.js:37"}, "properties": {"repobilityId": "cc727192528729e5", "scanner": "scanner-primary", "fingerprint": "9d0375017142608e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/blockquote_option_plugin.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-e7d65767c2dd34e4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/animate_option_plugin.js:433"}, "properties": {"repobilityId": "b7f3ce7749c8916d", "scanner": "scanner-primary", "fingerprint": "e7d65767c2dd34e4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/animate_option_plugin.js"}, "region": {"startLine": 433}}}]}, {"ruleId": "scanner-2071722915d170d2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/dynamic_snippet_hook.js:8"}, "properties": {"repobilityId": "df3f694477f509d8", "scanner": "scanner-primary", "fingerprint": "2071722915d170d2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/dynamic_snippet_hook.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-a5e9e697dc31aa75", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/timeline_list_option_plugin.js:27"}, "properties": {"repobilityId": "c34541cdecab5121", "scanner": "scanner-primary", "fingerprint": "a5e9e697dc31aa75", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/timeline_list_option_plugin.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-740ce879b8d0510e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/social_media_option_plugin.js:173"}, "properties": {"repobilityId": "faf53521e7d75ad3", "scanner": "scanner-primary", "fingerprint": "740ce879b8d0510e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/social_media_option_plugin.js"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-383691ff7b14e19d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/animate_option.js:78"}, "properties": {"repobilityId": "90310ffe982dade3", "scanner": "scanner-primary", "fingerprint": "383691ff7b14e19d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/animate_option.js"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-710fb1b3999b08ff", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/map_option_plugin.js:23"}, "properties": {"repobilityId": "fcc2772df5bf685e", "scanner": "scanner-primary", "fingerprint": "710fb1b3999b08ff", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/map_option_plugin.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7542986f1e56dd67", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/button_option_plugin.js:153"}, "properties": {"repobilityId": "f5e6508fc6d6ba62", "scanner": "scanner-primary", "fingerprint": "7542986f1e56dd67", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/button_option_plugin.js"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-812cfd809b98e2ac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/table_of_content_option_plugin_translate.js:3"}, "properties": {"repobilityId": "1c7ec17d47ff3d22", "scanner": "scanner-primary", "fingerprint": "812cfd809b98e2ac", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/table_of_content_option_plugin_translate.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-c2f350bf3297abab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/facebook_option_plugin.js:49"}, "properties": {"repobilityId": "63b07cd6bdd5d56c", "scanner": "scanner-primary", "fingerprint": "c2f350bf3297abab", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/facebook_option_plugin.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-80ab3920a3d9b800", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/instagram_option_plugin.js:48"}, "properties": {"repobilityId": "7c40ef0862d87fba", "scanner": "scanner-primary", "fingerprint": "80ab3920a3d9b800", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/instagram_option_plugin.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-949867cbf8d28b59", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/options/google_maps_option/google_maps_option_plugin.js:64"}, "properties": {"repobilityId": "2c998acb6273f7c8", "scanner": "scanner-primary", "fingerprint": "949867cbf8d28b59", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/options/google_maps_option/google_maps_option_plugin.js"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-94d9d9747a39761d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/utils.js:160"}, "properties": {"repobilityId": "c9e5284adbbb661c", "scanner": "scanner-primary", "fingerprint": "94d9d9747a39761d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/form/utils.js"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-95cfb020121000a7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/form_field_option.js:120"}, "properties": {"repobilityId": "d84f30ebd318ec3f", "scanner": "scanner-primary", "fingerprint": "95cfb020121000a7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/form/form_field_option.js"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-8b73be7cf7e34a7e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/form/form_option_plugin.js:236"}, "properties": {"repobilityId": "0375258117efc17e", "scanner": "scanner-primary", "fingerprint": "8b73be7cf7e34a7e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/form/form_option_plugin.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-5b47a3670ccfd1c3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/highlight/highlight_plugin.js:250"}, "properties": {"repobilityId": "d25293bca01d2dac", "scanner": "scanner-primary", "fingerprint": "5b47a3670ccfd1c3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/highlight/highlight_plugin.js"}, "region": {"startLine": 250}}}]}, {"ruleId": "scanner-2bfbd707ce34b660", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/theme/theme_colors_option.js:59"}, "properties": {"repobilityId": "291ed6f289905f43", "scanner": "scanner-primary", "fingerprint": "2bfbd707ce34b660", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/theme/theme_colors_option.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-a249e2209b30cb8e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/theme/theme_tab_plugin.js:231"}, "properties": {"repobilityId": "3c2da0332874f791", "scanner": "scanner-primary", "fingerprint": "a249e2209b30cb8e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/theme/theme_tab_plugin.js"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-454be2d0f62d3b7d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/translation_tab/customize_translation_tab_plugin.js:110"}, "properties": {"repobilityId": "bd0e51471e243c2f", "scanner": "scanner-primary", "fingerprint": "454be2d0f62d3b7d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/translation_tab/customize_translation_tab_plugin.js"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-e39880e9ebaee4d4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/font/font_plugin.js:12"}, "properties": {"repobilityId": "9f77ed7a25b2a44b", "scanner": "scanner-primary", "fingerprint": "e39880e9ebaee4d4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/font/font_plugin.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-271209da6cfa0db3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/builder/plugins/layout_option/layout_option_plugin.js:46"}, "properties": {"repobilityId": "3063404a5a652499", "scanner": "scanner-primary", "fingerprint": "271209da6cfa0db3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/layout_option/layout_option_plugin.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-9b1266ce34f700b9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/services/website_service.js:13"}, "properties": {"repobilityId": "a8081186f808a321", "scanner": "scanner-primary", "fingerprint": "9b1266ce34f700b9", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/services/website_service.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-04461859779436ad", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/services/website_custom_menus.js:48"}, "properties": {"repobilityId": "7411fe3fbcca7f23", "scanner": "scanner-primary", "fingerprint": "04461859779436ad", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/services/website_custom_menus.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-d9870a5ebd3e2357", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/core/website_page_service.js:8"}, "properties": {"repobilityId": "1b40586c8a5aadd8", "scanner": "scanner-primary", "fingerprint": "d9870a5ebd3e2357", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/core/website_page_service.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-b997981c3a63ace7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/core/website_edit_service.js:192"}, "properties": {"repobilityId": "e08a0449657576c5", "scanner": "scanner-primary", "fingerprint": "b997981c3a63ace7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/core/website_edit_service.js"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-1ea6b43b21bc8429", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website/static/src/core/website_edit_service.js:30"}, "properties": {"repobilityId": "1e075c663c0682f0", "scanner": "scanner-primary", "fingerprint": "1ea6b43b21bc8429", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/core/website_edit_service.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-235354cab956c3d5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/website_systray_item.js:49"}, "properties": {"repobilityId": "6e0e1ea1d084b8ca", "scanner": "scanner-primary", "fingerprint": "235354cab956c3d5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/website_preview/website_systray_item.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-9e5f98bf026335e8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/edit_website_systray_item.js:27"}, "properties": {"repobilityId": "36875063362c7b09", "scanner": "scanner-primary", "fingerprint": "9e5f98bf026335e8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/website_preview/edit_website_systray_item.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-d191c19e1066932f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/website_builder_action.js:244"}, "properties": {"repobilityId": "0e3ae186ee1d55e2", "scanner": "scanner-primary", "fingerprint": "d191c19e1066932f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/website_preview/website_builder_action.js"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-5453eb57b2434632", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/website_preview/publish_website_systray_item.js:36"}, "properties": {"repobilityId": "ecddd245d7fba02b", "scanner": "scanner-primary", "fingerprint": "5453eb57b2434632", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/website_preview/publish_website_systray_item.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-8134eb418bcac9ce", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/configurator/configurator.js:913"}, "properties": {"repobilityId": "2ca94412d7b9b8ce", "scanner": "scanner-primary", "fingerprint": "8134eb418bcac9ce", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/configurator/configurator.js"}, "region": {"startLine": 913}}}]}, {"ruleId": "scanner-0c80e47cccddd5f8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website/static/src/client_actions/open_custom_menu/open_custom_menu.js:11"}, "properties": {"repobilityId": "075e1f041d5dedd9", "scanner": "scanner-primary", "fingerprint": "0c80e47cccddd5f8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/open_custom_menu/open_custom_menu.js"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-da01febfed027423", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_mail_group/static/src/snippets/s_group/mail_group.edit.js:5"}, "properties": {"repobilityId": "3ef8467533cdd1ca", "scanner": "scanner-primary", "fingerprint": "da01febfed027423", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_mail_group/static/src/snippets/s_group/mail_group.edit.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-dad8ad9cdd75d62a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_links/static/src/components/website_links_tags_wrapper.js:64"}, "properties": {"repobilityId": "fa2b5589001a41f4", "scanner": "scanner-primary", "fingerprint": "dad8ad9cdd75d62a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_links/static/src/components/website_links_tags_wrapper.js"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-fbc50b3f1615d75a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_event_track/static/src/js/service_worker.js:182"}, "properties": {"repobilityId": "393dc111e95ac339", "scanner": "scanner-primary", "fingerprint": "fbc50b3f1615d75a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_event_track/static/src/js/service_worker.js"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-efb534fa53143c0a", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website_event_track/static/src/js/service_worker.js:183"}, "properties": {"repobilityId": "5050d25cd221a115", "scanner": "scanner-primary", "fingerprint": "efb534fa53143c0a", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_event_track/static/src/js/service_worker.js"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-f0e36bef6da5d0aa", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_event_track/static/src/interactions/website_event_track_proposal_form.js:148"}, "properties": {"repobilityId": "ccd0af068d9cb90e", "scanner": "scanner-primary", "fingerprint": "f0e36bef6da5d0aa", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_event_track/static/src/interactions/website_event_track_proposal_form.js"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-f02130c3d27696c7", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/website_event_track/static/src/interactions/website_event_pwa.js:111"}, "properties": {"repobilityId": "d07ed583470c1993", "scanner": "scanner-primary", "fingerprint": "f02130c3d27696c7", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_event_track/static/src/interactions/website_event_pwa.js"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-ac69e8bc902d3edf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/survey/static/tests/components/update_flag_field.test.js:112"}, "properties": {"repobilityId": "53767745b6c3d186", "scanner": "scanner-primary", "fingerprint": "ac69e8bc902d3edf", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/survey/static/tests/components/update_flag_field.test.js"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-de73b9692757046f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/survey/static/src/js/libs/chartjs-plugin-datalabels.js:951"}, "properties": {"repobilityId": "f1c5ec85bc414295", "scanner": "scanner-primary", "fingerprint": "de73b9692757046f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/survey/static/src/js/libs/chartjs-plugin-datalabels.js"}, "region": {"startLine": 951}}}]}, {"ruleId": "scanner-ca3273629007ac07", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/go_to_oldest_unread_thread.test.js:335"}, "properties": {"repobilityId": "dcb76a1b0592883a", "scanner": "scanner-primary", "fingerprint": "ca3273629007ac07", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/static/tests/go_to_oldest_unread_thread.test.js"}, "region": {"startLine": 335}}}]}, {"ruleId": "scanner-c9608d56b1b64856", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/mock_server/mock_models/im_livechat_channel.js:8"}, "properties": {"repobilityId": "2c3f730dfc2f0475", "scanner": "scanner-primary", "fingerprint": "c9608d56b1b64856", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/static/tests/mock_server/mock_models/im_livechat_channel.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-60c51cbc4275c95b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/tests/mock_server/mock_models/discuss_channel.js:9"}, "properties": {"repobilityId": "1c5fef669729d1a4", "scanner": "scanner-primary", "fingerprint": "60c51cbc4275c95b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/static/tests/mock_server/mock_models/discuss_channel.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-de54ea6e82e63639", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/im_livechat/static/src/embed/common/mail_popout_service_patch.js:16"}, "properties": {"repobilityId": "23c93fd6bf07c105", "scanner": "scanner-primary", "fingerprint": "de54ea6e82e63639", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/static/src/embed/common/mail_popout_service_patch.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-ef6c20a4a4d4ffd2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_forum/static/src/interactions/website_forum.js:115"}, "properties": {"repobilityId": "6693ca4676b14913", "scanner": "scanner-primary", "fingerprint": "ef6c20a4a4d4ffd2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_forum/static/src/interactions/website_forum.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-3dc4e8a6673f0f1d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_mass_mailing/static/src/website_builder/mailing_list_subscribe_option_plugin.js:47"}, "properties": {"repobilityId": "b763dfc1282d2b01", "scanner": "scanner-primary", "fingerprint": "3dc4e8a6673f0f1d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_mass_mailing/static/src/website_builder/mailing_list_subscribe_option_plugin.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-8edf3a98980ae4f5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_mass_mailing/static/src/interactions/subscribe.js:87"}, "properties": {"repobilityId": "fda272ba178767c4", "scanner": "scanner-primary", "fingerprint": "8edf3a98980ae4f5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_mass_mailing/static/src/interactions/subscribe.js"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-d82777fa6c88c85b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/website_builder/blog_post_page_title.js:8"}, "properties": {"repobilityId": "295992643c827402", "scanner": "scanner-primary", "fingerprint": "d82777fa6c88c85b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_blog/static/src/website_builder/blog_post_page_title.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-55024cc37521d05a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/website_builder/dynamic_snippet_blog_posts_option_plugin.js:48"}, "properties": {"repobilityId": "b1c51fc6aaa68f0d", "scanner": "scanner-primary", "fingerprint": "55024cc37521d05a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_blog/static/src/website_builder/dynamic_snippet_blog_posts_option_plugin.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-29a6b7a4ee92f9fb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_blog/static/src/interactions/post_link.js:4"}, "properties": {"repobilityId": "4603b48a44570fae", "scanner": "scanner-primary", "fingerprint": "29a6b7a4ee92f9fb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_blog/static/src/interactions/post_link.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-f068e87e7a1d516c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_slides/static/src/js/slides_course_join.js:31"}, "properties": {"repobilityId": "071f1af005223925", "scanner": "scanner-primary", "fingerprint": "f068e87e7a1d516c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale_slides/static/src/js/slides_course_join.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-55993fe433bd7d85", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_google_map/static/src/js/website_google_map.js:48"}, "properties": {"repobilityId": "4ce26afb6f715501", "scanner": "scanner-primary", "fingerprint": "55993fe433bd7d85", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_google_map/static/src/js/website_google_map.js"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-811085ab97218a7e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/tests/generic_helpers/order_widget_util.js:88"}, "properties": {"repobilityId": "42955d4b473a9a70", "scanner": "scanner-primary", "fingerprint": "811085ab97218a7e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/tests/generic_helpers/order_widget_util.js"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-7169e036c23b9708", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/models/pos_order_line.js:471"}, "properties": {"repobilityId": "62600464c52acfe7", "scanner": "scanner-primary", "fingerprint": "7169e036c23b9708", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/models/pos_order_line.js"}, "region": {"startLine": 471}}}]}, {"ruleId": "scanner-d28c6fef070ab229", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/models/pos_order.js:689"}, "properties": {"repobilityId": "5f44d5055790bd0f", "scanner": "scanner-primary", "fingerprint": "d28c6fef070ab229", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/models/pos_order.js"}, "region": {"startLine": 689}}}]}, {"ruleId": "scanner-b64afbcbdcba69a4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.js:18"}, "properties": {"repobilityId": "e00cf44fb7f36141", "scanner": "scanner-primary", "fingerprint": "b64afbcbdcba69a4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/receipt_header/receipt_header.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-a971b921bc7593f3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/screens/ticket_screen/invoice_button/invoice_button.js:99"}, "properties": {"repobilityId": "8cce7f7dcc3fcdea", "scanner": "scanner-primary", "fingerprint": "a971b921bc7593f3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/screens/ticket_screen/invoice_button/invoice_button.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-3a15f85486dde643", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/components/navbar/navbar.js:28"}, "properties": {"repobilityId": "a6c9fca5d617cb18", "scanner": "scanner-primary", "fingerprint": "3a15f85486dde643", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/components/navbar/navbar.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-31dbc4bb8be11ef3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/components/popups/closing_popup/closing_popup.js:231"}, "properties": {"repobilityId": "4d891e264837f080", "scanner": "scanner-primary", "fingerprint": "31dbc4bb8be11ef3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/components/popups/closing_popup/closing_popup.js"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-6b4f6b1eb57ce674", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/pos_store.js:169"}, "properties": {"repobilityId": "2a1f1270f174f6f4", "scanner": "scanner-primary", "fingerprint": "6b4f6b1eb57ce674", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/services/pos_store.js"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-ffa80ad1a2685499", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/barcode_reader_service.js:25"}, "properties": {"repobilityId": "9bc53dd5348aeae4", "scanner": "scanner-primary", "fingerprint": "ffa80ad1a2685499", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/services/barcode_reader_service.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-6e8fa09e68352e73", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/point_of_sale/static/src/app/services/hardware_proxy_service.js:86"}, "properties": {"repobilityId": "58e514a4ad6c9e10", "scanner": "scanner-primary", "fingerprint": "6e8fa09e68352e73", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/services/hardware_proxy_service.js"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-131ca427e7cf380c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/replace_media.js:25"}, "properties": {"repobilityId": "1e22b7668d281a85", "scanner": "scanner-primary", "fingerprint": "131ca427e7cf380c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/test_website/static/tests/tours/replace_media.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-bbe8de774fcaf539", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/website_page_properties.js:226"}, "properties": {"repobilityId": "b90d6b53b51feae7", "scanner": "scanner-primary", "fingerprint": "bbe8de774fcaf539", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/test_website/static/tests/tours/website_page_properties.js"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-c143aa37d217b46b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/snippet_background_video.js:20"}, "properties": {"repobilityId": "1bc8bf4cb0052379", "scanner": "scanner-primary", "fingerprint": "c143aa37d217b46b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/test_website/static/tests/tours/snippet_background_video.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-5788b50c2f819e3e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/test_website/static/tests/tours/translation.js:247"}, "properties": {"repobilityId": "559585495e1f1ace", "scanner": "scanner-primary", "fingerprint": "5788b50c2f819e3e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/test_website/static/tests/tours/translation.js"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-aedb232171805efa", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/collaboration.test.js:244"}, "properties": {"repobilityId": "b01d1c71e0e20f23", "scanner": "scanner-primary", "fingerprint": "aedb232171805efa", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/collaboration.test.js"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-019d7b03177f1fc7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/history.test.js:454"}, "properties": {"repobilityId": "975b27208594cee6", "scanner": "scanner-primary", "fingerprint": "019d7b03177f1fc7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/history.test.js"}, "region": {"startLine": 454}}}]}, {"ruleId": "scanner-cc517ef25a691e06", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/color_selector.test.js:631"}, "properties": {"repobilityId": "8969c113881e717b", "scanner": "scanner-primary", "fingerprint": "cc517ef25a691e06", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/color_selector.test.js"}, "region": {"startLine": 631}}}]}, {"ruleId": "scanner-68f4d94e947ade1b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/syntax_highlighting.test.js:629"}, "properties": {"repobilityId": "c98b8bd643ab1a9f", "scanner": "scanner-primary", "fingerprint": "68f4d94e947ade1b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/syntax_highlighting.test.js"}, "region": {"startLine": 629}}}]}, {"ruleId": "scanner-0cb1ad9e4b976007", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/selection_placeholder.test.js:21"}, "properties": {"repobilityId": "51ae727eea3065a5", "scanner": "scanner-primary", "fingerprint": "0cb1ad9e4b976007", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/selection_placeholder.test.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-a8318187aa38f9dd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/odoo_collaboration.test.js:1028"}, "properties": {"repobilityId": "7b0d77a33acd778a", "scanner": "scanner-primary", "fingerprint": "a8318187aa38f9dd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/odoo_collaboration.test.js"}, "region": {"startLine": 1028}}}]}, {"ruleId": "scanner-f08f727f059d9f27", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/caption.test.js:333"}, "properties": {"repobilityId": "d5fbbd5b175a2f9c", "scanner": "scanner-primary", "fingerprint": "f08f727f059d9f27", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/caption.test.js"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-c34524b1a8d19184", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/paste.test.js:258"}, "properties": {"repobilityId": "9a4ea6d4e19b7373", "scanner": "scanner-primary", "fingerprint": "c34524b1a8d19184", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/paste.test.js"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-3e916858a1472116", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/insert/line_break.test.js:13"}, "properties": {"repobilityId": "5f8a968b61207df5", "scanner": "scanner-primary", "fingerprint": "3e916858a1472116", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/insert/line_break.test.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-2378ce07cb8b6006", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/insert/paragraph_break.test.js:25"}, "properties": {"repobilityId": "60e3d67c47b68ee5", "scanner": "scanner-primary", "fingerprint": "2378ce07cb8b6006", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/insert/paragraph_break.test.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-8067e105804ab305", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/list/delete_backward.test.js:303"}, "properties": {"repobilityId": "6b7d3403d95cdf7a", "scanner": "scanner-primary", "fingerprint": "8067e105804ab305", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/list/delete_backward.test.js"}, "region": {"startLine": 303}}}]}, {"ruleId": "scanner-1a292e2f3e49eee1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/list/paragraph_break.test.js:664"}, "properties": {"repobilityId": "546f4529e0643b2b", "scanner": "scanner-primary", "fingerprint": "1a292e2f3e49eee1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/list/paragraph_break.test.js"}, "region": {"startLine": 664}}}]}, {"ruleId": "scanner-51d94d11c6beaf7c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/utils/selection.test.js:14"}, "properties": {"repobilityId": "ae51d1d68c79c6d2", "scanner": "scanner-primary", "fingerprint": "51d94d11c6beaf7c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/utils/selection.test.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-5ae636ae259a857f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/utils/dom_info.test.js:113"}, "properties": {"repobilityId": "031eaacb5df9b513", "scanner": "scanner-primary", "fingerprint": "5ae636ae259a857f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/utils/dom_info.test.js"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-6a021427f464e718", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/collaboration.js:98"}, "properties": {"repobilityId": "946f19e4e12032b4", "scanner": "scanner-primary", "fingerprint": "6a021427f464e718", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/_helpers/collaboration.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-6b78d0e0e83f127a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/user_actions.js:172"}, "properties": {"repobilityId": "a0b18eb40c9b2714", "scanner": "scanner-primary", "fingerprint": "6b78d0e0e83f127a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/_helpers/user_actions.js"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-903a353d6ce6f4a8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/_helpers/editor.js:118"}, "properties": {"repobilityId": "aa8d7e1ba94131de", "scanner": "scanner-primary", "fingerprint": "903a353d6ce6f4a8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/_helpers/editor.js"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-67d15ba6a4182dd1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/backward.test.js:32"}, "properties": {"repobilityId": "5ebd7b2c2d0fed77", "scanner": "scanner-primary", "fingerprint": "67d15ba6a4182dd1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/delete/backward.test.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-fc1393e61d918d08", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/forward.test.js:27"}, "properties": {"repobilityId": "1299df1658d0fcbc", "scanner": "scanner-primary", "fingerprint": "fc1393e61d918d08", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/delete/forward.test.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-49d271ce5141f221", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/delete/delete_range.test.js:274"}, "properties": {"repobilityId": "b45b6f49ae664d12", "scanner": "scanner-primary", "fingerprint": "49d271ce5141f221", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/delete/delete_range.test.js"}, "region": {"startLine": 274}}}]}, {"ruleId": "scanner-75eff83543bfe46b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/link/popover.test.js:1610"}, "properties": {"repobilityId": "95c55e1d41dc7614", "scanner": "scanner-primary", "fingerprint": "75eff83543bfe46b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/link/popover.test.js"}, "region": {"startLine": 1610}}}]}, {"ruleId": "scanner-17452218523e0937", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/format/bold.test.js:314"}, "properties": {"repobilityId": "c9a9f21f86fb989a", "scanner": "scanner-primary", "fingerprint": "17452218523e0937", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/format/bold.test.js"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-a4a554f6214e4330", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/tests/format/remove_format.test.js:658"}, "properties": {"repobilityId": "042ddf56f878a9f2", "scanner": "scanner-primary", "fingerprint": "a4a554f6214e4330", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/tests/format/remove_format.test.js"}, "region": {"startLine": 658}}}]}, {"ruleId": "scanner-6351a3a40c7bdacf", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/lib/webgl-image-filter/webgl-image-filter.js:23"}, "properties": {"repobilityId": "fb03a0b09b043d71", "scanner": "scanner-primary", "fingerprint": "6351a3a40c7bdacf", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/lib/webgl-image-filter/webgl-image-filter.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-ad89fe727f6b3cf3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/lib/cropperjs/cropper.js:1014"}, "properties": {"repobilityId": "315879914928a769", "scanner": "scanner-primary", "fingerprint": "ad89fe727f6b3cf3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/lib/cropperjs/cropper.js"}, "region": {"startLine": 1014}}}]}, {"ruleId": "scanner-2b65a60a45a65b76", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/local_overlay_container.js:22"}, "properties": {"repobilityId": "4650cd8454896995", "scanner": "scanner-primary", "fingerprint": "2b65a60a45a65b76", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/local_overlay_container.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-1975b29578a3f1b3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/fields/x2many_field/x2many_media_viewer.js:56"}, "properties": {"repobilityId": "b8937d11f8f376bd", "scanner": "scanner-primary", "fingerprint": "1975b29578a3f1b3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/fields/x2many_field/x2many_media_viewer.js"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-ec915c1dd2edad78", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/fields/x2many_field/x2many_image_field.js:45"}, "properties": {"repobilityId": "d1e9ed0be3b0e5fd", "scanner": "scanner-primary", "fingerprint": "ec915c1dd2edad78", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/fields/x2many_field/x2many_image_field.js"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-d6f65bfdd13c5e65", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/dom_state.js:170"}, "properties": {"repobilityId": "cd3d3545fecfb8f0", "scanner": "scanner-primary", "fingerprint": "d6f65bfdd13c5e65", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/dom_state.js"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-3742d20b50e34998", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/src/utils/dom_state.js:53"}, "properties": {"repobilityId": "cd41795e8643aa28", "scanner": "scanner-primary", "fingerprint": "3742d20b50e34998", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/dom_state.js"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-9a8350f609addeb0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/dom_info.js:439"}, "properties": {"repobilityId": "094092184233d98b", "scanner": "scanner-primary", "fingerprint": "9a8350f609addeb0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/dom_info.js"}, "region": {"startLine": 439}}}]}, {"ruleId": "scanner-e3cb75bd703f1dcd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/formatting.js:284"}, "properties": {"repobilityId": "d70a386805732daa", "scanner": "scanner-primary", "fingerprint": "e3cb75bd703f1dcd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/formatting.js"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-149a4de49e1b7b4a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/image.js:70"}, "properties": {"repobilityId": "02f4ed95ec60ca25", "scanner": "scanner-primary", "fingerprint": "149a4de49e1b7b4a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/image.js"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-f91e37265f489937", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/drag_and_drop.js:71"}, "properties": {"repobilityId": "173276560bdfc095", "scanner": "scanner-primary", "fingerprint": "f91e37265f489937", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/drag_and_drop.js"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-6979c7b633452634", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/utils/selection.js:101"}, "properties": {"repobilityId": "b88c4f68559e0022", "scanner": "scanner-primary", "fingerprint": "6979c7b633452634", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/selection.js"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-ff5eb0384969e98c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/components/html_viewer/html_viewer.js:88"}, "properties": {"repobilityId": "bf3db7097975a3b3", "scanner": "scanner-primary", "fingerprint": "ff5eb0384969e98c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/components/html_viewer/html_viewer.js"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-d0e651c6c4de6b68", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/history_plugin.js:322"}, "properties": {"repobilityId": "892655f4c91bd672", "scanner": "scanner-primary", "fingerprint": "d0e651c6c4de6b68", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/history_plugin.js"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-09a57204aa369ba3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/split_plugin.js:163"}, "properties": {"repobilityId": "e504cc827751ae17", "scanner": "scanner-primary", "fingerprint": "09a57204aa369ba3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/split_plugin.js"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-01caf9fa68695eca", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/selection_plugin.js:1048"}, "properties": {"repobilityId": "8e9a58efe52a041e", "scanner": "scanner-primary", "fingerprint": "01caf9fa68695eca", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/selection_plugin.js"}, "region": {"startLine": 1048}}}]}, {"ruleId": "scanner-58a14c43b4327883", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/clipboard_plugin.js:382"}, "properties": {"repobilityId": "cb018de8895d47a4", "scanner": "scanner-primary", "fingerprint": "58a14c43b4327883", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/clipboard_plugin.js"}, "region": {"startLine": 382}}}]}, {"ruleId": "scanner-c38bff864a737186", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/delete_plugin.js:664"}, "properties": {"repobilityId": "6c4de48618c2e13b", "scanner": "scanner-primary", "fingerprint": "c38bff864a737186", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/delete_plugin.js"}, "region": {"startLine": 664}}}]}, {"ruleId": "scanner-f781239ccbb523cb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/protected_node_plugin.js:39"}, "properties": {"repobilityId": "2b5769cef74fc195", "scanner": "scanner-primary", "fingerprint": "f781239ccbb523cb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/protected_node_plugin.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-c6426fe9665043cd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/core/format_plugin.js:63"}, "properties": {"repobilityId": "dc05c08f5d67e256", "scanner": "scanner-primary", "fingerprint": "c6426fe9665043cd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/format_plugin.js"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-1ec615b58fc5504b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/movenode_plugin.js:315"}, "properties": {"repobilityId": "16643c5371899e03", "scanner": "scanner-primary", "fingerprint": "1ec615b58fc5504b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/movenode_plugin.js"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-de00de2da7ace56b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/position_plugin.js:17"}, "properties": {"repobilityId": "a253cad36a035b4b", "scanner": "scanner-primary", "fingerprint": "de00de2da7ace56b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/position_plugin.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-e2ba02df49b4c839", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/table/table_resize_plugin.js:126"}, "properties": {"repobilityId": "35053ecf66d73587", "scanner": "scanner-primary", "fingerprint": "e2ba02df49b4c839", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/table/table_resize_plugin.js"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-9cf757a404387e08", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_crop_plugin.js:51"}, "properties": {"repobilityId": "bddc70fe7db9a209", "scanner": "scanner-primary", "fingerprint": "9cf757a404387e08", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/media/image_crop_plugin.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-64e45944749fc0a1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_post_process_plugin.js:311"}, "properties": {"repobilityId": "bc0a65a4edd8f93f", "scanner": "scanner-primary", "fingerprint": "64e45944749fc0a1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/media/image_post_process_plugin.js"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-efaf675322ab6a81", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/image_crop.js:124"}, "properties": {"repobilityId": "3bcd8ce6bbdac634", "scanner": "scanner-primary", "fingerprint": "efaf675322ab6a81", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/media/image_crop.js"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-fc3b45bcff6d37d7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/media_dialog/media_dialog.js:283"}, "properties": {"repobilityId": "c6320ad2fdb4404f", "scanner": "scanner-primary", "fingerprint": "fc3b45bcff6d37d7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/media/media_dialog/media_dialog.js"}, "region": {"startLine": 283}}}]}, {"ruleId": "scanner-c24192cec4bc1825", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/media/media_dialog/file_selector.js:266"}, "properties": {"repobilityId": "264e1651dc60b3c6", "scanner": "scanner-primary", "fingerprint": "c24192cec4bc1825", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/media/media_dialog/file_selector.js"}, "region": {"startLine": 266}}}]}, {"ruleId": "scanner-e38ce5da5a12d169", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_plugin.js:1280"}, "properties": {"repobilityId": "dbfc363c1af0b3eb", "scanner": "scanner-primary", "fingerprint": "e38ce5da5a12d169", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/link/link_plugin.js"}, "region": {"startLine": 1280}}}]}, {"ruleId": "scanner-d3cc04d901100b4a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_selection_plugin.js:42"}, "properties": {"repobilityId": "0f0b0fec3e4a2d72", "scanner": "scanner-primary", "fingerprint": "d3cc04d901100b4a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/link/link_selection_plugin.js"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-9ef7f6df26c957fe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_popover.js:364"}, "properties": {"repobilityId": "f0c3c75ec5e335a5", "scanner": "scanner-primary", "fingerprint": "9ef7f6df26c957fe", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/link/link_popover.js"}, "region": {"startLine": 364}}}]}, {"ruleId": "scanner-340d234d33ee4e90", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/link/link_paste_plugin.js:26"}, "properties": {"repobilityId": "6948ec6d7b56e96d", "scanner": "scanner-primary", "fingerprint": "340d234d33ee4e90", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/link/link_paste_plugin.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-d940891250443129", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/chatgpt/chatgpt_translate_plugin.js:103"}, "properties": {"repobilityId": "bf1ec3ed73b0074e", "scanner": "scanner-primary", "fingerprint": "d940891250443129", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/chatgpt/chatgpt_translate_plugin.js"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-c3bcf26091892acd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/main/toolbar/toolbar_plugin.js:487"}, "properties": {"repobilityId": "4fc0d2822aafed4b", "scanner": "scanner-primary", "fingerprint": "c3bcf26091892acd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/toolbar/toolbar_plugin.js"}, "region": {"startLine": 487}}}]}, {"ruleId": "scanner-e9a8ae7b297821e4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/embedded_component_plugin.js:57"}, "properties": {"repobilityId": "106b286ec148ed84", "scanner": "scanner-primary", "fingerprint": "e9a8ae7b297821e4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/embedded_component_plugin.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-a1f90b8f9dadda3f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_selection_plugin.js:74"}, "properties": {"repobilityId": "db704a84067fc080", "scanner": "scanner-primary", "fingerprint": "a1f90b8f9dadda3f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/collaboration_selection_plugin.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-9fb4520b71e9756d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_plugin.js:136"}, "properties": {"repobilityId": "fedad000cea9db5c", "scanner": "scanner-primary", "fingerprint": "9fb4520b71e9756d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/collaboration_plugin.js"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-d23b13ba2ebdd119", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/PeerToPeer.js:662"}, "properties": {"repobilityId": "15b9894e9cb35e17", "scanner": "scanner-primary", "fingerprint": "d23b13ba2ebdd119", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/PeerToPeer.js"}, "region": {"startLine": 662}}}]}, {"ruleId": "scanner-df80a646d595f73a", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/html_editor/static/src/others/collaboration/PeerToPeer.js:51"}, "properties": {"repobilityId": "de418f5cb20b50d5", "scanner": "scanner-primary", "fingerprint": "df80a646d595f73a", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/PeerToPeer.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-b90d4f4665872c8d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:112"}, "properties": {"repobilityId": "680a2e311af0d587", "scanner": "scanner-primary", "fingerprint": "b90d4f4665872c8d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-e7560991e2829b58", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/portal_rating/static/src/interactions/portal_rating_composer.js:72"}, "properties": {"repobilityId": "02577b8323417204", "scanner": "scanner-primary", "fingerprint": "e7560991e2829b58", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/portal_rating/static/src/interactions/portal_rating_composer.js"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-b15f681cff1c830c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/portal_rating/static/src/interactions/portal_composer.js:148"}, "properties": {"repobilityId": "2db5116a71e95cb8", "scanner": "scanner-primary", "fingerprint": "b15f681cff1c830c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/portal_rating/static/src/interactions/portal_composer.js"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-82cbc46fb2a891a0", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/pos_imin/static/lib/imin-printer/imin-printer.js:709"}, "properties": {"repobilityId": "96e5317a97ac317b", "scanner": "scanner-primary", "fingerprint": "82cbc46fb2a891a0", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_imin/static/lib/imin-printer/imin-printer.js"}, "region": {"startLine": 709}}}]}, {"ruleId": "scanner-517dd0d054cf1267", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/qunit.js:568"}, "properties": {"repobilityId": "6ad1b1bdf0ea2180", "scanner": "scanner-primary", "fingerprint": "517dd0d054cf1267", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/legacy/qunit.js"}, "region": {"startLine": 568}}}]}, {"ruleId": "scanner-b45082c17f6d1df0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/helpers/mock_server.js:241"}, "properties": {"repobilityId": "22eedeb0e1ac79a4", "scanner": "scanner-primary", "fingerprint": "b45082c17f6d1df0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/legacy/helpers/mock_server.js"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-459cb98c81430540", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/legacy/views/graph_view_tests.js:6"}, "properties": {"repobilityId": "b5c7194176e82436", "scanner": "scanner-primary", "fingerprint": "459cb98c81430540", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/legacy/views/graph_view_tests.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-a09fcc6bd6aef4ec", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/template_inheritance.test.js:53"}, "properties": {"repobilityId": "757050b4eae39f6c", "scanner": "scanner-primary", "fingerprint": "a09fcc6bd6aef4ec", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/core/template_inheritance.test.js"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-bf8f7210fea0c480", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/autocomplete.test.js:92"}, "properties": {"repobilityId": "58deb3ead337d4a0", "scanner": "scanner-primary", "fingerprint": "bf8f7210fea0c480", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/core/autocomplete.test.js"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-83a72ffbabd0a1ef", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/core/position/position_hook.test.js:691"}, "properties": {"repobilityId": "fa04205e99081e24", "scanner": "scanner-primary", "fingerprint": "83a72ffbabd0a1ef", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/core/position/position_hook.test.js"}, "region": {"startLine": 691}}}]}, {"ruleId": "scanner-cc3e7079dabe2e5b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/_framework/mock_server/mock_model.js:899"}, "properties": {"repobilityId": "5a25ec692d156ce9", "scanner": "scanner-primary", "fingerprint": "cc3e7079dabe2e5b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/_framework/mock_server/mock_model.js"}, "region": {"startLine": 899}}}]}, {"ruleId": "scanner-ec96272edfc8a3d8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/webclient/navbar.test.js:262"}, "properties": {"repobilityId": "0e5c745426a41c3d", "scanner": "scanner-primary", "fingerprint": "ec96272edfc8a3d8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/webclient/navbar.test.js"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-36914391148cc797", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/webclient/actions/load_state.test.js:406"}, "properties": {"repobilityId": "071b8de9c3e20466", "scanner": "scanner-primary", "fingerprint": "36914391148cc797", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/webclient/actions/load_state.test.js"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-766c020cfc09e4b5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2many_field.test.js:282"}, "properties": {"repobilityId": "f3cbbc75751f0629", "scanner": "scanner-primary", "fingerprint": "766c020cfc09e4b5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/fields/many2many_field.test.js"}, "region": {"startLine": 282}}}]}, {"ruleId": "scanner-32459008f0856d49", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2one_field.test.js:252"}, "properties": {"repobilityId": "05025016c4c4df57", "scanner": "scanner-primary", "fingerprint": "32459008f0856d49", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/fields/many2one_field.test.js"}, "region": {"startLine": 252}}}]}, {"ruleId": "scanner-0d39efa0375e135a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/many2many_tags_field.test.js:643"}, "properties": {"repobilityId": "77613579c55653fd", "scanner": "scanner-primary", "fingerprint": "0d39efa0375e135a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/fields/many2many_tags_field.test.js"}, "region": {"startLine": 643}}}]}, {"ruleId": "scanner-0b4e4ca24b3d2c37", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/fields/one2many_field.test.js:1477"}, "properties": {"repobilityId": "f4c4bdfc136ab607", "scanner": "scanner-primary", "fingerprint": "0b4e4ca24b3d2c37", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/fields/one2many_field.test.js"}, "region": {"startLine": 1477}}}]}, {"ruleId": "scanner-103b5cb7e3949cf5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/form/form_view.test.js:10510"}, "properties": {"repobilityId": "1cbed1fa406951ee", "scanner": "scanner-primary", "fingerprint": "103b5cb7e3949cf5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/form/form_view.test.js"}, "region": {"startLine": 10510}}}]}, {"ruleId": "scanner-b65af3bcd98b3344", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/list/list_view.test.js:3153"}, "properties": {"repobilityId": "6d06e598efe71832", "scanner": "scanner-primary", "fingerprint": "b65af3bcd98b3344", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/list/list_view.test.js"}, "region": {"startLine": 3153}}}]}, {"ruleId": "scanner-bd7376d7a68f6fcd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/kanban/kanban_view.test.js:1318"}, "properties": {"repobilityId": "46a0c6c3a31ed8f8", "scanner": "scanner-primary", "fingerprint": "bd7376d7a68f6fcd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/kanban/kanban_view.test.js"}, "region": {"startLine": 1318}}}]}, {"ruleId": "scanner-6522fbf8ff32930a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/widgets/attach_document.test.js:30"}, "properties": {"repobilityId": "3f6e4e3a6e99e131", "scanner": "scanner-primary", "fingerprint": "6522fbf8ff32930a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/widgets/attach_document.test.js"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-52864b23b8a4ff95", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/calendar/calendar_multi_create.test.js:39"}, "properties": {"repobilityId": "08f1f7a438544499", "scanner": "scanner-primary", "fingerprint": "52864b23b8a4ff95", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/calendar/calendar_multi_create.test.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-a5eddc8a95c7292c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/tests/views/graph/graph_view.test.js:3093"}, "properties": {"repobilityId": "0d978990f7b2ce5b", "scanner": "scanner-primary", "fingerprint": "a5eddc8a95c7292c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/views/graph/graph_view.test.js"}, "region": {"startLine": 3093}}}]}, {"ruleId": "scanner-a59b2ae35e2f0244", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/stacktracejs/stacktrace.js:1575"}, "properties": {"repobilityId": "fe1340ed5925b47c", "scanner": "scanner-primary", "fingerprint": "a59b2ae35e2f0244", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/stacktracejs/stacktrace.js"}, "region": {"startLine": 1575}}}]}, {"ruleId": "scanner-0267de4afafe3a24", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/jquery/jquery.js:794"}, "properties": {"repobilityId": "53ee1f1c037c0ea1", "scanner": "scanner-primary", "fingerprint": "0267de4afafe3a24", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/jquery/jquery.js"}, "region": {"startLine": 794}}}]}, {"ruleId": "scanner-7da9b15d3f39b5c4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/daygrid/index.global.js:222"}, "properties": {"repobilityId": "830c66dc1a33eadc", "scanner": "scanner-primary", "fingerprint": "7da9b15d3f39b5c4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/daygrid/index.global.js"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-e2fa1266795eefa2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/list/index.global.js:28"}, "properties": {"repobilityId": "6ca7a6f90ebaf6c4", "scanner": "scanner-primary", "fingerprint": "e2fa1266795eefa2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/list/index.global.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-c11bc2ca0298337d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/interaction/index.global.js:193"}, "properties": {"repobilityId": "961c7a10a7c33177", "scanner": "scanner-primary", "fingerprint": "c11bc2ca0298337d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/interaction/index.global.js"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-bdd2ee9567f53729", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/timegrid/index.global.js:50"}, "properties": {"repobilityId": "9c4499f3ca5b1bd3", "scanner": "scanner-primary", "fingerprint": "bdd2ee9567f53729", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/timegrid/index.global.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-f2e0ca894959f98d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/luxon3/index.global.js:76"}, "properties": {"repobilityId": "fb7539cabaf1898a", "scanner": "scanner-primary", "fingerprint": "f2e0ca894959f98d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/luxon3/index.global.js"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-f98c5681adabad03", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:122"}, "properties": {"repobilityId": "38197748a71ff2e4", "scanner": "scanner-primary", "fingerprint": "f98c5681adabad03", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/core/index.global.js"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-a5366b86e0a67258", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:3174"}, "properties": {"repobilityId": "75294869a75ae116", "scanner": "scanner-primary", "fingerprint": "a5366b86e0a67258", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/core/index.global.js"}, "region": {"startLine": 3174}}}]}, {"ruleId": "scanner-2ca088d145017882", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:3027"}, "properties": {"repobilityId": "9dad5107f64efe5c", "scanner": "scanner-primary", "fingerprint": "2ca088d145017882", "layer": "frontend", "severity": "medium", "confidence": 0.8, "tags": ["frontend-quality", "fq.dangerous-html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/core/index.global.js"}, "region": {"startLine": 3027}}}]}, {"ruleId": "scanner-46e7d5c56b9ee574", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/owl/owl.js:2206"}, "properties": {"repobilityId": "3d2fb411c065f5ad", "scanner": "scanner-primary", "fingerprint": "46e7d5c56b9ee574", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/owl/owl.js"}, "region": {"startLine": 2206}}}]}, {"ruleId": "scanner-bfb9ca09f706b187", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/owl/owl.js:2763"}, "properties": {"repobilityId": "ac5290bc09bd4c7b", "scanner": "scanner-primary", "fingerprint": "bfb9ca09f706b187", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/owl/owl.js"}, "region": {"startLine": 2763}}}]}, {"ruleId": "scanner-4e2a8533d90689d0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/luxon/luxon.js:847"}, "properties": {"repobilityId": "462d60a693aeb55b", "scanner": "scanner-primary", "fingerprint": "4e2a8533d90689d0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/luxon/luxon.js"}, "region": {"startLine": 847}}}]}, {"ruleId": "scanner-21f31881fd9adba7", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/ace/ace.js:7204"}, "properties": {"repobilityId": "3ef09f4755219417", "scanner": "scanner-primary", "fingerprint": "21f31881fd9adba7", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/ace/ace.js"}, "region": {"startLine": 7204}}}]}, {"ruleId": "scanner-d3e0f67457c5ffc3", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/lib/prismjs/prism.js:1213"}, "properties": {"repobilityId": "3454a02a30170e9b", "scanner": "scanner-primary", "fingerprint": "d3e0f67457c5ffc3", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/prismjs/prism.js"}, "region": {"startLine": 1213}}}]}, {"ruleId": "scanner-a9b43f95df535390", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/pdfjs/web/debugger.js:142"}, "properties": {"repobilityId": "f18d05d8f6cf0a22", "scanner": "scanner-primary", "fingerprint": "a9b43f95df535390", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/pdfjs/web/debugger.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-5e125f2c1af049d5", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/lib/pdfjs/web/viewer.js:7990"}, "properties": {"repobilityId": "dcad246987fb0264", "scanner": "scanner-primary", "fingerprint": "5e125f2c1af049d5", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/pdfjs/web/viewer.js"}, "region": {"startLine": 7990}}}]}, {"ruleId": "scanner-f22c21a460aabbcb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/start.js:57"}, "properties": {"repobilityId": "286f2fa27c0d616e", "scanner": "scanner-primary", "fingerprint": "f22c21a460aabbcb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/start.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-0c6e0670f43f5fc4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/search/search_model.js:615"}, "properties": {"repobilityId": "be57a5ab0d90a871", "scanner": "scanner-primary", "fingerprint": "0c6e0670f43f5fc4", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/search/search_model.js"}, "region": {"startLine": 615}}}]}, {"ruleId": "scanner-72f86dd1f97b5342", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/legacy/js/public/lazyloader.js:78"}, "properties": {"repobilityId": "eadea70a24a38cb7", "scanner": "scanner-primary", "fingerprint": "72f86dd1f97b5342", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/legacy/js/public/lazyloader.js"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-1bb1ac3f2ca04601", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/legacy/js/public/public_root.js:24"}, "properties": {"repobilityId": "f797088b34ca39ca", "scanner": "scanner-primary", "fingerprint": "1bb1ac3f2ca04601", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/legacy/js/public/public_root.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-b863407dac4c830a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/user.js:97"}, "properties": {"repobilityId": "d78f4cdb514f07bc", "scanner": "scanner-primary", "fingerprint": "b863407dac4c830a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/user.js"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-3c8e2c8aa6151094", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/network/rpc_cache.js:122"}, "properties": {"repobilityId": "819ab9255a7ac0ce", "scanner": "scanner-primary", "fingerprint": "3c8e2c8aa6151094", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/network/rpc_cache.js"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-952c4f70013f0e87", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/ui/ui_service.js:171"}, "properties": {"repobilityId": "714b6d435338c206", "scanner": "scanner-primary", "fingerprint": "952c4f70013f0e87", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/ui/ui_service.js"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-69a770293f8c5b3f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/utils/colors.js:253"}, "properties": {"repobilityId": "bb3324ea66b6d039", "scanner": "scanner-primary", "fingerprint": "69a770293f8c5b3f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/utils/colors.js"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-ce0d890832134bbc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/utils/draggable_hook_builder.js:513"}, "properties": {"repobilityId": "c3cf146b52c15f7e", "scanner": "scanner-primary", "fingerprint": "ce0d890832134bbc", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/utils/draggable_hook_builder.js"}, "region": {"startLine": 513}}}]}, {"ruleId": "scanner-b8ccd8a1fd4e0562", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/errors/scss_error_dialog.js:45"}, "properties": {"repobilityId": "e8a06150e82b2645", "scanner": "scanner-primary", "fingerprint": "b8ccd8a1fd4e0562", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/errors/scss_error_dialog.js"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-e45aaa54629cdf95", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/color_picker/color_picker.js:47"}, "properties": {"repobilityId": "2b89776f6c5202d8", "scanner": "scanner-primary", "fingerprint": "e45aaa54629cdf95", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/color_picker/color_picker.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-b8241d0e48822da0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.js:444"}, "properties": {"repobilityId": "35a4942030f5d090", "scanner": "scanner-primary", "fingerprint": "b8241d0e48822da0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.js"}, "region": {"startLine": 444}}}]}, {"ruleId": "scanner-9c0a59a8bbdc94a7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/barcode/barcode_video_scanner.js:131"}, "properties": {"repobilityId": "038c7bb4050c8cb8", "scanner": "scanner-primary", "fingerprint": "9c0a59a8bbdc94a7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/barcode/barcode_video_scanner.js"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-c7aca8a92be7462f", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/core/effects/effect_service.js:38"}, "properties": {"repobilityId": "b245559778f11c82", "scanner": "scanner-primary", "fingerprint": "c7aca8a92be7462f", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/effects/effect_service.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-b46c1c4c2c8d224a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/browser/router.js:420"}, "properties": {"repobilityId": "7babf39faf23c04d", "scanner": "scanner-primary", "fingerprint": "b46c1c4c2c8d224a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/browser/router.js"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-3920773a16ac1f06", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/core/py_js/py_tokenizer.js:111"}, "properties": {"repobilityId": "ff25c771b1c8bc2c", "scanner": "scanner-primary", "fingerprint": "3920773a16ac1f06", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/py_js/py_tokenizer.js"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-71e54f5e100ccf2b", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/model/sample_server.js:149"}, "properties": {"repobilityId": "63c2f466a00bbebc", "scanner": "scanner-primary", "fingerprint": "71e54f5e100ccf2b", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/model/sample_server.js"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-4f937e3e9b9c2fe5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/model/relational_model/utils.js:569"}, "properties": {"repobilityId": "8c797cf2912560a1", "scanner": "scanner-primary", "fingerprint": "4f937e3e9b9c2fe5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/model/relational_model/utils.js"}, "region": {"startLine": 569}}}]}, {"ruleId": "scanner-a2b82f52fa08fe75", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/model/relational_model/relational_model.js:60"}, "properties": {"repobilityId": "2201cbf5390ce5e8", "scanner": "scanner-primary", "fingerprint": "a2b82f52fa08fe75", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/model/relational_model/relational_model.js"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-00911b8de4bd82a7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/webclient/actions/action_service.js:833"}, "properties": {"repobilityId": "aa5c6fc1cd87b96f", "scanner": "scanner-primary", "fingerprint": "00911b8de4bd82a7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/webclient/actions/action_service.js"}, "region": {"startLine": 833}}}]}, {"ruleId": "scanner-6ed9453d0ed57bc2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/webclient/actions/reports/utils.js:35"}, "properties": {"repobilityId": "7432efa5ad5a58cd", "scanner": "scanner-primary", "fingerprint": "6ed9453d0ed57bc2", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/webclient/actions/reports/utils.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-0f67ba19190d8196", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web/static/src/webclient/clickbot/clickbot.js:121"}, "properties": {"repobilityId": "cd8268bd9dfbef5c", "scanner": "scanner-primary", "fingerprint": "0f67ba19190d8196", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/webclient/clickbot/clickbot.js"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-570039ba9089241a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/view.js:447"}, "properties": {"repobilityId": "63529349e4674b0c", "scanner": "scanner-primary", "fingerprint": "570039ba9089241a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/view.js"}, "region": {"startLine": 447}}}]}, {"ruleId": "scanner-b743ca116f16720d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/relational_utils.js:848"}, "properties": {"repobilityId": "07722f258e145538", "scanner": "scanner-primary", "fingerprint": "b743ca116f16720d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/fields/relational_utils.js"}, "region": {"startLine": 848}}}]}, {"ruleId": "scanner-8dbc5a65a13c9f96", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js:58"}, "properties": {"repobilityId": "11ba6f00541b95d1", "scanner": "scanner-primary", "fingerprint": "8dbc5a65a13c9f96", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/fields/json_checkboxes/json_checkboxes_field.js"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-ab4b0f66bd5e485c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/x2many/x2many_field.js:200"}, "properties": {"repobilityId": "9365d5e6245c8926", "scanner": "scanner-primary", "fingerprint": "ab4b0f66bd5e485c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/fields/x2many/x2many_field.js"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-05cfa52685e6727b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/fields/float_toggle/float_toggle_field.js:23"}, "properties": {"repobilityId": "48955e6c4bcc5450", "scanner": "scanner-primary", "fingerprint": "05cfa52685e6727b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/fields/float_toggle/float_toggle_field.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7f16bd7138bf4d09", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_renderer.js:151"}, "properties": {"repobilityId": "84841a45c10d2402", "scanner": "scanner-primary", "fingerprint": "7f16bd7138bf4d09", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/form/form_renderer.js"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-33cc47f1d74504f8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_controller.js:653"}, "properties": {"repobilityId": "4a6706f9ef921a26", "scanner": "scanner-primary", "fingerprint": "33cc47f1d74504f8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/form/form_controller.js"}, "region": {"startLine": 653}}}]}, {"ruleId": "scanner-ef9a3459353c04b9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/form/form_compiler.js:365"}, "properties": {"repobilityId": "521f972c0b16a8fd", "scanner": "scanner-primary", "fingerprint": "ef9a3459353c04b9", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/form/form_compiler.js"}, "region": {"startLine": 365}}}]}, {"ruleId": "scanner-95e178a8942e24dc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/list/list_renderer.js:289"}, "properties": {"repobilityId": "55a7a50db56ffb64", "scanner": "scanner-primary", "fingerprint": "95e178a8942e24dc", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/list/list_renderer.js"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-98ebb171a6a9cf2f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/list/list_arch_parser.js:137"}, "properties": {"repobilityId": "e0e9457194c829aa", "scanner": "scanner-primary", "fingerprint": "98ebb171a6a9cf2f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/list/list_arch_parser.js"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-4043b2b9e9ed21e6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/kanban/kanban_controller.js:459"}, "properties": {"repobilityId": "fe203756c4cf90f8", "scanner": "scanner-primary", "fingerprint": "4043b2b9e9ed21e6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/kanban/kanban_controller.js"}, "region": {"startLine": 459}}}]}, {"ruleId": "scanner-397f74d989b3acc6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/kanban/kanban_record_quick_create.js:186"}, "properties": {"repobilityId": "b755b3986469d26b", "scanner": "scanner-primary", "fingerprint": "397f74d989b3acc6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/kanban/kanban_record_quick_create.js"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-8e1ad28b016cfeca", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/pivot/pivot_model.js:1051"}, "properties": {"repobilityId": "278ac08bb5f8c2a6", "scanner": "scanner-primary", "fingerprint": "8e1ad28b016cfeca", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/pivot/pivot_model.js"}, "region": {"startLine": 1051}}}]}, {"ruleId": "scanner-7bd10027858e5177", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/view_components/multi_selection_buttons.js:105"}, "properties": {"repobilityId": "90bf479bac620fe1", "scanner": "scanner-primary", "fingerprint": "7bd10027858e5177", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/view_components/multi_selection_buttons.js"}, "region": {"startLine": 105}}}]}, {"ruleId": "scanner-98d7748790cd2c97", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web/static/src/views/calendar/calendar_model.js:524"}, "properties": {"repobilityId": "c14adefa8ca7b05e", "scanner": "scanner-primary", "fingerprint": "98d7748790cd2c97", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/views/calendar/calendar_model.js"}, "region": {"startLine": 524}}}]}, {"ruleId": "scanner-ef75eadd714e39be", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/helpers.js:226"}, "properties": {"repobilityId": "ed2c63f9b93de97d", "scanner": "scanner-primary", "fingerprint": "ef75eadd714e39be", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/tests/helpers.js"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-c806ab69b5c408de", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/field_change_replication_plugin.test.js:117"}, "properties": {"repobilityId": "d3c7266b48233278", "scanner": "scanner-primary", "fingerprint": "c806ab69b5c408de", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/tests/field_change_replication_plugin.test.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-7cfac0b6078b66d7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/composite_action.test.js:12"}, "properties": {"repobilityId": "6fd1e5c1aae1a2b8", "scanner": "scanner-primary", "fingerprint": "7cfac0b6078b66d7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/tests/composite_action.test.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-c945c5532fc9afba", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/tests/block_tab/snippet_content.test.js:177"}, "properties": {"repobilityId": "147fcfa55779cbc7", "scanner": "scanner-primary", "fingerprint": "c945c5532fc9afba", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/tests/block_tab/snippet_content.test.js"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-c37245043b36bdfe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/builder.js:99"}, "properties": {"repobilityId": "9305337cb5e2df92", "scanner": "scanner-primary", "fingerprint": "c37245043b36bdfe", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/builder.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-37f74b19a99b17fe", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/utils/utils_css.js:119"}, "properties": {"repobilityId": "03247bb81cf32858", "scanner": "scanner-primary", "fingerprint": "37f74b19a99b17fe", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/utils/utils_css.js"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-e625ac379d833b7b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/snippets/snippet_service.js:316"}, "properties": {"repobilityId": "ae1af209a9ec52c1", "scanner": "scanner-primary", "fingerprint": "e625ac379d833b7b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/snippets/snippet_service.js"}, "region": {"startLine": 316}}}]}, {"ruleId": "scanner-64837e499a3be44c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/utils.js:404"}, "properties": {"repobilityId": "bec57dfacc68ad42", "scanner": "scanner-primary", "fingerprint": "64837e499a3be44c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/utils.js"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-3e8d115551f81a12", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/dropzone_selector_plugin.js:16"}, "properties": {"repobilityId": "fb29e7af7982f71d", "scanner": "scanner-primary", "fingerprint": "3e8d115551f81a12", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/dropzone_selector_plugin.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-a71802d8c9b7e4fd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/compatibility_inline_border_removal_plugin.js:37"}, "properties": {"repobilityId": "df0972fe545b23f8", "scanner": "scanner-primary", "fingerprint": "a71802d8c9b7e4fd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/compatibility_inline_border_removal_plugin.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-478e7e6f01caed6f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/disable_snippets_plugin.js:26"}, "properties": {"repobilityId": "8022516fbdf6c610", "scanner": "scanner-primary", "fingerprint": "478e7e6f01caed6f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/disable_snippets_plugin.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-d86c606dafe3aac1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/operation.js:3"}, "properties": {"repobilityId": "2eb5c88d7b288c79", "scanner": "scanner-primary", "fingerprint": "d86c606dafe3aac1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/operation.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-c6fe08baedb664eb", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/composite_action_plugin.js:14"}, "properties": {"repobilityId": "262a72ee3cffdcd5", "scanner": "scanner-primary", "fingerprint": "c6fe08baedb664eb", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/composite_action_plugin.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-ebad4f23b9eb9474", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/core_builder_action_plugin.js:216"}, "properties": {"repobilityId": "207ed9d3d220a898", "scanner": "scanner-primary", "fingerprint": "ebad4f23b9eb9474", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/core_builder_action_plugin.js"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-9aaae0b1b792a618", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/core_setup_editor_plugin.js:4"}, "properties": {"repobilityId": "9300ae34c6134c54", "scanner": "scanner-primary", "fingerprint": "9aaae0b1b792a618", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/core_setup_editor_plugin.js"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-5ff8a0f5515b72c1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_options_plugin.js:164"}, "properties": {"repobilityId": "44d7de960a7153bb", "scanner": "scanner-primary", "fingerprint": "5ff8a0f5515b72c1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/builder_options_plugin.js"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-b33487a7e0ae9176", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/clone_plugin.js:22"}, "properties": {"repobilityId": "06bca9cd680e15d6", "scanner": "scanner-primary", "fingerprint": "b33487a7e0ae9176", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/clone_plugin.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-b3861b805fe0b660", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/anchor/anchor_plugin.js:62"}, "properties": {"repobilityId": "171ff538da2d77e0", "scanner": "scanner-primary", "fingerprint": "b3861b805fe0b660", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/anchor/anchor_plugin.js"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-6f0cf29928ae1ed1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/overlay_buttons/overlay_buttons_plugin.js:40"}, "properties": {"repobilityId": "0e30964b27c3aef0", "scanner": "scanner-primary", "fingerprint": "6f0cf29928ae1ed1", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/overlay_buttons/overlay_buttons_plugin.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-6c693f419bf113bc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_overlay/builder_overlay.js:10"}, "properties": {"repobilityId": "e8ae1b8f7e8ad7a6", "scanner": "scanner-primary", "fingerprint": "6c693f419bf113bc", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/builder_overlay/builder_overlay.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-0cee5d0cc638b471", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/builder_overlay/builder_overlay_plugin.js:35"}, "properties": {"repobilityId": "267c98573a019415", "scanner": "scanner-primary", "fingerprint": "0cee5d0cc638b471", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/builder_overlay/builder_overlay_plugin.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-3248c3252051828d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/builder_colorpicker.js:20"}, "properties": {"repobilityId": "e29297e4cc9c6b93", "scanner": "scanner-primary", "fingerprint": "3248c3252051828d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/building_blocks/builder_colorpicker.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-29f449548a32a75f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/builder_select_item.js:32"}, "properties": {"repobilityId": "02b6da6e62841b71", "scanner": "scanner-primary", "fingerprint": "29f449548a32a75f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/building_blocks/builder_select_item.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-0586cb608fd6948a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/core/building_blocks/model_many2many.js:61"}, "properties": {"repobilityId": "9b0696795a9a682a", "scanner": "scanner-primary", "fingerprint": "0586cb608fd6948a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/building_blocks/model_many2many.js"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-7802804510efc13e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/sidebar/block_tab.js:215"}, "properties": {"repobilityId": "7b8e68dc24b8354f", "scanner": "scanner-primary", "fingerprint": "7802804510efc13e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/sidebar/block_tab.js"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-12bdcf8e0adc823a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/border_configurator_option.js:15"}, "properties": {"repobilityId": "e79460edb1e7c2c0", "scanner": "scanner-primary", "fingerprint": "12bdcf8e0adc823a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/border_configurator_option.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-22d5f29fe81998fd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/image/image_shape_option_plugin.js:109"}, "properties": {"repobilityId": "7a09d3ed6afb7007", "scanner": "scanner-primary", "fingerprint": "22d5f29fe81998fd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/image/image_shape_option_plugin.js"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-d0f76728153572b8", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/image/image_shapes_definition.js:10"}, "properties": {"repobilityId": "fcfe528e8bdf67b4", "scanner": "scanner-primary", "fingerprint": "d0f76728153572b8", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/image/image_shapes_definition.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-90875cff1e9463b0", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/background_option/background_shape_option_plugin.js:63"}, "properties": {"repobilityId": "c59be08515df8dc4", "scanner": "scanner-primary", "fingerprint": "90875cff1e9463b0", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/background_option/background_shape_option_plugin.js"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-a9cb31eeed06421e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/html_builder/static/src/plugins/background_option/background_image_option_plugin.js:137"}, "properties": {"repobilityId": "1a6fe3ffbaf2db72", "scanner": "scanner-primary", "fingerprint": "a9cb31eeed06421e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/background_option/background_image_option_plugin.js"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-a8e1379f55d85924", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_discount/static/src/app/screens/product_screen/control_buttons/control_buttons.js:20"}, "properties": {"repobilityId": "13e25127275e0b97", "scanner": "scanner-primary", "fingerprint": "a8e1379f55d85924", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_discount/static/src/app/screens/product_screen/control_buttons/control_buttons.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-0f415b3ed98bd9b5", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_autocomplete/static/tests/autocomplete_tour.js:28"}, "properties": {"repobilityId": "2562425161f3a556", "scanner": "scanner-primary", "fingerprint": "0f415b3ed98bd9b5", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale_autocomplete/static/tests/autocomplete_tour.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-1cfacdb8c0346183", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/project_todo/static/src/web/activity/activity_menu_patch.js:16"}, "properties": {"repobilityId": "9ea554e569986c8a", "scanner": "scanner-primary", "fingerprint": "1cfacdb8c0346183", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/project_todo/static/src/web/activity/activity_menu_patch.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-de6e3c4af85c6219", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_loyalty/static/tests/tours/pos_loyalty_tour.js:129"}, "properties": {"repobilityId": "dcc66f8fc5bd60a3", "scanner": "scanner-primary", "fingerprint": "de6e3c4af85c6219", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_loyalty/static/tests/tours/pos_loyalty_tour.js"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-857348e14e5b85de", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/pos_loyalty/static/src/app/services/pos_store.js:317"}, "properties": {"repobilityId": "8691fc9f7004807c", "scanner": "scanner-primary", "fingerprint": "857348e14e5b85de", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/pos_loyalty/static/src/app/services/pos_store.js"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-9e038f4bea2105ac", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_hr_recruitment/static/tests/tours/website_hr_recruitment.js:40"}, "properties": {"repobilityId": "213ab7e7e99004c2", "scanner": "scanner-primary", "fingerprint": "9e038f4bea2105ac", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_hr_recruitment/static/tests/tours/website_hr_recruitment.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-9ea0ae068754c6e9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/sale_pdf_quote_builder/static/tests/tours/custom_content_kanban_like_tests.js:20"}, "properties": {"repobilityId": "ba9d8d352a8db1f7", "scanner": "scanner-primary", "fingerprint": "9ea0ae068754c6e9", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/sale_pdf_quote_builder/static/tests/tours/custom_content_kanban_like_tests.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-514e4fb8f3a3af64", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/mass_mailing/static/src/iframe/mass_mailing_iframe.js:269"}, "properties": {"repobilityId": "349cd3ef51ac6a61", "scanner": "scanner-primary", "fingerprint": "514e4fb8f3a3af64", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mass_mailing/static/src/iframe/mass_mailing_iframe.js"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-7aad6d59fb587c6c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale_mondialrelay/static/src/interactions/checkout.js:138"}, "properties": {"repobilityId": "9c082599e09d961c", "scanner": "scanner-primary", "fingerprint": "7aad6d59fb587c6c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale_mondialrelay/static/src/interactions/checkout.js"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-fe714447c8769e1a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/account/static/src/helpers/account_tax.js:1451"}, "properties": {"repobilityId": "2017dae56fd939e4", "scanner": "scanner-primary", "fingerprint": "fe714447c8769e1a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/static/src/helpers/account_tax.js"}, "region": {"startLine": 1451}}}]}, {"ruleId": "scanner-8a4e99091b267f7f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/bus/static/src/services/worker_service.js:58"}, "properties": {"repobilityId": "34908a011e3eb776", "scanner": "scanner-primary", "fingerprint": "8a4e99091b267f7f", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/bus/static/src/services/worker_service.js"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-d11f077c9a8365a7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/helpers/data.js:505"}, "properties": {"repobilityId": "a1bb461754166d67", "scanner": "scanner-primary", "fingerprint": "d11f077c9a8365a7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/tests/helpers/data.js"}, "region": {"startLine": 505}}}]}, {"ruleId": "scanner-4f75e81f6f1600b6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/links/open_links.test.js:45"}, "properties": {"repobilityId": "dc489efd821fa73e", "scanner": "scanner-primary", "fingerprint": "4f75e81f6f1600b6", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/tests/links/open_links.test.js"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-5c19e97c9ae5d61e", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/tests/global_filters/global_filters_core_view.test.js:306"}, "properties": {"repobilityId": "d45f743607bef57e", "scanner": "scanner-primary", "fingerprint": "5c19e97c9ae5d61e", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/tests/global_filters/global_filters_core_view.test.js"}, "region": {"startLine": 306}}}]}, {"ruleId": "scanner-f6d85cfa80ef7917", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js:201"}, "properties": {"repobilityId": "d77e32dae228a387", "scanner": "scanner-primary", "fingerprint": "f6d85cfa80ef7917", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-44386133e6813e78", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/hooks.js:102"}, "properties": {"repobilityId": "7f6cad5a46e8934c", "scanner": "scanner-primary", "fingerprint": "44386133e6813e78", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/src/hooks.js"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-5df5925fdf1e364a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/@types/commands.d.ts:18"}, "properties": {"repobilityId": "a8ee67d96522baf6", "scanner": "scanner-primary", "fingerprint": "5df5925fdf1e364a", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/src/@types/commands.d.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-1b4ed43baf470aa7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/spreadsheet/static/src/pivot/plugins/pivot_core_view_global_filter_plugin.js:172"}, "properties": {"repobilityId": "a13e5f8859d38219", "scanner": "scanner-primary", "fingerprint": "1b4ed43baf470aa7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/spreadsheet/static/src/pivot/plugins/pivot_core_view_global_filter_plugin.js"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-9e6f272e645409db", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_slides/static/tests/tours/slides_course_publisher.js:12"}, "properties": {"repobilityId": "75dde4a5812bb629", "scanner": "scanner-primary", "fingerprint": "9e6f272e645409db", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_slides/static/tests/tours/slides_course_publisher.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-48951e8e120c8f14", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/tests/tours/website_sale_add_to_cart_snippet_tour.js:61"}, "properties": {"repobilityId": "8f1ff7dcde5c7c61", "scanner": "scanner-primary", "fingerprint": "48951e8e120c8f14", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/tests/tours/website_sale_add_to_cart_snippet_tour.js"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-3c605ee380479d26", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/product_page_option_plugin.js:32"}, "properties": {"repobilityId": "002457ba99abfa8c", "scanner": "scanner-primary", "fingerprint": "3c605ee380479d26", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/website_builder/product_page_option_plugin.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-2dbd1f102ff05a8b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/shared.js:3"}, "properties": {"repobilityId": "88f82f8474e8077d", "scanner": "scanner-primary", "fingerprint": "2dbd1f102ff05a8b", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/website_builder/shared.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-0fcba365d5da004c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/website_builder/dynamic_snippet_products_option_plugin.js:61"}, "properties": {"repobilityId": "cabbfd118b8dbd76", "scanner": "scanner-primary", "fingerprint": "0fcba365d5da004c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/website_builder/dynamic_snippet_products_option_plugin.js"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-c9675a8229ed1791", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/js/cart_service.js:464"}, "properties": {"repobilityId": "72f6668a8b2941be", "scanner": "scanner-primary", "fingerprint": "c9675a8229ed1791", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/js/cart_service.js"}, "region": {"startLine": 464}}}]}, {"ruleId": "scanner-ed4162843a866ff7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/website_sale/static/src/interactions/website_sale.js:126"}, "properties": {"repobilityId": "d59120fbd858e9ca", "scanner": "scanner-primary", "fingerprint": "ed4162843a866ff7", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/interactions/website_sale.js"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-4d862a34b31cf784", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js:543"}, "properties": {"repobilityId": "41ae3da4230d98ff", "scanner": "scanner-primary", "fingerprint": "4d862a34b31cf784", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/analytic/static/src/components/analytic_distribution/analytic_distribution.js"}, "region": {"startLine": 543}}}]}, {"ruleId": "scanner-1a7333cad4c582ce", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/purchase_product_matrix/static/src/js/purchase_product_field.js:57"}, "properties": {"repobilityId": "c7fb516f34c48bc9", "scanner": "scanner-primary", "fingerprint": "1a7333cad4c582ce", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/purchase_product_matrix/static/src/js/purchase_product_field.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-6e9d480a3a567f3c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/tests/activity_widget.test.js:49"}, "properties": {"repobilityId": "8f10572d6db956c8", "scanner": "scanner-primary", "fingerprint": "6e9d480a3a567f3c", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/calendar/static/tests/activity_widget.test.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-37e7a16a5c9ad07d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/tests/mock_server/mock_models/res_users.js:38"}, "properties": {"repobilityId": "e4db6a4ffe0743af", "scanner": "scanner-primary", "fingerprint": "37e7a16a5c9ad07d", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/calendar/static/tests/mock_server/mock_models/res_users.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-c7ae2d60f3f63b30", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/calendar/static/src/views/calendar_form/calendar_quick_create.js:71"}, "properties": {"repobilityId": "bd0c929b2d07a256", "scanner": "scanner-primary", "fingerprint": "c7ae2d60f3f63b30", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/calendar/static/src/views/calendar_form/calendar_quick_create.js"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-c46fa15c1bdd35aa", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 addons/web_tour/static/tests/tour_interactive.test.js:66"}, "properties": {"repobilityId": "05ae3a78186fbbc0", "scanner": "scanner-primary", "fingerprint": "c46fa15c1bdd35aa", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.button.no-label"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_tour/static/tests/tour_interactive.test.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-6a399ebd21e75e15", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_service.js:210"}, "properties": {"repobilityId": "3d1929d140f43762", "scanner": "scanner-primary", "fingerprint": "6a399ebd21e75e15", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_tour/static/src/js/tour_service.js"}, "region": {"startLine": 210}}}]}, {"ruleId": "scanner-8d18219cf25c3712", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_automatic/tour_automatic.js:41"}, "properties": {"repobilityId": "693e406e4fff88d6", "scanner": "scanner-primary", "fingerprint": "8d18219cf25c3712", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_tour/static/src/js/tour_automatic/tour_automatic.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-1f4e895980f27abd", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 addons/web_tour/static/src/js/tour_automatic/tour_helpers_hoot.js:55"}, "properties": {"repobilityId": "2ccc251b300af843", "scanner": "scanner-primary", "fingerprint": "1f4e895980f27abd", "layer": "frontend", "severity": "info", "confidence": 0.7, "tags": ["frontend-quality", "fq.todo-marker"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_tour/static/src/js/tour_automatic/tour_helpers_hoot.js"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-934517a8e406fad2", "level": "note", "message": {"text": "Debug `console.log` remains in browser-facing code \u2014 addons/web_tour/static/src/js/tour_interactive/tour_interactive.js:104"}, "properties": {"repobilityId": "b58a4e635dac2527", "scanner": "scanner-primary", "fingerprint": "934517a8e406fad2", "layer": "frontend", "severity": "low", "confidence": 0.85, "tags": ["frontend-quality", "fq.console-leak"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_tour/static/src/js/tour_interactive/tour_interactive.js"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-10f5d905b00946e3", "level": "warning", "message": {"text": "Analyzer timeout: security.semgrep"}, "properties": {"repobilityId": "err::timeout::security.semgrep", "scanner": "scanner-primary", "fingerprint": "10f5d905b00946e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["analyzer-error", "timeout"]}}, {"ruleId": "scanner-2e61530292635289", "level": "warning", "message": {"text": "CVE-2024-22195: Jinja2 3.0.3 \u2014 requirements.txt"}, "properties": {"repobilityId": "5c9485e0200ce965", "scanner": "scanner-primary", "fingerprint": "2e61530292635289", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-22195"]}}, {"ruleId": "scanner-98a4c606d8f90eba", "level": "warning", "message": {"text": "CVE-2024-34064: Jinja2 3.0.3 \u2014 requirements.txt"}, "properties": {"repobilityId": "3e108c74aa231454", "scanner": "scanner-primary", "fingerprint": "98a4c606d8f90eba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-34064"]}}, {"ruleId": "scanner-35ec6c6367e118e9", "level": "warning", "message": {"text": "CVE-2024-56201: Jinja2 3.0.3 \u2014 requirements.txt"}, "properties": {"repobilityId": "6aa096de3bf3299c", "scanner": "scanner-primary", "fingerprint": "35ec6c6367e118e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-56201"]}}, {"ruleId": "scanner-9454d287ded9853b", "level": "warning", "message": {"text": "CVE-2024-56326: Jinja2 3.0.3 \u2014 requirements.txt"}, "properties": {"repobilityId": "a200dacffe5916b5", "scanner": "scanner-primary", "fingerprint": "9454d287ded9853b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-56326"]}}, {"ruleId": "scanner-85d9694d3af66b83", "level": "warning", "message": {"text": "CVE-2025-27516: Jinja2 3.0.3 \u2014 requirements.txt"}, "properties": {"repobilityId": "b753ce34776ca55f", "scanner": "scanner-primary", "fingerprint": "85d9694d3af66b83", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-27516"]}}, {"ruleId": "scanner-86c3ee3d5eebf6d9", "level": "warning", "message": {"text": "CVE-2024-22195: Jinja2 3.1.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "5c9485e0200ce965", "scanner": "scanner-primary", "fingerprint": "86c3ee3d5eebf6d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-22195"]}}, {"ruleId": "scanner-465e87bdd164bc8e", "level": "warning", "message": {"text": "CVE-2024-34064: Jinja2 3.1.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "3e108c74aa231454", "scanner": "scanner-primary", "fingerprint": "465e87bdd164bc8e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-34064"]}}, {"ruleId": "scanner-d4825221e1715593", "level": "warning", "message": {"text": "CVE-2024-56201: Jinja2 3.1.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "6aa096de3bf3299c", "scanner": "scanner-primary", "fingerprint": "d4825221e1715593", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-56201"]}}, {"ruleId": "scanner-e7520fc8a3c7aab8", "level": "warning", "message": {"text": "CVE-2024-56326: Jinja2 3.1.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "a200dacffe5916b5", "scanner": "scanner-primary", "fingerprint": "e7520fc8a3c7aab8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-56326"]}}, {"ruleId": "scanner-d69267e235abad29", "level": "warning", "message": {"text": "CVE-2025-27516: Jinja2 3.1.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "b753ce34776ca55f", "scanner": "scanner-primary", "fingerprint": "d69267e235abad29", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-27516"]}}, {"ruleId": "scanner-1e562ca1204754cc", "level": "error", "message": {"text": "CVE-2024-28219: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ba86c69f0392f47e", "scanner": "scanner-primary", "fingerprint": "1e562ca1204754cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-28219"]}}, {"ruleId": "scanner-762242333750d5ac", "level": "error", "message": {"text": "CVE-2026-54058: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "201988acb3302149", "scanner": "scanner-primary", "fingerprint": "762242333750d5ac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54058"]}}, {"ruleId": "scanner-0614db93cee916fd", "level": "error", "message": {"text": "CVE-2026-54059: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ca15f7fc9add9bf1", "scanner": "scanner-primary", "fingerprint": "0614db93cee916fd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54059"]}}, {"ruleId": "scanner-1a494d6cb04ed4c1", "level": "error", "message": {"text": "CVE-2026-54060: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "827742f609f61360", "scanner": "scanner-primary", "fingerprint": "1a494d6cb04ed4c1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54060"]}}, {"ruleId": "scanner-14d34a6861359977", "level": "error", "message": {"text": "CVE-2026-55379: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "c7b309ea9b3fb7bf", "scanner": "scanner-primary", "fingerprint": "14d34a6861359977", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55379"]}}, {"ruleId": "scanner-36ed1e670f0748dd", "level": "error", "message": {"text": "CVE-2026-55380: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "a44df64f4df64eb9", "scanner": "scanner-primary", "fingerprint": "36ed1e670f0748dd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55380"]}}, {"ruleId": "scanner-5825d4c8714712f0", "level": "error", "message": {"text": "CVE-2026-59197: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "b53abdb04f2cd527", "scanner": "scanner-primary", "fingerprint": "5825d4c8714712f0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59197"]}}, {"ruleId": "scanner-694910547cabe41c", "level": "error", "message": {"text": "CVE-2026-59199: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "dee8038d055baf2c", "scanner": "scanner-primary", "fingerprint": "694910547cabe41c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59199"]}}, {"ruleId": "scanner-aa6760712065021f", "level": "error", "message": {"text": "CVE-2026-59200: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "38f3cebef2e92cad", "scanner": "scanner-primary", "fingerprint": "aa6760712065021f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59200"]}}, {"ruleId": "scanner-6c50416f66b198ff", "level": "error", "message": {"text": "CVE-2026-59204: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "2a59a694658f5a44", "scanner": "scanner-primary", "fingerprint": "6c50416f66b198ff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59204"]}}, {"ruleId": "scanner-d227134ed6b74803", "level": "error", "message": {"text": "CVE-2026-59205: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "5a76fa4aa082cb88", "scanner": "scanner-primary", "fingerprint": "d227134ed6b74803", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59205"]}}, {"ruleId": "scanner-9b5d7d09cb306031", "level": "warning", "message": {"text": "CVE-2026-42308: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "1ea826f1e274387e", "scanner": "scanner-primary", "fingerprint": "9b5d7d09cb306031", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42308"]}}, {"ruleId": "scanner-12a67f5e64a61193", "level": "warning", "message": {"text": "CVE-2026-42310: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "cca9856cf8e23391", "scanner": "scanner-primary", "fingerprint": "12a67f5e64a61193", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42310"]}}, {"ruleId": "scanner-725d75a4000ea4cc", "level": "warning", "message": {"text": "CVE-2026-55798: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "16cfc11d77ae2997", "scanner": "scanner-primary", "fingerprint": "725d75a4000ea4cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55798"]}}, {"ruleId": "scanner-3b5435dd96faf479", "level": "warning", "message": {"text": "CVE-2026-59198: Pillow 10.2.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "fb7dc384a41c4c24", "scanner": "scanner-primary", "fingerprint": "3b5435dd96faf479", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59198"]}}, {"ruleId": "scanner-67a18e29d580281a", "level": "error", "message": {"text": "CVE-2026-25990: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "64b6dbde212d4d14", "scanner": "scanner-primary", "fingerprint": "67a18e29d580281a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-25990"]}}, {"ruleId": "scanner-54fb3144049e10d5", "level": "error", "message": {"text": "CVE-2026-40192: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "4ae122d14f22fb12", "scanner": "scanner-primary", "fingerprint": "54fb3144049e10d5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-40192"]}}, {"ruleId": "scanner-2005227ff7f6cc13", "level": "error", "message": {"text": "CVE-2026-42311: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "64e65c171689b709", "scanner": "scanner-primary", "fingerprint": "2005227ff7f6cc13", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42311"]}}, {"ruleId": "scanner-a53026a2f00265f9", "level": "error", "message": {"text": "CVE-2026-54058: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "201988acb3302149", "scanner": "scanner-primary", "fingerprint": "a53026a2f00265f9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54058"]}}, {"ruleId": "scanner-0f8f41e23e96b706", "level": "error", "message": {"text": "CVE-2026-54059: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ca15f7fc9add9bf1", "scanner": "scanner-primary", "fingerprint": "0f8f41e23e96b706", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54059"]}}, {"ruleId": "scanner-e8a09f81e5be98db", "level": "error", "message": {"text": "CVE-2026-54060: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "827742f609f61360", "scanner": "scanner-primary", "fingerprint": "e8a09f81e5be98db", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54060"]}}, {"ruleId": "scanner-ad2633b6415d3487", "level": "error", "message": {"text": "CVE-2026-55379: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "c7b309ea9b3fb7bf", "scanner": "scanner-primary", "fingerprint": "ad2633b6415d3487", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55379"]}}, {"ruleId": "scanner-16e741331fdc21fe", "level": "error", "message": {"text": "CVE-2026-55380: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "a44df64f4df64eb9", "scanner": "scanner-primary", "fingerprint": "16e741331fdc21fe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55380"]}}, {"ruleId": "scanner-3923e7ea738ccd20", "level": "error", "message": {"text": "CVE-2026-59197: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "b53abdb04f2cd527", "scanner": "scanner-primary", "fingerprint": "3923e7ea738ccd20", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59197"]}}, {"ruleId": "scanner-7cecb495c700c867", "level": "error", "message": {"text": "CVE-2026-59199: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "dee8038d055baf2c", "scanner": "scanner-primary", "fingerprint": "7cecb495c700c867", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59199"]}}, {"ruleId": "scanner-30eb14eb214c0fd3", "level": "error", "message": {"text": "CVE-2026-59200: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "38f3cebef2e92cad", "scanner": "scanner-primary", "fingerprint": "30eb14eb214c0fd3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59200"]}}, {"ruleId": "scanner-0aae3527c4da9aa5", "level": "error", "message": {"text": "CVE-2026-59204: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "2a59a694658f5a44", "scanner": "scanner-primary", "fingerprint": "0aae3527c4da9aa5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59204"]}}, {"ruleId": "scanner-34e2bdca7779ca49", "level": "error", "message": {"text": "CVE-2026-59205: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "5a76fa4aa082cb88", "scanner": "scanner-primary", "fingerprint": "34e2bdca7779ca49", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59205"]}}, {"ruleId": "scanner-bc240d08fd170a92", "level": "warning", "message": {"text": "CVE-2026-42308: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "1ea826f1e274387e", "scanner": "scanner-primary", "fingerprint": "bc240d08fd170a92", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42308"]}}, {"ruleId": "scanner-b28c4b27c6f9741b", "level": "warning", "message": {"text": "CVE-2026-42310: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "cca9856cf8e23391", "scanner": "scanner-primary", "fingerprint": "b28c4b27c6f9741b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42310"]}}, {"ruleId": "scanner-6d88981f6ebd7007", "level": "warning", "message": {"text": "CVE-2026-55798: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "16cfc11d77ae2997", "scanner": "scanner-primary", "fingerprint": "6d88981f6ebd7007", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55798"]}}, {"ruleId": "scanner-be859980d6f456a7", "level": "warning", "message": {"text": "CVE-2026-59198: Pillow 11.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "fb7dc384a41c4c24", "scanner": "scanner-primary", "fingerprint": "be859980d6f456a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59198"]}}, {"ruleId": "scanner-aaad884f5ec25866", "level": "error", "message": {"text": "CVE-2026-40192: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "4ae122d14f22fb12", "scanner": "scanner-primary", "fingerprint": "aaad884f5ec25866", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-40192"]}}, {"ruleId": "scanner-6e850030ef620bc1", "level": "error", "message": {"text": "CVE-2026-42311: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "64e65c171689b709", "scanner": "scanner-primary", "fingerprint": "6e850030ef620bc1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42311"]}}, {"ruleId": "scanner-f156a5af6fcceb2a", "level": "error", "message": {"text": "CVE-2026-54058: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "201988acb3302149", "scanner": "scanner-primary", "fingerprint": "f156a5af6fcceb2a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54058"]}}, {"ruleId": "scanner-8cc3ded588fbc385", "level": "error", "message": {"text": "CVE-2026-54059: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "ca15f7fc9add9bf1", "scanner": "scanner-primary", "fingerprint": "8cc3ded588fbc385", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54059"]}}, {"ruleId": "scanner-34f42537f62c1ba7", "level": "error", "message": {"text": "CVE-2026-54060: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "827742f609f61360", "scanner": "scanner-primary", "fingerprint": "34f42537f62c1ba7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54060"]}}, {"ruleId": "scanner-a985b37e6ccb7da6", "level": "error", "message": {"text": "CVE-2026-55379: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "c7b309ea9b3fb7bf", "scanner": "scanner-primary", "fingerprint": "a985b37e6ccb7da6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55379"]}}, {"ruleId": "scanner-ced3ff613213df56", "level": "error", "message": {"text": "CVE-2026-55380: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "a44df64f4df64eb9", "scanner": "scanner-primary", "fingerprint": "ced3ff613213df56", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55380"]}}, {"ruleId": "scanner-fa2ce7585422a660", "level": "error", "message": {"text": "CVE-2026-59197: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "b53abdb04f2cd527", "scanner": "scanner-primary", "fingerprint": "fa2ce7585422a660", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59197"]}}, {"ruleId": "scanner-14e317a4ae9a5066", "level": "error", "message": {"text": "CVE-2026-59199: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "dee8038d055baf2c", "scanner": "scanner-primary", "fingerprint": "14e317a4ae9a5066", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59199"]}}, {"ruleId": "scanner-b6ac422450022b14", "level": "error", "message": {"text": "CVE-2026-59200: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "38f3cebef2e92cad", "scanner": "scanner-primary", "fingerprint": "b6ac422450022b14", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59200"]}}, {"ruleId": "scanner-fb93da0385c88609", "level": "error", "message": {"text": "CVE-2026-59204: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "2a59a694658f5a44", "scanner": "scanner-primary", "fingerprint": "fb93da0385c88609", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59204"]}}, {"ruleId": "scanner-3ee349aaa94f3d94", "level": "error", "message": {"text": "CVE-2026-59205: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "5a76fa4aa082cb88", "scanner": "scanner-primary", "fingerprint": "3ee349aaa94f3d94", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59205"]}}, {"ruleId": "scanner-168fd62b85037d32", "level": "warning", "message": {"text": "CVE-2026-42308: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "1ea826f1e274387e", "scanner": "scanner-primary", "fingerprint": "168fd62b85037d32", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42308"]}}, {"ruleId": "scanner-21cd75f33a8d7420", "level": "warning", "message": {"text": "CVE-2026-42309: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "b4b4b08b2f29ba51", "scanner": "scanner-primary", "fingerprint": "21cd75f33a8d7420", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42309"]}}, {"ruleId": "scanner-de7c072a74788514", "level": "warning", "message": {"text": "CVE-2026-42310: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "cca9856cf8e23391", "scanner": "scanner-primary", "fingerprint": "de7c072a74788514", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42310"]}}, {"ruleId": "scanner-bd033b74730cb401", "level": "warning", "message": {"text": "CVE-2026-55798: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "16cfc11d77ae2997", "scanner": "scanner-primary", "fingerprint": "bd033b74730cb401", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55798"]}}, {"ruleId": "scanner-bb0e934470ddef84", "level": "warning", "message": {"text": "CVE-2026-59198: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "fb7dc384a41c4c24", "scanner": "scanner-primary", "fingerprint": "bb0e934470ddef84", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59198"]}}, {"ruleId": "scanner-c0d08a52df470292", "level": "warning", "message": {"text": "CVE-2026-59203: Pillow 12.1.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "894642384499e836", "scanner": "scanner-primary", "fingerprint": "c0d08a52df470292", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59203"]}}, {"ruleId": "scanner-d231f50cada502b9", "level": "error", "message": {"text": "CVE-2023-50447: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "0fc9dea05a3050ca", "scanner": "scanner-primary", "fingerprint": "d231f50cada502b9", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-50447"]}}, {"ruleId": "scanner-61dbf34abcba7a66", "level": "error", "message": {"text": "CVE-2022-45198: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "3f3dc217627508e0", "scanner": "scanner-primary", "fingerprint": "61dbf34abcba7a66", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2022-45198"]}}, {"ruleId": "scanner-8245d81f40818bfb", "level": "error", "message": {"text": "CVE-2023-44271: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "5312d3f14b123154", "scanner": "scanner-primary", "fingerprint": "8245d81f40818bfb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-44271"]}}, {"ruleId": "scanner-a8b7f31003747537", "level": "error", "message": {"text": "CVE-2023-4863: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "74d7d812529cff34", "scanner": "scanner-primary", "fingerprint": "a8b7f31003747537", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-4863"]}}, {"ruleId": "scanner-04570b4b478bfe33", "level": "error", "message": {"text": "CVE-2024-28219: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "ba86c69f0392f47e", "scanner": "scanner-primary", "fingerprint": "04570b4b478bfe33", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-28219"]}}, {"ruleId": "scanner-514e3666ce89478f", "level": "error", "message": {"text": "CVE-2026-54058: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "201988acb3302149", "scanner": "scanner-primary", "fingerprint": "514e3666ce89478f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54058"]}}, {"ruleId": "scanner-721a0a6e5aa6b3b2", "level": "error", "message": {"text": "CVE-2026-54059: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "ca15f7fc9add9bf1", "scanner": "scanner-primary", "fingerprint": "721a0a6e5aa6b3b2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54059"]}}, {"ruleId": "scanner-db9520fb9ea29ee1", "level": "error", "message": {"text": "CVE-2026-54060: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "827742f609f61360", "scanner": "scanner-primary", "fingerprint": "db9520fb9ea29ee1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54060"]}}, {"ruleId": "scanner-d32c92ff70cd5d48", "level": "error", "message": {"text": "CVE-2026-55379: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "c7b309ea9b3fb7bf", "scanner": "scanner-primary", "fingerprint": "d32c92ff70cd5d48", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55379"]}}, {"ruleId": "scanner-b318b8543338f76a", "level": "error", "message": {"text": "CVE-2026-55380: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "a44df64f4df64eb9", "scanner": "scanner-primary", "fingerprint": "b318b8543338f76a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55380"]}}, {"ruleId": "scanner-a0d930607d919a55", "level": "error", "message": {"text": "CVE-2026-59197: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "b53abdb04f2cd527", "scanner": "scanner-primary", "fingerprint": "a0d930607d919a55", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59197"]}}, {"ruleId": "scanner-6de6613c4f37245e", "level": "error", "message": {"text": "CVE-2026-59199: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "dee8038d055baf2c", "scanner": "scanner-primary", "fingerprint": "6de6613c4f37245e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59199"]}}, {"ruleId": "scanner-47ac111c3991fc4b", "level": "error", "message": {"text": "CVE-2026-59200: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "38f3cebef2e92cad", "scanner": "scanner-primary", "fingerprint": "47ac111c3991fc4b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59200"]}}, {"ruleId": "scanner-ee8efcef965a55f2", "level": "error", "message": {"text": "CVE-2026-59204: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "2a59a694658f5a44", "scanner": "scanner-primary", "fingerprint": "ee8efcef965a55f2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59204"]}}, {"ruleId": "scanner-910525c145c9ee3d", "level": "error", "message": {"text": "CVE-2026-59205: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "5a76fa4aa082cb88", "scanner": "scanner-primary", "fingerprint": "910525c145c9ee3d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59205"]}}, {"ruleId": "scanner-d3c40080ca936447", "level": "warning", "message": {"text": "CVE-2026-42308: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "1ea826f1e274387e", "scanner": "scanner-primary", "fingerprint": "d3c40080ca936447", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42308"]}}, {"ruleId": "scanner-77594c11ce308bc2", "level": "warning", "message": {"text": "CVE-2026-42310: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "cca9856cf8e23391", "scanner": "scanner-primary", "fingerprint": "77594c11ce308bc2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42310"]}}, {"ruleId": "scanner-20251cb223216f44", "level": "warning", "message": {"text": "CVE-2026-55798: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "16cfc11d77ae2997", "scanner": "scanner-primary", "fingerprint": "20251cb223216f44", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55798"]}}, {"ruleId": "scanner-812d59e4a84495d6", "level": "warning", "message": {"text": "CVE-2026-59198: Pillow 9.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "fb7dc384a41c4c24", "scanner": "scanner-primary", "fingerprint": "812d59e4a84495d6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59198"]}}, {"ruleId": "scanner-7f72453e3b920977", "level": "error", "message": {"text": "CVE-2023-50447: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "0fc9dea05a3050ca", "scanner": "scanner-primary", "fingerprint": "7f72453e3b920977", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-50447"]}}, {"ruleId": "scanner-9a88ecfc108c275b", "level": "error", "message": {"text": "CVE-2023-44271: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "5312d3f14b123154", "scanner": "scanner-primary", "fingerprint": "9a88ecfc108c275b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-44271"]}}, {"ruleId": "scanner-d7971ffa067718e9", "level": "error", "message": {"text": "CVE-2023-4863: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "74d7d812529cff34", "scanner": "scanner-primary", "fingerprint": "d7971ffa067718e9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-4863"]}}, {"ruleId": "scanner-5db55ae9a38b254f", "level": "error", "message": {"text": "CVE-2024-28219: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ba86c69f0392f47e", "scanner": "scanner-primary", "fingerprint": "5db55ae9a38b254f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-28219"]}}, {"ruleId": "scanner-447b8250340aa5ff", "level": "error", "message": {"text": "CVE-2026-54058: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "201988acb3302149", "scanner": "scanner-primary", "fingerprint": "447b8250340aa5ff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54058"]}}, {"ruleId": "scanner-7f9a74938e2b2ec2", "level": "error", "message": {"text": "CVE-2026-54059: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ca15f7fc9add9bf1", "scanner": "scanner-primary", "fingerprint": "7f9a74938e2b2ec2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54059"]}}, {"ruleId": "scanner-ba57e4f59a6f360f", "level": "error", "message": {"text": "CVE-2026-54060: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "827742f609f61360", "scanner": "scanner-primary", "fingerprint": "ba57e4f59a6f360f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54060"]}}, {"ruleId": "scanner-5e86a4e8057194bb", "level": "error", "message": {"text": "CVE-2026-55379: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "c7b309ea9b3fb7bf", "scanner": "scanner-primary", "fingerprint": "5e86a4e8057194bb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55379"]}}, {"ruleId": "scanner-b892605dedf3a772", "level": "error", "message": {"text": "CVE-2026-55380: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "a44df64f4df64eb9", "scanner": "scanner-primary", "fingerprint": "b892605dedf3a772", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55380"]}}, {"ruleId": "scanner-94b086f7221c03c5", "level": "error", "message": {"text": "CVE-2026-59197: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "b53abdb04f2cd527", "scanner": "scanner-primary", "fingerprint": "94b086f7221c03c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59197"]}}, {"ruleId": "scanner-027b288e22739c19", "level": "error", "message": {"text": "CVE-2026-59199: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "dee8038d055baf2c", "scanner": "scanner-primary", "fingerprint": "027b288e22739c19", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59199"]}}, {"ruleId": "scanner-e4ae6127f55be1d9", "level": "error", "message": {"text": "CVE-2026-59200: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "38f3cebef2e92cad", "scanner": "scanner-primary", "fingerprint": "e4ae6127f55be1d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59200"]}}, {"ruleId": "scanner-8822abc0dd276108", "level": "error", "message": {"text": "CVE-2026-59204: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "2a59a694658f5a44", "scanner": "scanner-primary", "fingerprint": "8822abc0dd276108", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59204"]}}, {"ruleId": "scanner-54bae2bd432caaf9", "level": "error", "message": {"text": "CVE-2026-59205: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "5a76fa4aa082cb88", "scanner": "scanner-primary", "fingerprint": "54bae2bd432caaf9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59205"]}}, {"ruleId": "scanner-1caadac612fada2f", "level": "warning", "message": {"text": "CVE-2026-42308: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "1ea826f1e274387e", "scanner": "scanner-primary", "fingerprint": "1caadac612fada2f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42308"]}}, {"ruleId": "scanner-93ffad111ba066fd", "level": "warning", "message": {"text": "CVE-2026-42310: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "cca9856cf8e23391", "scanner": "scanner-primary", "fingerprint": "93ffad111ba066fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-42310"]}}, {"ruleId": "scanner-066b24594206856a", "level": "warning", "message": {"text": "CVE-2026-55798: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "16cfc11d77ae2997", "scanner": "scanner-primary", "fingerprint": "066b24594206856a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-55798"]}}, {"ruleId": "scanner-136f33c834db808a", "level": "warning", "message": {"text": "CVE-2026-59198: Pillow 9.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "fb7dc384a41c4c24", "scanner": "scanner-primary", "fingerprint": "136f33c834db808a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59198"]}}, {"ruleId": "scanner-afa6e39a7bb631b2", "level": "error", "message": {"text": "CVE-2026-59935: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ae684e9406bf29d6", "scanner": "scanner-primary", "fingerprint": "afa6e39a7bb631b2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59935"]}}, {"ruleId": "scanner-9b56a4e5228165a5", "level": "error", "message": {"text": "CVE-2026-59936: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "a2144df1ef96d912", "scanner": "scanner-primary", "fingerprint": "9b56a4e5228165a5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59936"]}}, {"ruleId": "scanner-c6771dadd64f8b6e", "level": "warning", "message": {"text": "CVE-2025-55197: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "1298c977e56c7e1c", "scanner": "scanner-primary", "fingerprint": "c6771dadd64f8b6e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-55197"]}}, {"ruleId": "scanner-a55674d01ae09e27", "level": "warning", "message": {"text": "CVE-2025-62707: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "492ace282882aadd", "scanner": "scanner-primary", "fingerprint": "a55674d01ae09e27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-62707"]}}, {"ruleId": "scanner-ae575625f3720756", "level": "warning", "message": {"text": "CVE-2025-62708: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "87fc71a6328f02da", "scanner": "scanner-primary", "fingerprint": "ae575625f3720756", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-62708"]}}, {"ruleId": "scanner-da8111c77c6e2b30", "level": "warning", "message": {"text": "CVE-2025-66019: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "4ad7116175ae81ed", "scanner": "scanner-primary", "fingerprint": "da8111c77c6e2b30", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66019"]}}, {"ruleId": "scanner-afd5fe177e2415d1", "level": "warning", "message": {"text": "CVE-2026-24688: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "5c9a50423e37901b", "scanner": "scanner-primary", "fingerprint": "afd5fe177e2415d1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-24688"]}}, {"ruleId": "scanner-325e2d10213a624f", "level": "warning", "message": {"text": "CVE-2026-27024: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "761bb8942afc2c9e", "scanner": "scanner-primary", "fingerprint": "325e2d10213a624f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27024"]}}, {"ruleId": "scanner-0d386fbf9185ffed", "level": "warning", "message": {"text": "CVE-2026-27025: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "e563ad3066356bf0", "scanner": "scanner-primary", "fingerprint": "0d386fbf9185ffed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27025"]}}, {"ruleId": "scanner-cfdf66b985baf397", "level": "warning", "message": {"text": "CVE-2026-27026: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "312c8f371599a29f", "scanner": "scanner-primary", "fingerprint": "cfdf66b985baf397", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27026"]}}, {"ruleId": "scanner-5c9753a11e37682a", "level": "warning", "message": {"text": "CVE-2026-27888: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "7817f47739909fbb", "scanner": "scanner-primary", "fingerprint": "5c9753a11e37682a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27888"]}}, {"ruleId": "scanner-7b98067738680e46", "level": "warning", "message": {"text": "CVE-2026-28351: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "27909d38d316ca47", "scanner": "scanner-primary", "fingerprint": "7b98067738680e46", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-28351"]}}, {"ruleId": "scanner-70c5312850b49aa3", "level": "warning", "message": {"text": "CVE-2026-28804: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "94b286fd8880457d", "scanner": "scanner-primary", "fingerprint": "70c5312850b49aa3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-28804"]}}, {"ruleId": "scanner-24e2fe273e792711", "level": "warning", "message": {"text": "CVE-2026-31826: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "898692d0755ae559", "scanner": "scanner-primary", "fingerprint": "24e2fe273e792711", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-31826"]}}, {"ruleId": "scanner-3f0972e991590e0c", "level": "warning", "message": {"text": "CVE-2026-33123: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "327d773f6539bfc9", "scanner": "scanner-primary", "fingerprint": "3f0972e991590e0c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-33123"]}}, {"ruleId": "scanner-5b14000b1e663a25", "level": "warning", "message": {"text": "CVE-2026-33699: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "a46346c1740e0a43", "scanner": "scanner-primary", "fingerprint": "5b14000b1e663a25", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-33699"]}}, {"ruleId": "scanner-3ceee7c6df81bfc9", "level": "warning", "message": {"text": "CVE-2026-40260: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "1831ff3730a71b32", "scanner": "scanner-primary", "fingerprint": "3ceee7c6df81bfc9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-40260"]}}, {"ruleId": "scanner-46e575cdf6e8780e", "level": "warning", "message": {"text": "CVE-2026-41168: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "3e9aac8b620c61d7", "scanner": "scanner-primary", "fingerprint": "46e575cdf6e8780e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41168"]}}, {"ruleId": "scanner-1c4d5afd9e227404", "level": "warning", "message": {"text": "CVE-2026-41312: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "cc9f253511c6d4bb", "scanner": "scanner-primary", "fingerprint": "1c4d5afd9e227404", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41312"]}}, {"ruleId": "scanner-f0eb816a7d612260", "level": "warning", "message": {"text": "CVE-2026-41313: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "7d11c09a9dbc4288", "scanner": "scanner-primary", "fingerprint": "f0eb816a7d612260", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41313"]}}, {"ruleId": "scanner-f0d942247946669c", "level": "warning", "message": {"text": "CVE-2026-41314: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "2285e7832d5ecf7a", "scanner": "scanner-primary", "fingerprint": "f0d942247946669c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41314"]}}, {"ruleId": "scanner-7bbc93d0a9ad9a82", "level": "warning", "message": {"text": "CVE-2026-48155: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "48bb1936307e9112", "scanner": "scanner-primary", "fingerprint": "7bbc93d0a9ad9a82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-48155"]}}, {"ruleId": "scanner-79547b464f1c3c0a", "level": "warning", "message": {"text": "CVE-2026-48156: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "66236bd779b8bfa3", "scanner": "scanner-primary", "fingerprint": "79547b464f1c3c0a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-48156"]}}, {"ruleId": "scanner-2cdf780219ca620f", "level": "warning", "message": {"text": "CVE-2026-48735: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "7a19a064660d5a63", "scanner": "scanner-primary", "fingerprint": "2cdf780219ca620f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-48735"]}}, {"ruleId": "scanner-4b320cdfd95d73cc", "level": "warning", "message": {"text": "CVE-2026-49460: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "e47508cee5600953", "scanner": "scanner-primary", "fingerprint": "4b320cdfd95d73cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-49460"]}}, {"ruleId": "scanner-24c250806b6d5673", "level": "warning", "message": {"text": "CVE-2026-49461: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "d309b253fb6d1f22", "scanner": "scanner-primary", "fingerprint": "24c250806b6d5673", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-49461"]}}, {"ruleId": "scanner-c012f0f896bc5c61", "level": "warning", "message": {"text": "CVE-2026-54530: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "21b89cc6f17ffa80", "scanner": "scanner-primary", "fingerprint": "c012f0f896bc5c61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54530"]}}, {"ruleId": "scanner-7435d28663d4d7e1", "level": "warning", "message": {"text": "CVE-2026-54531: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "0882954fae58964d", "scanner": "scanner-primary", "fingerprint": "7435d28663d4d7e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54531"]}}, {"ruleId": "scanner-35de89b50222ca85", "level": "warning", "message": {"text": "CVE-2026-54651: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "fb472d6fac1f826e", "scanner": "scanner-primary", "fingerprint": "35de89b50222ca85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-54651"]}}, {"ruleId": "scanner-dec4b5be6d924148", "level": "warning", "message": {"text": "CVE-2026-59937: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "2cd364d3ea885c37", "scanner": "scanner-primary", "fingerprint": "dec4b5be6d924148", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59937"]}}, {"ruleId": "scanner-5e33b06b56428a54", "level": "warning", "message": {"text": "CVE-2026-59938: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "7ecc46e3655c5024", "scanner": "scanner-primary", "fingerprint": "5e33b06b56428a54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-59938"]}}, {"ruleId": "scanner-2328e83bf113780a", "level": "warning", "message": {"text": "GHSA-jm82-fx9c-mx94: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "5f152d51ac01ccb1", "scanner": "scanner-primary", "fingerprint": "2328e83bf113780a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-jm82-fx9c-mx94"]}}, {"ruleId": "scanner-c7c297aa430ce69c", "level": "note", "message": {"text": "CVE-2026-22690: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "02d1fc527ec6976e", "scanner": "scanner-primary", "fingerprint": "c7c297aa430ce69c", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-22690"]}}, {"ruleId": "scanner-594b38a12a9e8801", "level": "note", "message": {"text": "CVE-2026-22691: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "c7f2e9b0deff92f3", "scanner": "scanner-primary", "fingerprint": "594b38a12a9e8801", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-22691"]}}, {"ruleId": "scanner-76382c3ddbc8b766", "level": "note", "message": {"text": "CVE-2026-27628: PyPDF 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "89522f3acf99ade0", "scanner": "scanner-primary", "fingerprint": "76382c3ddbc8b766", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27628"]}}, {"ruleId": "scanner-83f4b24856b9ba10", "level": "warning", "message": {"text": "CVE-2022-24859: PyPDF2 1.26.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "cbfda7898f5e4cb3", "scanner": "scanner-primary", "fingerprint": "83f4b24856b9ba10", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2022-24859"]}}, {"ruleId": "scanner-dfda3de1fda9d9a9", "level": "warning", "message": {"text": "CVE-2023-36810: PyPDF2 1.26.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "33a0f5fc7fdf75ec", "scanner": "scanner-primary", "fingerprint": "dfda3de1fda9d9a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-36810"]}}, {"ruleId": "scanner-d2c2803b51fc953c", "level": "warning", "message": {"text": "CVE-2023-36464: PyPDF2 2.12.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "1a6156685fbf6a53", "scanner": "scanner-primary", "fingerprint": "d2c2803b51fc953c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-36464"]}}, {"ruleId": "scanner-837c3e165f48a603", "level": "error", "message": {"text": "CVE-2023-25577: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "49ef770cd6ea5f5b", "scanner": "scanner-primary", "fingerprint": "837c3e165f48a603", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-25577"]}}, {"ruleId": "scanner-8e7eca6b485f529d", "level": "error", "message": {"text": "CVE-2024-34069: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "73634230860c9891", "scanner": "scanner-primary", "fingerprint": "8e7eca6b485f529d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-34069"]}}, {"ruleId": "scanner-6b791183225ab1ce", "level": "warning", "message": {"text": "CVE-2023-46136: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "55ded69a0dcf4e14", "scanner": "scanner-primary", "fingerprint": "6b791183225ab1ce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-46136"]}}, {"ruleId": "scanner-a2cc9d66b2235180", "level": "warning", "message": {"text": "CVE-2024-49766: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "42d73449e870321e", "scanner": "scanner-primary", "fingerprint": "a2cc9d66b2235180", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-49766"]}}, {"ruleId": "scanner-2d814c8b853904b2", "level": "warning", "message": {"text": "CVE-2024-49767: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "e5770045c99975af", "scanner": "scanner-primary", "fingerprint": "2d814c8b853904b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-49767"]}}, {"ruleId": "scanner-1e2dd8aad769522a", "level": "warning", "message": {"text": "CVE-2025-66221: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "a33d7983e8602ebb", "scanner": "scanner-primary", "fingerprint": "1e2dd8aad769522a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66221"]}}, {"ruleId": "scanner-1cda35319d8af1ce", "level": "warning", "message": {"text": "CVE-2026-21860: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "10c79c8acdc5ff92", "scanner": "scanner-primary", "fingerprint": "1cda35319d8af1ce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-21860"]}}, {"ruleId": "scanner-cd414709a741f5f2", "level": "warning", "message": {"text": "CVE-2026-27199: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "0033859028165b0d", "scanner": "scanner-primary", "fingerprint": "cd414709a741f5f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27199"]}}, {"ruleId": "scanner-8970927739904a1b", "level": "note", "message": {"text": "CVE-2023-23934: Werkzeug 2.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "6c0dd4052b3527ab", "scanner": "scanner-primary", "fingerprint": "8970927739904a1b", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-23934"]}}, {"ruleId": "scanner-8807a369922fc8f6", "level": "error", "message": {"text": "CVE-2023-25577: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "49ef770cd6ea5f5b", "scanner": "scanner-primary", "fingerprint": "8807a369922fc8f6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-25577"]}}, {"ruleId": "scanner-fbd7af18cdce0b3f", "level": "error", "message": {"text": "CVE-2024-34069: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "73634230860c9891", "scanner": "scanner-primary", "fingerprint": "fbd7af18cdce0b3f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-34069"]}}, {"ruleId": "scanner-e253c224934bfa1c", "level": "warning", "message": {"text": "CVE-2023-46136: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "55ded69a0dcf4e14", "scanner": "scanner-primary", "fingerprint": "e253c224934bfa1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-46136"]}}, {"ruleId": "scanner-9ab4c1efcc99d6b6", "level": "warning", "message": {"text": "CVE-2024-49766: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "42d73449e870321e", "scanner": "scanner-primary", "fingerprint": "9ab4c1efcc99d6b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-49766"]}}, {"ruleId": "scanner-dbbbe369ce76bbbb", "level": "warning", "message": {"text": "CVE-2024-49767: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "e5770045c99975af", "scanner": "scanner-primary", "fingerprint": "dbbbe369ce76bbbb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-49767"]}}, {"ruleId": "scanner-2e8b49865cca54ae", "level": "warning", "message": {"text": "CVE-2025-66221: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "a33d7983e8602ebb", "scanner": "scanner-primary", "fingerprint": "2e8b49865cca54ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66221"]}}, {"ruleId": "scanner-824dc308aa67b561", "level": "warning", "message": {"text": "CVE-2026-21860: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "10c79c8acdc5ff92", "scanner": "scanner-primary", "fingerprint": "824dc308aa67b561", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-21860"]}}, {"ruleId": "scanner-3c88bb89aefa52ad", "level": "warning", "message": {"text": "CVE-2026-27199: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "0033859028165b0d", "scanner": "scanner-primary", "fingerprint": "3c88bb89aefa52ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27199"]}}, {"ruleId": "scanner-16e0c2f3a959489a", "level": "note", "message": {"text": "CVE-2023-23934: Werkzeug 2.2.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "6c0dd4052b3527ab", "scanner": "scanner-primary", "fingerprint": "16e0c2f3a959489a", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-23934"]}}, {"ruleId": "scanner-6226b6c900a2e7fe", "level": "error", "message": {"text": "CVE-2024-34069: Werkzeug 3.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "73634230860c9891", "scanner": "scanner-primary", "fingerprint": "6226b6c900a2e7fe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-34069"]}}, {"ruleId": "scanner-880e8d7e094e6050", "level": "warning", "message": {"text": "CVE-2024-49766: Werkzeug 3.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "42d73449e870321e", "scanner": "scanner-primary", "fingerprint": "880e8d7e094e6050", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-49766"]}}, {"ruleId": "scanner-4642fccc5d42bf54", "level": "warning", "message": {"text": "CVE-2024-49767: Werkzeug 3.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "e5770045c99975af", "scanner": "scanner-primary", "fingerprint": "4642fccc5d42bf54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-49767"]}}, {"ruleId": "scanner-638ebd3c9ddf4586", "level": "warning", "message": {"text": "CVE-2025-66221: Werkzeug 3.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "a33d7983e8602ebb", "scanner": "scanner-primary", "fingerprint": "638ebd3c9ddf4586", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66221"]}}, {"ruleId": "scanner-28bbfb69bb9213be", "level": "warning", "message": {"text": "CVE-2026-21860: Werkzeug 3.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "10c79c8acdc5ff92", "scanner": "scanner-primary", "fingerprint": "28bbfb69bb9213be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-21860"]}}, {"ruleId": "scanner-fabae1889584a7d6", "level": "warning", "message": {"text": "CVE-2026-27199: Werkzeug 3.0.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "0033859028165b0d", "scanner": "scanner-primary", "fingerprint": "fabae1889584a7d6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27199"]}}, {"ruleId": "scanner-cb46a21ecb2e16d0", "level": "error", "message": {"text": "CVE-2026-26209: cbor2 5.4.2.post1 \u2014 requirements.txt"}, "properties": {"repobilityId": "8112422519c7a9b0", "scanner": "scanner-primary", "fingerprint": "cb46a21ecb2e16d0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-26209"]}}, {"ruleId": "scanner-e9f9033cfae40274", "level": "warning", "message": {"text": "CVE-2025-68131: cbor2 5.4.2.post1 \u2014 requirements.txt"}, "properties": {"repobilityId": "2b25d6fb8a5b3495", "scanner": "scanner-primary", "fingerprint": "e9f9033cfae40274", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-68131"]}}, {"ruleId": "scanner-b619a4fa54d26a0b", "level": "error", "message": {"text": "CVE-2026-26209: cbor2 5.4.6 \u2014 requirements.txt"}, "properties": {"repobilityId": "8112422519c7a9b0", "scanner": "scanner-primary", "fingerprint": "b619a4fa54d26a0b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-26209"]}}, {"ruleId": "scanner-5f3d9bbb2b7d0940", "level": "warning", "message": {"text": "CVE-2025-68131: cbor2 5.4.6 \u2014 requirements.txt"}, "properties": {"repobilityId": "2b25d6fb8a5b3495", "scanner": "scanner-primary", "fingerprint": "5f3d9bbb2b7d0940", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-68131"]}}, {"ruleId": "scanner-1724d35fd2ac89e3", "level": "error", "message": {"text": "CVE-2026-26209: cbor2 5.6.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "8112422519c7a9b0", "scanner": "scanner-primary", "fingerprint": "1724d35fd2ac89e3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-26209"]}}, {"ruleId": "scanner-4531a3df8ee3e53d", "level": "warning", "message": {"text": "CVE-2025-68131: cbor2 5.6.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "2b25d6fb8a5b3495", "scanner": "scanner-primary", "fingerprint": "4531a3df8ee3e53d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-68131"]}}, {"ruleId": "scanner-008e34e5b12fec69", "level": "error", "message": {"text": "CVE-2023-0286: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "dcd4aed77e03f462", "scanner": "scanner-primary", "fingerprint": "008e34e5b12fec69", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-0286"]}}, {"ruleId": "scanner-e6f05f6866f2c25a", "level": "error", "message": {"text": "CVE-2023-50782: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "9dca055a49c1fe68", "scanner": "scanner-primary", "fingerprint": "e6f05f6866f2c25a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-50782"]}}, {"ruleId": "scanner-150ef0ffa42fbcd2", "level": "error", "message": {"text": "CVE-2026-26007: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "f088b5ab78142771", "scanner": "scanner-primary", "fingerprint": "150ef0ffa42fbcd2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-26007"]}}, {"ruleId": "scanner-7b9988a47b02391c", "level": "error", "message": {"text": "GHSA-537c-gmf6-5ccf: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "924cd6bc8ba1c81e", "scanner": "scanner-primary", "fingerprint": "7b9988a47b02391c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-537c-gmf6-5ccf"]}}, {"ruleId": "scanner-ed4760b667ed6d0b", "level": "warning", "message": {"text": "CVE-2023-23931: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "aee5857e788cc113", "scanner": "scanner-primary", "fingerprint": "ed4760b667ed6d0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-23931"]}}, {"ruleId": "scanner-aab0c9a5751ff3f5", "level": "warning", "message": {"text": "CVE-2023-49083: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "edd79e2056f96e7a", "scanner": "scanner-primary", "fingerprint": "aab0c9a5751ff3f5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-49083"]}}, {"ruleId": "scanner-54e2f53ae9e66735", "level": "warning", "message": {"text": "CVE-2024-0727: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "202c3ace4e479d32", "scanner": "scanner-primary", "fingerprint": "54e2f53ae9e66735", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-0727"]}}, {"ruleId": "scanner-50ee1063beceeb59", "level": "note", "message": {"text": "CVE-2026-34073: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "82bd34dff08ff4ae", "scanner": "scanner-primary", "fingerprint": "50ee1063beceeb59", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-34073"]}}, {"ruleId": "scanner-dd9b13bde5b27cb5", "level": "note", "message": {"text": "GHSA-5cpq-8wj7-hf2v: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "704f447b3b26e1a1", "scanner": "scanner-primary", "fingerprint": "dd9b13bde5b27cb5", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-5cpq-8wj7-hf2v"]}}, {"ruleId": "scanner-05394d0db38c6b56", "level": "note", "message": {"text": "GHSA-jm77-qphf-c4w8: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "5e88429deba604d7", "scanner": "scanner-primary", "fingerprint": "05394d0db38c6b56", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-jm77-qphf-c4w8"]}}, {"ruleId": "scanner-1f728c3b913ab07a", "level": "note", "message": {"text": "GHSA-v8gr-m533-ghj9: cryptography 3.4.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "d02da1fe75c8d1d6", "scanner": "scanner-primary", "fingerprint": "1f728c3b913ab07a", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-v8gr-m533-ghj9"]}}, {"ruleId": "scanner-7d271f470b425372", "level": "error", "message": {"text": "CVE-2026-26007: cryptography 42.0.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "f088b5ab78142771", "scanner": "scanner-primary", "fingerprint": "7d271f470b425372", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-26007"]}}, {"ruleId": "scanner-36e1b4645855fcb5", "level": "error", "message": {"text": "GHSA-537c-gmf6-5ccf: cryptography 42.0.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "924cd6bc8ba1c81e", "scanner": "scanner-primary", "fingerprint": "36e1b4645855fcb5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-537c-gmf6-5ccf"]}}, {"ruleId": "scanner-939e8c0f0b51b370", "level": "warning", "message": {"text": "GHSA-h4gh-qq45-vh27: cryptography 42.0.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "8827208eacfcb604", "scanner": "scanner-primary", "fingerprint": "939e8c0f0b51b370", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-h4gh-qq45-vh27"]}}, {"ruleId": "scanner-8bbc994e7add11f8", "level": "note", "message": {"text": "CVE-2024-12797: cryptography 42.0.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "ddf2a7a74b3b9692", "scanner": "scanner-primary", "fingerprint": "8bbc994e7add11f8", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-12797"]}}, {"ruleId": "scanner-f5131f7d57240149", "level": "note", "message": {"text": "CVE-2026-34073: cryptography 42.0.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "82bd34dff08ff4ae", "scanner": "scanner-primary", "fingerprint": "f5131f7d57240149", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-34073"]}}, {"ruleId": "scanner-4d41158e3fcf6c3a", "level": "error", "message": {"text": "CVE-2023-41419: gevent 21.8.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "ce767320cb90dd83", "scanner": "scanner-primary", "fingerprint": "4d41158e3fcf6c3a", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-41419"]}}, {"ruleId": "scanner-7f9ec49f73cbc038", "level": "error", "message": {"text": "CVE-2023-41419: gevent 22.10.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "ce767320cb90dd83", "scanner": "scanner-primary", "fingerprint": "7f9ec49f73cbc038", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-41419"]}}, {"ruleId": "scanner-914615f88f4da815", "level": "warning", "message": {"text": "CVE-2024-3651: idna 2.10 \u2014 requirements.txt"}, "properties": {"repobilityId": "7a104eb8b6d89457", "scanner": "scanner-primary", "fingerprint": "914615f88f4da815", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-3651"]}}, {"ruleId": "scanner-0537d52fb53a560c", "level": "warning", "message": {"text": "CVE-2026-45409: idna 2.10 \u2014 requirements.txt"}, "properties": {"repobilityId": "dd2a72ad411bff63", "scanner": "scanner-primary", "fingerprint": "0537d52fb53a560c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-45409"]}}, {"ruleId": "scanner-c8cf99c7f2e191ad", "level": "warning", "message": {"text": "CVE-2024-3651: idna 3.6 \u2014 requirements.txt"}, "properties": {"repobilityId": "7a104eb8b6d89457", "scanner": "scanner-primary", "fingerprint": "c8cf99c7f2e191ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-3651"]}}, {"ruleId": "scanner-35c68e9747f824b0", "level": "warning", "message": {"text": "CVE-2026-45409: idna 3.6 \u2014 requirements.txt"}, "properties": {"repobilityId": "dd2a72ad411bff63", "scanner": "scanner-primary", "fingerprint": "35c68e9747f824b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-45409"]}}, {"ruleId": "scanner-059824533f1cb286", "level": "error", "message": {"text": "CVE-2026-41066: lxml 4.8.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "0d1c9afdee28a002", "scanner": "scanner-primary", "fingerprint": "059824533f1cb286", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41066"]}}, {"ruleId": "scanner-347f606863dbc097", "level": "warning", "message": {"text": "CVE-2022-2309: lxml 4.8.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "e7d19ab18411749d", "scanner": "scanner-primary", "fingerprint": "347f606863dbc097", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2022-2309"]}}, {"ruleId": "scanner-e748f2dbc42e8f36", "level": "error", "message": {"text": "CVE-2026-41066: lxml 4.9.3 \u2014 requirements.txt"}, "properties": {"repobilityId": "0d1c9afdee28a002", "scanner": "scanner-primary", "fingerprint": "e748f2dbc42e8f36", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41066"]}}, {"ruleId": "scanner-41f1be53748c05d9", "level": "error", "message": {"text": "CVE-2026-41066: lxml 5.2.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "0d1c9afdee28a002", "scanner": "scanner-primary", "fingerprint": "41f1be53748c05d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41066"]}}, {"ruleId": "scanner-1976e92cbeef405c", "level": "error", "message": {"text": "CVE-2026-41066: lxml 5.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "0d1c9afdee28a002", "scanner": "scanner-primary", "fingerprint": "1976e92cbeef405c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41066"]}}, {"ruleId": "scanner-b37c202e4b59e500", "level": "error", "message": {"text": "CVE-2026-41066: lxml 6.0.2 \u2014 requirements.txt"}, "properties": {"repobilityId": "0d1c9afdee28a002", "scanner": "scanner-primary", "fingerprint": "b37c202e4b59e500", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-41066"]}}, {"ruleId": "scanner-feb2548942675025", "level": "note", "message": {"text": "CVE-2026-27448: pyopenssl 21.0.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "4d3ecf92a325b4dc", "scanner": "scanner-primary", "fingerprint": "feb2548942675025", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27448"]}}, {"ruleId": "scanner-a22c72936a0fcce2", "level": "error", "message": {"text": "CVE-2026-27459: pyopenssl 24.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "11bc6aba7657b879", "scanner": "scanner-primary", "fingerprint": "a22c72936a0fcce2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27459"]}}, {"ruleId": "scanner-40b2bbebc0a7f177", "level": "note", "message": {"text": "CVE-2026-27448: pyopenssl 24.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "4d3ecf92a325b4dc", "scanner": "scanner-primary", "fingerprint": "40b2bbebc0a7f177", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-27448"]}}, {"ruleId": "scanner-a84b0bdfbd927942", "level": "warning", "message": {"text": "CVE-2025-61911: python-ldap 3.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "2d2b2d99a2994f4a", "scanner": "scanner-primary", "fingerprint": "a84b0bdfbd927942", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-61911"]}}, {"ruleId": "scanner-71eb88c822b3b3b0", "level": "warning", "message": {"text": "CVE-2025-61912: python-ldap 3.4.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "065559c6ee357e92", "scanner": "scanner-primary", "fingerprint": "71eb88c822b3b3b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-61912"]}}, {"ruleId": "scanner-0424f26b6b29ec7a", "level": "warning", "message": {"text": "CVE-2025-61911: python-ldap 3.4.4 \u2014 requirements.txt"}, "properties": {"repobilityId": "2d2b2d99a2994f4a", "scanner": "scanner-primary", "fingerprint": "0424f26b6b29ec7a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-61911"]}}, {"ruleId": "scanner-91b64a7b91a85233", "level": "warning", "message": {"text": "CVE-2025-61912: python-ldap 3.4.4 \u2014 requirements.txt"}, "properties": {"repobilityId": "065559c6ee357e92", "scanner": "scanner-primary", "fingerprint": "91b64a7b91a85233", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-61912"]}}, {"ruleId": "scanner-ce4d4909243831c3", "level": "error", "message": {"text": "CVE-2023-33733: reportlab 3.6.12 \u2014 requirements.txt"}, "properties": {"repobilityId": "3b8c568b627ffcbd", "scanner": "scanner-primary", "fingerprint": "ce4d4909243831c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-33733"]}}, {"ruleId": "scanner-ac77dcbae3b4cc38", "level": "error", "message": {"text": "CVE-2023-33733: reportlab 3.6.8 \u2014 requirements.txt"}, "properties": {"repobilityId": "3b8c568b627ffcbd", "scanner": "scanner-primary", "fingerprint": "ac77dcbae3b4cc38", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-33733"]}}, {"ruleId": "scanner-d32f06960d65e9e0", "level": "warning", "message": {"text": "CVE-2023-32681: requests 2.25.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "bf5e949bdafd60b0", "scanner": "scanner-primary", "fingerprint": "d32f06960d65e9e0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-32681"]}}, {"ruleId": "scanner-7dcfce5a75ee9123", "level": "warning", "message": {"text": "CVE-2024-35195: requests 2.25.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "e286dacad41daa26", "scanner": "scanner-primary", "fingerprint": "7dcfce5a75ee9123", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-35195"]}}, {"ruleId": "scanner-dea1875b6510d8dc", "level": "warning", "message": {"text": "CVE-2024-47081: requests 2.25.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "57a2dcc60f90773f", "scanner": "scanner-primary", "fingerprint": "dea1875b6510d8dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-47081"]}}, {"ruleId": "scanner-d01c66b402c6ea08", "level": "warning", "message": {"text": "CVE-2026-25645: requests 2.25.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "f69ee098051840b3", "scanner": "scanner-primary", "fingerprint": "d01c66b402c6ea08", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-25645"]}}, {"ruleId": "scanner-763635a283d57e2f", "level": "warning", "message": {"text": "CVE-2024-35195: requests 2.31.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "e286dacad41daa26", "scanner": "scanner-primary", "fingerprint": "763635a283d57e2f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-35195"]}}, {"ruleId": "scanner-d6b6377288e394fb", "level": "warning", "message": {"text": "CVE-2024-47081: requests 2.31.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "57a2dcc60f90773f", "scanner": "scanner-primary", "fingerprint": "d6b6377288e394fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-47081"]}}, {"ruleId": "scanner-d5acfce8451bf335", "level": "warning", "message": {"text": "CVE-2026-25645: requests 2.31.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "f69ee098051840b3", "scanner": "scanner-primary", "fingerprint": "d5acfce8451bf335", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-25645"]}}, {"ruleId": "scanner-8969bb8ffb7c63e6", "level": "error", "message": {"text": "CVE-2023-43804: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "e8547c513b4caa1d", "scanner": "scanner-primary", "fingerprint": "8969bb8ffb7c63e6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-43804"]}}, {"ruleId": "scanner-4943ebf42b29ed2c", "level": "error", "message": {"text": "CVE-2025-66418: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "55f293cfe2242040", "scanner": "scanner-primary", "fingerprint": "4943ebf42b29ed2c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66418"]}}, {"ruleId": "scanner-97e0eab3fc76ea02", "level": "error", "message": {"text": "CVE-2025-66471: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "c0b4ed85b994ef81", "scanner": "scanner-primary", "fingerprint": "97e0eab3fc76ea02", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66471"]}}, {"ruleId": "scanner-a455b077603293e8", "level": "error", "message": {"text": "CVE-2026-21441: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "30f764ca6ac148a3", "scanner": "scanner-primary", "fingerprint": "a455b077603293e8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-21441"]}}, {"ruleId": "scanner-d1a0d3d7aa878c12", "level": "error", "message": {"text": "CVE-2026-44431: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "26bc213a5b3d0410", "scanner": "scanner-primary", "fingerprint": "d1a0d3d7aa878c12", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-44431"]}}, {"ruleId": "scanner-31a39ebcd35f0205", "level": "warning", "message": {"text": "CVE-2023-45803: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "e2432919056e2bba", "scanner": "scanner-primary", "fingerprint": "31a39ebcd35f0205", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2023-45803"]}}, {"ruleId": "scanner-02a3432af8e800e8", "level": "warning", "message": {"text": "CVE-2024-37891: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "2bf77941b9afd164", "scanner": "scanner-primary", "fingerprint": "02a3432af8e800e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-37891"]}}, {"ruleId": "scanner-4026e399dc634f85", "level": "warning", "message": {"text": "CVE-2025-50181: urllib3 1.26.5 \u2014 requirements.txt"}, "properties": {"repobilityId": "ce5d4826ca5f3ab5", "scanner": "scanner-primary", "fingerprint": "4026e399dc634f85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-50181"]}}, {"ruleId": "scanner-39ebb853c9590a32", "level": "error", "message": {"text": "CVE-2025-66418: urllib3 2.0.7 \u2014 requirements.txt"}, "properties": {"repobilityId": "55f293cfe2242040", "scanner": "scanner-primary", "fingerprint": "39ebb853c9590a32", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66418"]}}, {"ruleId": "scanner-2731217d48f78201", "level": "error", "message": {"text": "CVE-2025-66471: urllib3 2.0.7 \u2014 requirements.txt"}, "properties": {"repobilityId": "c0b4ed85b994ef81", "scanner": "scanner-primary", "fingerprint": "2731217d48f78201", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-66471"]}}, {"ruleId": "scanner-37132748d355dc65", "level": "error", "message": {"text": "CVE-2026-21441: urllib3 2.0.7 \u2014 requirements.txt"}, "properties": {"repobilityId": "30f764ca6ac148a3", "scanner": "scanner-primary", "fingerprint": "37132748d355dc65", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-21441"]}}, {"ruleId": "scanner-5ccc045460247335", "level": "error", "message": {"text": "CVE-2026-44431: urllib3 2.0.7 \u2014 requirements.txt"}, "properties": {"repobilityId": "26bc213a5b3d0410", "scanner": "scanner-primary", "fingerprint": "5ccc045460247335", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2026-44431"]}}, {"ruleId": "scanner-21a320c5948b7474", "level": "warning", "message": {"text": "CVE-2024-37891: urllib3 2.0.7 \u2014 requirements.txt"}, "properties": {"repobilityId": "2bf77941b9afd164", "scanner": "scanner-primary", "fingerprint": "21a320c5948b7474", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2024-37891"]}}, {"ruleId": "scanner-a4fd1acb5b771e5d", "level": "warning", "message": {"text": "CVE-2025-50181: urllib3 2.0.7 \u2014 requirements.txt"}, "properties": {"repobilityId": "ce5d4826ca5f3ab5", "scanner": "scanner-primary", "fingerprint": "a4fd1acb5b771e5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "CVE-2025-50181"]}}, {"ruleId": "scanner-44d8c862013fd2e1", "level": "warning", "message": {"text": "GHSA-4cc2-g9w2-fhf6: zeep 4.1.0 \u2014 requirements.txt"}, "properties": {"repobilityId": "03360a7c63ec4404", "scanner": "scanner-primary", "fingerprint": "44d8c862013fd2e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-4cc2-g9w2-fhf6"]}}, {"ruleId": "scanner-f93b15d9fc8f5159", "level": "warning", "message": {"text": "GHSA-4cc2-g9w2-fhf6: zeep 4.2.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "03360a7c63ec4404", "scanner": "scanner-primary", "fingerprint": "f93b15d9fc8f5159", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-4cc2-g9w2-fhf6"]}}, {"ruleId": "scanner-2c25db23bc6981e7", "level": "warning", "message": {"text": "GHSA-4cc2-g9w2-fhf6: zeep 4.3.1 \u2014 requirements.txt"}, "properties": {"repobilityId": "03360a7c63ec4404", "scanner": "scanner-primary", "fingerprint": "2c25db23bc6981e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["trivy", "vuln", "GHSA-4cc2-g9w2-fhf6"]}}, {"ruleId": "scanner-91963e2a03e976dd", "level": "error", "message": {"text": "Secret leak: Asymmetric Private Key \u2014 addons/account_peppol/tools/private_key.pem"}, "properties": {"repobilityId": "94e40c9159be3961", "scanner": "scanner-primary", "fingerprint": "91963e2a03e976dd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "secret"]}}, {"ruleId": "scanner-ea8fcddc6425c3f9", "level": "error", "message": {"text": "Secret leak: Asymmetric Private Key \u2014 addons/iot_box_image/overwrite_after_init/etc/ssl/private/nginx-cert.key"}, "properties": {"repobilityId": "d0ad9951daaa2a62", "scanner": "scanner-primary", "fingerprint": "ea8fcddc6425c3f9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "secret"]}}, {"ruleId": "scanner-a82aa16b56af3f1d", "level": "error", "message": {"text": "Secret leak: Asymmetric Private Key \u2014 addons/l10n_it_edi/data/pkey.key"}, "properties": {"repobilityId": "1f4d1e4266eddcaa", "scanner": "scanner-primary", "fingerprint": "a82aa16b56af3f1d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["trivy", "secret"]}}, {"ruleId": "scanner-3e6d5842f9765076", "level": "warning", "message": {"text": "Privileged port 993 in use"}, "properties": {"repobilityId": "a36e56a26353e9ee", "scanner": "scanner-primary", "fingerprint": "3e6d5842f9765076", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/google_gmail/models/fetchmail_server.py"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04e58317aa463149", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in setup.py:10"}, "properties": {"repobilityId": "850e38b7c3babe65", "scanner": "scanner-primary", "fingerprint": "04e58317aa463149", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup.py"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-8c8144f95de8e45d", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in odoo/addons/base/models/ir_attachment.py:476"}, "properties": {"repobilityId": "fc1021a390899fa8", "scanner": "scanner-primary", "fingerprint": "8c8144f95de8e45d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_attachment.py"}, "region": {"startLine": 476}}}]}, {"ruleId": "scanner-997afdff993ac219", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in odoo/cli/deploy.py:77"}, "properties": {"repobilityId": "795a4d0c2b154561", "scanner": "scanner-primary", "fingerprint": "997afdff993ac219", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/cli/deploy.py"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-696a567ee5a273d6", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in odoo/cli/shell.py:82"}, "properties": {"repobilityId": "f5dee88dec9484fe", "scanner": "scanner-primary", "fingerprint": "696a567ee5a273d6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/cli/shell.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-01cf9411792a62bd", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in odoo/service/server.py:1529"}, "properties": {"repobilityId": "5ba665b93c2a0755", "scanner": "scanner-primary", "fingerprint": "01cf9411792a62bd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/service/server.py"}, "region": {"startLine": 1529}}}]}, {"ruleId": "scanner-089e0de226ea2a41", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in addons/iot_drivers/tools/upgrade.py:205"}, "properties": {"repobilityId": "a210b118f67d9c21", "scanner": "scanner-primary", "fingerprint": "089e0de226ea2a41", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/tools/upgrade.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "scanner-79acebc1927e726f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale_loyalty/static/src/interactions/checkout.js:16"}, "properties": {"repobilityId": "baf4e223734413e9", "scanner": "scanner-primary", "fingerprint": "79acebc1927e726f", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale_loyalty/static/src/interactions/checkout.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-31cc023c000ad570", "level": "warning", "message": {"text": "Possible secret in addons/mail/static/lib/odoo_sfu/odoo_sfu.js"}, "properties": {"repobilityId": "1fb5e0481500e321", "scanner": "scanner-primary", "fingerprint": "31cc023c000ad570", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/lib/odoo_sfu/odoo_sfu.js"}, "region": {"startLine": 12752}}}]}, {"ruleId": "scanner-282c65dc55188657", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/mail/static/src/core/common/message_model.js:559"}, "properties": {"repobilityId": "19c448997c071c77", "scanner": "scanner-primary", "fingerprint": "282c65dc55188657", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/core/common/message_model.js"}, "region": {"startLine": 559}}}]}, {"ruleId": "scanner-fa6c92f8c3bcf9d9", "level": "warning", "message": {"text": "Possible secret in addons/l10n_es_edi_tbai/tests/common.py"}, "properties": {"repobilityId": "6ec79d142be2485d", "scanner": "scanner-primary", "fingerprint": "fa6c92f8c3bcf9d9", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/l10n_es_edi_tbai/tests/common.py"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-0ec7ed62c1c97b32", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/website_event/static/src/interactions/website_event_ticket_details.js:90"}, "properties": {"repobilityId": "0d2cad145b437228", "scanner": "scanner-primary", "fingerprint": "0ec7ed62c1c97b32", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_event/static/src/interactions/website_event_ticket_details.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-d48d7c5b4b53a421", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/website_event/static/src/interactions/website_event_slot_details.js:108"}, "properties": {"repobilityId": "d8b390dc6b47eda6", "scanner": "scanner-primary", "fingerprint": "d48d7c5b4b53a421", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_event/static/src/interactions/website_event_slot_details.js"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-146d5f9eb090cadd", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/js/utils.js:28"}, "properties": {"repobilityId": "da61e675ac42762b", "scanner": "scanner-primary", "fingerprint": "146d5f9eb090cadd", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/utils.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-7c96724af1024d02", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/components/dialog/add_page_dialog.js:191"}, "properties": {"repobilityId": "d10c6857a62331f4", "scanner": "scanner-primary", "fingerprint": "7c96724af1024d02", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/components/dialog/add_page_dialog.js"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-4b339d836c713ef2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website/static/src/builder/plugins/translation_plugin.js:368"}, "properties": {"repobilityId": "d1cb5d560a30242d", "scanner": "scanner-primary", "fingerprint": "4b339d836c713ef2", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/translation_plugin.js"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-8ed5f67eceae563e", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/builder/plugins/translation_plugin.js:340"}, "properties": {"repobilityId": "070d4872ea62f8d7", "scanner": "scanner-primary", "fingerprint": "8ed5f67eceae563e", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/builder/plugins/translation_plugin.js"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-4ab6a38e19d26ccc", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/website/static/src/client_actions/website_preview/edit_website_systray_item.js:116"}, "properties": {"repobilityId": "a1d71bae230e5da1", "scanner": "scanner-primary", "fingerprint": "4ab6a38e19d26ccc", "layer": "security", "severity": "medium", "confidence": 0.85, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/client_actions/website_preview/edit_website_systray_item.js"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-ffbb3c5f59ee80a9", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in addons/payment_asiapay/models/payment_provider.py:41"}, "properties": {"repobilityId": "c8d4d29c79d9d53d", "scanner": "scanner-primary", "fingerprint": "ffbb3c5f59ee80a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/payment_asiapay/models/payment_provider.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-01676e46c5a75c8b", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in addons/hr_homeworking_calendar/static/src/calendar/common/calendar_common_renderer.js:88"}, "properties": {"repobilityId": "693a97bea95c6b2a", "scanner": "scanner-primary", "fingerprint": "01676e46c5a75c8b", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/hr_homeworking_calendar/static/src/calendar/common/calendar_common_renderer.js"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-36806cceaf07d550", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in addons/certificate/models/key.py:13"}, "properties": {"repobilityId": "8169a93381710979", "scanner": "scanner-primary", "fingerprint": "36806cceaf07d550", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/certificate/models/key.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-96c75d4b2e315719", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in addons/auth_passkey/_vendor/webauthn/helpers/algorithms.py:10"}, "properties": {"repobilityId": "b2424a1d356e7999", "scanner": "scanner-primary", "fingerprint": "96c75d4b2e315719", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/helpers/algorithms.py"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-0cc6cb223b20f076", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in addons/auth_passkey/_vendor/webauthn/helpers/tpm/structs.py:44"}, "properties": {"repobilityId": "8e47acd398f8e823", "scanner": "scanner-primary", "fingerprint": "0cc6cb223b20f076", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_passkey/_vendor/webauthn/helpers/tpm/structs.py"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-183df042f9f93a52", "level": "warning", "message": {"text": "Possible secret in addons/survey/tests/common.py"}, "properties": {"repobilityId": "cb0848dc2b42c6b7", "scanner": "scanner-primary", "fingerprint": "183df042f9f93a52", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/survey/tests/common.py"}, "region": {"startLine": 317}}}]}, {"ruleId": "scanner-f6850d6382710abe", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_form.js:353"}, "properties": {"repobilityId": "bd98e5f54fe21c46", "scanner": "scanner-primary", "fingerprint": "f6850d6382710abe", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/survey/static/src/interactions/survey_form.js"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-e7909247d2f2ca1e", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_session_manage.js:429"}, "properties": {"repobilityId": "9032b5ca9646cf34", "scanner": "scanner-primary", "fingerprint": "e7909247d2f2ca1e", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/survey/static/src/interactions/survey_session_manage.js"}, "region": {"startLine": 429}}}]}, {"ruleId": "scanner-3dd3cdd30239fc60", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/survey/static/src/interactions/survey_session_leaderboard.js:132"}, "properties": {"repobilityId": "7e648322bed7b7a4", "scanner": "scanner-primary", "fingerprint": "3dd3cdd30239fc60", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/survey/static/src/interactions/survey_session_leaderboard.js"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-c8b2ff857c4b3670", "level": "warning", "message": {"text": "Possible secret in addons/im_livechat/tests/common.py"}, "properties": {"repobilityId": "566c54c880be5ce8", "scanner": "scanner-primary", "fingerprint": "c8b2ff857c4b3670", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/im_livechat/tests/common.py"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-4f8dea6fd473fa33", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_google_map/static/src/lib/markerclusterer.js:1073"}, "properties": {"repobilityId": "bc767d93040da447", "scanner": "scanner-primary", "fingerprint": "4f8dea6fd473fa33", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_google_map/static/src/lib/markerclusterer.js"}, "region": {"startLine": 1073}}}]}, {"ruleId": "scanner-27dc50e9804dfccf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/point_of_sale/static/src/app/utils/html-to-image.js:505"}, "properties": {"repobilityId": "34f097c35ebe1d68", "scanner": "scanner-primary", "fingerprint": "27dc50e9804dfccf", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/point_of_sale/static/src/app/utils/html-to-image.js"}, "region": {"startLine": 505}}}]}, {"ruleId": "scanner-4c44f0a4fc71877f", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in addons/html_editor/static/lib/diff2html/diff2html.min.js:1"}, "properties": {"repobilityId": "f59afb4258d858be", "scanner": "scanner-primary", "fingerprint": "4c44f0a4fc71877f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/lib/diff2html/diff2html.min.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9682c4128d2b4860", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/fields/html_field.js:251"}, "properties": {"repobilityId": "227ebf0820364e99", "scanner": "scanner-primary", "fingerprint": "9682c4128d2b4860", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/fields/html_field.js"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-aa808508d1d0533e", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/fields/html_field.js:46"}, "properties": {"repobilityId": "4daf319d479479b5", "scanner": "scanner-primary", "fingerprint": "aa808508d1d0533e", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/fields/html_field.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-33c9d1f69ccb3c9c", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/utils/html.js:9"}, "properties": {"repobilityId": "c2576287c2f5e2c4", "scanner": "scanner-primary", "fingerprint": "33c9d1f69ccb3c9c", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/html.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-97c312fee66f5198", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/components/html_viewer/html_viewer.js:200"}, "properties": {"repobilityId": "a001753c64e92464", "scanner": "scanner-primary", "fingerprint": "97c312fee66f5198", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/components/html_viewer/html_viewer.js"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-2c2a13c20493af3b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/core/clipboard_plugin.js:473"}, "properties": {"repobilityId": "ce540f32dd9d2a9f", "scanner": "scanner-primary", "fingerprint": "2c2a13c20493af3b", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/clipboard_plugin.js"}, "region": {"startLine": 473}}}]}, {"ruleId": "scanner-d95eb4568696b244", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/public/html_migrations/html_migrations_interaction.js:47"}, "properties": {"repobilityId": "7069e6d15aa4f746", "scanner": "scanner-primary", "fingerprint": "d95eb4568696b244", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/public/html_migrations/html_migrations_interaction.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-57a0b4e5a202399c", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_editor/static/src/main/link/link_plugin.js:96"}, "properties": {"repobilityId": "465ef366a2383723", "scanner": "scanner-primary", "fingerprint": "57a0b4e5a202399c", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/link/link_plugin.js"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-1201cba91c81509f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:601"}, "properties": {"repobilityId": "e96479c6c43ecaa8", "scanner": "scanner-primary", "fingerprint": "1201cba91c81509f", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js"}, "region": {"startLine": 601}}}]}, {"ruleId": "scanner-1d05a67dc35dfc49", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/html_editor/static/src/others/embedded_components/core/syntax_highlighting/syntax_highlighting_utils.js:80"}, "properties": {"repobilityId": "d6d6e79583a88f15", "scanner": "scanner-primary", "fingerprint": "1d05a67dc35dfc49", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/embedded_components/core/syntax_highlighting/syntax_highlighting_utils.js"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-9c0c10b597929ad1", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in addons/cloud_storage_google/utils/cloud_storage_google_utils.py:222"}, "properties": {"repobilityId": "5261829bc5a87c92", "scanner": "scanner-primary", "fingerprint": "9c0c10b597929ad1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/cloud_storage_google/utils/cloud_storage_google_utils.py"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-e2ebd3bf70c61319", "level": "warning", "message": {"text": "Possible secret in addons/web/static/tests/_framework/mock_server/mock_models/res_users.js"}, "properties": {"repobilityId": "4541b1a988fa64a4", "scanner": "scanner-primary", "fingerprint": "e2ebd3bf70c61319", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/tests/_framework/mock_server/mock_models/res_users.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-cffae6db40d957f4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/dompurify/DOMpurify.js:914"}, "properties": {"repobilityId": "858f5ad2533247a8", "scanner": "scanner-primary", "fingerprint": "cffae6db40d957f4", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/dompurify/DOMpurify.js"}, "region": {"startLine": 914}}}]}, {"ruleId": "scanner-f47a27627866d7a2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/qunit/qunit-2.9.1.js:4464"}, "properties": {"repobilityId": "7b1819ad42a064de", "scanner": "scanner-primary", "fingerprint": "f47a27627866d7a2", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/qunit/qunit-2.9.1.js"}, "region": {"startLine": 4464}}}]}, {"ruleId": "scanner-31ab9d05e52f592b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in addons/web/static/lib/fullcalendar/core/index.global.js:3027"}, "properties": {"repobilityId": "16ca2b5c171ae8e8", "scanner": "scanner-primary", "fingerprint": "31ab9d05e52f592b", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/core/index.global.js"}, "region": {"startLine": 3027}}}]}, {"ruleId": "scanner-978380b489fee583", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in addons/web/static/lib/owl/owl.js:5857"}, "properties": {"repobilityId": "b019fbd0b888df67", "scanner": "scanner-primary", "fingerprint": "978380b489fee583", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/owl/owl.js"}, "region": {"startLine": 5857}}}]}, {"ruleId": "scanner-ace798a4b0d52f2d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/owl/owl.js:1463"}, "properties": {"repobilityId": "d964580147963e25", "scanner": "scanner-primary", "fingerprint": "ace798a4b0d52f2d", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/owl/owl.js"}, "region": {"startLine": 1463}}}]}, {"ruleId": "scanner-86265b65507fda9b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/prismjs/prism.js:592"}, "properties": {"repobilityId": "85228823e015974c", "scanner": "scanner-primary", "fingerprint": "86265b65507fda9b", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/prismjs/prism.js"}, "region": {"startLine": 592}}}]}, {"ruleId": "scanner-c60c4f946ba6d7e7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/lib/pdfjs/web/viewer.js:2394"}, "properties": {"repobilityId": "7e67cd27254e3896", "scanner": "scanner-primary", "fingerprint": "c60c4f946ba6d7e7", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/pdfjs/web/viewer.js"}, "region": {"startLine": 2394}}}]}, {"ruleId": "scanner-fa3cbce0a5a681c4", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/core/file_upload/file_upload_service.js:95"}, "properties": {"repobilityId": "675ecda8cea33a06", "scanner": "scanner-primary", "fingerprint": "fa3cbce0a5a681c4", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/file_upload/file_upload_service.js"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-9ec8eb13a2326e10", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/core/network/download.js:544"}, "properties": {"repobilityId": "21a1d61a4f019d55", "scanner": "scanner-primary", "fingerprint": "9ec8eb13a2326e10", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/network/download.js"}, "region": {"startLine": 544}}}]}, {"ruleId": "scanner-af0d03045e4c149f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/src/core/utils/html.js:256"}, "properties": {"repobilityId": "9a309d25f224a7dd", "scanner": "scanner-primary", "fingerprint": "af0d03045e4c149f", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/utils/html.js"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-e97ed6826c250e7a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/web/static/src/public/colibri.js:187"}, "properties": {"repobilityId": "03aa7d2f099ad139", "scanner": "scanner-primary", "fingerprint": "e97ed6826c250e7a", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/public/colibri.js"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-ebcd62c6a1f4639c", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/web/static/src/webclient/debug/profiling/profiling_qweb.js:304"}, "properties": {"repobilityId": "28ae863d7b82bcf3", "scanner": "scanner-primary", "fingerprint": "ebcd62c6a1f4639c", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/webclient/debug/profiling/profiling_qweb.js"}, "region": {"startLine": 304}}}]}, {"ruleId": "scanner-630a10b6742ea220", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_builder/static/src/snippets/snippet_service.js:154"}, "properties": {"repobilityId": "08b549a22cd8025c", "scanner": "scanner-primary", "fingerprint": "630a10b6742ea220", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/snippets/snippet_service.js"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-08b9598aa4360fc6", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in addons/html_builder/static/src/core/operation.js:40"}, "properties": {"repobilityId": "6268065e2e7fdffe", "scanner": "scanner-primary", "fingerprint": "08b9598aa4360fc6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/core/operation.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-ba2d51c947c44e94", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in addons/html_builder/static/src/plugins/many2one_option_plugin.js:71"}, "properties": {"repobilityId": "8148e98c586479b3", "scanner": "scanner-primary", "fingerprint": "ba2d51c947c44e94", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_builder/static/src/plugins/many2one_option_plugin.js"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-0d01a8934864d469", "level": "warning", "message": {"text": "Possible secret in addons/account/tests/common.py"}, "properties": {"repobilityId": "d240de6d04aa9831", "scanner": "scanner-primary", "fingerprint": "0d01a8934864d469", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account/tests/common.py"}, "region": {"startLine": 263}}}]}, {"ruleId": "scanner-22d89cc8730a74d3", "level": "note", "message": {"text": "Insecure pattern 'document_write' in addons/account_edi/models/account_edi_document.py:122"}, "properties": {"repobilityId": "5de58e53193c064a", "scanner": "scanner-primary", "fingerprint": "22d89cc8730a74d3", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_edi/models/account_edi_document.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-7937351971f12313", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in addons/website_slides/static/src/interactions/course_page.js:68"}, "properties": {"repobilityId": "63667a8c5f120585", "scanner": "scanner-primary", "fingerprint": "7937351971f12313", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_slides/static/src/interactions/course_page.js"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-9e55a3a43c28e2d5", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in addons/partner_autocomplete/static/lib/jsvat.js:246"}, "properties": {"repobilityId": "f8349a449676c555", "scanner": "scanner-primary", "fingerprint": "9e55a3a43c28e2d5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/partner_autocomplete/static/lib/jsvat.js"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-ed38a7cf740422f9", "level": "warning", "message": {"text": "Possible secret in addons/hr_holidays/tests/common.py"}, "properties": {"repobilityId": "c3ee46c445046dae", "scanner": "scanner-primary", "fingerprint": "ed38a7cf740422f9", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/hr_holidays/tests/common.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-3dba527c9ffab1c7", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/js/variant_mixin.js:375"}, "properties": {"repobilityId": "e7bb00b7e19b922b", "scanner": "scanner-primary", "fingerprint": "3dba527c9ffab1c7", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/js/variant_mixin.js"}, "region": {"startLine": 375}}}]}, {"ruleId": "scanner-b0fac36105795849", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale/static/src/js/website_sale_utils.js:117"}, "properties": {"repobilityId": "8297bd0e415362f9", "scanner": "scanner-primary", "fingerprint": "b0fac36105795849", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/js/website_sale_utils.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-1c84e49c74b527b4", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/js/website_sale_utils.js:132"}, "properties": {"repobilityId": "e5785ee9c0722b0e", "scanner": "scanner-primary", "fingerprint": "1c84e49c74b527b4", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/js/website_sale_utils.js"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-93dc48ac5f162b95", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/website_sale/static/src/interactions/checkout.js:91"}, "properties": {"repobilityId": "d58883f3398524ac", "scanner": "scanner-primary", "fingerprint": "93dc48ac5f162b95", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/interactions/checkout.js"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-d1a1a5e1119ecafd", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in addons/website_sale/static/src/interactions/website_sale.js:269"}, "properties": {"repobilityId": "ee746b9b40af9df7", "scanner": "scanner-primary", "fingerprint": "d1a1a5e1119ecafd", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website_sale/static/src/interactions/website_sale.js"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-ab7b9494c37820b6", "level": "warning", "message": {"text": "Possible secret in addons/analytic/tests/common.py"}, "properties": {"repobilityId": "eae7b8b65c215607", "scanner": "scanner-primary", "fingerprint": "ab7b9494c37820b6", "layer": "security", "severity": "medium", "confidence": 0.58, "tags": ["secrets", "password_literal"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/analytic/tests/common.py"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-2de387b34b024359", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in addons/payment/static/src/interactions/payment_form.js:489"}, "properties": {"repobilityId": "ca1ed3cb5af5dd63", "scanner": "scanner-primary", "fingerprint": "2de387b34b024359", "layer": "security", "severity": "medium", "confidence": 0.65, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/payment/static/src/interactions/payment_form.js"}, "region": {"startLine": 489}}}]}, {"ruleId": "scanner-9e7cd0c3669210a0", "level": "error", "message": {"text": "Insecure pattern 'subprocess_shell_true' in doc/cla/stats.py:29"}, "properties": {"repobilityId": "05e27f9aecaa65ff", "scanner": "scanner-primary", "fingerprint": "9e7cd0c3669210a0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "doc/cla/stats.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-c020c811b669b269", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in setup/package.py:31"}, "properties": {"repobilityId": "23147f8b340260d1", "scanner": "scanner-primary", "fingerprint": "c020c811b669b269", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-74979cce51840597", "level": "note", "message": {"text": "Very large file: odoo/http.py (2901 lines)"}, "properties": {"repobilityId": "4b89720070a9109f", "scanner": "scanner-primary", "fingerprint": "74979cce51840597", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-434ed0963fbc65f5", "level": "note", "message": {"text": "Very large file: odoo/tests/common.py (2770 lines)"}, "properties": {"repobilityId": "2bb2a05d796189b4", "scanner": "scanner-primary", "fingerprint": "434ed0963fbc65f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8e510da6e4851698", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_qweb.py (3058 lines)"}, "properties": {"repobilityId": "c27b0b9a7c98c3bd", "scanner": "scanner-primary", "fingerprint": "8e510da6e4851698", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a112f0144c2dd7a", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_module.py (1101 lines)"}, "properties": {"repobilityId": "7d7dd894cb53c072", "scanner": "scanner-primary", "fingerprint": "7a112f0144c2dd7a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd085dd3d9a158b5", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_actions.py (1463 lines)"}, "properties": {"repobilityId": "4c9240b278a6500f", "scanner": "scanner-primary", "fingerprint": "fd085dd3d9a158b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0502480232bf8c7e", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_actions_report.py (1217 lines)"}, "properties": {"repobilityId": "222edcb747560474", "scanner": "scanner-primary", "fingerprint": "0502480232bf8c7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa7db75b43bcfa50", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_mail_server.py (991 lines)"}, "properties": {"repobilityId": "d777f11df02df995", "scanner": "scanner-primary", "fingerprint": "fa7db75b43bcfa50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f48ffcc5015486e6", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/res_partner.py (1267 lines)"}, "properties": {"repobilityId": "b2599c655ef6c8fd", "scanner": "scanner-primary", "fingerprint": "f48ffcc5015486e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-38f4e72736717812", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/res_users.py (1843 lines)"}, "properties": {"repobilityId": "50509027b6de9026", "scanner": "scanner-primary", "fingerprint": "38f4e72736717812", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6cc63295d2bb13b9", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_model.py (2725 lines)"}, "properties": {"repobilityId": "58b0727aaded8163", "scanner": "scanner-primary", "fingerprint": "6cc63295d2bb13b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6a02655a485a6311", "level": "note", "message": {"text": "Very large file: odoo/addons/base/models/ir_ui_view.py (3623 lines)"}, "properties": {"repobilityId": "41c835157acd179c", "scanner": "scanner-primary", "fingerprint": "6a02655a485a6311", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bd148deedd1f4b39", "level": "note", "message": {"text": "Very large file: odoo/addons/base/tests/test_views.py (6126 lines)"}, "properties": {"repobilityId": "601e755c5a9c0773", "scanner": "scanner-primary", "fingerprint": "bd148deedd1f4b39", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff69f5560d4a8288", "level": "note", "message": {"text": "Very large file: odoo/addons/base/tests/test_res_partner.py (1318 lines)"}, "properties": {"repobilityId": "28036638ae88e266", "scanner": "scanner-primary", "fingerprint": "ff69f5560d4a8288", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba173984f48f31f1", "level": "note", "message": {"text": "Very large file: odoo/addons/base/tests/test_translate.py (2001 lines)"}, "properties": {"repobilityId": "cfe48e832f754f2b", "scanner": "scanner-primary", "fingerprint": "ba173984f48f31f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a8940b07d4511e6", "level": "note", "message": {"text": "Very large file: odoo/addons/base/tests/test_expression.py (2848 lines)"}, "properties": {"repobilityId": "ab3a95326a5f486e", "scanner": "scanner-primary", "fingerprint": "7a8940b07d4511e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82863c3c356dd792", "level": "note", "message": {"text": "Very large file: odoo/addons/base/tests/test_qweb.py (2537 lines)"}, "properties": {"repobilityId": "46492af37219c19b", "scanner": "scanner-primary", "fingerprint": "82863c3c356dd792", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b203f049a4f0e28", "level": "note", "message": {"text": "Very large file: odoo/addons/test_read_group/tests/test_formatted_read_group.py (2309 lines)"}, "properties": {"repobilityId": "67827660b417745d", "scanner": "scanner-primary", "fingerprint": "3b203f049a4f0e28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5f64c9b48488876", "level": "note", "message": {"text": "Very large file: odoo/addons/test_read_group/tests/test_private_read_group.py (1517 lines)"}, "properties": {"repobilityId": "04ef4afb77a16e1c", "scanner": "scanner-primary", "fingerprint": "a5f64c9b48488876", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e47ece20b8cd3cf", "level": "note", "message": {"text": "Very large file: odoo/addons/test_assetsbundle/tests/test_assetsbundle.py (2107 lines)"}, "properties": {"repobilityId": "f295a6706ef2dac1", "scanner": "scanner-primary", "fingerprint": "5e47ece20b8cd3cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-545a26a4b37ddcb6", "level": "note", "message": {"text": "Very large file: odoo/addons/test_orm/models/test_orm.py (2537 lines)"}, "properties": {"repobilityId": "206dd85b1ca35b83", "scanner": "scanner-primary", "fingerprint": "545a26a4b37ddcb6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-14c97414a0d763c7", "level": "note", "message": {"text": "Very large file: odoo/addons/test_orm/tests/test_onchange.py (1397 lines)"}, "properties": {"repobilityId": "d7fc995c3fa275ba", "scanner": "scanner-primary", "fingerprint": "14c97414a0d763c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c3998a59d359592", "level": "note", "message": {"text": "Very large file: odoo/addons/test_orm/tests/test_fields.py (5408 lines)"}, "properties": {"repobilityId": "7acc89635cdedb24", "scanner": "scanner-primary", "fingerprint": "1c3998a59d359592", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c9b0cd4f1a153092", "level": "note", "message": {"text": "Very large file: odoo/addons/test_orm/tests/test_search.py (1960 lines)"}, "properties": {"repobilityId": "d242fbc9e18b13c9", "scanner": "scanner-primary", "fingerprint": "c9b0cd4f1a153092", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8538d392659d48a8", "level": "note", "message": {"text": "Very large file: odoo/addons/test_orm/tests/test_properties.py (3521 lines)"}, "properties": {"repobilityId": "00fbeecd2bca3c84", "scanner": "scanner-primary", "fingerprint": "8538d392659d48a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-668c5bfa4cb7f449", "level": "note", "message": {"text": "Very large file: odoo/upgrade_code/18.3-00-l10n-fiscal-position-taxes.py (1170 lines)"}, "properties": {"repobilityId": "f4ef8d0ddd6d13c0", "scanner": "scanner-primary", "fingerprint": "668c5bfa4cb7f449", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba48bad6ca78a670", "level": "note", "message": {"text": "Very large file: odoo/orm/registry.py (1269 lines)"}, "properties": {"repobilityId": "8c5309d7c0d12067", "scanner": "scanner-primary", "fingerprint": "ba48bad6ca78a670", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-29354a46da42bd72", "level": "note", "message": {"text": "Very large file: odoo/orm/models.py (7130 lines)"}, "properties": {"repobilityId": "aea452135ad24029", "scanner": "scanner-primary", "fingerprint": "29354a46da42bd72", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bcbaa194bb5ab39d", "level": "note", "message": {"text": "Very large file: odoo/orm/fields.py (1937 lines)"}, "properties": {"repobilityId": "1670a1791a25a4c7", "scanner": "scanner-primary", "fingerprint": "bcbaa194bb5ab39d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ed302b229c3ad16f", "level": "note", "message": {"text": "Very large file: odoo/orm/domains.py (2023 lines)"}, "properties": {"repobilityId": "a84ea7c54cb09921", "scanner": "scanner-primary", "fingerprint": "ed302b229c3ad16f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-715a4993fdc1c597", "level": "note", "message": {"text": "Very large file: odoo/orm/fields_relational.py (1779 lines)"}, "properties": {"repobilityId": "2a895db57ea9bb49", "scanner": "scanner-primary", "fingerprint": "715a4993fdc1c597", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82f85de76f336689", "level": "note", "message": {"text": "Very large file: odoo/service/server.py (1685 lines)"}, "properties": {"repobilityId": "0a082fbde9c90e21", "scanner": "scanner-primary", "fingerprint": "82f85de76f336689", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-520ca2e35d12dc1a", "level": "note", "message": {"text": "Very large file: odoo/tools/translate.py (1994 lines)"}, "properties": {"repobilityId": "c9b5c07da6bc14bb", "scanner": "scanner-primary", "fingerprint": "520ca2e35d12dc1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d77a24c6554d87d9", "level": "note", "message": {"text": "Very large file: odoo/tools/misc.py (1989 lines)"}, "properties": {"repobilityId": "b11f8e5719195b44", "scanner": "scanner-primary", "fingerprint": "d77a24c6554d87d9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-34c3e158c5211d4c", "level": "note", "message": {"text": "Very large file: odoo/tools/config.py (1079 lines)"}, "properties": {"repobilityId": "4686b743b6b7370f", "scanner": "scanner-primary", "fingerprint": "34c3e158c5211d4c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5cb73c30444b9448", "level": "note", "message": {"text": "Very large file: addons/test_import_export/tests/test_import.py (1304 lines)"}, "properties": {"repobilityId": "10d898ce1f95af9f", "scanner": "scanner-primary", "fingerprint": "5cb73c30444b9448", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9892f3508b4b4ed3", "level": "note", "message": {"text": "Very large file: addons/test_import_export/tests/test_load.py (1793 lines)"}, "properties": {"repobilityId": "7a52bd6612668814", "scanner": "scanner-primary", "fingerprint": "9892f3508b4b4ed3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f45b3a0519e7bfe", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_performance.py (2015 lines)"}, "properties": {"repobilityId": "85091be76d2b24a7", "scanner": "scanner-primary", "fingerprint": "2f45b3a0519e7bfe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-767c7564d72b4835", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_mail.py (1186 lines)"}, "properties": {"repobilityId": "0aab6c4243623c88", "scanner": "scanner-primary", "fingerprint": "767c7564d72b4835", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b2fff4a2a3a3d669", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_message_track.py (1165 lines)"}, "properties": {"repobilityId": "90a849992b51939d", "scanner": "scanner-primary", "fingerprint": "b2fff4a2a3a3d669", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e9c1d9ea6046472d", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_followers.py (1070 lines)"}, "properties": {"repobilityId": "2f5b9fa9cb695f2e", "scanner": "scanner-primary", "fingerprint": "e9c1d9ea6046472d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-99224a2314603043", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_gateway.py (2781 lines)"}, "properties": {"repobilityId": "58ee00d1c3dda71c", "scanner": "scanner-primary", "fingerprint": "99224a2314603043", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cba8f8b0ec66585a", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_composer.py (3806 lines)"}, "properties": {"repobilityId": "7fddb24a599eeb90", "scanner": "scanner-primary", "fingerprint": "cba8f8b0ec66585a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b71a9c2f31fdcc79", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_thread_internals.py (1620 lines)"}, "properties": {"repobilityId": "3b105c82d625fa85", "scanner": "scanner-primary", "fingerprint": "b71a9c2f31fdcc79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9927ff524ef30466", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_alias.py (1060 lines)"}, "properties": {"repobilityId": "fb242e931d2166be", "scanner": "scanner-primary", "fingerprint": "9927ff524ef30466", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f8caac4066308d2", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_mail_activity.py (966 lines)"}, "properties": {"repobilityId": "7e35632ac69cfdf1", "scanner": "scanner-primary", "fingerprint": "4f8caac4066308d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eac7bb101b55877c", "level": "note", "message": {"text": "Very large file: addons/test_mail/tests/test_message_post.py (2460 lines)"}, "properties": {"repobilityId": "f925ad01c86d833c", "scanner": "scanner-primary", "fingerprint": "eac7bb101b55877c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe99b756560b3da9", "level": "note", "message": {"text": "Very large file: addons/mail/models/mail_mail.py (1007 lines)"}, "properties": {"repobilityId": "52a59fd0c3521e97", "scanner": "scanner-primary", "fingerprint": "fe99b756560b3da9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-81a3af263d14642a", "level": "note", "message": {"text": "Very large file: addons/mail/models/mail_message.py (1475 lines)"}, "properties": {"repobilityId": "9d6ab9dd7384b06a", "scanner": "scanner-primary", "fingerprint": "81a3af263d14642a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a102efd097f47db", "level": "note", "message": {"text": "Very large file: addons/mail/models/mail_thread.py (5118 lines)"}, "properties": {"repobilityId": "95a4f349540be050", "scanner": "scanner-primary", "fingerprint": "7a102efd097f47db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-50939110048de98d", "level": "note", "message": {"text": "Very large file: addons/mail/models/discuss/discuss_channel.py (1690 lines)"}, "properties": {"repobilityId": "3f46cc3c2821f11e", "scanner": "scanner-primary", "fingerprint": "50939110048de98d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-acec5838d1774b2b", "level": "note", "message": {"text": "Very large file: addons/mail/tests/common.py (2107 lines)"}, "properties": {"repobilityId": "11cb0550a0649eea", "scanner": "scanner-primary", "fingerprint": "acec5838d1774b2b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb0e1829082ed1dd", "level": "note", "message": {"text": "Very large file: addons/mail/tests/discuss/test_rtc.py (1295 lines)"}, "properties": {"repobilityId": "89d0c06d376775fc", "scanner": "scanner-primary", "fingerprint": "fb0e1829082ed1dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b0fc23002053de03", "level": "note", "message": {"text": "Very large file: addons/mail/tests/discuss/test_discuss_channel.py (1045 lines)"}, "properties": {"repobilityId": "82d3adb6bc41ceef", "scanner": "scanner-primary", "fingerprint": "b0fc23002053de03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-76f67bd2f01e0ca7", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/suggestion/suggestion.test.js (1406 lines)"}, "properties": {"repobilityId": "0d99b2e883da0958", "scanner": "scanner-primary", "fingerprint": "76f67bd2f01e0ca7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b5c98a3058dd5ac2", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/composer/composer.test.js (1944 lines)"}, "properties": {"repobilityId": "e7e799419d9bc769", "scanner": "scanner-primary", "fingerprint": "b5c98a3058dd5ac2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e81579b3ffa4e2bd", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/mock_server/mail_mock_server.js (1714 lines)"}, "properties": {"repobilityId": "f1bb0470aca60de6", "scanner": "scanner-primary", "fingerprint": "e81579b3ffa4e2bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c7a5e88323b93a24", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/message/message.test.js (2441 lines)"}, "properties": {"repobilityId": "2efbce318942b720", "scanner": "scanner-primary", "fingerprint": "c7a5e88323b93a24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5b942390af0b02d", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/inline/convert_inline.test.js (1572 lines)"}, "properties": {"repobilityId": "3cf94b8fe6980948", "scanner": "scanner-primary", "fingerprint": "a5b942390af0b02d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0207d0344da3e350", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/discuss/call/call.test.js (1319 lines)"}, "properties": {"repobilityId": "15b85507997fc282", "scanner": "scanner-primary", "fingerprint": "0207d0344da3e350", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ba3dff7ee6a3f82", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/core/record.test.js (1487 lines)"}, "properties": {"repobilityId": "ef1faf2224e95ef5", "scanner": "scanner-primary", "fingerprint": "3ba3dff7ee6a3f82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ecd79937f8b948a", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/discuss_app/sidebar.test.js (1399 lines)"}, "properties": {"repobilityId": "8df2226af80ce5e2", "scanner": "scanner-primary", "fingerprint": "8ecd79937f8b948a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6a206e45144fa325", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/discuss_app/discuss.test.js (2566 lines)"}, "properties": {"repobilityId": "ab8b4e36ecb2b78d", "scanner": "scanner-primary", "fingerprint": "6a206e45144fa325", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7a3c104a489bf565", "level": "note", "message": {"text": "Very large file: addons/mail/static/tests/messaging_menu/messaging_menu.test.js (1408 lines)"}, "properties": {"repobilityId": "bc836ccd486e8fd4", "scanner": "scanner-primary", "fingerprint": "7a3c104a489bf565", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3e4cbc438c902788", "level": "note", "message": {"text": "Very large file: addons/mail/static/lib/lame/lame.js (15524 lines)"}, "properties": {"repobilityId": "b3a08cc76f16d9c6", "scanner": "scanner-primary", "fingerprint": "3e4cbc438c902788", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f21efd42a3c21059", "level": "note", "message": {"text": "Very large file: addons/mail/static/lib/odoo_sfu/odoo_sfu.js (13832 lines)"}, "properties": {"repobilityId": "32df21c0ed7e66b7", "scanner": "scanner-primary", "fingerprint": "f21efd42a3c21059", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df6de0896f34017a", "level": "note", "message": {"text": "Very large file: addons/mail/static/src/discuss/call/common/rtc_service.js (2461 lines)"}, "properties": {"repobilityId": "0ce505db251515f8", "scanner": "scanner-primary", "fingerprint": "df6de0896f34017a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6924026d7a24a54a", "level": "note", "message": {"text": "Very large file: addons/mail/static/src/views/web/fields/html_mail_field/convert_inline.js (2213 lines)"}, "properties": {"repobilityId": "9a5cedbdf86ab1e1", "scanner": "scanner-primary", "fingerprint": "6924026d7a24a54a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cfc887d63c02a462", "level": "note", "message": {"text": "Very large file: addons/mail/wizard/mail_compose_message.py (1635 lines)"}, "properties": {"repobilityId": "b34b8b547b50b1cf", "scanner": "scanner-primary", "fingerprint": "cfc887d63c02a462", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-25826457bd431cbc", "level": "note", "message": {"text": "Very large file: addons/stock_picking_batch/tests/test_batch_picking.py (1339 lines)"}, "properties": {"repobilityId": "c0b1d6cfe4c3ae66", "scanner": "scanner-primary", "fingerprint": "25826457bd431cbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ba9418e93c1259d", "level": "note", "message": {"text": "Very large file: addons/sale_loyalty/models/sale_order.py (1566 lines)"}, "properties": {"repobilityId": "7f4144c544ba2076", "scanner": "scanner-primary", "fingerprint": "4ba9418e93c1259d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b395ce1c1d08b7f1", "level": "note", "message": {"text": "Very large file: addons/sale_loyalty/tests/test_program_numbers.py (2076 lines)"}, "properties": {"repobilityId": "f69b251ec4b305d2", "scanner": "scanner-primary", "fingerprint": "b395ce1c1d08b7f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa078ee0140659de", "level": "note", "message": {"text": "Very large file: addons/sale_loyalty/tests/test_loyalty.py (1333 lines)"}, "properties": {"repobilityId": "3767c3d9c36e3e8b", "scanner": "scanner-primary", "fingerprint": "fa078ee0140659de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b96d0ff76560d40e", "level": "note", "message": {"text": "Very large file: addons/account_edi_ubl_cii/models/account_edi_common.py (1155 lines)"}, "properties": {"repobilityId": "32b7d4214fa83749", "scanner": "scanner-primary", "fingerprint": "b96d0ff76560d40e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8d9b4d831d20d13c", "level": "note", "message": {"text": "Very large file: addons/account_edi_ubl_cii/models/account_edi_ubl.py (4038 lines)"}, "properties": {"repobilityId": "55b310fe772eeffd", "scanner": "scanner-primary", "fingerprint": "8d9b4d831d20d13c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9fcf3fc97b3a32a6", "level": "note", "message": {"text": "Very large file: addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py (1319 lines)"}, "properties": {"repobilityId": "5f86c5233d2bb5bd", "scanner": "scanner-primary", "fingerprint": "9fcf3fc97b3a32a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13fadcd6baadf1d8", "level": "note", "message": {"text": "Very large file: addons/pos_sale/tests/test_pos_sale_flow.py (2601 lines)"}, "properties": {"repobilityId": "d6be32ae72a760cf", "scanner": "scanner-primary", "fingerprint": "13fadcd6baadf1d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d9bf333cb00eb0d", "level": "note", "message": {"text": "Very large file: addons/product/models/product_product.py (1197 lines)"}, "properties": {"repobilityId": "2445325128d1813e", "scanner": "scanner-primary", "fingerprint": "3d9bf333cb00eb0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a36d9785fec975f", "level": "note", "message": {"text": "Very large file: addons/product/models/product_template.py (1598 lines)"}, "properties": {"repobilityId": "400e6bb3e1084342", "scanner": "scanner-primary", "fingerprint": "1a36d9785fec975f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d547421e764341f5", "level": "note", "message": {"text": "Very large file: addons/product/tests/test_variants.py (1750 lines)"}, "properties": {"repobilityId": "8aa75983f8a9b092", "scanner": "scanner-primary", "fingerprint": "d547421e764341f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8e3932a4bbc100bb", "level": "note", "message": {"text": "Very large file: addons/purchase_mrp/tests/test_purchase_mrp_flow.py (1466 lines)"}, "properties": {"repobilityId": "3f1e201a445d1eb2", "scanner": "scanner-primary", "fingerprint": "8e3932a4bbc100bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba1747583ff03744", "level": "note", "message": {"text": "Very large file: addons/sale/models/sale_order_line.py (1853 lines)"}, "properties": {"repobilityId": "ffcb3b237e4c2d54", "scanner": "scanner-primary", "fingerprint": "ba1747583ff03744", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-05d8660fad19d466", "level": "note", "message": {"text": "Very large file: addons/sale/models/sale_order.py (2302 lines)"}, "properties": {"repobilityId": "5fe9b90382af95a2", "scanner": "scanner-primary", "fingerprint": "05d8660fad19d466", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0f88561310b3d06e", "level": "note", "message": {"text": "Very large file: addons/sale/tests/test_sale_to_invoice.py (1543 lines)"}, "properties": {"repobilityId": "0d1a96f2f1aa24fa", "scanner": "scanner-primary", "fingerprint": "0f88561310b3d06e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1de7c71909ddb16", "level": "note", "message": {"text": "Very large file: addons/sale/tests/test_taxes_downpayment.py (1204 lines)"}, "properties": {"repobilityId": "e12ddf3b642ddfb0", "scanner": "scanner-primary", "fingerprint": "e1de7c71909ddb16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3c1be70c6c7f5ca9", "level": "note", "message": {"text": "Very large file: addons/sale/tests/test_sale_order.py (1222 lines)"}, "properties": {"repobilityId": "a926563ea31cca8f", "scanner": "scanner-primary", "fingerprint": "3c1be70c6c7f5ca9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e29f95c965dbfd54", "level": "note", "message": {"text": "Very large file: addons/sale/tests/test_sale_prices.py (1383 lines)"}, "properties": {"repobilityId": "391d03244552fe61", "scanner": "scanner-primary", "fingerprint": "e29f95c965dbfd54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9528cbdf9ca5fd5a", "level": "note", "message": {"text": "Very large file: addons/mrp_subcontracting_purchase/tests/test_mrp_subcontracting_purchase.py (1132 lines)"}, "properties": {"repobilityId": "f365475927c0f947", "scanner": "scanner-primary", "fingerprint": "9528cbdf9ca5fd5a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d85a42f569c4f8bb", "level": "note", "message": {"text": "Very large file: addons/l10n_es_edi_verifactu/models/verifactu_document.py (1215 lines)"}, "properties": {"repobilityId": "74e97d0834cb9e24", "scanner": "scanner-primary", "fingerprint": "d85a42f569c4f8bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5800641c2cdbf87e", "level": "note", "message": {"text": "Very large file: addons/sale_stock/tests/test_anglo_saxon_valuation.py (1830 lines)"}, "properties": {"repobilityId": "0c79c2eb1280eeb4", "scanner": "scanner-primary", "fingerprint": "5800641c2cdbf87e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b3504f7496480502", "level": "note", "message": {"text": "Very large file: addons/sale_stock/tests/test_sale_stock.py (2765 lines)"}, "properties": {"repobilityId": "3a18b1471a68d68a", "scanner": "scanner-primary", "fingerprint": "b3504f7496480502", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0b337f55d82c48ec", "level": "note", "message": {"text": "Very large file: addons/purchase_stock/tests/test_reordering_rule.py (1506 lines)"}, "properties": {"repobilityId": "d806dc8087dc1207", "scanner": "scanner-primary", "fingerprint": "0b337f55d82c48ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c9ceb8c342572b0", "level": "note", "message": {"text": "Very large file: addons/website/models/website.py (2430 lines)"}, "properties": {"repobilityId": "2abcec04e56c9de7", "scanner": "scanner-primary", "fingerprint": "5c9ceb8c342572b0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d78ecca62ed18ab8", "level": "note", "message": {"text": "Very large file: addons/website/tests/test_views.py (1807 lines)"}, "properties": {"repobilityId": "9f6c508ae8685270", "scanner": "scanner-primary", "fingerprint": "d78ecca62ed18ab8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe30ca5725c4c46d", "level": "note", "message": {"text": "Very large file: addons/website/static/tests/tours/website_form_editor.js (1358 lines)"}, "properties": {"repobilityId": "03c1e049e3b8ec96", "scanner": "scanner-primary", "fingerprint": "fe30ca5725c4c46d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-da2ab2c1a8a9a0ea", "level": "note", "message": {"text": "Very large file: addons/website/static/src/builder/plugins/form/form_option_plugin.js (1442 lines)"}, "properties": {"repobilityId": "de62cce6ec21eb37", "scanner": "scanner-primary", "fingerprint": "da2ab2c1a8a9a0ea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee05f0bced900ff6", "level": "note", "message": {"text": "Very large file: addons/website/controllers/main.py (1424 lines)"}, "properties": {"repobilityId": "991ef3bc81300b93", "scanner": "scanner-primary", "fingerprint": "ee05f0bced900ff6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-015d7915db41258a", "level": "note", "message": {"text": "Very large file: addons/l10n_it_edi/models/account_move.py (2613 lines)"}, "properties": {"repobilityId": "dfd3210b991c361a", "scanner": "scanner-primary", "fingerprint": "015d7915db41258a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55eae2af38542409", "level": "note", "message": {"text": "Very large file: addons/base_import/models/base_import.py (1803 lines)"}, "properties": {"repobilityId": "9746a886b94cd701", "scanner": "scanner-primary", "fingerprint": "55eae2af38542409", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa048067ba73133c", "level": "note", "message": {"text": "Very large file: addons/base_import/static/tests/import_action.test.js (1809 lines)"}, "properties": {"repobilityId": "8ee1ae318a75e1fa", "scanner": "scanner-primary", "fingerprint": "aa048067ba73133c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c4834e8fcc361c9f", "level": "note", "message": {"text": "Very large file: addons/l10n_fr_pdp/tests/test_flow_lifecycle.py (2043 lines)"}, "properties": {"repobilityId": "28437bf028548442", "scanner": "scanner-primary", "fingerprint": "c4834e8fcc361c9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5084f384eaf3f60d", "level": "note", "message": {"text": "Very large file: addons/survey/models/survey_survey.py (1313 lines)"}, "properties": {"repobilityId": "022b45e8ab652b0c", "scanner": "scanner-primary", "fingerprint": "5084f384eaf3f60d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c487f01557a2812", "level": "note", "message": {"text": "Very large file: addons/survey/static/src/interactions/survey_form.js (1512 lines)"}, "properties": {"repobilityId": "d6ad26ca22726089", "scanner": "scanner-primary", "fingerprint": "1c487f01557a2812", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-00f3bba10b59fc56", "level": "note", "message": {"text": "Very large file: addons/survey/controllers/main.py (930 lines)"}, "properties": {"repobilityId": "858571b79e790adb", "scanner": "scanner-primary", "fingerprint": "00f3bba10b59fc56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c02db414518c31a3", "level": "note", "message": {"text": "Very large file: addons/stock/models/stock_move_line.py (1239 lines)"}, "properties": {"repobilityId": "550391f38a9f9347", "scanner": "scanner-primary", "fingerprint": "c02db414518c31a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6019be232831329d", "level": "note", "message": {"text": "Very large file: addons/stock/models/stock_warehouse.py (1164 lines)"}, "properties": {"repobilityId": "494c94ab9ff356be", "scanner": "scanner-primary", "fingerprint": "6019be232831329d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1df15e24af5a18c", "level": "note", "message": {"text": "Very large file: addons/stock/models/stock_move.py (2828 lines)"}, "properties": {"repobilityId": "08565acbe0afd73a", "scanner": "scanner-primary", "fingerprint": "d1df15e24af5a18c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a76817e4a5af54e5", "level": "note", "message": {"text": "Very large file: addons/stock/models/stock_quant.py (1563 lines)"}, "properties": {"repobilityId": "60679a27c84f1955", "scanner": "scanner-primary", "fingerprint": "a76817e4a5af54e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-351552905369855b", "level": "note", "message": {"text": "Very large file: addons/stock/models/stock_picking.py (2149 lines)"}, "properties": {"repobilityId": "76f7bb20aad3c536", "scanner": "scanner-primary", "fingerprint": "351552905369855b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d52badde1ea3a46", "level": "note", "message": {"text": "Very large file: addons/stock/models/product.py (1406 lines)"}, "properties": {"repobilityId": "25ebde1ae2f1ebcd", "scanner": "scanner-primary", "fingerprint": "2d52badde1ea3a46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1003bd883d973728", "level": "note", "message": {"text": "Very large file: addons/stock/tests/test_packing.py (2229 lines)"}, "properties": {"repobilityId": "9425be3de9b9c92d", "scanner": "scanner-primary", "fingerprint": "1003bd883d973728", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2a0ea739422f879", "level": "note", "message": {"text": "Very large file: addons/stock/tests/test_report.py (2144 lines)"}, "properties": {"repobilityId": "974ab95350cac33f", "scanner": "scanner-primary", "fingerprint": "f2a0ea739422f879", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f3f1775131128f3c", "level": "note", "message": {"text": "Very large file: addons/stock/tests/test_move2.py (3753 lines)"}, "properties": {"repobilityId": "627b1e9c8257fc7e", "scanner": "scanner-primary", "fingerprint": "f3f1775131128f3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-11f00428e7b3e9bb", "level": "note", "message": {"text": "Very large file: addons/stock/tests/test_stock_flow.py (2892 lines)"}, "properties": {"repobilityId": "d2e05d394358dd8a", "scanner": "scanner-primary", "fingerprint": "11f00428e7b3e9bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf882649b78f8767", "level": "note", "message": {"text": "Very large file: addons/stock/tests/test_quant.py (1825 lines)"}, "properties": {"repobilityId": "b0c4682a5b348a87", "scanner": "scanner-primary", "fingerprint": "bf882649b78f8767", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-057651f48e1b4e61", "level": "note", "message": {"text": "Very large file: addons/stock/tests/test_move.py (7024 lines)"}, "properties": {"repobilityId": "e3b376d5f7fb9a2c", "scanner": "scanner-primary", "fingerprint": "057651f48e1b4e61", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e351e56a4536581a", "level": "note", "message": {"text": "Very large file: addons/microsoft_calendar/tests/test_update_events.py (1525 lines)"}, "properties": {"repobilityId": "944049252025117a", "scanner": "scanner-primary", "fingerprint": "e351e56a4536581a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db0a91ce1509f901", "level": "note", "message": {"text": "Very large file: addons/l10n_hu_edi/models/account_move.py (1061 lines)"}, "properties": {"repobilityId": "38ef270a31947e15", "scanner": "scanner-primary", "fingerprint": "db0a91ce1509f901", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6627592bd70b774f", "level": "note", "message": {"text": "Very large file: addons/hr_recruitment/models/hr_applicant.py (1116 lines)"}, "properties": {"repobilityId": "af988e703428fc72", "scanner": "scanner-primary", "fingerprint": "6627592bd70b774f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a2dcde6ab5d8baf", "level": "note", "message": {"text": "Very large file: addons/test_base_automation/tests/test_flow.py (1898 lines)"}, "properties": {"repobilityId": "8c03fad1ee6c631d", "scanner": "scanner-primary", "fingerprint": "1a2dcde6ab5d8baf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5bbfa54b138ef69c", "level": "note", "message": {"text": "Very large file: addons/stock_account/tests/test_stockvaluation.py (3671 lines)"}, "properties": {"repobilityId": "cfe4776b7e006731", "scanner": "scanner-primary", "fingerprint": "5bbfa54b138ef69c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d99711479c5c482", "level": "note", "message": {"text": "Very large file: addons/base_automation/models/base_automation.py (1207 lines)"}, "properties": {"repobilityId": "3ff39a9c0720d8b1", "scanner": "scanner-primary", "fingerprint": "2d99711479c5c482", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e31638a77b0d408e", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/models/pos_order.py (2022 lines)"}, "properties": {"repobilityId": "43cc76d05200020a", "scanner": "scanner-primary", "fingerprint": "e31638a77b0d408e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4b76b703e8cb0693", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/models/pos_session.py (2002 lines)"}, "properties": {"repobilityId": "489380c5f02f7ab0", "scanner": "scanner-primary", "fingerprint": "4b76b703e8cb0693", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90ed35dbf48c3ecb", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/models/pos_config.py (1283 lines)"}, "properties": {"repobilityId": "34956b09f5296846", "scanner": "scanner-primary", "fingerprint": "90ed35dbf48c3ecb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9a06b589c43085f4", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/tests/test_frontend.py (4075 lines)"}, "properties": {"repobilityId": "625eac1a5efd42c1", "scanner": "scanner-primary", "fingerprint": "9a06b589c43085f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2b3e1818009d5d20", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/tests/test_pos_basic_config.py (1501 lines)"}, "properties": {"repobilityId": "4cb405ce4e649224", "scanner": "scanner-primary", "fingerprint": "2b3e1818009d5d20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0ce0b3fa01655f07", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/tests/test_point_of_sale_flow.py (2948 lines)"}, "properties": {"repobilityId": "34406a1830adce3e", "scanner": "scanner-primary", "fingerprint": "0ce0b3fa01655f07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b44f8c442c30e241", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/static/tests/pos/tours/product_screen_tour.js (1327 lines)"}, "properties": {"repobilityId": "f8abb2c8b985b462", "scanner": "scanner-primary", "fingerprint": "b44f8c442c30e241", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6d00eb5a09deb261", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/static/lib/qrcode.js (1472 lines)"}, "properties": {"repobilityId": "737f18a79089d4b3", "scanner": "scanner-primary", "fingerprint": "6d00eb5a09deb261", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-948b2fd26538f2a4", "level": "note", "message": {"text": "Very large file: addons/point_of_sale/static/src/app/services/pos_store.js (3155 lines)"}, "properties": {"repobilityId": "9b5e0afa5e48ba51", "scanner": "scanner-primary", "fingerprint": "948b2fd26538f2a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-69a3c76f624e3669", "level": "note", "message": {"text": "Very large file: addons/l10n_my_edi/models/myinvois_document.py (1126 lines)"}, "properties": {"repobilityId": "c99a14cc0c48ab4f", "scanner": "scanner-primary", "fingerprint": "69a3c76f624e3669", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d4b763bad2d4c2d", "level": "note", "message": {"text": "Very large file: addons/test_discuss_full/tests/test_performance.py (1864 lines)"}, "properties": {"repobilityId": "93a4e9c4f8498373", "scanner": "scanner-primary", "fingerprint": "2d4b763bad2d4c2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-28a10b820b281d66", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/collaboration.test.js (1911 lines)"}, "properties": {"repobilityId": "101c678da361e8d9", "scanner": "scanner-primary", "fingerprint": "28a10b820b281d66", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-179b04f32fe71dfb", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/html_field.test.js (2862 lines)"}, "properties": {"repobilityId": "2ac48a925929ead3", "scanner": "scanner-primary", "fingerprint": "179b04f32fe71dfb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a51e71c7f6f66c06", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/selection.test.js (1447 lines)"}, "properties": {"repobilityId": "a071cd0c257cffcb", "scanner": "scanner-primary", "fingerprint": "a51e71c7f6f66c06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-db3526b695e31154", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/history.test.js (1212 lines)"}, "properties": {"repobilityId": "0530883a47ce6b24", "scanner": "scanner-primary", "fingerprint": "db3526b695e31154", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-19425319d5f8d3ef", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/color_selector.test.js (1429 lines)"}, "properties": {"repobilityId": "487a2748ea14fb9c", "scanner": "scanner-primary", "fingerprint": "19425319d5f8d3ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ea9b6af5ea4a225", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/syntax_highlighting.test.js (1441 lines)"}, "properties": {"repobilityId": "828f543a5578ef27", "scanner": "scanner-primary", "fingerprint": "8ea9b6af5ea4a225", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-298e6edfb3f035f7", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/embedded_components.test.js (1789 lines)"}, "properties": {"repobilityId": "0ca4e5dad80c6e72", "scanner": "scanner-primary", "fingerprint": "298e6edfb3f035f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2669673d93695f48", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/odoo_collaboration.test.js (1214 lines)"}, "properties": {"repobilityId": "6cadcefb54bec011", "scanner": "scanner-primary", "fingerprint": "2669673d93695f48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-47410fd44d6be238", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/caption.test.js (1519 lines)"}, "properties": {"repobilityId": "424dbda131f1d3d5", "scanner": "scanner-primary", "fingerprint": "47410fd44d6be238", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-34c3f7f7935067d4", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/paste.test.js (4835 lines)"}, "properties": {"repobilityId": "63a2a94570d774e3", "scanner": "scanner-primary", "fingerprint": "34c3f7f7935067d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc645e473220cb76", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/toolbar.test.js (2256 lines)"}, "properties": {"repobilityId": "44ca9e0cc5db76ab", "scanner": "scanner-primary", "fingerprint": "cc645e473220cb76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-36530d29664cf9d3", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/embedded_components_plugins/toggle_block.test.js (1477 lines)"}, "properties": {"repobilityId": "6716d62589ede37f", "scanner": "scanner-primary", "fingerprint": "36530d29664cf9d3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3471cde42bf89aba", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/table/selection.test.js (2834 lines)"}, "properties": {"repobilityId": "42bb5144430c88cc", "scanner": "scanner-primary", "fingerprint": "3471cde42bf89aba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-81c7767b71c83ceb", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/table/ui.test.js (1773 lines)"}, "properties": {"repobilityId": "410f36ef68afb333", "scanner": "scanner-primary", "fingerprint": "81c7767b71c83ceb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-32b996e8a0580a76", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/list/delete_forward.test.js (1546 lines)"}, "properties": {"repobilityId": "3160979177174a06", "scanner": "scanner-primary", "fingerprint": "32b996e8a0580a76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-00268d2f7d80ea35", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/list/delete_backward.test.js (3142 lines)"}, "properties": {"repobilityId": "00f51f8bf2f2958a", "scanner": "scanner-primary", "fingerprint": "00268d2f7d80ea35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-54e21f5d7c5c1871", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/delete/backward.test.js (2586 lines)"}, "properties": {"repobilityId": "a4842067bc4deb82", "scanner": "scanner-primary", "fingerprint": "54e21f5d7c5c1871", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37abd2c6eaab79f9", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/delete/forward.test.js (1883 lines)"}, "properties": {"repobilityId": "00fc85bf5ff31613", "scanner": "scanner-primary", "fingerprint": "37abd2c6eaab79f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b86880fa65384776", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/link/popover.test.js (2075 lines)"}, "properties": {"repobilityId": "a81cd302bc7719f7", "scanner": "scanner-primary", "fingerprint": "b86880fa65384776", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9af263e14b83a259", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/tests/format/remove_format.test.js (1237 lines)"}, "properties": {"repobilityId": "fe2f7fb43cd5bfc0", "scanner": "scanner-primary", "fingerprint": "9af263e14b83a259", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2d20947bb42c4efd", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/lib/cropperjs/cropper.js (3576 lines)"}, "properties": {"repobilityId": "5760811ea3464974", "scanner": "scanner-primary", "fingerprint": "2d20947bb42c4efd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7dd0156cb5be2f15", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/src/core/history_plugin.js (1922 lines)"}, "properties": {"repobilityId": "17c2f0d9021eaac0", "scanner": "scanner-primary", "fingerprint": "7dd0156cb5be2f15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-35fca11162fac923", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/src/core/delete_plugin.js (1484 lines)"}, "properties": {"repobilityId": "f601301ac02c289f", "scanner": "scanner-primary", "fingerprint": "35fca11162fac923", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-12ec99240139c860", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/src/main/table/table_plugin.js (1505 lines)"}, "properties": {"repobilityId": "29849dc6c6de6134", "scanner": "scanner-primary", "fingerprint": "12ec99240139c860", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7099faf974fb3e42", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/src/main/list/list_plugin.js (1327 lines)"}, "properties": {"repobilityId": "80aa655e53447220", "scanner": "scanner-primary", "fingerprint": "7099faf974fb3e42", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f1e054975208453b", "level": "note", "message": {"text": "Very large file: addons/html_editor/static/src/main/link/link_plugin.js (1468 lines)"}, "properties": {"repobilityId": "12af9c96893f0e45", "scanner": "scanner-primary", "fingerprint": "f1e054975208453b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4eed884c8968d366", "level": "note", "message": {"text": "Very large file: addons/l10n_eu_oss/models/eu_tax_map.py (2409 lines)"}, "properties": {"repobilityId": "4c6284bab98d987d", "scanner": "scanner-primary", "fingerprint": "4eed884c8968d366", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cbdc25941e6ad119", "level": "note", "message": {"text": "Very large file: addons/purchase/models/purchase_order.py (1417 lines)"}, "properties": {"repobilityId": "f3f27627abc6243b", "scanner": "scanner-primary", "fingerprint": "cbdc25941e6ad119", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a33dcae2980ece86", "level": "note", "message": {"text": "Very large file: addons/purchase/tests/test_purchase.py (1431 lines)"}, "properties": {"repobilityId": "6dcdab3b00ee8812", "scanner": "scanner-primary", "fingerprint": "a33dcae2980ece86", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-804a211a92347d16", "level": "note", "message": {"text": "Very large file: addons/purchase/tests/test_purchase_invoice.py (1442 lines)"}, "properties": {"repobilityId": "62a838a8b134346a", "scanner": "scanner-primary", "fingerprint": "804a211a92347d16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b9b7e4dc7eda8887", "level": "note", "message": {"text": "Very large file: addons/web/models/models.py (2360 lines)"}, "properties": {"repobilityId": "be05dd8c7672430f", "scanner": "scanner-primary", "fingerprint": "b9b7e4dc7eda8887", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2c221f019237d9c3", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/mock_server/mock_server.test.js (2101 lines)"}, "properties": {"repobilityId": "43844d5b555a7f2d", "scanner": "scanner-primary", "fingerprint": "2c221f019237d9c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d0cf9543956556c1", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/search/search_panel_desktop.test.js (3460 lines)"}, "properties": {"repobilityId": "77d4f4c6cbb8c309", "scanner": "scanner-primary", "fingerprint": "d0cf9543956556c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-22318592d8306d96", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/search/search_bar.test.js (2039 lines)"}, "properties": {"repobilityId": "88a573bbfa94c24e", "scanner": "scanner-primary", "fingerprint": "22318592d8306d96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3baa43fc8b09a341", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/legacy/mock_server_tests.js (1616 lines)"}, "properties": {"repobilityId": "70df7e072742eb96", "scanner": "scanner-primary", "fingerprint": "3baa43fc8b09a341", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2154daf59633368a", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/legacy/helpers/mock_server.js (2607 lines)"}, "properties": {"repobilityId": "4b2064a14c60f9fb", "scanner": "scanner-primary", "fingerprint": "2154daf59633368a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d75d645ad37f516", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/core/router.test.js (1964 lines)"}, "properties": {"repobilityId": "aedbfa413f75839f", "scanner": "scanner-primary", "fingerprint": "3d75d645ad37f516", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc177ece23a39caa", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/core/dropdown/dropdown.test.js (1557 lines)"}, "properties": {"repobilityId": "03e8a5076f28b578", "scanner": "scanner-primary", "fingerprint": "fc177ece23a39caa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c0c710227519f617", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/core/domain_selector/domain_selector.test.js (2831 lines)"}, "properties": {"repobilityId": "09d0d0e2da9a8bb3", "scanner": "scanner-primary", "fingerprint": "c0c710227519f617", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-609812868587c0df", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/public/interaction.test.js (3109 lines)"}, "properties": {"repobilityId": "4e98aec7ea904ad7", "scanner": "scanner-primary", "fingerprint": "609812868587c0df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48b5c2d320299f7f", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/_framework/mock_server/mock_model.js (3797 lines)"}, "properties": {"repobilityId": "a252a07d68934d4b", "scanner": "scanner-primary", "fingerprint": "48b5c2d320299f7f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-736676187379478a", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/webclient/settings_form_view/settings_form_view.test.js (2395 lines)"}, "properties": {"repobilityId": "31f7728789bfc267", "scanner": "scanner-primary", "fingerprint": "736676187379478a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a0525e8babbf1f0", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/webclient/actions/load_state.test.js (2490 lines)"}, "properties": {"repobilityId": "3cf015bb2cf45381", "scanner": "scanner-primary", "fingerprint": "1a0525e8babbf1f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-843c9cea5c7f767f", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/webclient/actions/window_action.test.js (2794 lines)"}, "properties": {"repobilityId": "78f74820d39ee2c4", "scanner": "scanner-primary", "fingerprint": "843c9cea5c7f767f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-53eae99a734246db", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/pivot_view.test.js (4094 lines)"}, "properties": {"repobilityId": "a842d1c9b5a4698b", "scanner": "scanner-primary", "fingerprint": "53eae99a734246db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-37d12331f30d0e80", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/fields/many2many_field.test.js (2104 lines)"}, "properties": {"repobilityId": "490b91ed07042a2a", "scanner": "scanner-primary", "fingerprint": "37d12331f30d0e80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ddb1889637892f65", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/fields/many2one_field.test.js (4174 lines)"}, "properties": {"repobilityId": "6f97bb75b61d6725", "scanner": "scanner-primary", "fingerprint": "ddb1889637892f65", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7dee0bec7ddf2846", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/fields/properties_field.test.js (3175 lines)"}, "properties": {"repobilityId": "393df99e1395b2d8", "scanner": "scanner-primary", "fingerprint": "7dee0bec7ddf2846", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d8778c321d747626", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/fields/daterange_field.test.js (1377 lines)"}, "properties": {"repobilityId": "d47dd7ade96e268f", "scanner": "scanner-primary", "fingerprint": "d8778c321d747626", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f8971cc0a68206e9", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/fields/many2many_tags_field.test.js (2063 lines)"}, "properties": {"repobilityId": "e10ead713e66142b", "scanner": "scanner-primary", "fingerprint": "f8971cc0a68206e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2df13a05c4b28b04", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/fields/one2many_field.test.js (13779 lines)"}, "properties": {"repobilityId": "b5ac4a26fe75c3a2", "scanner": "scanner-primary", "fingerprint": "2df13a05c4b28b04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cbfeebf5f1cde5c9", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/form/form_view.test.js (13476 lines)"}, "properties": {"repobilityId": "a801700b0c86ec43", "scanner": "scanner-primary", "fingerprint": "cbfeebf5f1cde5c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6ae2ac1e75fbdbba", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/list/column_widths.test.js (1625 lines)"}, "properties": {"repobilityId": "b6fcf5bbd3e3c081", "scanner": "scanner-primary", "fingerprint": "6ae2ac1e75fbdbba", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b917c276c7f25ea0", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/list/list_view.test.js (19655 lines)"}, "properties": {"repobilityId": "ffdcd93df4ace794", "scanner": "scanner-primary", "fingerprint": "b917c276c7f25ea0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-15449d42432aa4d6", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/kanban/kanban_view.test.js (15073 lines)"}, "properties": {"repobilityId": "3e4a62bbc045a89f", "scanner": "scanner-primary", "fingerprint": "15449d42432aa4d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f6adbee45d33e6a", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/calendar/calendar_view.test.js (5985 lines)"}, "properties": {"repobilityId": "7ca5f0f8ac2358ad", "scanner": "scanner-primary", "fingerprint": "2f6adbee45d33e6a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff66d4e4b405de97", "level": "note", "message": {"text": "Very large file: addons/web/static/tests/views/graph/graph_view.test.js (3175 lines)"}, "properties": {"repobilityId": "dddddae64cd7499c", "scanner": "scanner-primary", "fingerprint": "ff66d4e4b405de97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-20bf8fa2ca8db4f4", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/stacktracejs/stacktrace.js (3024 lines)"}, "properties": {"repobilityId": "8afa1d82e9b3f8f9", "scanner": "scanner-primary", "fingerprint": "20bf8fa2ca8db4f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d522b9bac11054bc", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/dompurify/DOMpurify.js (1562 lines)"}, "properties": {"repobilityId": "016d4e7ec7b6578a", "scanner": "scanner-primary", "fingerprint": "d522b9bac11054bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-762d4ccc4399a148", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/qunit/qunit-2.9.1.js (6612 lines)"}, "properties": {"repobilityId": "95a2f2ed816f2ce8", "scanner": "scanner-primary", "fingerprint": "762d4ccc4399a148", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-895f44456577cca2", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/Chart/Chart.js (14946 lines)"}, "properties": {"repobilityId": "56c6f694bfc46f03", "scanner": "scanner-primary", "fingerprint": "895f44456577cca2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2df62ed72fc9ffa4", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/jquery/jquery.js (10992 lines)"}, "properties": {"repobilityId": "bd2d6401ced16c61", "scanner": "scanner-primary", "fingerprint": "2df62ed72fc9ffa4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f328dc3cb2aad08", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/hoot-dom/helpers/events.js (2992 lines)"}, "properties": {"repobilityId": "f1fe284d658ace13", "scanner": "scanner-primary", "fingerprint": "2f328dc3cb2aad08", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-eb2a8247861ce4cb", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/hoot-dom/helpers/dom.js (2149 lines)"}, "properties": {"repobilityId": "502bb2656777adf8", "scanner": "scanner-primary", "fingerprint": "eb2a8247861ce4cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dae3a944bcbdc5e2", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/diff_match_patch/diff_match_patch.js (1568 lines)"}, "properties": {"repobilityId": "2a3db9375a6daa69", "scanner": "scanner-primary", "fingerprint": "dae3a944bcbdc5e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9bee35a38009293e", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/fullcalendar/daygrid/index.global.js (1040 lines)"}, "properties": {"repobilityId": "f7d9ea858f17c62d", "scanner": "scanner-primary", "fingerprint": "9bee35a38009293e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3f2deab66a2c548a", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/fullcalendar/interaction/index.global.js (2115 lines)"}, "properties": {"repobilityId": "f57ed2f32fadd0a2", "scanner": "scanner-primary", "fingerprint": "3f2deab66a2c548a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f2f9675dc12116c3", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/fullcalendar/timegrid/index.global.js (1198 lines)"}, "properties": {"repobilityId": "8c06267054478316", "scanner": "scanner-primary", "fingerprint": "f2f9675dc12116c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e21f97021ce254d", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/fullcalendar/core/locales-all.global.js (1933 lines)"}, "properties": {"repobilityId": "0f5646c71f26ea2e", "scanner": "scanner-primary", "fingerprint": "9e21f97021ce254d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a4efa6d9cad992f0", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/fullcalendar/core/index.global.js (9856 lines)"}, "properties": {"repobilityId": "595ea99d109642ee", "scanner": "scanner-primary", "fingerprint": "a4efa6d9cad992f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be81651524446a52", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/owl/owl.js (6389 lines)"}, "properties": {"repobilityId": "a627f066b8336311", "scanner": "scanner-primary", "fingerprint": "be81651524446a52", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fffd2dd16332dc1e", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/popper/popper.js (1825 lines)"}, "properties": {"repobilityId": "ade394b9d71e1ed0", "scanner": "scanner-primary", "fingerprint": "fffd2dd16332dc1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1292c8772246169e", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/luxon/luxon.js (8606 lines)"}, "properties": {"repobilityId": "701a976c3bd6b547", "scanner": "scanner-primary", "fingerprint": "1292c8772246169e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2716f96f9ace486e", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/ace/ace.js (21442 lines)"}, "properties": {"repobilityId": "4411cf484c2475d4", "scanner": "scanner-primary", "fingerprint": "2716f96f9ace486e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bf65dac6091e785b", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/ace/mode-javascript.js (1190 lines)"}, "properties": {"repobilityId": "fe7dd68d685ee08a", "scanner": "scanner-primary", "fingerprint": "bf65dac6091e785b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-275b480cbd2d8f6e", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/prismjs/prism.js (2843 lines)"}, "properties": {"repobilityId": "518353c957a32606", "scanner": "scanner-primary", "fingerprint": "275b480cbd2d8f6e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13c41a1f14598c08", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/hoot/hoot_utils.js (2095 lines)"}, "properties": {"repobilityId": "06e1079bc2588f48", "scanner": "scanner-primary", "fingerprint": "13c41a1f14598c08", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3921b81d309ca277", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/hoot/tests/hoot-dom/events.test.js (2138 lines)"}, "properties": {"repobilityId": "e61ebea0eeb967bb", "scanner": "scanner-primary", "fingerprint": "3921b81d309ca277", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-39ae44e020309060", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/hoot/core/expect.js (2497 lines)"}, "properties": {"repobilityId": "0e9d1453db20e0b6", "scanner": "scanner-primary", "fingerprint": "39ae44e020309060", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be408a77807fc92f", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/hoot/core/runner.js (2020 lines)"}, "properties": {"repobilityId": "92a7c166e61f24a1", "scanner": "scanner-primary", "fingerprint": "be408a77807fc92f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b2a6bfc160f85444", "level": "note", "message": {"text": "Very large file: addons/web/static/lib/pdfjs/web/viewer.js (15352 lines)"}, "properties": {"repobilityId": "4e46effb5f1c97fe", "scanner": "scanner-primary", "fingerprint": "b2a6bfc160f85444", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0f949a22801750c2", "level": "note", "message": {"text": "Very large file: addons/web/static/src/search/search_model.js (2349 lines)"}, "properties": {"repobilityId": "ce25021912fbc9ee", "scanner": "scanner-primary", "fingerprint": "0f949a22801750c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2aa7dbf3f03d8e19", "level": "note", "message": {"text": "Very large file: addons/web/static/src/core/emoji_picker/emoji_data.js (21892 lines)"}, "properties": {"repobilityId": "b64d057ef679f5d3", "scanner": "scanner-primary", "fingerprint": "2aa7dbf3f03d8e19", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-30a363697c5bbf0c", "level": "note", "message": {"text": "Very large file: addons/web/static/src/model/relational_model/record.js (1405 lines)"}, "properties": {"repobilityId": "21e11e23b3ad764a", "scanner": "scanner-primary", "fingerprint": "30a363697c5bbf0c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e9f61c086a0f26f", "level": "note", "message": {"text": "Very large file: addons/web/static/src/webclient/actions/action_service.js (1892 lines)"}, "properties": {"repobilityId": "01e1c03d84740800", "scanner": "scanner-primary", "fingerprint": "5e9f61c086a0f26f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b53078f108bcd0eb", "level": "note", "message": {"text": "Very large file: addons/web/static/src/views/list/list_renderer.js (2310 lines)"}, "properties": {"repobilityId": "4ac5fe1fc266f706", "scanner": "scanner-primary", "fingerprint": "b53078f108bcd0eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-17515ed112de96fd", "level": "note", "message": {"text": "Very large file: addons/web/static/src/views/pivot/pivot_model.js (1598 lines)"}, "properties": {"repobilityId": "7dfc37535184f085", "scanner": "scanner-primary", "fingerprint": "17515ed112de96fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-99d44bd9466239cb", "level": "note", "message": {"text": "Very large file: addons/google_calendar/tests/test_sync_google2odoo.py (2667 lines)"}, "properties": {"repobilityId": "62a5d41dbd2433fe", "scanner": "scanner-primary", "fingerprint": "99d44bd9466239cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb9e6dd540da8fbf", "level": "note", "message": {"text": "Very large file: addons/google_calendar/tests/test_sync_odoo2google.py (1118 lines)"}, "properties": {"repobilityId": "3fd9e84b27d22476", "scanner": "scanner-primary", "fingerprint": "fb9e6dd540da8fbf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-646a34303a4675db", "level": "note", "message": {"text": "Very large file: addons/resource/models/resource_calendar.py (1013 lines)"}, "properties": {"repobilityId": "b03387e80db7814f", "scanner": "scanner-primary", "fingerprint": "646a34303a4675db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a4fa1d9f9dafe7da", "level": "note", "message": {"text": "Very large file: addons/web_hierarchy/static/tests/hierarchy_view.test.js (1576 lines)"}, "properties": {"repobilityId": "9e980a0cf2271e4a", "scanner": "scanner-primary", "fingerprint": "a4fa1d9f9dafe7da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-94313fcf49aee851", "level": "note", "message": {"text": "Very large file: addons/hr/models/hr_employee.py (1875 lines)"}, "properties": {"repobilityId": "a46f4aad300f5024", "scanner": "scanner-primary", "fingerprint": "94313fcf49aee851", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d9a12b419dc856b", "level": "note", "message": {"text": "Very large file: addons/pos_loyalty/tests/test_frontend.py (3785 lines)"}, "properties": {"repobilityId": "b077ac59d9b741f6", "scanner": "scanner-primary", "fingerprint": "1d9a12b419dc856b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a47a4b8ef8eadd20", "level": "note", "message": {"text": "Very large file: addons/pos_loyalty/static/src/app/models/pos_order.js (1485 lines)"}, "properties": {"repobilityId": "04ea5f896db59ef4", "scanner": "scanner-primary", "fingerprint": "a47a4b8ef8eadd20", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-028fc4f55da03d2d", "level": "note", "message": {"text": "Very large file: addons/hr_expense/models/hr_expense.py (1841 lines)"}, "properties": {"repobilityId": "bbaa18d26fff6b7e", "scanner": "scanner-primary", "fingerprint": "028fc4f55da03d2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1c6e51d5b4650045", "level": "note", "message": {"text": "Very large file: addons/hr_expense/tests/test_expenses.py (1242 lines)"}, "properties": {"repobilityId": "c1a40041ca292c3a", "scanner": "scanner-primary", "fingerprint": "1c6e51d5b4650045", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3d15cc7a13d54201", "level": "note", "message": {"text": "Very large file: addons/crm/models/crm_lead.py (2890 lines)"}, "properties": {"repobilityId": "2c5748d00311ac9a", "scanner": "scanner-primary", "fingerprint": "3d15cc7a13d54201", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-433487cacb5858fa", "level": "note", "message": {"text": "Very large file: addons/crm/tests/test_crm_lead.py (1230 lines)"}, "properties": {"repobilityId": "dd2460fd98a42b09", "scanner": "scanner-primary", "fingerprint": "433487cacb5858fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-53b5eb2b18fe76f1", "level": "note", "message": {"text": "Very large file: addons/crm/tests/test_crm_pls.py (1005 lines)"}, "properties": {"repobilityId": "f3b4559e06cc9b40", "scanner": "scanner-primary", "fingerprint": "53b5eb2b18fe76f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-79784b7961b11196", "level": "note", "message": {"text": "Very large file: addons/mass_mailing/models/mailing.py (1547 lines)"}, "properties": {"repobilityId": "e7fd5fd2876cf802", "scanner": "scanner-primary", "fingerprint": "79784b7961b11196", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-31c3779181da9342", "level": "note", "message": {"text": "Very large file: addons/account/models/account_report.py (967 lines)"}, "properties": {"repobilityId": "37d28806b34e46f7", "scanner": "scanner-primary", "fingerprint": "31c3779181da9342", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b811a748ef48e38e", "level": "note", "message": {"text": "Very large file: addons/account/models/account_payment.py (1246 lines)"}, "properties": {"repobilityId": "43c2f41fb03bf756", "scanner": "scanner-primary", "fingerprint": "b811a748ef48e38e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e118df5b272c489", "level": "note", "message": {"text": "Very large file: addons/account/models/chart_template.py (1537 lines)"}, "properties": {"repobilityId": "63af7201f8ba98e3", "scanner": "scanner-primary", "fingerprint": "0e118df5b272c489", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8605336da2e8e57d", "level": "note", "message": {"text": "Very large file: addons/account/models/account_journal_dashboard.py (1200 lines)"}, "properties": {"repobilityId": "7e7d33c6583695bf", "scanner": "scanner-primary", "fingerprint": "8605336da2e8e57d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-90a47d51469a1ed1", "level": "note", "message": {"text": "Very large file: addons/account/models/account_account.py (1659 lines)"}, "properties": {"repobilityId": "028358f4dd7d65ea", "scanner": "scanner-primary", "fingerprint": "90a47d51469a1ed1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-38561eeca9fb2267", "level": "note", "message": {"text": "Very large file: addons/account/models/account_journal.py (1307 lines)"}, "properties": {"repobilityId": "9c39f7b576218800", "scanner": "scanner-primary", "fingerprint": "38561eeca9fb2267", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7356a5473cbfdce2", "level": "note", "message": {"text": "Very large file: addons/account/models/account_move.py (7389 lines)"}, "properties": {"repobilityId": "4d107324c10072c8", "scanner": "scanner-primary", "fingerprint": "7356a5473cbfdce2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a3a86485fac597ae", "level": "note", "message": {"text": "Very large file: addons/account/models/account_move_line.py (3776 lines)"}, "properties": {"repobilityId": "28a7a21b5993f3ff", "scanner": "scanner-primary", "fingerprint": "a3a86485fac597ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd2088e3fed8995b", "level": "note", "message": {"text": "Very large file: addons/account/models/company.py (1156 lines)"}, "properties": {"repobilityId": "60aef727d7d01f1a", "scanner": "scanner-primary", "fingerprint": "fd2088e3fed8995b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a16684dcebed8273", "level": "note", "message": {"text": "Very large file: addons/account/models/partner.py (1191 lines)"}, "properties": {"repobilityId": "ac6759f45bf27808", "scanner": "scanner-primary", "fingerprint": "a16684dcebed8273", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b6db85d0b0fbb513", "level": "note", "message": {"text": "Very large file: addons/account/models/account_tax.py (5308 lines)"}, "properties": {"repobilityId": "da11bbeb7f11371d", "scanner": "scanner-primary", "fingerprint": "b6db85d0b0fbb513", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2e7aff828dedfab4", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_incoming_supplier_invoice.py (1067 lines)"}, "properties": {"repobilityId": "713c96ab5617bda5", "scanner": "scanner-primary", "fingerprint": "2e7aff828dedfab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ff88b2896cfa1d2", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_move_entry.py (1477 lines)"}, "properties": {"repobilityId": "4d974633d7d3940b", "scanner": "scanner-primary", "fingerprint": "2ff88b2896cfa1d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7af2bb4f97451d88", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_taxes_global_discount.py (1986 lines)"}, "properties": {"repobilityId": "e02e071466227343", "scanner": "scanner-primary", "fingerprint": "7af2bb4f97451d88", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9ed039189acf5837", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_chart_template.py (1105 lines)"}, "properties": {"repobilityId": "fa1ae200cc3af0b9", "scanner": "scanner-primary", "fingerprint": "9ed039189acf5837", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbc929e1fc988d18", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_move_line_tax_details.py (1397 lines)"}, "properties": {"repobilityId": "f84dc4d87abe6a2f", "scanner": "scanner-primary", "fingerprint": "bbc929e1fc988d18", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c8c2628115a64de1", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_analytic.py (1181 lines)"}, "properties": {"repobilityId": "8eb01d99c99de117", "scanner": "scanner-primary", "fingerprint": "c8c2628115a64de1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-11159e3c3f4ced6e", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_bank_statement.py (1474 lines)"}, "properties": {"repobilityId": "ee9869bb4fdd998c", "scanner": "scanner-primary", "fingerprint": "11159e3c3f4ced6e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff55f7f3b2d9aea8", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_account.py (1105 lines)"}, "properties": {"repobilityId": "a413b45b25a0fdf4", "scanner": "scanner-primary", "fingerprint": "ff55f7f3b2d9aea8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b20d6740f451fad4", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_taxes_tax_totals_summary.py (2505 lines)"}, "properties": {"repobilityId": "1b30cec83371dd80", "scanner": "scanner-primary", "fingerprint": "b20d6740f451fad4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3400b267404e6edf", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_payment_register.py (2269 lines)"}, "properties": {"repobilityId": "8cc3e17d6cf749e6", "scanner": "scanner-primary", "fingerprint": "3400b267404e6edf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-61beaf3b226e2119", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_taxes_downpayment.py (2156 lines)"}, "properties": {"repobilityId": "0bdcc7574038aa52", "scanner": "scanner-primary", "fingerprint": "61beaf3b226e2119", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13be15e1ee9cfb37", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_move_out_invoice.py (5218 lines)"}, "properties": {"repobilityId": "280f13cfaad5cf31", "scanner": "scanner-primary", "fingerprint": "13be15e1ee9cfb37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d397c3cfb609fa5", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_early_payment_discount.py (1229 lines)"}, "properties": {"repobilityId": "95b670be09f14b37", "scanner": "scanner-primary", "fingerprint": "0d397c3cfb609fa5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b0cc1afdba141e2f", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_sequence_mixin.py (1129 lines)"}, "properties": {"repobilityId": "0ff1e59f1b3f98f2", "scanner": "scanner-primary", "fingerprint": "b0cc1afdba141e2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f9c522474a8b0a8c", "level": "note", "message": {"text": "Very large file: addons/account/tests/common.py (2562 lines)"}, "properties": {"repobilityId": "aa8ae553944bf63b", "scanner": "scanner-primary", "fingerprint": "f9c522474a8b0a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-140b6ce67356fe33", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_move_send.py (1300 lines)"}, "properties": {"repobilityId": "61c2d06d4e2d30df", "scanner": "scanner-primary", "fingerprint": "140b6ce67356fe33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3cc7160e7c425d3e", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_move_reconcile.py (6156 lines)"}, "properties": {"repobilityId": "46cb05792171acad", "scanner": "scanner-primary", "fingerprint": "3cc7160e7c425d3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4ca4e8435a572070", "level": "note", "message": {"text": "Very large file: addons/account/tests/test_account_move_in_invoice.py (3038 lines)"}, "properties": {"repobilityId": "c196b49c5d157374", "scanner": "scanner-primary", "fingerprint": "4ca4e8435a572070", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a6b99e5aafbe5a33", "level": "note", "message": {"text": "Very large file: addons/account/static/src/helpers/account_tax.js (2746 lines)"}, "properties": {"repobilityId": "90d2d060c8c9ea1b", "scanner": "scanner-primary", "fingerprint": "a6b99e5aafbe5a33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c071eeeb30525a0b", "level": "note", "message": {"text": "Very large file: addons/account/wizard/account_payment_register.py (1369 lines)"}, "properties": {"repobilityId": "e6bdc739d682f025", "scanner": "scanner-primary", "fingerprint": "c071eeeb30525a0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-42d5795c49e66d02", "level": "note", "message": {"text": "Very large file: addons/l10n_account_withholding_tax/tests/test_account_withholding_flows.py (1151 lines)"}, "properties": {"repobilityId": "7969f95e97f05b8f", "scanner": "scanner-primary", "fingerprint": "42d5795c49e66d02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1078b6bf29967ff5", "level": "note", "message": {"text": "Very large file: addons/l10n_es_edi_sii/tests/test_edi_xml.py (1304 lines)"}, "properties": {"repobilityId": "a138ca1b02fc6240", "scanner": "scanner-primary", "fingerprint": "1078b6bf29967ff5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e7f6604c4c7670c9", "level": "note", "message": {"text": "Very large file: addons/sale_timesheet/tests/test_sale_timesheet.py (1677 lines)"}, "properties": {"repobilityId": "e4f8babeddc07cf8", "scanner": "scanner-primary", "fingerprint": "e7f6604c4c7670c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa024e17a7d9bcfa", "level": "note", "message": {"text": "Very large file: addons/sale_timesheet/tests/test_sale_service.py (998 lines)"}, "properties": {"repobilityId": "147ed3d84e55f5a5", "scanner": "scanner-primary", "fingerprint": "aa024e17a7d9bcfa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c145f9cb7b59c18", "level": "note", "message": {"text": "Very large file: addons/spreadsheet/static/tests/charts/model/odoo_chart_plugin.test.js (1898 lines)"}, "properties": {"repobilityId": "664e0c05b3f585f8", "scanner": "scanner-primary", "fingerprint": "5c145f9cb7b59c18", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc3913ed6ca5102b", "level": "note", "message": {"text": "Very large file: addons/spreadsheet/static/tests/lists/list_plugin.test.js (1396 lines)"}, "properties": {"repobilityId": "02615ccca2508292", "scanner": "scanner-primary", "fingerprint": "cc3913ed6ca5102b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a3aa5127b1a0f45b", "level": "note", "message": {"text": "Very large file: addons/spreadsheet/static/tests/pivots/model/pivot_plugin.test.js (2637 lines)"}, "properties": {"repobilityId": "f9f8db573407a393", "scanner": "scanner-primary", "fingerprint": "a3aa5127b1a0f45b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-60bf414128853e3e", "level": "note", "message": {"text": "Very large file: addons/spreadsheet/static/tests/global_filters/global_filters_model.test.js (3485 lines)"}, "properties": {"repobilityId": "39f2140369cb322f", "scanner": "scanner-primary", "fingerprint": "60bf414128853e3e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4656ac01683dc5bd", "level": "note", "message": {"text": "Very large file: addons/spreadsheet/static/lib/chartjs-chart-geo/chartjs-chart-geo.js (5322 lines)"}, "properties": {"repobilityId": "d4f2e78a6181e9c1", "scanner": "scanner-primary", "fingerprint": "4656ac01683dc5bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a7f49466a106ebae", "level": "note", "message": {"text": "Very large file: addons/hr_attendance/tests/test_hr_attendance_overtime.py (1798 lines)"}, "properties": {"repobilityId": "fd82558274314c68", "scanner": "scanner-primary", "fingerprint": "a7f49466a106ebae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5f9b2dee6241b55b", "level": "note", "message": {"text": "Very large file: addons/website_slides/models/slide_slide.py (1339 lines)"}, "properties": {"repobilityId": "c656e1890928bc22", "scanner": "scanner-primary", "fingerprint": "5f9b2dee6241b55b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a9ecbdcbf831ccc", "level": "note", "message": {"text": "Very large file: addons/website_slides/models/slide_channel.py (1084 lines)"}, "properties": {"repobilityId": "a853ab982073fec7", "scanner": "scanner-primary", "fingerprint": "1a9ecbdcbf831ccc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ba5e93bc923a3106", "level": "note", "message": {"text": "Very large file: addons/website_slides/controllers/main.py (1617 lines)"}, "properties": {"repobilityId": "5a944e3d3cd470de", "scanner": "scanner-primary", "fingerprint": "ba5e93bc923a3106", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-16b703f49dd22798", "level": "note", "message": {"text": "Very large file: addons/project_purchase/tests/test_project_profitability.py (1075 lines)"}, "properties": {"repobilityId": "4b39808e3a5887ad", "scanner": "scanner-primary", "fingerprint": "16b703f49dd22798", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbe25c76176d5e98", "level": "note", "message": {"text": "Very large file: addons/l10n_gr_edi/models/preferred_classification.py (967 lines)"}, "properties": {"repobilityId": "33b8bfd795136359", "scanner": "scanner-primary", "fingerprint": "bbe25c76176d5e98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-33b1e7eabcccdc80", "level": "note", "message": {"text": "Very large file: addons/pos_restaurant/static/tests/tours/pos_restaurant_tour.js (1314 lines)"}, "properties": {"repobilityId": "7cb84a6e90438105", "scanner": "scanner-primary", "fingerprint": "33b1e7eabcccdc80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-09c8c6cbfbb66599", "level": "note", "message": {"text": "Very large file: addons/sale_mrp/tests/test_sale_mrp_flow.py (3038 lines)"}, "properties": {"repobilityId": "3de97f7beda73899", "scanner": "scanner-primary", "fingerprint": "09c8c6cbfbb66599", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41b8830784c9e634", "level": "note", "message": {"text": "Very large file: addons/hr_holidays/models/hr_leave.py (1656 lines)"}, "properties": {"repobilityId": "b8a68424ae588e6f", "scanner": "scanner-primary", "fingerprint": "41b8830784c9e634", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-47ac522751a0a297", "level": "note", "message": {"text": "Very large file: addons/hr_holidays/models/hr_leave_allocation.py (1103 lines)"}, "properties": {"repobilityId": "67b49e3a66c8dd52", "scanner": "scanner-primary", "fingerprint": "47ac522751a0a297", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4545183820026a95", "level": "note", "message": {"text": "Very large file: addons/hr_holidays/tests/test_leave_requests.py (2381 lines)"}, "properties": {"repobilityId": "d8e2d5d5de2b179e", "scanner": "scanner-primary", "fingerprint": "4545183820026a95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9afde896b3da29bb", "level": "note", "message": {"text": "Very large file: addons/hr_holidays/tests/test_accrual_allocations.py (5148 lines)"}, "properties": {"repobilityId": "1756340ffe1147e4", "scanner": "scanner-primary", "fingerprint": "9afde896b3da29bb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9405a24d58635ae7", "level": "note", "message": {"text": "Very large file: addons/website_sale/controllers/main.py (2019 lines)"}, "properties": {"repobilityId": "544a6bfffeb2552b", "scanner": "scanner-primary", "fingerprint": "9405a24d58635ae7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e809c2e18bf8a99", "level": "note", "message": {"text": "Very large file: addons/mrp_subcontracting/tests/test_subcontracting.py (1799 lines)"}, "properties": {"repobilityId": "ae6bbfb8626dacc0", "scanner": "scanner-primary", "fingerprint": "0e809c2e18bf8a99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-413567583473b552", "level": "note", "message": {"text": "Very large file: addons/sale_project/tests/test_sale_project.py (2049 lines)"}, "properties": {"repobilityId": "d15864b8a67eae05", "scanner": "scanner-primary", "fingerprint": "413567583473b552", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1d175ff38b95dd47", "level": "note", "message": {"text": "Very large file: addons/sale_project/tests/test_project_profitability.py (1215 lines)"}, "properties": {"repobilityId": "e3473cad24c68336", "scanner": "scanner-primary", "fingerprint": "1d175ff38b95dd47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d5a9b21f75687de", "level": "note", "message": {"text": "Very large file: addons/calendar/models/calendar_event.py (1789 lines)"}, "properties": {"repobilityId": "d2ea01376b439625", "scanner": "scanner-primary", "fingerprint": "9d5a9b21f75687de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fd451a5d424a4e7b", "level": "note", "message": {"text": "Very large file: addons/calendar/tests/test_event_recurrence.py (1118 lines)"}, "properties": {"repobilityId": "491823e5aa03f993", "scanner": "scanner-primary", "fingerprint": "fd451a5d424a4e7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c0e81be625edd3fd", "level": "note", "message": {"text": "Very large file: addons/event/tests/test_event_internals.py (1177 lines)"}, "properties": {"repobilityId": "d47a1fec533aef48", "scanner": "scanner-primary", "fingerprint": "c0e81be625edd3fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ef6f2b2c88df4b9", "level": "note", "message": {"text": "Very large file: addons/event/tests/test_event_mail_schedule.py (1153 lines)"}, "properties": {"repobilityId": "9ebf3ff4b94c49f2", "scanner": "scanner-primary", "fingerprint": "8ef6f2b2c88df4b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b6d7506cf9163f84", "level": "note", "message": {"text": "Very large file: addons/mrp/models/mrp_workorder.py (959 lines)"}, "properties": {"repobilityId": "994d2500cc7d8cf1", "scanner": "scanner-primary", "fingerprint": "b6d7506cf9163f84", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9cbba048ceae5e32", "level": "note", "message": {"text": "Very large file: addons/mrp/models/mrp_production.py (3206 lines)"}, "properties": {"repobilityId": "c5be53e67a7ee931", "scanner": "scanner-primary", "fingerprint": "9cbba048ceae5e32", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a0954d7a6bc0740b", "level": "note", "message": {"text": "Very large file: addons/mrp/tests/test_backorder.py (1184 lines)"}, "properties": {"repobilityId": "3dcdd08544a124a0", "scanner": "scanner-primary", "fingerprint": "a0954d7a6bc0740b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-54635a038ccd2a0f", "level": "note", "message": {"text": "Very large file: addons/mrp/tests/test_procurement.py (1606 lines)"}, "properties": {"repobilityId": "dee5be912ca31187", "scanner": "scanner-primary", "fingerprint": "54635a038ccd2a0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f72b1308ed001377", "level": "note", "message": {"text": "Very large file: addons/mrp/tests/test_bom.py (3104 lines)"}, "properties": {"repobilityId": "4f248b74080b3395", "scanner": "scanner-primary", "fingerprint": "f72b1308ed001377", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cbf569472b7da855", "level": "note", "message": {"text": "Very large file: addons/mrp/tests/test_order.py (5731 lines)"}, "properties": {"repobilityId": "2bfe62eccb136c78", "scanner": "scanner-primary", "fingerprint": "cbf569472b7da855", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-62026d0167f711ca", "level": "note", "message": {"text": "Very large file: addons/mrp/tests/test_unbuild.py (1230 lines)"}, "properties": {"repobilityId": "2245680945dc7a6a", "scanner": "scanner-primary", "fingerprint": "62026d0167f711ca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2f3797c9ad543d8c", "level": "note", "message": {"text": "Very large file: addons/mrp/report/mrp_report_mo_overview.py (1021 lines)"}, "properties": {"repobilityId": "8aaeda5580add6c2", "scanner": "scanner-primary", "fingerprint": "2f3797c9ad543d8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b08ce54463bb2c43", "level": "note", "message": {"text": "Very large file: addons/project/models/project_project.py (1462 lines)"}, "properties": {"repobilityId": "9f9429e660363f10", "scanner": "scanner-primary", "fingerprint": "b08ce54463bb2c43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc6fc9aa09b00e01", "level": "note", "message": {"text": "Very large file: addons/project/models/project_task.py (2271 lines)"}, "properties": {"repobilityId": "defe42fa6ed3e260", "scanner": "scanner-primary", "fingerprint": "fc6fc9aa09b00e01", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48e7272da583ee99", "level": "note", "message": {"text": "Very large file: addons/payment/models/payment_transaction.py (1280 lines)"}, "properties": {"repobilityId": "94d6c37e3a14ccf7", "scanner": "scanner-primary", "fingerprint": "48e7272da583ee99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bac01db139ce5438", "level": "note", "message": {"text": "1666 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "bac01db139ce5438", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "8297144429665894", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "214579be04623f34", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "b526478b60416795", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-7c463134657060e5", "level": "note", "message": {"text": "Stub function `lobject` (body is just `pass`/`return`) \u2014 odoo/sql_db.py:597"}, "properties": {"repobilityId": "b63c6cb8250af2df", "scanner": "scanner-primary", "fingerprint": "7c463134657060e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-951e4957a05d324d", "level": "note", "message": {"text": "Stub function `fake_start_response` (body is just `pass`/`return`) \u2014 odoo/http.py:2839"}, "properties": {"repobilityId": "6771e833a6505e2a", "scanner": "scanner-primary", "fingerprint": "951e4957a05d324d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-cf4749beeb1fa817", "level": "note", "message": {"text": "Legacy-named symbol `_url_unquote_legacy` in odoo/_monkeypatches/werkzeug.py:169"}, "properties": {"repobilityId": "35a5c1d343b9159f", "scanner": "scanner-primary", "fingerprint": "cf4749beeb1fa817", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-24d7ce703cd3ab7b", "level": "note", "message": {"text": "Stub function `setup` (body is just `pass`/`return`) \u2014 odoo/_monkeypatches/num2words.py:316"}, "properties": {"repobilityId": "d9dc0571220bae3a", "scanner": "scanner-primary", "fingerprint": "24d7ce703cd3ab7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-46dad2611c596b8d", "level": "note", "message": {"text": "Legacy-named symbol `object_copy` in odoo/addons/base/models/ir_actions.py:615"}, "properties": {"repobilityId": "20c84aaae0f0692c", "scanner": "scanner-primary", "fingerprint": "46dad2611c596b8d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ce57cb9663a764b1", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 odoo/addons/base/models/ir_actions_report.py:49"}, "properties": {"repobilityId": "0d9d1be841b3558d", "scanner": "scanner-primary", "fingerprint": "ce57cb9663a764b1", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/addons/base/models/ir_actions_report.py"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-c8589d62bd57fcdd", "level": "note", "message": {"text": "Stub function `_get_res_city_by_name` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/res_partner.py:1256"}, "properties": {"repobilityId": "b087c02143f79362", "scanner": "scanner-primary", "fingerprint": "c8589d62bd57fcdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-74154a5df42edb91", "level": "note", "message": {"text": "Stub function `_sanitize_cookies` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/ir_http.py:294"}, "properties": {"repobilityId": "a32cc32f8933732f", "scanner": "scanner-primary", "fingerprint": "74154a5df42edb91", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-941e2ddbfcdbe224", "level": "note", "message": {"text": "Stub function `_validate_tag_form` (body is just `pass`/`return`) \u2014 odoo/addons/base/models/ir_ui_view.py:1864"}, "properties": {"repobilityId": "14de1039ac946ed3", "scanner": "scanner-primary", "fingerprint": "941e2ddbfcdbe224", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-d9da9ded30bb368d", "level": "note", "message": {"text": "Stub function `print_progress` (body is just `pass`/`return`) \u2014 odoo/cli/upgrade_code.py:128"}, "properties": {"repobilityId": "4eb957d1a53d59a3", "scanner": "scanner-primary", "fingerprint": "d9da9ded30bb368d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-a5cd82fdae70ef35", "level": "note", "message": {"text": "Stub function `acquire` (body is just `pass`/`return`) \u2014 odoo/orm/registry.py:1191"}, "properties": {"repobilityId": "cd66f0bc3f91acd6", "scanner": "scanner-primary", "fingerprint": "a5cd82fdae70ef35", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-5b4e8b09223a1134", "level": "note", "message": {"text": "Legacy-named symbol `fields_to_copy` in odoo/orm/models.py:5436"}, "properties": {"repobilityId": "c4be50e7d960a786", "scanner": "scanner-primary", "fingerprint": "5b4e8b09223a1134", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4a2ca9d33bc5507", "level": "none", "message": {"text": "Commented-code block (5 lines) in odoo/orm/model_classes.py:59"}, "properties": {"repobilityId": "e2f3cfdf8cadefd0", "scanner": "scanner-primary", "fingerprint": "d4a2ca9d33bc5507", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/orm/model_classes.py"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-ec5cabda5170bed9", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 odoo/service/db.py:299"}, "properties": {"repobilityId": "4d05db2c9ea0c2c2", "scanner": "scanner-primary", "fingerprint": "ec5cabda5170bed9", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/service/db.py"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-72778d9d375ba52f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 odoo/service/server.py:1529"}, "properties": {"repobilityId": "f62cbaae8ec4e8dd", "scanner": "scanner-primary", "fingerprint": "72778d9d375ba52f", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "odoo/service/server.py"}, "region": {"startLine": 1529}}}]}, {"ruleId": "scanner-2e7dd2410febf296", "level": "note", "message": {"text": "Stub function `process_work` (body is just `pass`/`return`) \u2014 odoo/service/server.py:1297"}, "properties": {"repobilityId": "0b8635139c09e22e", "scanner": "scanner-primary", "fingerprint": "2e7dd2410febf296", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-70d26f1f141bdc28", "level": "note", "message": {"text": "Stub function `emit` (body is just `pass`/`return`) \u2014 odoo/tools/misc.py:782"}, "properties": {"repobilityId": "e4478ef71a27b13e", "scanner": "scanner-primary", "fingerprint": "70d26f1f141bdc28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-1ba82b96f5f0577d", "level": "note", "message": {"text": "Stub function `fn` (body is just `pass`/`return`) \u2014 odoo/tools/func.py:56"}, "properties": {"repobilityId": "71313608856ef52e", "scanner": "scanner-primary", "fingerprint": "1ba82b96f5f0577d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-7d9aa0bb5a0d5ccc", "level": "note", "message": {"text": "Stub function `_set_opt_strings` (body is just `pass`/`return`) \u2014 odoo/tools/config.py:128"}, "properties": {"repobilityId": "c5a7090bf9b61714", "scanner": "scanner-primary", "fingerprint": "7d9aa0bb5a0d5ccc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-82fa31482b531176", "level": "note", "message": {"text": "Stub function `copy_noop` (body is just `pass`/`return`) \u2014 odoo/tools/populate.py:237"}, "properties": {"repobilityId": "d5d546748c80062e", "scanner": "scanner-primary", "fingerprint": "82fa31482b531176", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-82acc5f6668141fd", "level": "note", "message": {"text": "Legacy-named symbol `is_legacy` in odoo/tools/js_transpiler.py:546"}, "properties": {"repobilityId": "d9dceba01526c4b4", "scanner": "scanner-primary", "fingerprint": "82acc5f6668141fd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a9042e5ef55e2f64", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/main.py:137"}, "properties": {"repobilityId": "50be08daa7a4ef46", "scanner": "scanner-primary", "fingerprint": "a9042e5ef55e2f64", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/main.py"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-67123ae62970d975", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/browser.py:92"}, "properties": {"repobilityId": "8e6c6ba08eacfec2", "scanner": "scanner-primary", "fingerprint": "67123ae62970d975", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/browser.py"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-9211a56a6d2417d5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/interfaces/display_interface_L.py:17"}, "properties": {"repobilityId": "8707abc53ba87a7a", "scanner": "scanner-primary", "fingerprint": "9211a56a6d2417d5", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/iot_handlers/interfaces/display_interface_L.py"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-eaf10b71d78762de", "level": "note", "message": {"text": "Stub function `_get_raw_response` (body is just `pass`/`return`) \u2014 addons/iot_drivers/iot_handlers/drivers/serial_base_driver.py:88"}, "properties": {"repobilityId": "12a4bb3a66bcd664", "scanner": "scanner-primary", "fingerprint": "eaf10b71d78762de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-84e7f1f476ab94cb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/drivers/display_driver_L.py:129"}, "properties": {"repobilityId": "28c7ad4f11524e46", "scanner": "scanner-primary", "fingerprint": "84e7f1f476ab94cb", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/iot_handlers/drivers/display_driver_L.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-afa68ba9af8729c4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/iot_handlers/drivers/keyboard_usb_driver_L.py:178"}, "properties": {"repobilityId": "7e67143b3ed9d222", "scanner": "scanner-primary", "fingerprint": "afa68ba9af8729c4", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/iot_handlers/drivers/keyboard_usb_driver_L.py"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-9e8651a6c6da28f4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/upgrade.py:29"}, "properties": {"repobilityId": "75ebd0fd71f8c992", "scanner": "scanner-primary", "fingerprint": "9e8651a6c6da28f4", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/tools/upgrade.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-378084780ccd0ae4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/wifi.py:36"}, "properties": {"repobilityId": "bea47426c89a26f8", "scanner": "scanner-primary", "fingerprint": "378084780ccd0ae4", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/tools/wifi.py"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-c08c476e4ae83104", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/iot_drivers/tools/helpers.py:219"}, "properties": {"repobilityId": "c717d72f88bdc147", "scanner": "scanner-primary", "fingerprint": "c08c476e4ae83104", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/tools/helpers.py"}, "region": {"startLine": 219}}}]}, {"ruleId": "scanner-d770ff79bfa112ae", "level": "note", "message": {"text": "Stub function `start_nginx_server` (body is just `pass`/`return`) \u2014 addons/iot_drivers/tools/helpers.py:123"}, "properties": {"repobilityId": "ea39b4de38034af1", "scanner": "scanner-primary", "fingerprint": "d770ff79bfa112ae", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-e3cf07371241a676", "level": "note", "message": {"text": "Legacy-named symbol `gift_card_copy` in addons/website_sale_loyalty/static/src/interactions/gift_card_copy.js:23"}, "properties": {"repobilityId": "91d24074d7dd8670", "scanner": "scanner-primary", "fingerprint": "e3cf07371241a676", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-17790fdc049989e5", "level": "note", "message": {"text": "Legacy-named symbol `trackingOld` in addons/l10n_dk_nemhandel/models/res_partner.py:189"}, "properties": {"repobilityId": "ef45e313927d23e2", "scanner": "scanner-primary", "fingerprint": "17790fdc049989e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-36bdd734ed87ecdd", "level": "note", "message": {"text": "Stub function `_mock_update_user_data` (body is just `pass`/`return`) \u2014 addons/l10n_dk_nemhandel/tools/demo_utils.py:121"}, "properties": {"repobilityId": "b917af070344af38", "scanner": "scanner-primary", "fingerprint": "36bdd734ed87ecdd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-25e3b0213b4cf3f0", "level": "note", "message": {"text": "Legacy-named symbol `att_copy` in addons/mail/models/mail_template.py:286"}, "properties": {"repobilityId": "66a633fb3f8876a0", "scanner": "scanner-primary", "fingerprint": "25e3b0213b4cf3f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c0bcfd113a202057", "level": "note", "message": {"text": "Stub function `_extras_to_store` (body is just `pass`/`return`) \u2014 addons/mail/models/mail_message.py:1316"}, "properties": {"repobilityId": "32fb79196ebd8793", "scanner": "scanner-primary", "fingerprint": "c0bcfd113a202057", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-cccaa43409ebd410", "level": "note", "message": {"text": "Legacy-named symbol `inbuf_old` in addons/mail/static/lib/lame/lame.js:10289"}, "properties": {"repobilityId": "d3a5578b9211e9f2", "scanner": "scanner-primary", "fingerprint": "cccaa43409ebd410", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8bffa3d2d55154d4", "level": "none", "message": {"text": "Commented-code block (6 lines) in addons/mail/static/lib/odoo_sfu/odoo_sfu.js:3079"}, "properties": {"repobilityId": "933e6b17b459d05b", "scanner": "scanner-primary", "fingerprint": "8bffa3d2d55154d4", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/lib/odoo_sfu/odoo_sfu.js"}, "region": {"startLine": 3079}}}]}, {"ruleId": "scanner-d7e973a8e59d91e0", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/mail/static/src/service_worker.js:190"}, "properties": {"repobilityId": "3ffd338e227c5fe2", "scanner": "scanner-primary", "fingerprint": "d7e973a8e59d91e0", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/service_worker.js"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-8c90ca8d8978f8b4", "level": "note", "message": {"text": "Legacy-named symbol `audio_worklet_processor_v2` in addons/mail/static/src/utils/common/media_monitoring.js:156"}, "properties": {"repobilityId": "c5b8537b8aec347d", "scanner": "scanner-primary", "fingerprint": "8c90ca8d8978f8b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-675698cfb12b12a8", "level": "note", "message": {"text": "Legacy-named symbol `audio_worklet_processor_v2` in addons/mail/controllers/discuss/rtc.py:111"}, "properties": {"repobilityId": "38acdf55510ab7e2", "scanner": "scanner-primary", "fingerprint": "675698cfb12b12a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fc4d21906f788c5e", "level": "none", "message": {"text": "Commented-code block (9 lines) in addons/stock_landed_costs/models/stock_landed_cost.py:134"}, "properties": {"repobilityId": "4baaff4558ec4397", "scanner": "scanner-primary", "fingerprint": "fc4d21906f788c5e", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/stock_landed_costs/models/stock_landed_cost.py"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-b871e8d55e674adb", "level": "note", "message": {"text": "Stub function `_add_purchase_order_base_lines_vals` (body is just `pass`/`return`) \u2014 addons/purchase_edi_ubl_bis3/models/purchase_edi_xml_ubl_bis3.py:118"}, "properties": {"repobilityId": "edde323522b93981", "scanner": "scanner-primary", "fingerprint": "b871e8d55e674adb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-c5383c73487e3b38", "level": "note", "message": {"text": "Legacy-named symbol `charge_copy` in addons/account_edi_ubl_cii/models/account_edi_common.py:1131"}, "properties": {"repobilityId": "0099069274a749c6", "scanner": "scanner-primary", "fingerprint": "c5383c73487e3b38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0c2a0a0a7d4c5aa7", "level": "note", "message": {"text": "Stub function `_ubl_add_delivery_party_endpoint_id_node` (body is just `pass`/`return`) \u2014 addons/account_edi_ubl_cii/models/account_edi_ubl_pint.py:221"}, "properties": {"repobilityId": "4142f2f7c385ce7d", "scanner": "scanner-primary", "fingerprint": "0c2a0a0a7d4c5aa7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-91dea9606989917d", "level": "none", "message": {"text": "Commented-code block (9 lines) in addons/account_edi_ubl_cii/models/account_edi_ubl.py:3157"}, "properties": {"repobilityId": "f37f398f7d4b5eaf", "scanner": "scanner-primary", "fingerprint": "91dea9606989917d", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/account_edi_ubl_cii/models/account_edi_ubl.py"}, "region": {"startLine": 3157}}}]}, {"ruleId": "scanner-dfbf9e57db74e4fc", "level": "note", "message": {"text": "Stub function `_add_invoice_seller_supplier_party_nodes` (body is just `pass`/`return`) \u2014 addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py:303"}, "properties": {"repobilityId": "aa8afc21558d2070", "scanner": "scanner-primary", "fingerprint": "dfbf9e57db74e4fc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-881ebcfbfc30490f", "level": "note", "message": {"text": "Legacy-named symbol `o_btn_char_copy` in addons/auth_totp_portal/static/src/interactions/totp_enable.js:50"}, "properties": {"repobilityId": "e1f9f11f005cdee3", "scanner": "scanner-primary", "fingerprint": "881ebcfbfc30490f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4788b184a7e7f8c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in addons/auth_oauth/models/res_users.py:137"}, "properties": {"repobilityId": "089d5bb6dab5b6b7", "scanner": "scanner-primary", "fingerprint": "4788b184a7e7f8c6", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/auth_oauth/models/res_users.py"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-aa07d59ee3bbf2d1", "level": "note", "message": {"text": "Stub function `_payment_request_from_kiosk` (body is just `pass`/`return`) \u2014 addons/pos_self_order/models/pos_payment_method.py:8"}, "properties": {"repobilityId": "023e7d1237d46d8b", "scanner": "scanner-primary", "fingerprint": "aa07d59ee3bbf2d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-7411651b52c51315", "level": "note", "message": {"text": "Legacy-named symbol `templates_to_copy` in addons/product/models/product_product.py:797"}, "properties": {"repobilityId": "5ff73b4f9c5b4c94", "scanner": "scanner-primary", "fingerprint": "7411651b52c51315", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b80fe42e0c2c2b44", "level": "note", "message": {"text": "Stub function `_compute_purchase_ok` (body is just `pass`/`return`) \u2014 addons/product/models/product_template.py:202"}, "properties": {"repobilityId": "43bcf80dda852a4d", "scanner": "scanner-primary", "fingerprint": "b80fe42e0c2c2b44", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-41319482512f7f43", "level": "note", "message": {"text": "Stub function `_get_additional_data_field` (body is just `pass`/`return`) \u2014 addons/account_qr_code_emv/models/res_bank.py:54"}, "properties": {"repobilityId": "4d16ef35c2e4f094", "scanner": "scanner-primary", "fingerprint": "41319482512f7f43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-cd6b176a995f053b", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale/models/sale_order_line.py:1008"}, "properties": {"repobilityId": "0342a8ec24bd7694", "scanner": "scanner-primary", "fingerprint": "cd6b176a995f053b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-af3c9e5036558787", "level": "note", "message": {"text": "Legacy-named symbol `move_to_copy` in addons/purchase_stock/models/stock_rule.py:394"}, "properties": {"repobilityId": "fc150ba2858e24dd", "scanner": "scanner-primary", "fingerprint": "af3c9e5036558787", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0e346999a7a3538a", "level": "note", "message": {"text": "Legacy-named symbol `_post_copy` in addons/website/models/ir_module_module.py:181"}, "properties": {"repobilityId": "1e3eacff802e4e3a", "scanner": "scanner-primary", "fingerprint": "0e346999a7a3538a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2618dfbf8db2b868", "level": "note", "message": {"text": "Legacy-named symbol `key_copy` in addons/website/models/website.py:1285"}, "properties": {"repobilityId": "df6a90546a88757a", "scanner": "scanner-primary", "fingerprint": "2618dfbf8db2b868", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e6bd64c7f81b1b8a", "level": "note", "message": {"text": "Stub function `configurator_addons_apply` (body is just `pass`/`return`) \u2014 addons/website/models/website.py:1108"}, "properties": {"repobilityId": "838a0fcf0e40334d", "scanner": "scanner-primary", "fingerprint": "e6bd64c7f81b1b8a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-237f25d2c8b42388", "level": "note", "message": {"text": "Legacy-named symbol `_post_copy` in addons/website/models/theme_models.py:249"}, "properties": {"repobilityId": "b94f52552b88edd0", "scanner": "scanner-primary", "fingerprint": "237f25d2c8b42388", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-93219d51e8c15dfa", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/website/static/src/js/utils.js:24"}, "properties": {"repobilityId": "15ce563e49473aee", "scanner": "scanner-primary", "fingerprint": "93219d51e8c15dfa", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/js/utils.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-d01c7c86e87af770", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/website/static/src/interactions/image_shape_hover_effect.js:51"}, "properties": {"repobilityId": "177474baef510a85", "scanner": "scanner-primary", "fingerprint": "d01c7c86e87af770", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/website/static/src/interactions/image_shape_hover_effect.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-f511d123f01f3775", "level": "note", "message": {"text": "Legacy-named symbol `error_description_copy` in addons/l10n_it_edi/models/account_move.py:2492"}, "properties": {"repobilityId": "5a04ef1bfbc8554b", "scanner": "scanner-primary", "fingerprint": "f511d123f01f3775", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4357c5c0814f07dc", "level": "note", "message": {"text": "Stub function `_inverse_public_key` (body is just `pass`/`return`) \u2014 addons/auth_passkey/models/auth_passkey_key.py:59"}, "properties": {"repobilityId": "30046d17a17a19fb", "scanner": "scanner-primary", "fingerprint": "4357c5c0814f07dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-68cb2e790031490f", "level": "note", "message": {"text": "Legacy-named symbol `trackingOld` in addons/l10n_fr_pdp/models/res_partner.py:172"}, "properties": {"repobilityId": "d607b2b7d33e1915", "scanner": "scanner-primary", "fingerprint": "68cb2e790031490f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8bddb7fb1297be9e", "level": "note", "message": {"text": "Legacy-named symbol `o_survey_session_copy` in addons/survey/static/src/interactions/survey_session_manage.js:27"}, "properties": {"repobilityId": "cf5739fc65f4c7fb", "scanner": "scanner-primary", "fingerprint": "8bddb7fb1297be9e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a1d65c9ea6ddae15", "level": "note", "message": {"text": "Stub function `_inverse_send_email` (body is just `pass`/`return`) \u2014 addons/survey/wizard/survey_invite.py:70"}, "properties": {"repobilityId": "3fbef5360f9a1528", "scanner": "scanner-primary", "fingerprint": "a1d65c9ea6ddae15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-c083ae91a2631530", "level": "note", "message": {"text": "Legacy-named symbol `first_agent_message_dt_legacy` in addons/im_livechat/report/im_livechat_report_channel.py:120"}, "properties": {"repobilityId": "11d2ba3312c0c278", "scanner": "scanner-primary", "fingerprint": "c083ae91a2631530", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a39eaefe32734447", "level": "note", "message": {"text": "Legacy-named symbol `WebsiteForumLegacy` in addons/website_forum/controllers/legacy.py:7"}, "properties": {"repobilityId": "fadf3183552305b2", "scanner": "scanner-primary", "fingerprint": "a39eaefe32734447", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eb09beb873d963de", "level": "note", "message": {"text": "Legacy-named symbol `move_to_copy` in addons/stock/models/stock_rule.py:256"}, "properties": {"repobilityId": "e486d208fe48958d", "scanner": "scanner-primary", "fingerprint": "eb09beb873d963de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fc3dbda31c8d0fe7", "level": "note", "message": {"text": "Stub function `_assign_picking_post_process` (body is just `pass`/`return`) \u2014 addons/stock/models/stock_move.py:1595"}, "properties": {"repobilityId": "bdc882d784f6992f", "scanner": "scanner-primary", "fingerprint": "fc3dbda31c8d0fe7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-38b29b38db03d4c5", "level": "note", "message": {"text": "Legacy-named symbol `event_copy` in addons/microsoft_calendar/models/calendar.py:243"}, "properties": {"repobilityId": "decb557da8b727e7", "scanner": "scanner-primary", "fingerprint": "38b29b38db03d4c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-16b4788052df8c6c", "level": "note", "message": {"text": "Stub function `action_print_as_pdf` (body is just `pass`/`return`) \u2014 addons/stock_account/report/stock_valuation_report.py:151"}, "properties": {"repobilityId": "ee20456724f2aac3", "scanner": "scanner-primary", "fingerprint": "16b4788052df8c6c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-f4a817371f66a796", "level": "note", "message": {"text": "Legacy-named symbol `record_copy` in addons/base_automation/models/base_automation.py:527"}, "properties": {"repobilityId": "e8f491adf53f9792", "scanner": "scanner-primary", "fingerprint": "f4a817371f66a796", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-79d879bb6b6f7bd8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/google_gmail/models/google_gmail_mixin.py:185"}, "properties": {"repobilityId": "d34c77d83c08c6bb", "scanner": "scanner-primary", "fingerprint": "79d879bb6b6f7bd8", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/google_gmail/models/google_gmail_mixin.py"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-855599da30383486", "level": "note", "message": {"text": "Stub function `_run_check_identification` (body is just `pass`/`return`) \u2014 addons/l10n_latam_base/models/res_partner.py:21"}, "properties": {"repobilityId": "b0e970abc217b16b", "scanner": "scanner-primary", "fingerprint": "855599da30383486", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-502697ddba86a67b", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/html_editor/static/src/utils/image_processing.js:59"}, "properties": {"repobilityId": "1e5952163070e922", "scanner": "scanner-primary", "fingerprint": "502697ddba86a67b", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/utils/image_processing.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-540446b5f0c07b27", "level": "none", "message": {"text": "Commented-code block (12 lines) in addons/html_editor/static/src/core/selection_plugin.js:959"}, "properties": {"repobilityId": "c299dcc0082a3da8", "scanner": "scanner-primary", "fingerprint": "540446b5f0c07b27", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/selection_plugin.js"}, "region": {"startLine": 959}}}]}, {"ruleId": "scanner-162bc2105b2d477f", "level": "none", "message": {"text": "Commented-code block (11 lines) in addons/html_editor/static/src/core/line_break_plugin.js:122"}, "properties": {"repobilityId": "333a2a879fbc5cd1", "scanner": "scanner-primary", "fingerprint": "162bc2105b2d477f", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/core/line_break_plugin.js"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-f46d2a4bc968cc4b", "level": "none", "message": {"text": "Commented-code block (5 lines) in addons/html_editor/static/src/main/table/table_plugin.js:663"}, "properties": {"repobilityId": "bff31cbe06b7baf1", "scanner": "scanner-primary", "fingerprint": "f46d2a4bc968cc4b", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/main/table/table_plugin.js"}, "region": {"startLine": 663}}}]}, {"ruleId": "scanner-4f21ddcbd5bdf41e", "level": "none", "message": {"text": "Commented-code block (6 lines) in addons/html_editor/static/src/others/collaboration/collaboration_plugin.js:273"}, "properties": {"repobilityId": "ba3fb91fc535bc06", "scanner": "scanner-primary", "fingerprint": "4f21ddcbd5bdf41e", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/collaboration_plugin.js"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-8a30d743f761d082", "level": "none", "message": {"text": "Commented-code block (6 lines) in addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js:192"}, "properties": {"repobilityId": "4cecf7248a9bebc7", "scanner": "scanner-primary", "fingerprint": "8a30d743f761d082", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/static/src/others/collaboration/collaboration_odoo_plugin.js"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-e9a9de917a07da51", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/html_editor/controllers/main.py:518"}, "properties": {"repobilityId": "049f5eea6f7da513", "scanner": "scanner-primary", "fingerprint": "e9a9de917a07da51", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/html_editor/controllers/main.py"}, "region": {"startLine": 518}}}]}, {"ruleId": "scanner-a7ddb19baadc2c54", "level": "note", "message": {"text": "Stub function `_merge_po_post_process` (body is just `pass`/`return`) \u2014 addons/purchase/models/purchase_order.py:916"}, "properties": {"repobilityId": "c4640d625489bb94", "scanner": "scanner-primary", "fingerprint": "a7ddb19baadc2c54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-01ad1b6fa6bda80e", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/purchase/models/purchase_order_line.py:195"}, "properties": {"repobilityId": "37d1d464ae7588b0", "scanner": "scanner-primary", "fingerprint": "01ad1b6fa6bda80e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0dea4067efd8c1ab", "level": "note", "message": {"text": "Stub function `_add_sale_order_base_lines_vals` (body is just `pass`/`return`) \u2014 addons/sale_edi_ubl/models/sale_edi_xml_ubl_bis3.py:104"}, "properties": {"repobilityId": "f30e2d1d8f108ec9", "scanner": "scanner-primary", "fingerprint": "0dea4067efd8c1ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-58f9074483229c95", "level": "note", "message": {"text": "Legacy-named symbol `pdataOld` in addons/web/static/lib/jquery/jquery.js:6053"}, "properties": {"repobilityId": "cb21f2cc0cf7bd0e", "scanner": "scanner-primary", "fingerprint": "58f9074483229c95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-68915b9ea55f07ec", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web/static/lib/fullcalendar/core/index.global.js:8550"}, "properties": {"repobilityId": "0cc7dfcb7051ce66", "scanner": "scanner-primary", "fingerprint": "68915b9ea55f07ec", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/fullcalendar/core/index.global.js"}, "region": {"startLine": 8550}}}]}, {"ruleId": "scanner-ac3ae38acbe2cc98", "level": "note", "message": {"text": "Legacy-named symbol `idxInOld` in addons/web/static/lib/owl/owl.js:1367"}, "properties": {"repobilityId": "996d96fa4059de9c", "scanner": "scanner-primary", "fingerprint": "ac3ae38acbe2cc98", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a4e6cbc6d6e7a5c6", "level": "note", "message": {"text": "Legacy-named symbol `ace_deprecated` in addons/web/static/lib/ace/theme-monokai.js:1"}, "properties": {"repobilityId": "d911788da09adcf4", "scanner": "scanner-primary", "fingerprint": "a4e6cbc6d6e7a5c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df960735c7eac04f", "level": "note", "message": {"text": "Legacy-named symbol `deep_copy` in addons/web/static/lib/ace/ace.js:307"}, "properties": {"repobilityId": "9d96deb8674aa0e3", "scanner": "scanner-primary", "fingerprint": "df960735c7eac04f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2108fe049f8c6be", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web/static/src/service_worker.js:14"}, "properties": {"repobilityId": "e1672f53e05c7c15", "scanner": "scanner-primary", "fingerprint": "d2108fe049f8c6be", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/service_worker.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-ebf71a726e538b0e", "level": "none", "message": {"text": "Commented-code block (5 lines) in addons/web/static/src/core/utils/patch.js:33"}, "properties": {"repobilityId": "305318be3a523172", "scanner": "scanner-primary", "fingerprint": "ebf71a726e538b0e", "layer": "quality", "severity": "info", "confidence": 0.72, "tags": ["integrity", "commented-code", "dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/src/core/utils/patch.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-9cbe3bbee8e78b12", "level": "note", "message": {"text": "Legacy-named symbol `o_database_backup` in addons/web/static/src/public/database_manager.js:52"}, "properties": {"repobilityId": "18f4533135e1c263", "scanner": "scanner-primary", "fingerprint": "9cbe3bbee8e78b12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2532ce700d82f6b6", "level": "note", "message": {"text": "Legacy-named symbol `resources_to_copy` in addons/resource/models/resource_mixin.py:72"}, "properties": {"repobilityId": "d4a4830062ec91f8", "scanner": "scanner-primary", "fingerprint": "2532ce700d82f6b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2ee69da3e55d17db", "level": "note", "message": {"text": "Legacy-named symbol `version_to_copy` in addons/hr/models/hr_employee.py:581"}, "properties": {"repobilityId": "4ea0552978edec18", "scanner": "scanner-primary", "fingerprint": "2ee69da3e55d17db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-36290108bb1eacf4", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/microsoft_outlook/models/microsoft_outlook_mixin.py:183"}, "properties": {"repobilityId": "3581b3b9d22a58fd", "scanner": "scanner-primary", "fingerprint": "36290108bb1eacf4", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/microsoft_outlook/models/microsoft_outlook_mixin.py"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-27e6fd5de7a883eb", "level": "note", "message": {"text": "Legacy-named symbol `mass_mailing_copy` in addons/mass_mailing/models/mailing.py:625"}, "properties": {"repobilityId": "0e6ff29f2d32c7c5", "scanner": "scanner-primary", "fingerprint": "27e6fd5de7a883eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4baec207b61b90f4", "level": "note", "message": {"text": "Stub function `action_reload` (body is just `pass`/`return`) \u2014 addons/mass_mailing/models/mailing.py:651"}, "properties": {"repobilityId": "7547104ab5f326a1", "scanner": "scanner-primary", "fingerprint": "4baec207b61b90f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-174f031a2d511c1e", "level": "note", "message": {"text": "Legacy-named symbol `MailingLegacy` in addons/mass_mailing/controllers/legacy.py:10"}, "properties": {"repobilityId": "50887e9d75c54812", "scanner": "scanner-primary", "fingerprint": "174f031a2d511c1e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8d12b804747cb3b2", "level": "note", "message": {"text": "Legacy-named symbol `bank_statement_one_month_old` in addons/account/demo/account_demo.py:560"}, "properties": {"repobilityId": "3c3949d9ce6fdc5d", "scanner": "scanner-primary", "fingerprint": "8d12b804747cb3b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-362d283233fd08c2", "level": "note", "message": {"text": "Stub function `_get_qr_vals` (body is just `pass`/`return`) \u2014 addons/account/models/res_partner_bank.py:190"}, "properties": {"repobilityId": "7b2c29d8f0cffdc0", "scanner": "scanner-primary", "fingerprint": "362d283233fd08c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-ebb1ca33a42ce283", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/account/models/account_move.py:55"}, "properties": {"repobilityId": "692e16f34320e367", "scanner": "scanner-primary", "fingerprint": "ebb1ca33a42ce283", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-011c65171f420613", "level": "note", "message": {"text": "Stub function `_compute_made_sequence_gap` (body is just `pass`/`return`) \u2014 addons/account/models/account_move.py:972"}, "properties": {"repobilityId": "86435e29232354d4", "scanner": "scanner-primary", "fingerprint": "011c65171f420613", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-678f3e23c94edf7e", "level": "note", "message": {"text": "Legacy-named symbol `trackingOld` in addons/account/models/account_tax.py:440"}, "properties": {"repobilityId": "81f73c00e74e8f3b", "scanner": "scanner-primary", "fingerprint": "678f3e23c94edf7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2cabf97e5572687e", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/account/controllers/portal.py:63"}, "properties": {"repobilityId": "f8be2581a2b422a4", "scanner": "scanner-primary", "fingerprint": "2cabf97e5572687e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6a03b6962183ebb4", "level": "note", "message": {"text": "Legacy-named symbol `heartbeatKillOld` in addons/bus/static/src/multi_tab_fallback_service.js:46"}, "properties": {"repobilityId": "62f4bcd55fb58559", "scanner": "scanner-primary", "fingerprint": "6a03b6962183ebb4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-41c1df8c2cdf37df", "level": "note", "message": {"text": "Legacy-named symbol `trackingOld` in addons/account_peppol/models/res_partner.py:95"}, "properties": {"repobilityId": "3b1fe35b0adb9082", "scanner": "scanner-primary", "fingerprint": "41c1df8c2cdf37df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b36bc21c1f77a977", "level": "note", "message": {"text": "Legacy-named symbol `signing_certificate_v2` in addons/l10n_eg_edi_eta/models/eta_thumb_drive.py:125"}, "properties": {"repobilityId": "7d4ace661862d992", "scanner": "scanner-primary", "fingerprint": "b36bc21c1f77a977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-515ec28d935b4d22", "level": "note", "message": {"text": "Legacy-named symbol `is_deprecated` in addons/payment_paymob/models/payment_provider.py:102"}, "properties": {"repobilityId": "4d8513301df22e85", "scanner": "scanner-primary", "fingerprint": "515ec28d935b4d22", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bb3d73b5b4ece42b", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/hr_timesheet.py:97"}, "properties": {"repobilityId": "cfe3370478a45988", "scanner": "scanner-primary", "fingerprint": "bb3d73b5b4ece42b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-351c8ffd5fdfcfb3", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/sale_order_line.py:167"}, "properties": {"repobilityId": "b09640b378080a3f", "scanner": "scanner-primary", "fingerprint": "351c8ffd5fdfcfb3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2d8c1a2c9dd18f03", "level": "note", "message": {"text": "Legacy-named symbol `invoicing_legacy` in addons/sale_timesheet/models/account_move_line.py:24"}, "properties": {"repobilityId": "747af6b0c9411422", "scanner": "scanner-primary", "fingerprint": "2d8c1a2c9dd18f03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-905000e36b2c039f", "level": "note", "message": {"text": "Legacy-named symbol `_generate_overtime_vals_v2` in addons/hr_attendance/models/hr_attendance.py:347"}, "properties": {"repobilityId": "61c6f7d414110800", "scanner": "scanner-primary", "fingerprint": "905000e36b2c039f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b1ca50985b0e90d1", "level": "note", "message": {"text": "Legacy-named symbol `_generate_overtime_vals_v2` in addons/hr_attendance/models/hr_attendance_overtime_rule.py:700"}, "properties": {"repobilityId": "ac502d909bf7f539", "scanner": "scanner-primary", "fingerprint": "b1ca50985b0e90d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-77631ce46799aba9", "level": "note", "message": {"text": "Legacy-named symbol `WebsiteSlidesLegacy` in addons/website_slides/controllers/legacy.py:8"}, "properties": {"repobilityId": "bc75d22e2a392c8b", "scanner": "scanner-primary", "fingerprint": "77631ce46799aba9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4b53cb564c30a7e7", "level": "note", "message": {"text": "Stub function `_add_invoice_delivery_nodes` (body is just `pass`/`return`) \u2014 addons/l10n_jo_edi/models/account_edi_xml_ubl_21_jo.py:199"}, "properties": {"repobilityId": "b1f17052c3814fed", "scanner": "scanner-primary", "fingerprint": "4b53cb564c30a7e7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-8af3cbf440c9caa4", "level": "note", "message": {"text": "Legacy-named symbol `move_to_copy` in addons/mrp_subcontracting/models/stock_rule.py:11"}, "properties": {"repobilityId": "95c9899c90562330", "scanner": "scanner-primary", "fingerprint": "8af3cbf440c9caa4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e579b71827198eb7", "level": "note", "message": {"text": "Stub function `_compute_analytic_distribution` (body is just `pass`/`return`) \u2014 addons/analytic/models/analytic_mixin.py:77"}, "properties": {"repobilityId": "c1794038dda3a08c", "scanner": "scanner-primary", "fingerprint": "e579b71827198eb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-6db3052d5f0bc3d8", "level": "note", "message": {"text": "Legacy-named symbol `_get_recurring_fields_to_copy` in addons/sale_project/models/project_task_recurrence.py:10"}, "properties": {"repobilityId": "90b2d1a97c4d3413", "scanner": "scanner-primary", "fingerprint": "6db3052d5f0bc3d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bd1c65569226cf73", "level": "note", "message": {"text": "Stub function `_add_pos_order_payment_means_nodes` (body is just `pass`/`return`) \u2014 addons/pos_edi_ubl/models/pos_edi_ubl_21.py:108"}, "properties": {"repobilityId": "8d59b0ebdc72eb83", "scanner": "scanner-primary", "fingerprint": "bd1c65569226cf73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-6bebf9a55881f3c4", "level": "warning", "message": {"text": "Fire-and-forget `fetch()` has no rejection handler \u2014 addons/web_unsplash/static/src/frontend/unsplash_beacon.js:27"}, "properties": {"repobilityId": "1382df73fbfa7716", "scanner": "scanner-primary", "fingerprint": "6bebf9a55881f3c4", "layer": "quality", "severity": "medium", "confidence": 0.9, "tags": ["integrity", "fragile-runtime", "robustness", "unhandled-promise"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_unsplash/static/src/frontend/unsplash_beacon.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-07568b8c4e1a0516", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 addons/web_unsplash/controllers/main.py:37"}, "properties": {"repobilityId": "61d6979c304b0fbc", "scanner": "scanner-primary", "fingerprint": "07568b8c4e1a0516", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web_unsplash/controllers/main.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-f8d0cbfbdfcebb73", "level": "note", "message": {"text": "Legacy-named symbol `move_to_copy` in addons/mrp/models/stock_rule.py:246"}, "properties": {"repobilityId": "3d0e3039dc18c8e9", "scanner": "scanner-primary", "fingerprint": "f8d0cbfbdfcebb73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e4d19ff3afd9be3a", "level": "note", "message": {"text": "Legacy-named symbol `_get_recurring_fields_to_copy` in addons/project/models/project_task_recurrence.py:41"}, "properties": {"repobilityId": "446fa8ca0af44464", "scanner": "scanner-primary", "fingerprint": "e4d19ff3afd9be3a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ace618d9a8351fc2", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 setup/package.py:122"}, "properties": {"repobilityId": "19976fb3c5941429", "scanner": "scanner-primary", "fingerprint": "ace618d9a8351fc2", "layer": "quality", "severity": "medium", "confidence": 0.85, "tags": ["integrity", "fragile-runtime", "robustness"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "setup/package.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "60613ea7a4d02b0d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-e5789932c5c8f09a", "level": "warning", "message": {"text": "Proxy-Authorization leak in requests <2.31.0 (requests@2.25.1)"}, "properties": {"repobilityId": "81f0af81eb5bdb24", "scanner": "scanner-primary", "fingerprint": "e5789932c5c8f09a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "cve", "CVE-2023-32681", "CWE-200"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da010e22322e4a6a", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.2.post1: GHSA-3c37-wwvx-h642"}, "properties": {"repobilityId": "3597f121551ec728", "scanner": "scanner-primary", "fingerprint": "da010e22322e4a6a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3c37-wwvx-h642"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-776d287f8b2f40e6", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.2.post1: GHSA-wcj4-jw5j-44wh"}, "properties": {"repobilityId": "5b281583aa1823c8", "scanner": "scanner-primary", "fingerprint": "776d287f8b2f40e6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wcj4-jw5j-44wh"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8569f7a2e4555cbb", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2024-155"}, "properties": {"repobilityId": "234f47e6c48e6d3b", "scanner": "scanner-primary", "fingerprint": "8569f7a2e4555cbb", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2024-155"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-999407985ebd9684", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2025-238"}, "properties": {"repobilityId": "1661aecc5f0b388a", "scanner": "scanner-primary", "fingerprint": "999407985ebd9684", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2025-238"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4651eac521dae5b7", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2025-90"}, "properties": {"repobilityId": "fdd3cb41bc28cfd7", "scanner": "scanner-primary", "fingerprint": "4651eac521dae5b7", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2025-90"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f262d7f5c16c4c0", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.2.post1: PYSEC-2026-2123"}, "properties": {"repobilityId": "d276220581163691", "scanner": "scanner-primary", "fingerprint": "6f262d7f5c16c4c0", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2123"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3f123ec4b0b57079", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.6: GHSA-3c37-wwvx-h642"}, "properties": {"repobilityId": "a9372376c1f5807e", "scanner": "scanner-primary", "fingerprint": "3f123ec4b0b57079", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3c37-wwvx-h642"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-751eacff503bc325", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.6: GHSA-wcj4-jw5j-44wh"}, "properties": {"repobilityId": "8a22d98ca0d88945", "scanner": "scanner-primary", "fingerprint": "751eacff503bc325", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wcj4-jw5j-44wh"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4f273a2a242e5d4e", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2024-155"}, "properties": {"repobilityId": "96e776a761e6d1e4", "scanner": "scanner-primary", "fingerprint": "4f273a2a242e5d4e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2024-155"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e759da65cd9e421", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2025-238"}, "properties": {"repobilityId": "743071c03a359d82", "scanner": "scanner-primary", "fingerprint": "4e759da65cd9e421", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2025-238"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-291142a434a4ee90", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2025-90"}, "properties": {"repobilityId": "a6463b757ebff794", "scanner": "scanner-primary", "fingerprint": "291142a434a4ee90", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2025-90"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aee29b2932a2282a", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.4.6: PYSEC-2026-2123"}, "properties": {"repobilityId": "50dbc6994c892987", "scanner": "scanner-primary", "fingerprint": "aee29b2932a2282a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2123"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f827ea7599883fa6", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.6.2: GHSA-3c37-wwvx-h642"}, "properties": {"repobilityId": "c5627ea5bda0c2ad", "scanner": "scanner-primary", "fingerprint": "f827ea7599883fa6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3c37-wwvx-h642"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52ddc4bcfe9da10b", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.6.2: GHSA-wcj4-jw5j-44wh"}, "properties": {"repobilityId": "fa665dd8ba03ee85", "scanner": "scanner-primary", "fingerprint": "52ddc4bcfe9da10b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wcj4-jw5j-44wh"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a6f7acaad84db93", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.6.2: PYSEC-2025-238"}, "properties": {"repobilityId": "0422e44a5a32de6b", "scanner": "scanner-primary", "fingerprint": "4a6f7acaad84db93", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2025-238"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-883d81e11a8009e6", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.6.2: PYSEC-2025-90"}, "properties": {"repobilityId": "11c73b686d4e16e1", "scanner": "scanner-primary", "fingerprint": "883d81e11a8009e6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2025-90"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c6a3c1fee2bcd9c", "level": "warning", "message": {"text": "Vulnerable dependency cbor2 5.6.2: PYSEC-2026-2123"}, "properties": {"repobilityId": "064c8cb5ca19074f", "scanner": "scanner-primary", "fingerprint": "1c6a3c1fee2bcd9c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2123"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0cd8caaf37ea541", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-3ww4-gg4f-jr7f"}, "properties": {"repobilityId": "0a03a69927f714c0", "scanner": "scanner-primary", "fingerprint": "d0cd8caaf37ea541", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3ww4-gg4f-jr7f"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cda4386982bf6fbe", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-537c-gmf6-5ccf"}, "properties": {"repobilityId": "fcc3f4c6d7379473", "scanner": "scanner-primary", "fingerprint": "cda4386982bf6fbe", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-537c-gmf6-5ccf"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78bcb03e16bcbf4d", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-5cpq-8wj7-hf2v"}, "properties": {"repobilityId": "f5673da2c8ef4c76", "scanner": "scanner-primary", "fingerprint": "78bcb03e16bcbf4d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5cpq-8wj7-hf2v"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e56d043bea0e20e", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-9v9h-cgj8-h64p"}, "properties": {"repobilityId": "2cd9e831c71d8003", "scanner": "scanner-primary", "fingerprint": "0e56d043bea0e20e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9v9h-cgj8-h64p"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1dffdf8c8f89d474", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-jfhm-5ghh-2f97"}, "properties": {"repobilityId": "729643aa38fb08b0", "scanner": "scanner-primary", "fingerprint": "1dffdf8c8f89d474", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jfhm-5ghh-2f97"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2983349048d9a5e3", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-jm77-qphf-c4w8"}, "properties": {"repobilityId": "343f61a1d09a8cb2", "scanner": "scanner-primary", "fingerprint": "2983349048d9a5e3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jm77-qphf-c4w8"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c566015343bd129", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-m959-cc7f-wv43"}, "properties": {"repobilityId": "33ead6176908f088", "scanner": "scanner-primary", "fingerprint": "0c566015343bd129", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-m959-cc7f-wv43"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d800508c02bc4e10", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-r6ph-v2qm-q3c2"}, "properties": {"repobilityId": "f22a753a8c7a70dd", "scanner": "scanner-primary", "fingerprint": "d800508c02bc4e10", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r6ph-v2qm-q3c2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d9c26ca9b4814e3c", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-v8gr-m533-ghj9"}, "properties": {"repobilityId": "81f3ccda730b31cb", "scanner": "scanner-primary", "fingerprint": "d9c26ca9b4814e3c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-v8gr-m533-ghj9"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f50b63825517d16a", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-w7pp-m8wf-vj6r"}, "properties": {"repobilityId": "4e2b5b2b65876613", "scanner": "scanner-primary", "fingerprint": "f50b63825517d16a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-w7pp-m8wf-vj6r"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84af4d6e5d5b1f40", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: GHSA-x4qr-2fvf-3mr5"}, "properties": {"repobilityId": "de146fcfaddbf16a", "scanner": "scanner-primary", "fingerprint": "84af4d6e5d5b1f40", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-x4qr-2fvf-3mr5"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-545f5a649a73cbee", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2023-11"}, "properties": {"repobilityId": "29eca4eec3614dce", "scanner": "scanner-primary", "fingerprint": "545f5a649a73cbee", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-11"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0da139d979465122", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2023-254"}, "properties": {"repobilityId": "e30bcf6065dbb5e7", "scanner": "scanner-primary", "fingerprint": "0da139d979465122", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-254"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-60e970ebca26528f", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-1283"}, "properties": {"repobilityId": "7141d205512ffd28", "scanner": "scanner-primary", "fingerprint": "60e970ebca26528f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1283"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-81dcde9b9760fd88", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-1285"}, "properties": {"repobilityId": "83373db2ce01bc09", "scanner": "scanner-primary", "fingerprint": "81dcde9b9760fd88", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1285"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8693ecd3431be9cb", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-2141"}, "properties": {"repobilityId": "6562eaab0c96e478", "scanner": "scanner-primary", "fingerprint": "8693ecd3431be9cb", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2141"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b496aae761de9b7c", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-35"}, "properties": {"repobilityId": "320227ef207a24ba", "scanner": "scanner-primary", "fingerprint": "b496aae761de9b7c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-35"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5efd791101a7d7e1", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 3.4.8: PYSEC-2026-800"}, "properties": {"repobilityId": "4189a11535813b85", "scanner": "scanner-primary", "fingerprint": "5efd791101a7d7e1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-800"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10234913a5d83aa4", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-537c-gmf6-5ccf"}, "properties": {"repobilityId": "a194cf967e8593a9", "scanner": "scanner-primary", "fingerprint": "10234913a5d83aa4", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-537c-gmf6-5ccf"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-579bb33a3687e191", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-79v4-65xg-pq4g"}, "properties": {"repobilityId": "b8414c1001af7514", "scanner": "scanner-primary", "fingerprint": "579bb33a3687e191", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-79v4-65xg-pq4g"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-94ba1aeffe920791", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-h4gh-qq45-vh27"}, "properties": {"repobilityId": "664e1595e7ea1306", "scanner": "scanner-primary", "fingerprint": "94ba1aeffe920791", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-h4gh-qq45-vh27"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-93977bedf6028876", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-m959-cc7f-wv43"}, "properties": {"repobilityId": "2368e7f2dcd54c22", "scanner": "scanner-primary", "fingerprint": "93977bedf6028876", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-m959-cc7f-wv43"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7742bf03f54b2edd", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: GHSA-r6ph-v2qm-q3c2"}, "properties": {"repobilityId": "dadfe20dbf66af49", "scanner": "scanner-primary", "fingerprint": "7742bf03f54b2edd", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r6ph-v2qm-q3c2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71fd1712e6b24518", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-1284"}, "properties": {"repobilityId": "c3448867b73a5bdc", "scanner": "scanner-primary", "fingerprint": "71fd1712e6b24518", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1284"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f9446cfd2f0bb7c", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-2141"}, "properties": {"repobilityId": "75cc6c31a1caae45", "scanner": "scanner-primary", "fingerprint": "7f9446cfd2f0bb7c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2141"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-193f9ebb347b48f5", "level": "warning", "message": {"text": "Vulnerable dependency cryptography 42.0.8: PYSEC-2026-35"}, "properties": {"repobilityId": "ef1b10ba92f84d10", "scanner": "scanner-primary", "fingerprint": "193f9ebb347b48f5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-35"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-763a80ef0068f6a5", "level": "warning", "message": {"text": "Vulnerable dependency gevent 21.8.0: GHSA-x7m3-jprg-wc5g"}, "properties": {"repobilityId": "38b787f1a1ccbb75", "scanner": "scanner-primary", "fingerprint": "763a80ef0068f6a5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-x7m3-jprg-wc5g"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f8398fa90f71986", "level": "warning", "message": {"text": "Vulnerable dependency gevent 21.8.0: PYSEC-2023-177"}, "properties": {"repobilityId": "8c5cc01faa78bf09", "scanner": "scanner-primary", "fingerprint": "1f8398fa90f71986", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-177"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bcc3a59512fe2a64", "level": "warning", "message": {"text": "Vulnerable dependency gevent 22.10.2: GHSA-x7m3-jprg-wc5g"}, "properties": {"repobilityId": "835d27e812249369", "scanner": "scanner-primary", "fingerprint": "bcc3a59512fe2a64", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-x7m3-jprg-wc5g"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a4b4c78eafd954d6", "level": "warning", "message": {"text": "Vulnerable dependency gevent 22.10.2: PYSEC-2023-177"}, "properties": {"repobilityId": "dca1b309b45fbe58", "scanner": "scanner-primary", "fingerprint": "a4b4c78eafd954d6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-177"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b6f97af361a2761a", "level": "warning", "message": {"text": "Vulnerable dependency idna 2.10: GHSA-65pc-fj4g-8rjx"}, "properties": {"repobilityId": "4b8bdf2daaf3db7a", "scanner": "scanner-primary", "fingerprint": "b6f97af361a2761a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-65pc-fj4g-8rjx"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-831db662fbcf8181", "level": "warning", "message": {"text": "Vulnerable dependency idna 2.10: GHSA-jjg7-2v4v-x38h"}, "properties": {"repobilityId": "a21df22b608bfdce", "scanner": "scanner-primary", "fingerprint": "831db662fbcf8181", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjg7-2v4v-x38h"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d34eef29cff01f0", "level": "warning", "message": {"text": "Vulnerable dependency idna 2.10: PYSEC-2024-60"}, "properties": {"repobilityId": "11c42a2c34d5882f", "scanner": "scanner-primary", "fingerprint": "2d34eef29cff01f0", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2024-60"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-942cf532f34795a2", "level": "warning", "message": {"text": "Vulnerable dependency idna 2.10: PYSEC-2026-215"}, "properties": {"repobilityId": "87f95975f0c8c589", "scanner": "scanner-primary", "fingerprint": "942cf532f34795a2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-215"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e431dec93306c633", "level": "warning", "message": {"text": "Vulnerable dependency idna 3.6: GHSA-65pc-fj4g-8rjx"}, "properties": {"repobilityId": "2008e9a5e9544c50", "scanner": "scanner-primary", "fingerprint": "e431dec93306c633", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-65pc-fj4g-8rjx"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b855d0be07cd56fe", "level": "warning", "message": {"text": "Vulnerable dependency idna 3.6: GHSA-jjg7-2v4v-x38h"}, "properties": {"repobilityId": "27df64dd957c1b19", "scanner": "scanner-primary", "fingerprint": "b855d0be07cd56fe", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjg7-2v4v-x38h"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6bc033ff9fa2c928", "level": "warning", "message": {"text": "Vulnerable dependency idna 3.6: PYSEC-2024-60"}, "properties": {"repobilityId": "4804a72b1f34709f", "scanner": "scanner-primary", "fingerprint": "6bc033ff9fa2c928", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2024-60"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a44d54ed50a18a2", "level": "warning", "message": {"text": "Vulnerable dependency idna 3.6: PYSEC-2026-215"}, "properties": {"repobilityId": "63ddf05247bbbf45", "scanner": "scanner-primary", "fingerprint": "5a44d54ed50a18a2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-215"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9ebb6ecf0236529", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-cpwx-vrp4-4pq7"}, "properties": {"repobilityId": "1b0cada1a06f1a1f", "scanner": "scanner-primary", "fingerprint": "c9ebb6ecf0236529", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-cpwx-vrp4-4pq7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d962e2f60f9bb30", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-gmj6-6f8f-6699"}, "properties": {"repobilityId": "893606655159b1ad", "scanner": "scanner-primary", "fingerprint": "2d962e2f60f9bb30", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-gmj6-6f8f-6699"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a68fd3a42960d5b3", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-h5c8-rqwp-cp95"}, "properties": {"repobilityId": "e19df4ce8bc3631f", "scanner": "scanner-primary", "fingerprint": "a68fd3a42960d5b3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-h5c8-rqwp-cp95"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd1a051799abb907", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-h75v-3vvj-5mfj"}, "properties": {"repobilityId": "3e46209636262a64", "scanner": "scanner-primary", "fingerprint": "fd1a051799abb907", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-h75v-3vvj-5mfj"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1596704675be5f8b", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: GHSA-q2x7-8rv6-6q7h"}, "properties": {"repobilityId": "48db17fdbea1e082", "scanner": "scanner-primary", "fingerprint": "1596704675be5f8b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-q2x7-8rv6-6q7h"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f71e5d5516240f0f", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1471"}, "properties": {"repobilityId": "b126005a8e44b55e", "scanner": "scanner-primary", "fingerprint": "f71e5d5516240f0f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1471"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3d11ecfbfd67ae24", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1472"}, "properties": {"repobilityId": "854d5dfbe9333b1a", "scanner": "scanner-primary", "fingerprint": "3d11ecfbfd67ae24", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1472"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab5f6ea65bd6835e", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1473"}, "properties": {"repobilityId": "0c55759803504c49", "scanner": "scanner-primary", "fingerprint": "ab5f6ea65bd6835e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1473"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5c1c061c2785805", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1474"}, "properties": {"repobilityId": "281a44863668577a", "scanner": "scanner-primary", "fingerprint": "d5c1c061c2785805", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1474"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-25092ece3bd10c37", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.0.3: PYSEC-2026-1475"}, "properties": {"repobilityId": "18acd0fcef8c0a02", "scanner": "scanner-primary", "fingerprint": "25092ece3bd10c37", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1475"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-178f184de2d1be64", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-cpwx-vrp4-4pq7"}, "properties": {"repobilityId": "81d1644f06bc749f", "scanner": "scanner-primary", "fingerprint": "178f184de2d1be64", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-cpwx-vrp4-4pq7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b49dec9c19e1d2d6", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-gmj6-6f8f-6699"}, "properties": {"repobilityId": "6c53adbe2532c11a", "scanner": "scanner-primary", "fingerprint": "b49dec9c19e1d2d6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-gmj6-6f8f-6699"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7061b3c91d760e64", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-h5c8-rqwp-cp95"}, "properties": {"repobilityId": "985edd355870cf72", "scanner": "scanner-primary", "fingerprint": "7061b3c91d760e64", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-h5c8-rqwp-cp95"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43712be10f564795", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-h75v-3vvj-5mfj"}, "properties": {"repobilityId": "1c8636134c337319", "scanner": "scanner-primary", "fingerprint": "43712be10f564795", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-h75v-3vvj-5mfj"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bff250c3ced958f5", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: GHSA-q2x7-8rv6-6q7h"}, "properties": {"repobilityId": "247f2568a2840e81", "scanner": "scanner-primary", "fingerprint": "bff250c3ced958f5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-q2x7-8rv6-6q7h"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2f91315c5be0c98d", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1471"}, "properties": {"repobilityId": "060135e8ca916990", "scanner": "scanner-primary", "fingerprint": "2f91315c5be0c98d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1471"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78f9a8a00f33b2ec", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1472"}, "properties": {"repobilityId": "82af4bb793f1befa", "scanner": "scanner-primary", "fingerprint": "78f9a8a00f33b2ec", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1472"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4e2fa83db287f390", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1473"}, "properties": {"repobilityId": "031bcbd3f39ea08d", "scanner": "scanner-primary", "fingerprint": "4e2fa83db287f390", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1473"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71daf142da189043", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1474"}, "properties": {"repobilityId": "11bae8e9d99a7b18", "scanner": "scanner-primary", "fingerprint": "71daf142da189043", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1474"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f204718e4b0c11d1", "level": "warning", "message": {"text": "Vulnerable dependency Jinja2 3.1.2: PYSEC-2026-1475"}, "properties": {"repobilityId": "39e4fe289ba88365", "scanner": "scanner-primary", "fingerprint": "f204718e4b0c11d1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1475"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-656c08b5a39d9103", "level": "error", "message": {"text": "Vulnerable dependency lxml 4.8.0: GHSA-vfmq-68hx-4jfw"}, "properties": {"repobilityId": "f08aa8e635def99c", "scanner": "scanner-primary", "fingerprint": "656c08b5a39d9103", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vfmq-68hx-4jfw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-774722fc255b3c2f", "level": "warning", "message": {"text": "Vulnerable dependency lxml 4.8.0: GHSA-wrxv-2j5q-m38w"}, "properties": {"repobilityId": "5e21a6aa8b047044", "scanner": "scanner-primary", "fingerprint": "774722fc255b3c2f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wrxv-2j5q-m38w"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-663957195094f58c", "level": "warning", "message": {"text": "Vulnerable dependency lxml 4.8.0: PYSEC-2022-230"}, "properties": {"repobilityId": "bc7a024506e954d1", "scanner": "scanner-primary", "fingerprint": "663957195094f58c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2022-230"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a24d5a2b74f2a1f5", "level": "error", "message": {"text": "Vulnerable dependency lxml 4.9.3: GHSA-vfmq-68hx-4jfw"}, "properties": {"repobilityId": "8f7cabb14b7e5ebb", "scanner": "scanner-primary", "fingerprint": "a24d5a2b74f2a1f5", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vfmq-68hx-4jfw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-920a38a32d5e6f8b", "level": "error", "message": {"text": "Vulnerable dependency lxml 5.2.1: GHSA-vfmq-68hx-4jfw"}, "properties": {"repobilityId": "f93b6fca12c8676f", "scanner": "scanner-primary", "fingerprint": "920a38a32d5e6f8b", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vfmq-68hx-4jfw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e68d25815da25c5", "level": "error", "message": {"text": "Vulnerable dependency lxml 5.4.0: GHSA-vfmq-68hx-4jfw"}, "properties": {"repobilityId": "a62117e7bbbafca7", "scanner": "scanner-primary", "fingerprint": "0e68d25815da25c5", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vfmq-68hx-4jfw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f597d00bd5afee05", "level": "error", "message": {"text": "Vulnerable dependency lxml 6.0.2: GHSA-vfmq-68hx-4jfw"}, "properties": {"repobilityId": "683b60e1b81ffebe", "scanner": "scanner-primary", "fingerprint": "f597d00bd5afee05", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vfmq-68hx-4jfw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec794a74a88e3fc6", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-3f63-hfp8-52jq"}, "properties": {"repobilityId": "4fd35a35d3171c1d", "scanner": "scanner-primary", "fingerprint": "ec794a74a88e3fc6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3f63-hfp8-52jq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-56b8382fd6a17788", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-44wm-f244-xhp3"}, "properties": {"repobilityId": "c4ef877dd239df31", "scanner": "scanner-primary", "fingerprint": "56b8382fd6a17788", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-44wm-f244-xhp3"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c2921db269b769b4", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-45hq-cxwh-f6vc"}, "properties": {"repobilityId": "820bfb7a47050e19", "scanner": "scanner-primary", "fingerprint": "c2921db269b769b4", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-45hq-cxwh-f6vc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d6a1ab249c24f208", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-4x4j-2g7c-83w6"}, "properties": {"repobilityId": "9457bf770ecae9e9", "scanner": "scanner-primary", "fingerprint": "d6a1ab249c24f208", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4x4j-2g7c-83w6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a41958b4dcd0c13", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-5x94-69rx-g8h2"}, "properties": {"repobilityId": "ef4f6842dcb11a45", "scanner": "scanner-primary", "fingerprint": "4a41958b4dcd0c13", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5x94-69rx-g8h2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f2543dfddd9fa06", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-62p4-gmf7-7g93"}, "properties": {"repobilityId": "1f51d34282555dfa", "scanner": "scanner-primary", "fingerprint": "5f2543dfddd9fa06", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-62p4-gmf7-7g93"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-72e67c544ab12b06", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-6r8x-57c9-28j4"}, "properties": {"repobilityId": "1a15b53fddfc1617", "scanner": "scanner-primary", "fingerprint": "72e67c544ab12b06", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-6r8x-57c9-28j4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1cd0eb1fb14b29bd", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-8ghj-p4vj-mr35"}, "properties": {"repobilityId": "24f69b0dd5b48501", "scanner": "scanner-primary", "fingerprint": "1cd0eb1fb14b29bd", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8ghj-p4vj-mr35"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2bf3d645f1b75c5", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-8v84-f9pq-wr9x"}, "properties": {"repobilityId": "9fec99765b05ae58", "scanner": "scanner-primary", "fingerprint": "b2bf3d645f1b75c5", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8v84-f9pq-wr9x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-01ee9d0f31ff73a6", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-9hw9-ch79-4vh6"}, "properties": {"repobilityId": "bdd21be15f1422ce", "scanner": "scanner-primary", "fingerprint": "01ee9d0f31ff73a6", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hw9-ch79-4vh6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-889acd311f4ce26a", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-fj7v-r99m-22gq"}, "properties": {"repobilityId": "9b7a99a168cd0509", "scanner": "scanner-primary", "fingerprint": "889acd311f4ce26a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-fj7v-r99m-22gq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-328766002a09ee10", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-j7hp-h8jx-5ppr"}, "properties": {"repobilityId": "8c71c88d325cc2d2", "scanner": "scanner-primary", "fingerprint": "328766002a09ee10", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-j7hp-h8jx-5ppr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-05a2f9fdf4ace0ba", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-jjj6-mw9f-p565"}, "properties": {"repobilityId": "11ea99a9b3f64070", "scanner": "scanner-primary", "fingerprint": "05a2f9fdf4ace0ba", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjj6-mw9f-p565"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37e30b5ddbcd32cd", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-m2vv-5vj5-2hm7"}, "properties": {"repobilityId": "f520e3a7cd730a1d", "scanner": "scanner-primary", "fingerprint": "37e30b5ddbcd32cd", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-m2vv-5vj5-2hm7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-110e25768447c313", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-phj9-mv4w-65pm"}, "properties": {"repobilityId": "3c9c6d0c9a66f1d8", "scanner": "scanner-primary", "fingerprint": "110e25768447c313", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-phj9-mv4w-65pm"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f8b1a6c0bf466e19", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": "c5a316a71b72f71d", "scanner": "scanner-primary", "fingerprint": "f8b1a6c0bf466e19", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r73j-pqj5-w3x7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-966726da535e9e8f", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-vjc4-5qp5-m44j"}, "properties": {"repobilityId": "0130d083955a7f1c", "scanner": "scanner-primary", "fingerprint": "966726da535e9e8f", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vjc4-5qp5-m44j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0d15c2f8248ba5c", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-wjx4-4jcj-g98j"}, "properties": {"repobilityId": "af94ea5d4dddaaab", "scanner": "scanner-primary", "fingerprint": "d0d15c2f8248ba5c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wjx4-4jcj-g98j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-879607f9e0394fb1", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.0.1: GHSA-xj96-63gp-2gmr"}, "properties": {"repobilityId": "ece281aec2447fce", "scanner": "scanner-primary", "fingerprint": "879607f9e0394fb1", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xj96-63gp-2gmr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-247a332d7481bc33", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2022-42979"}, "properties": {"repobilityId": "7343fdec2c1548b1", "scanner": "scanner-primary", "fingerprint": "247a332d7481bc33", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2022-42979"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28b61e090acd168f", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2023-175"}, "properties": {"repobilityId": "c7066795db59417f", "scanner": "scanner-primary", "fingerprint": "28b61e090acd168f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-175"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a9530fbd13c27228", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2023-227"}, "properties": {"repobilityId": "29eadda07a34ba68", "scanner": "scanner-primary", "fingerprint": "a9530fbd13c27228", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-227"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24ea59a90a602a8b", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-1793"}, "properties": {"repobilityId": "beae69d3db186cee", "scanner": "scanner-primary", "fingerprint": "24ea59a90a602a8b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1793"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-758f0e5fbd56c8b5", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-1794"}, "properties": {"repobilityId": "4aa6b64065838925", "scanner": "scanner-primary", "fingerprint": "758f0e5fbd56c8b5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1794"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9aa4dd371605d7e", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.0.1: PYSEC-2026-457"}, "properties": {"repobilityId": "2e0bf867500d651a", "scanner": "scanner-primary", "fingerprint": "e9aa4dd371605d7e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-457"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a06f18c919e2746a", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-3f63-hfp8-52jq"}, "properties": {"repobilityId": "469afcf8743d1839", "scanner": "scanner-primary", "fingerprint": "a06f18c919e2746a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3f63-hfp8-52jq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4bb92406a94c50b6", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-44wm-f244-xhp3"}, "properties": {"repobilityId": "ed14262c5ef33101", "scanner": "scanner-primary", "fingerprint": "4bb92406a94c50b6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-44wm-f244-xhp3"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8604c5c22f74c00f", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-45hq-cxwh-f6vc"}, "properties": {"repobilityId": "c4592caaa8d221fb", "scanner": "scanner-primary", "fingerprint": "8604c5c22f74c00f", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-45hq-cxwh-f6vc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-88f3bfccb8d6eb41", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-4x4j-2g7c-83w6"}, "properties": {"repobilityId": "54f03342ec40e30f", "scanner": "scanner-primary", "fingerprint": "88f3bfccb8d6eb41", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4x4j-2g7c-83w6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d90680e8311a27d5", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-5x94-69rx-g8h2"}, "properties": {"repobilityId": "57a48bbb05a7f64c", "scanner": "scanner-primary", "fingerprint": "d90680e8311a27d5", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5x94-69rx-g8h2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d8b93ac37a6faceb", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-62p4-gmf7-7g93"}, "properties": {"repobilityId": "d8a909687161cb1d", "scanner": "scanner-primary", "fingerprint": "d8b93ac37a6faceb", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-62p4-gmf7-7g93"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac44a8d4e8844223", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-6r8x-57c9-28j4"}, "properties": {"repobilityId": "69c69bbd552d3069", "scanner": "scanner-primary", "fingerprint": "ac44a8d4e8844223", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-6r8x-57c9-28j4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d6384316241ae95", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-8ghj-p4vj-mr35"}, "properties": {"repobilityId": "ea3d91c11146dea8", "scanner": "scanner-primary", "fingerprint": "6d6384316241ae95", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8ghj-p4vj-mr35"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fbfd450cdbec9be", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-8v84-f9pq-wr9x"}, "properties": {"repobilityId": "b773fccc43fde224", "scanner": "scanner-primary", "fingerprint": "7fbfd450cdbec9be", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8v84-f9pq-wr9x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0b7113a1cddca9f6", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-9hw9-ch79-4vh6"}, "properties": {"repobilityId": "8a30582d02f7bd45", "scanner": "scanner-primary", "fingerprint": "0b7113a1cddca9f6", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hw9-ch79-4vh6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-16e173aea4f9dfe1", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-fj7v-r99m-22gq"}, "properties": {"repobilityId": "e30acbb5d3d0ec58", "scanner": "scanner-primary", "fingerprint": "16e173aea4f9dfe1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-fj7v-r99m-22gq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9267e1afa7306778", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-j7hp-h8jx-5ppr"}, "properties": {"repobilityId": "976fab088075e32e", "scanner": "scanner-primary", "fingerprint": "9267e1afa7306778", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-j7hp-h8jx-5ppr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4584dec53668c904", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-jjj6-mw9f-p565"}, "properties": {"repobilityId": "56413be11ee30e26", "scanner": "scanner-primary", "fingerprint": "4584dec53668c904", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjj6-mw9f-p565"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af52a46d8ed930d7", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-phj9-mv4w-65pm"}, "properties": {"repobilityId": "326d8f6ed5dd54db", "scanner": "scanner-primary", "fingerprint": "af52a46d8ed930d7", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-phj9-mv4w-65pm"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8923482adfeb7a01", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": "3e5d77299585e6ba", "scanner": "scanner-primary", "fingerprint": "8923482adfeb7a01", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r73j-pqj5-w3x7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76813bfbba6a69c8", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-vjc4-5qp5-m44j"}, "properties": {"repobilityId": "e646a56cbe078f84", "scanner": "scanner-primary", "fingerprint": "76813bfbba6a69c8", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vjc4-5qp5-m44j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4192b2a1ef22b3a1", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-wjx4-4jcj-g98j"}, "properties": {"repobilityId": "1c50764c4e81392d", "scanner": "scanner-primary", "fingerprint": "4192b2a1ef22b3a1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wjx4-4jcj-g98j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e173797820cd8f16", "level": "error", "message": {"text": "Vulnerable dependency Pillow 9.4.0: GHSA-xj96-63gp-2gmr"}, "properties": {"repobilityId": "e343b5d30a15ff9e", "scanner": "scanner-primary", "fingerprint": "e173797820cd8f16", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xj96-63gp-2gmr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ad622687ce41b160", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2023-175"}, "properties": {"repobilityId": "cb79ace52e2bd7fe", "scanner": "scanner-primary", "fingerprint": "ad622687ce41b160", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-175"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bbc5028affe36ca3", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2023-227"}, "properties": {"repobilityId": "d11d72ac4d568382", "scanner": "scanner-primary", "fingerprint": "bbc5028affe36ca3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-227"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44e57dea1b76df2c", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-1793"}, "properties": {"repobilityId": "614d4e04332bd369", "scanner": "scanner-primary", "fingerprint": "44e57dea1b76df2c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1793"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f3864582ad919c89", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-1794"}, "properties": {"repobilityId": "4a7dd335e6f76bad", "scanner": "scanner-primary", "fingerprint": "f3864582ad919c89", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1794"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6404836804c1027", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 9.4.0: PYSEC-2026-457"}, "properties": {"repobilityId": "66fe58a965444c22", "scanner": "scanner-primary", "fingerprint": "f6404836804c1027", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-457"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa888c6581659e3e", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-44wm-f244-xhp3"}, "properties": {"repobilityId": "b1cdb1509eacd0cf", "scanner": "scanner-primary", "fingerprint": "fa888c6581659e3e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-44wm-f244-xhp3"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b66769029b6440e7", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-45hq-cxwh-f6vc"}, "properties": {"repobilityId": "bd7e63f09b523edd", "scanner": "scanner-primary", "fingerprint": "b66769029b6440e7", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-45hq-cxwh-f6vc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0331143560bfd141", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-4x4j-2g7c-83w6"}, "properties": {"repobilityId": "9a932124a666c8ee", "scanner": "scanner-primary", "fingerprint": "0331143560bfd141", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4x4j-2g7c-83w6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5608c8896325703", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-5x94-69rx-g8h2"}, "properties": {"repobilityId": "7162d87d2faa6f61", "scanner": "scanner-primary", "fingerprint": "d5608c8896325703", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5x94-69rx-g8h2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb38c3e81586355a", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-62p4-gmf7-7g93"}, "properties": {"repobilityId": "19ffa0a0501b4d89", "scanner": "scanner-primary", "fingerprint": "bb38c3e81586355a", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-62p4-gmf7-7g93"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a00e13f035d0a18", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-6r8x-57c9-28j4"}, "properties": {"repobilityId": "dcba074d8bbd668f", "scanner": "scanner-primary", "fingerprint": "0a00e13f035d0a18", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-6r8x-57c9-28j4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4811d4e7456e4176", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-8v84-f9pq-wr9x"}, "properties": {"repobilityId": "0d92ebe6e3d61687", "scanner": "scanner-primary", "fingerprint": "4811d4e7456e4176", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8v84-f9pq-wr9x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-080a6ff425be54f5", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-9hw9-ch79-4vh6"}, "properties": {"repobilityId": "c7fccb96c38d306b", "scanner": "scanner-primary", "fingerprint": "080a6ff425be54f5", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hw9-ch79-4vh6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3bbe19ede90b0f5b", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-fj7v-r99m-22gq"}, "properties": {"repobilityId": "a8539b1df9042880", "scanner": "scanner-primary", "fingerprint": "3bbe19ede90b0f5b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-fj7v-r99m-22gq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2360f76453c7d2c1", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-jjj6-mw9f-p565"}, "properties": {"repobilityId": "4f3ce1b4553b39ae", "scanner": "scanner-primary", "fingerprint": "2360f76453c7d2c1", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjj6-mw9f-p565"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d02711dda669074a", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-phj9-mv4w-65pm"}, "properties": {"repobilityId": "7f1b04164e9a5ba1", "scanner": "scanner-primary", "fingerprint": "d02711dda669074a", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-phj9-mv4w-65pm"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e0d8c701481c83f", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": "91d6129492242b84", "scanner": "scanner-primary", "fingerprint": "3e0d8c701481c83f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r73j-pqj5-w3x7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-019d0d63b22da0f6", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-vjc4-5qp5-m44j"}, "properties": {"repobilityId": "df6baac6ab58b5b7", "scanner": "scanner-primary", "fingerprint": "019d0d63b22da0f6", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vjc4-5qp5-m44j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4bd97db11412a204", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-wjx4-4jcj-g98j"}, "properties": {"repobilityId": "6e9dacc61d3ceb13", "scanner": "scanner-primary", "fingerprint": "4bd97db11412a204", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wjx4-4jcj-g98j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-afa8ae332351afdf", "level": "error", "message": {"text": "Vulnerable dependency Pillow 10.2.0: GHSA-xj96-63gp-2gmr"}, "properties": {"repobilityId": "49822f976187c5e3", "scanner": "scanner-primary", "fingerprint": "afa8ae332351afdf", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xj96-63gp-2gmr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0f59f3700e849ac", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 10.2.0: PYSEC-2026-1793"}, "properties": {"repobilityId": "7a0066f528a2881e", "scanner": "scanner-primary", "fingerprint": "e0f59f3700e849ac", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1793"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68c98e2991bc834a", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-45hq-cxwh-f6vc"}, "properties": {"repobilityId": "76c574403c2bfbb6", "scanner": "scanner-primary", "fingerprint": "68c98e2991bc834a", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-45hq-cxwh-f6vc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1469544aeca9b09b", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-4x4j-2g7c-83w6"}, "properties": {"repobilityId": "cdd7c6905c0dd3ae", "scanner": "scanner-primary", "fingerprint": "1469544aeca9b09b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4x4j-2g7c-83w6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d9860cbcf088d77", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-5x94-69rx-g8h2"}, "properties": {"repobilityId": "2e842728cd056dfa", "scanner": "scanner-primary", "fingerprint": "5d9860cbcf088d77", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5x94-69rx-g8h2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2491b0e22484a259", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-62p4-gmf7-7g93"}, "properties": {"repobilityId": "ee175e30780e991b", "scanner": "scanner-primary", "fingerprint": "2491b0e22484a259", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-62p4-gmf7-7g93"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-978c592d6cb23f01", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-6r8x-57c9-28j4"}, "properties": {"repobilityId": "1ab8d75d64113a19", "scanner": "scanner-primary", "fingerprint": "978c592d6cb23f01", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-6r8x-57c9-28j4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4dae43157b09dc8", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-8v84-f9pq-wr9x"}, "properties": {"repobilityId": "3830bb9ed601097b", "scanner": "scanner-primary", "fingerprint": "d4dae43157b09dc8", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8v84-f9pq-wr9x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1306797e78efebb8", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-9hw9-ch79-4vh6"}, "properties": {"repobilityId": "acf7d40997042e4e", "scanner": "scanner-primary", "fingerprint": "1306797e78efebb8", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hw9-ch79-4vh6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b7330af1473c50e", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-cfh3-3jmp-rvhc"}, "properties": {"repobilityId": "2b8eb12a36c7a375", "scanner": "scanner-primary", "fingerprint": "6b7330af1473c50e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-cfh3-3jmp-rvhc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f92b932c0117352", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-fj7v-r99m-22gq"}, "properties": {"repobilityId": "0111f9b8ee4bf5c3", "scanner": "scanner-primary", "fingerprint": "5f92b932c0117352", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-fj7v-r99m-22gq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53e9ff419e0768c2", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-jjj6-mw9f-p565"}, "properties": {"repobilityId": "e7e88dab3dc21121", "scanner": "scanner-primary", "fingerprint": "53e9ff419e0768c2", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjj6-mw9f-p565"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-30010b2ef949202b", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-phj9-mv4w-65pm"}, "properties": {"repobilityId": "1da6764c4754156a", "scanner": "scanner-primary", "fingerprint": "30010b2ef949202b", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-phj9-mv4w-65pm"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f2c45d99d50ae2d3", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-pwv6-vv43-88gr"}, "properties": {"repobilityId": "73a249437266db14", "scanner": "scanner-primary", "fingerprint": "f2c45d99d50ae2d3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-pwv6-vv43-88gr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ed92de831947127", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": "d0c6e46743470237", "scanner": "scanner-primary", "fingerprint": "8ed92de831947127", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r73j-pqj5-w3x7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a7e1a5aa0e36dcc", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-vjc4-5qp5-m44j"}, "properties": {"repobilityId": "b5d1c67eec43c5d0", "scanner": "scanner-primary", "fingerprint": "5a7e1a5aa0e36dcc", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vjc4-5qp5-m44j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e4b2c446c966e93", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-whj4-6x5x-4v2j"}, "properties": {"repobilityId": "2b3af323f1c7fa3f", "scanner": "scanner-primary", "fingerprint": "0e4b2c446c966e93", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-whj4-6x5x-4v2j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-94e7de0a1c3963a8", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-wjx4-4jcj-g98j"}, "properties": {"repobilityId": "f177bd6c5d323db1", "scanner": "scanner-primary", "fingerprint": "94e7de0a1c3963a8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wjx4-4jcj-g98j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c19bf16bb2a95458", "level": "error", "message": {"text": "Vulnerable dependency Pillow 11.1.0: GHSA-xj96-63gp-2gmr"}, "properties": {"repobilityId": "738ec3f0887185fa", "scanner": "scanner-primary", "fingerprint": "c19bf16bb2a95458", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xj96-63gp-2gmr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2eb8c449da9276d3", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2249"}, "properties": {"repobilityId": "dbfc3e1c0a54ea7c", "scanner": "scanner-primary", "fingerprint": "2eb8c449da9276d3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2249"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8bf7e7913916970", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2250"}, "properties": {"repobilityId": "849e26021127b4d8", "scanner": "scanner-primary", "fingerprint": "e8bf7e7913916970", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2250"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-275947cf7e458f58", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 11.1.0: PYSEC-2026-2252"}, "properties": {"repobilityId": "da5a8cc0163492f5", "scanner": "scanner-primary", "fingerprint": "275947cf7e458f58", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2252"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27870b72251e655f", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-45hq-cxwh-f6vc"}, "properties": {"repobilityId": "0ec60ccc64839061", "scanner": "scanner-primary", "fingerprint": "27870b72251e655f", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-45hq-cxwh-f6vc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45ebb3ee92cd8401", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-4x4j-2g7c-83w6"}, "properties": {"repobilityId": "49c879d6906e6584", "scanner": "scanner-primary", "fingerprint": "45ebb3ee92cd8401", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4x4j-2g7c-83w6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a5d144500276f7f", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-5x94-69rx-g8h2"}, "properties": {"repobilityId": "e4de602c6f28bf4a", "scanner": "scanner-primary", "fingerprint": "0a5d144500276f7f", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5x94-69rx-g8h2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de3511209b622fbc", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-5xmw-vc9v-4wf2"}, "properties": {"repobilityId": "893ec4d14816693b", "scanner": "scanner-primary", "fingerprint": "de3511209b622fbc", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5xmw-vc9v-4wf2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-efe56e53b23a0027", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-62p4-gmf7-7g93"}, "properties": {"repobilityId": "a9fffb43519f6045", "scanner": "scanner-primary", "fingerprint": "efe56e53b23a0027", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-62p4-gmf7-7g93"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-31a1163486ea4e05", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-6r8x-57c9-28j4"}, "properties": {"repobilityId": "9a81138216fbc969", "scanner": "scanner-primary", "fingerprint": "31a1163486ea4e05", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-6r8x-57c9-28j4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a180a8ff2b39143c", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-8v84-f9pq-wr9x"}, "properties": {"repobilityId": "1e38354a5b6bbf85", "scanner": "scanner-primary", "fingerprint": "a180a8ff2b39143c", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-8v84-f9pq-wr9x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7e9453ec6e2f2c24", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-9hw9-ch79-4vh6"}, "properties": {"repobilityId": "e2bcc70bfdb1bd80", "scanner": "scanner-primary", "fingerprint": "7e9453ec6e2f2c24", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hw9-ch79-4vh6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82a4ed431b0be45c", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-fj7v-r99m-22gq"}, "properties": {"repobilityId": "368759d08d7633c7", "scanner": "scanner-primary", "fingerprint": "82a4ed431b0be45c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-fj7v-r99m-22gq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a6bbcbd26fab03ff", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-jjj6-mw9f-p565"}, "properties": {"repobilityId": "0f142dd78e4e1acc", "scanner": "scanner-primary", "fingerprint": "a6bbcbd26fab03ff", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jjj6-mw9f-p565"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fa0a04a83e0afb3d", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-pg7v-jwj7-p798"}, "properties": {"repobilityId": "c76f79472b669489", "scanner": "scanner-primary", "fingerprint": "fa0a04a83e0afb3d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-pg7v-jwj7-p798"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b4cce2e0e97bd64", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-phj9-mv4w-65pm"}, "properties": {"repobilityId": "d2531c54afa2ddd0", "scanner": "scanner-primary", "fingerprint": "9b4cce2e0e97bd64", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-phj9-mv4w-65pm"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d3ac74ebc8b73cf5", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-pwv6-vv43-88gr"}, "properties": {"repobilityId": "bd437661d5c46ba3", "scanner": "scanner-primary", "fingerprint": "d3ac74ebc8b73cf5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-pwv6-vv43-88gr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2815246aa6124ca9", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-r73j-pqj5-w3x7"}, "properties": {"repobilityId": "1522fb70a8f370ae", "scanner": "scanner-primary", "fingerprint": "2815246aa6124ca9", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r73j-pqj5-w3x7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-15533a9b3db6f772", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-vjc4-5qp5-m44j"}, "properties": {"repobilityId": "f2e99059ab317256", "scanner": "scanner-primary", "fingerprint": "15533a9b3db6f772", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vjc4-5qp5-m44j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4e372df61a8081e", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-whj4-6x5x-4v2j"}, "properties": {"repobilityId": "cd48021f0032cccf", "scanner": "scanner-primary", "fingerprint": "d4e372df61a8081e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-whj4-6x5x-4v2j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7232902e414908d5", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-wjx4-4jcj-g98j"}, "properties": {"repobilityId": "912ddd3496ea594b", "scanner": "scanner-primary", "fingerprint": "7232902e414908d5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wjx4-4jcj-g98j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41504a9b4b7ba080", "level": "error", "message": {"text": "Vulnerable dependency Pillow 12.1.1: GHSA-xj96-63gp-2gmr"}, "properties": {"repobilityId": "8f722c76c9946800", "scanner": "scanner-primary", "fingerprint": "41504a9b4b7ba080", "layer": "dependencies", "severity": "high", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xj96-63gp-2gmr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-405d24f0050b965a", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2250"}, "properties": {"repobilityId": "c6806e4fa8bde410", "scanner": "scanner-primary", "fingerprint": "405d24f0050b965a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2250"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2956e0c758a46fb1", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2251"}, "properties": {"repobilityId": "95807a19c252f294", "scanner": "scanner-primary", "fingerprint": "2956e0c758a46fb1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2251"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-99e80d49630abd5e", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-2252"}, "properties": {"repobilityId": "a0fdde630d8cae19", "scanner": "scanner-primary", "fingerprint": "99e80d49630abd5e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2252"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44923b86a988846c", "level": "warning", "message": {"text": "Vulnerable dependency Pillow 12.1.1: PYSEC-2026-3452"}, "properties": {"repobilityId": "676d6c585821cf50", "scanner": "scanner-primary", "fingerprint": "44923b86a988846c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3452"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0d78ca6f282aa84f", "level": "warning", "message": {"text": "Vulnerable dependency pyopenssl 21.0.0: GHSA-vp96-hxj8-p424"}, "properties": {"repobilityId": "3f43f838d221f91a", "scanner": "scanner-primary", "fingerprint": "0d78ca6f282aa84f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vp96-hxj8-p424"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-666a9d843a49eb61", "level": "warning", "message": {"text": "Vulnerable dependency pyopenssl 21.0.0: PYSEC-2026-2268"}, "properties": {"repobilityId": "0d86a9747d28fd82", "scanner": "scanner-primary", "fingerprint": "666a9d843a49eb61", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2268"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a777c85649b777f", "level": "warning", "message": {"text": "Vulnerable dependency pyopenssl 24.1.0: GHSA-5pwr-322w-8jr4"}, "properties": {"repobilityId": "7b668d1b3220050a", "scanner": "scanner-primary", "fingerprint": "1a777c85649b777f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5pwr-322w-8jr4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6f310b527ca2d77e", "level": "warning", "message": {"text": "Vulnerable dependency pyopenssl 24.1.0: GHSA-vp96-hxj8-p424"}, "properties": {"repobilityId": "6c66e28a57a330f2", "scanner": "scanner-primary", "fingerprint": "6f310b527ca2d77e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vp96-hxj8-p424"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7198e81ea9f23d5a", "level": "warning", "message": {"text": "Vulnerable dependency pyopenssl 24.1.0: PYSEC-2026-2268"}, "properties": {"repobilityId": "7d8a65a16777151a", "scanner": "scanner-primary", "fingerprint": "7198e81ea9f23d5a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2268"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a11a9eecc34c55b", "level": "warning", "message": {"text": "Vulnerable dependency pyopenssl 24.1.0: PYSEC-2026-2269"}, "properties": {"repobilityId": "d4418dc6374fb78e", "scanner": "scanner-primary", "fingerprint": "8a11a9eecc34c55b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2269"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cc7a1d9afb32d6c4", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF2 1.26.0: GHSA-jrm6-h9cq-8gqw"}, "properties": {"repobilityId": "34000ef2384f9f17", "scanner": "scanner-primary", "fingerprint": "cc7a1d9afb32d6c4", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jrm6-h9cq-8gqw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dc8da0db76dbde90", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF2 1.26.0: GHSA-xcjx-m2pj-8g79"}, "properties": {"repobilityId": "6ad69965442f40f3", "scanner": "scanner-primary", "fingerprint": "dc8da0db76dbde90", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xcjx-m2pj-8g79"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91c3dafcefdd6c7e", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF2 1.26.0: PYSEC-2022-194"}, "properties": {"repobilityId": "411ed35dffc35c34", "scanner": "scanner-primary", "fingerprint": "91c3dafcefdd6c7e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2022-194"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8dfd122c8c377f38", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF2 1.26.0: PYSEC-2026-1837"}, "properties": {"repobilityId": "a129fa98a6476206", "scanner": "scanner-primary", "fingerprint": "8dfd122c8c377f38", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1837"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e5cc43354cc1cb6", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF2 2.12.1: GHSA-4vvm-4w3v-6mr8"}, "properties": {"repobilityId": "4b5952f9c79a06e8", "scanner": "scanner-primary", "fingerprint": "0e5cc43354cc1cb6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4vvm-4w3v-6mr8"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-976f71a3f3402a1c", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF2 2.12.1: PYSEC-2026-1835"}, "properties": {"repobilityId": "9f1f3070d9ad6979", "scanner": "scanner-primary", "fingerprint": "976f71a3f3402a1c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1835"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ebdc5d5c54ea40d8", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-248m-82v9-q6g6"}, "properties": {"repobilityId": "6df4ad3f460279cd", "scanner": "scanner-primary", "fingerprint": "ebdc5d5c54ea40d8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-248m-82v9-q6g6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c16c4cb25f66fd89", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-2q4j-m29v-hq73"}, "properties": {"repobilityId": "53bc5b6e79b9a62f", "scanner": "scanner-primary", "fingerprint": "c16c4cb25f66fd89", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2q4j-m29v-hq73"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb15f42543d84802", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-2rw7-x74f-jg35"}, "properties": {"repobilityId": "bb8a9ae238a8e8a4", "scanner": "scanner-primary", "fingerprint": "cb15f42543d84802", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2rw7-x74f-jg35"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aff779c9c7409972", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-3crg-w4f6-42mx"}, "properties": {"repobilityId": "981d4e4d6e7f2bf2", "scanner": "scanner-primary", "fingerprint": "aff779c9c7409972", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-3crg-w4f6-42mx"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1bde668d4248715d", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-4f6g-68pf-7vhv"}, "properties": {"repobilityId": "b207904a1c80d051", "scanner": "scanner-primary", "fingerprint": "1bde668d4248715d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4f6g-68pf-7vhv"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dee16f3bc25ecf12", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-4pxv-j86v-mhcw"}, "properties": {"repobilityId": "9b5cfb28696368b0", "scanner": "scanner-primary", "fingerprint": "dee16f3bc25ecf12", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4pxv-j86v-mhcw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a9171ae719ba8e7", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-4xc4-762w-m6cg"}, "properties": {"repobilityId": "c9aa79c2b8c2c962", "scanner": "scanner-primary", "fingerprint": "3a9171ae719ba8e7", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4xc4-762w-m6cg"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e434c63f34d0fd8d", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-52x6-gq3r-vpf4"}, "properties": {"repobilityId": "11fcc5c6c2a1166d", "scanner": "scanner-primary", "fingerprint": "e434c63f34d0fd8d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-52x6-gq3r-vpf4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f40201b12204259", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-55h5-xmcq-c37v"}, "properties": {"repobilityId": "4addd0cad8ab2410", "scanner": "scanner-primary", "fingerprint": "9f40201b12204259", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-55h5-xmcq-c37v"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb779b5f24439ac3", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-5hgr-hg42-57jg"}, "properties": {"repobilityId": "bbac78799ee1dc27", "scanner": "scanner-primary", "fingerprint": "cb779b5f24439ac3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5hgr-hg42-57jg"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-416e24e4ab2525a7", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-5qjq-93h5-hrgp"}, "properties": {"repobilityId": "974f2e8bd541e922", "scanner": "scanner-primary", "fingerprint": "416e24e4ab2525a7", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5qjq-93h5-hrgp"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52c6c49c75bdf4b5", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-5xf7-4p34-54qr"}, "properties": {"repobilityId": "c90fb9f1e310f94e", "scanner": "scanner-primary", "fingerprint": "52c6c49c75bdf4b5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-5xf7-4p34-54qr"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec0f67f6a680ce48", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-7gw9-cf7v-778f"}, "properties": {"repobilityId": "b9797efc6fe5f46f", "scanner": "scanner-primary", "fingerprint": "ec0f67f6a680ce48", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-7gw9-cf7v-778f"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1a27638d34d2fc1", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-7hfw-26vp-jp8m"}, "properties": {"repobilityId": "5cb29b8f512a7686", "scanner": "scanner-primary", "fingerprint": "e1a27638d34d2fc1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-7hfw-26vp-jp8m"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb9e1dadbedeca11", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-87mj-5ggw-8qc3"}, "properties": {"repobilityId": "264de7ddd151c885", "scanner": "scanner-primary", "fingerprint": "eb9e1dadbedeca11", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-87mj-5ggw-8qc3"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03d7158ed719e44d", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-996q-pr4m-cvgq"}, "properties": {"repobilityId": "da5a586c136b8c8e", "scanner": "scanner-primary", "fingerprint": "03d7158ed719e44d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-996q-pr4m-cvgq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6dfe6f12a3a367c3", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-9m86-7pmv-2852"}, "properties": {"repobilityId": "11a36c15c944e637", "scanner": "scanner-primary", "fingerprint": "6dfe6f12a3a367c3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9m86-7pmv-2852"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f9a9833d5144aada", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-9mvc-8737-8j8h"}, "properties": {"repobilityId": "2f2beb46f6aaf2c1", "scanner": "scanner-primary", "fingerprint": "f9a9833d5144aada", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9mvc-8737-8j8h"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0cfd056d8b9f438", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-cj93-chg6-vgv8"}, "properties": {"repobilityId": "b7f0e528bd51b269", "scanner": "scanner-primary", "fingerprint": "d0cfd056d8b9f438", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-cj93-chg6-vgv8"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-790b1ec4e93950a8", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-f2v5-7jq9-h8cg"}, "properties": {"repobilityId": "3841abd1d2b09359", "scanner": "scanner-primary", "fingerprint": "790b1ec4e93950a8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-f2v5-7jq9-h8cg"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ae13f47fc8833e3", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-g867-7843-wf8q"}, "properties": {"repobilityId": "fc6daff5e5e44d78", "scanner": "scanner-primary", "fingerprint": "4ae13f47fc8833e3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-g867-7843-wf8q"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2b0336e23b02172c", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-g9xf-7f8q-9mcj"}, "properties": {"repobilityId": "7cd1cd39a27ae2fe", "scanner": "scanner-primary", "fingerprint": "2b0336e23b02172c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-g9xf-7f8q-9mcj"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-05ba6639825bff2d", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-hqmh-ppp3-xvm7"}, "properties": {"repobilityId": "79f320123cd4df47", "scanner": "scanner-primary", "fingerprint": "05ba6639825bff2d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-hqmh-ppp3-xvm7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0f9334b4134acc79", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-j543-4vmf-qm7v"}, "properties": {"repobilityId": "d928c8af7832d89d", "scanner": "scanner-primary", "fingerprint": "0f9334b4134acc79", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-j543-4vmf-qm7v"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-330d680a8064929b", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-jfx9-29x2-rv3j"}, "properties": {"repobilityId": "7af4349d81afb6c7", "scanner": "scanner-primary", "fingerprint": "330d680a8064929b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jfx9-29x2-rv3j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-70e7cc53bb543571", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-jj6c-8h6c-hppx"}, "properties": {"repobilityId": "8310ce05bc971e60", "scanner": "scanner-primary", "fingerprint": "70e7cc53bb543571", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jj6c-8h6c-hppx"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d8aed3a51d1c6534", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-jm82-fx9c-mx94"}, "properties": {"repobilityId": "91fb84f913ed4dee", "scanner": "scanner-primary", "fingerprint": "d8aed3a51d1c6534", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-jm82-fx9c-mx94"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9203ed27c5faa676", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-m2v9-299j-rv96"}, "properties": {"repobilityId": "1c23957a8ceef254", "scanner": "scanner-primary", "fingerprint": "9203ed27c5faa676", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-m2v9-299j-rv96"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-848ac3df51675fed", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-m449-cwjh-6pw7"}, "properties": {"repobilityId": "52f7d0f1a63df658", "scanner": "scanner-primary", "fingerprint": "848ac3df51675fed", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-m449-cwjh-6pw7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-15f9340913bb0b22", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-qpxp-75px-xjcp"}, "properties": {"repobilityId": "7a551060caa000bb", "scanner": "scanner-primary", "fingerprint": "15f9340913bb0b22", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-qpxp-75px-xjcp"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8291a361e1497547", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-vr63-x8vc-m265"}, "properties": {"repobilityId": "16bfea93c32b0d03", "scanner": "scanner-primary", "fingerprint": "8291a361e1497547", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-vr63-x8vc-m265"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a43c13926f365181", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-wgvp-vg3v-2xq3"}, "properties": {"repobilityId": "72cafc0407a7b706", "scanner": "scanner-primary", "fingerprint": "a43c13926f365181", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wgvp-vg3v-2xq3"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a2853fc94e9e2805", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-wjqc-6w8f-h24c"}, "properties": {"repobilityId": "d9dcdfd3e0ad7def", "scanner": "scanner-primary", "fingerprint": "a2853fc94e9e2805", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-wjqc-6w8f-h24c"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-36bbdb7fa34a6885", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-x284-j5p8-9c5p"}, "properties": {"repobilityId": "82ebfd7deacb28ab", "scanner": "scanner-primary", "fingerprint": "36bbdb7fa34a6885", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-x284-j5p8-9c5p"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b251f5f0cc5aad1d", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: GHSA-x7hp-r3qg-r3cj"}, "properties": {"repobilityId": "515cbd6de46505d7", "scanner": "scanner-primary", "fingerprint": "b251f5f0cc5aad1d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-x7hp-r3qg-r3cj"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e1098d868f5c91d", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1827"}, "properties": {"repobilityId": "98e03818d432f06d", "scanner": "scanner-primary", "fingerprint": "8e1098d868f5c91d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1827"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-819883679546c458", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1828"}, "properties": {"repobilityId": "dcd3dd1752364a24", "scanner": "scanner-primary", "fingerprint": "819883679546c458", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1828"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91207a5d271330b8", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1829"}, "properties": {"repobilityId": "393350fd14b2dc57", "scanner": "scanner-primary", "fingerprint": "91207a5d271330b8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1829"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78bfd2bd4cf72794", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1830"}, "properties": {"repobilityId": "360d3e7da7b9ee97", "scanner": "scanner-primary", "fingerprint": "78bfd2bd4cf72794", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1830"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37d461dedabc6220", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1831"}, "properties": {"repobilityId": "8fe65e6aeda3e3a5", "scanner": "scanner-primary", "fingerprint": "37d461dedabc6220", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1831"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b1878633299ec188", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1832"}, "properties": {"repobilityId": "08b531afd16e91fb", "scanner": "scanner-primary", "fingerprint": "b1878633299ec188", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1832"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5c99baf0061b021", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-1833"}, "properties": {"repobilityId": "8702da1b2b5fded0", "scanner": "scanner-primary", "fingerprint": "d5c99baf0061b021", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1833"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb10cd2f27fb0364", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3004"}, "properties": {"repobilityId": "f5c8d3032169e94c", "scanner": "scanner-primary", "fingerprint": "bb10cd2f27fb0364", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3004"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ae44e51da5b6c8e", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3005"}, "properties": {"repobilityId": "021c82b6e3ea6af3", "scanner": "scanner-primary", "fingerprint": "3ae44e51da5b6c8e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3005"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8beb52a37cc2d8f9", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3006"}, "properties": {"repobilityId": "50b8b949104393f4", "scanner": "scanner-primary", "fingerprint": "8beb52a37cc2d8f9", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3006"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d7cb126f456735c", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3007"}, "properties": {"repobilityId": "bea655b59a1dc8b5", "scanner": "scanner-primary", "fingerprint": "6d7cb126f456735c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3007"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64796b8c9b2cf34b", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3009"}, "properties": {"repobilityId": "e1460e012dbb7641", "scanner": "scanner-primary", "fingerprint": "64796b8c9b2cf34b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3009"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9dcdef58eb6d2586", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3010"}, "properties": {"repobilityId": "cf9704e7ee925ba5", "scanner": "scanner-primary", "fingerprint": "9dcdef58eb6d2586", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3010"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2391cf9f9451584c", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3011"}, "properties": {"repobilityId": "a86350aee97650ee", "scanner": "scanner-primary", "fingerprint": "2391cf9f9451584c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3011"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f444c51278db2dac", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3012"}, "properties": {"repobilityId": "cab14691bc6c4ee2", "scanner": "scanner-primary", "fingerprint": "f444c51278db2dac", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3012"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e0b200ad407165d6", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3013"}, "properties": {"repobilityId": "9f23bbb490fe429e", "scanner": "scanner-primary", "fingerprint": "e0b200ad407165d6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3013"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84258cef8ebd4044", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3014"}, "properties": {"repobilityId": "29fcbdd5b4471499", "scanner": "scanner-primary", "fingerprint": "84258cef8ebd4044", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3014"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3b96f95efedff476", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3015"}, "properties": {"repobilityId": "294895b5e6d10015", "scanner": "scanner-primary", "fingerprint": "3b96f95efedff476", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3015"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c5b71aa8726cf95", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3016"}, "properties": {"repobilityId": "48dbbb30efeb5a7c", "scanner": "scanner-primary", "fingerprint": "9c5b71aa8726cf95", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3016"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91a735889069083c", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3017"}, "properties": {"repobilityId": "e5bd1997550ca148", "scanner": "scanner-primary", "fingerprint": "91a735889069083c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3017"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb874e036a8256b2", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3018"}, "properties": {"repobilityId": "964f57a2b8e26b85", "scanner": "scanner-primary", "fingerprint": "eb874e036a8256b2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3018"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2dba292ae4d322fb", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3019"}, "properties": {"repobilityId": "1c08085ffb51b6c8", "scanner": "scanner-primary", "fingerprint": "2dba292ae4d322fb", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3019"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b20d8361d3042870", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3020"}, "properties": {"repobilityId": "d53a37df0b65710d", "scanner": "scanner-primary", "fingerprint": "b20d8361d3042870", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3020"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-44e9b475e35387b1", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3021"}, "properties": {"repobilityId": "b1a9177146644eea", "scanner": "scanner-primary", "fingerprint": "44e9b475e35387b1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3021"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04951ee412c51381", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3022"}, "properties": {"repobilityId": "38479a0a094e392a", "scanner": "scanner-primary", "fingerprint": "04951ee412c51381", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3022"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb6e29bb50dfcb7f", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3023"}, "properties": {"repobilityId": "1a822ab2669e273a", "scanner": "scanner-primary", "fingerprint": "bb6e29bb50dfcb7f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3023"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-79a5a4ea3d79a93c", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3024"}, "properties": {"repobilityId": "dd94443c4b5c0fa1", "scanner": "scanner-primary", "fingerprint": "79a5a4ea3d79a93c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3024"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8fc2cf495721fd4a", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3025"}, "properties": {"repobilityId": "71de035659fcaee4", "scanner": "scanner-primary", "fingerprint": "8fc2cf495721fd4a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3025"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-986fa58e8b35d140", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3026"}, "properties": {"repobilityId": "04178629c3e9e2bc", "scanner": "scanner-primary", "fingerprint": "986fa58e8b35d140", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3026"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dfd0b3dd0e4494d1", "level": "warning", "message": {"text": "Vulnerable dependency PyPDF 5.4.0: PYSEC-2026-3027"}, "properties": {"repobilityId": "accdb49a1fc24961", "scanner": "scanner-primary", "fingerprint": "dfd0b3dd0e4494d1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3027"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9443e919f18cf607", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.0: GHSA-p34h-wq7j-h5v6"}, "properties": {"repobilityId": "cd32619e917dd68f", "scanner": "scanner-primary", "fingerprint": "9443e919f18cf607", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-p34h-wq7j-h5v6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f176da615976ab85", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.0: GHSA-r7r6-cc7p-4v5m"}, "properties": {"repobilityId": "a9fb83d64009dea2", "scanner": "scanner-primary", "fingerprint": "f176da615976ab85", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r7r6-cc7p-4v5m"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c02818afb5464dae", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.0: PYSEC-2026-1846"}, "properties": {"repobilityId": "1ea411f05770acc6", "scanner": "scanner-primary", "fingerprint": "c02818afb5464dae", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1846"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fbcc8b26b9cdb5c", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.0: PYSEC-2026-1847"}, "properties": {"repobilityId": "2c0b0ebdb27971f1", "scanner": "scanner-primary", "fingerprint": "7fbcc8b26b9cdb5c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1847"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d55f8739cf4a41c5", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.4: GHSA-p34h-wq7j-h5v6"}, "properties": {"repobilityId": "3a4bd0e71eecd0e8", "scanner": "scanner-primary", "fingerprint": "d55f8739cf4a41c5", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-p34h-wq7j-h5v6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3aaf3913c204e184", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.4: GHSA-r7r6-cc7p-4v5m"}, "properties": {"repobilityId": "cb177d629747039a", "scanner": "scanner-primary", "fingerprint": "3aaf3913c204e184", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-r7r6-cc7p-4v5m"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-347cd99a134e69b7", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.4: PYSEC-2026-1846"}, "properties": {"repobilityId": "d46fafbe0e82b563", "scanner": "scanner-primary", "fingerprint": "347cd99a134e69b7", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1846"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fd173b4da1cdb838", "level": "warning", "message": {"text": "Vulnerable dependency python-ldap 3.4.4: PYSEC-2026-1847"}, "properties": {"repobilityId": "a8e971f8a858fa11", "scanner": "scanner-primary", "fingerprint": "fd173b4da1cdb838", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1847"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-72f6c58618a693f4", "level": "warning", "message": {"text": "Vulnerable dependency reportlab 3.6.8: GHSA-9q9m-c65c-37pq"}, "properties": {"repobilityId": "e79abb5195a45e58", "scanner": "scanner-primary", "fingerprint": "72f6c58618a693f4", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9q9m-c65c-37pq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-90cbedc13554ed7e", "level": "warning", "message": {"text": "Vulnerable dependency reportlab 3.6.8: PYSEC-2026-1871"}, "properties": {"repobilityId": "5b7b22a9ea891b85", "scanner": "scanner-primary", "fingerprint": "90cbedc13554ed7e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1871"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0ece74fccfead06b", "level": "warning", "message": {"text": "Vulnerable dependency reportlab 3.6.12: GHSA-9q9m-c65c-37pq"}, "properties": {"repobilityId": "f3552edf396f3625", "scanner": "scanner-primary", "fingerprint": "0ece74fccfead06b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9q9m-c65c-37pq"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5da3757826ea4c19", "level": "warning", "message": {"text": "Vulnerable dependency reportlab 3.6.12: PYSEC-2026-1871"}, "properties": {"repobilityId": "cbd5921e50e40842", "scanner": "scanner-primary", "fingerprint": "5da3757826ea4c19", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1871"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ced390b9a474c0f", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: GHSA-9hjg-9r4m-mvj7"}, "properties": {"repobilityId": "e4943f8dc799a6ca", "scanner": "scanner-primary", "fingerprint": "1ced390b9a474c0f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hjg-9r4m-mvj7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-100a7dbec0df542f", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: GHSA-9wx4-h78v-vm56"}, "properties": {"repobilityId": "244c5c1455cd3f9d", "scanner": "scanner-primary", "fingerprint": "100a7dbec0df542f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9wx4-h78v-vm56"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f1731d4ec87cb23", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: GHSA-gc5v-m9x4-r6x2"}, "properties": {"repobilityId": "76b4f9ad27924727", "scanner": "scanner-primary", "fingerprint": "1f1731d4ec87cb23", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-gc5v-m9x4-r6x2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e7efd36258f1c01", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: GHSA-j8r2-6x86-q33q"}, "properties": {"repobilityId": "562424894bd8d0ce", "scanner": "scanner-primary", "fingerprint": "2e7efd36258f1c01", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-j8r2-6x86-q33q"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce312364fbc5db2e", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2023-74"}, "properties": {"repobilityId": "aab8903ac7e89fb1", "scanner": "scanner-primary", "fingerprint": "ce312364fbc5db2e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-74"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d570ad23ccabee27", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2026-1872"}, "properties": {"repobilityId": "f21883b583dc6a7b", "scanner": "scanner-primary", "fingerprint": "d570ad23ccabee27", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1872"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0071703ca47968c3", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2026-1873"}, "properties": {"repobilityId": "566e50fc0de7cbd4", "scanner": "scanner-primary", "fingerprint": "0071703ca47968c3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1873"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a4a349b8cf22ba9", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.25.1: PYSEC-2026-2275"}, "properties": {"repobilityId": "bcfb023589e15f44", "scanner": "scanner-primary", "fingerprint": "4a4a349b8cf22ba9", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2275"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22effbbdb5019c73", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.31.0: GHSA-9hjg-9r4m-mvj7"}, "properties": {"repobilityId": "9bffdb2814b413ff", "scanner": "scanner-primary", "fingerprint": "22effbbdb5019c73", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9hjg-9r4m-mvj7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cae360caa80e45b3", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.31.0: GHSA-9wx4-h78v-vm56"}, "properties": {"repobilityId": "2a2ebbe47742c45e", "scanner": "scanner-primary", "fingerprint": "cae360caa80e45b3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-9wx4-h78v-vm56"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ad35ea12adf56e07", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.31.0: GHSA-gc5v-m9x4-r6x2"}, "properties": {"repobilityId": "2768d16140e92353", "scanner": "scanner-primary", "fingerprint": "ad35ea12adf56e07", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-gc5v-m9x4-r6x2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e9fb8559226d3bb9", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.31.0: PYSEC-2026-1872"}, "properties": {"repobilityId": "2351c0a665c244fc", "scanner": "scanner-primary", "fingerprint": "e9fb8559226d3bb9", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1872"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f82c87ba15854df2", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.31.0: PYSEC-2026-1873"}, "properties": {"repobilityId": "ec1a68a80247da81", "scanner": "scanner-primary", "fingerprint": "f82c87ba15854df2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1873"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-35632a1987b812a1", "level": "warning", "message": {"text": "Vulnerable dependency requests 2.31.0: PYSEC-2026-2275"}, "properties": {"repobilityId": "36601dea5a00ed8c", "scanner": "scanner-primary", "fingerprint": "35632a1987b812a1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2275"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b5d5fb4d24a17e3b", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-2xpw-w6gg-jr37"}, "properties": {"repobilityId": "1059288879b0bd99", "scanner": "scanner-primary", "fingerprint": "b5d5fb4d24a17e3b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2xpw-w6gg-jr37"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-16afc98f594d7228", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-34jh-p97f-mpxf"}, "properties": {"repobilityId": "59b53486d0925a24", "scanner": "scanner-primary", "fingerprint": "16afc98f594d7228", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-34jh-p97f-mpxf"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a8bbdc27a3add212", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-38jv-5279-wg99"}, "properties": {"repobilityId": "4dd87446cedafe90", "scanner": "scanner-primary", "fingerprint": "a8bbdc27a3add212", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-38jv-5279-wg99"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-137c66d3615ca524", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-g4mx-q9vg-27p4"}, "properties": {"repobilityId": "60b41d04d334f928", "scanner": "scanner-primary", "fingerprint": "137c66d3615ca524", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-g4mx-q9vg-27p4"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a65cd5f764196be0", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-gm62-xv2j-4w53"}, "properties": {"repobilityId": "2edb542c6bca257c", "scanner": "scanner-primary", "fingerprint": "a65cd5f764196be0", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-gm62-xv2j-4w53"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d0538a2b12de262", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-pq67-6m6q-mj2v"}, "properties": {"repobilityId": "cce7886ad92d11a8", "scanner": "scanner-primary", "fingerprint": "2d0538a2b12de262", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-pq67-6m6q-mj2v"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d24298dddcb08d4c", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-qccp-gfcp-xxvc"}, "properties": {"repobilityId": "d5829754a51ce09a", "scanner": "scanner-primary", "fingerprint": "d24298dddcb08d4c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-qccp-gfcp-xxvc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-343ac8c738089bda", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: GHSA-v845-jxx5-vc9f"}, "properties": {"repobilityId": "71b34850c76ffdbf", "scanner": "scanner-primary", "fingerprint": "343ac8c738089bda", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-v845-jxx5-vc9f"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-77fff2910a0005f1", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2023-192"}, "properties": {"repobilityId": "fff19ad11b41e63d", "scanner": "scanner-primary", "fingerprint": "77fff2910a0005f1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-192"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4fa5fb215db2120c", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2023-212"}, "properties": {"repobilityId": "f20985f9a0452f52", "scanner": "scanner-primary", "fingerprint": "4fa5fb215db2120c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-212"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7246bbc8debb1285", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-141"}, "properties": {"repobilityId": "c7820e0044e078f8", "scanner": "scanner-primary", "fingerprint": "7246bbc8debb1285", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-141"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-414031c3821f261d", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1994"}, "properties": {"repobilityId": "bb37073e5efb387f", "scanner": "scanner-primary", "fingerprint": "414031c3821f261d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1994"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8df989cde5fb846", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1995"}, "properties": {"repobilityId": "5d503a4eab2b71dc", "scanner": "scanner-primary", "fingerprint": "c8df989cde5fb846", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1995"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1841c3e3098fb727", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1996"}, "properties": {"repobilityId": "b3c7c0a10cea8c1b", "scanner": "scanner-primary", "fingerprint": "1841c3e3098fb727", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1996"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76b9832e03b7f1e1", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1998"}, "properties": {"repobilityId": "5f8bfc31b41f3dad", "scanner": "scanner-primary", "fingerprint": "76b9832e03b7f1e1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1998"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08b5889b3a2513e6", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 1.26.5: PYSEC-2026-1999"}, "properties": {"repobilityId": "4756675613be4275", "scanner": "scanner-primary", "fingerprint": "08b5889b3a2513e6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1999"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c4a4507e18e6ecbc", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-2xpw-w6gg-jr37"}, "properties": {"repobilityId": "5d3e4a2bf78853f4", "scanner": "scanner-primary", "fingerprint": "c4a4507e18e6ecbc", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2xpw-w6gg-jr37"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41c5d9f0c406875a", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-34jh-p97f-mpxf"}, "properties": {"repobilityId": "95e90d61cdc18673", "scanner": "scanner-primary", "fingerprint": "41c5d9f0c406875a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-34jh-p97f-mpxf"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-48257a5c3a7795ff", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-38jv-5279-wg99"}, "properties": {"repobilityId": "c08329959fdb2ec4", "scanner": "scanner-primary", "fingerprint": "48257a5c3a7795ff", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-38jv-5279-wg99"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1a4606fc7324226", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-gm62-xv2j-4w53"}, "properties": {"repobilityId": "6641f759b6bbb646", "scanner": "scanner-primary", "fingerprint": "d1a4606fc7324226", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-gm62-xv2j-4w53"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7abb5fd85a5c42a1", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-pq67-6m6q-mj2v"}, "properties": {"repobilityId": "2d0f4e5ebd638f3f", "scanner": "scanner-primary", "fingerprint": "7abb5fd85a5c42a1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-pq67-6m6q-mj2v"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f668e8c492e924dd", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: GHSA-qccp-gfcp-xxvc"}, "properties": {"repobilityId": "97ff04140247ded2", "scanner": "scanner-primary", "fingerprint": "f668e8c492e924dd", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-qccp-gfcp-xxvc"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c443212c66795920", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-141"}, "properties": {"repobilityId": "6c803ef0190cbd11", "scanner": "scanner-primary", "fingerprint": "c443212c66795920", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-141"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-436cdbc850c5f3c3", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1994"}, "properties": {"repobilityId": "41a891d87357eb13", "scanner": "scanner-primary", "fingerprint": "436cdbc850c5f3c3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1994"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-afc69b30d4f50ff2", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1995"}, "properties": {"repobilityId": "fe82da35ad80fd08", "scanner": "scanner-primary", "fingerprint": "afc69b30d4f50ff2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1995"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a575ed02e1f104c8", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1996"}, "properties": {"repobilityId": "7f2ef72bcdfef148", "scanner": "scanner-primary", "fingerprint": "a575ed02e1f104c8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1996"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0ffb531ef045e7f7", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1998"}, "properties": {"repobilityId": "9522bab680f89e56", "scanner": "scanner-primary", "fingerprint": "0ffb531ef045e7f7", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1998"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9e7237229500ab2d", "level": "warning", "message": {"text": "Vulnerable dependency urllib3 2.0.7: PYSEC-2026-1999"}, "properties": {"repobilityId": "556458fe34e4477a", "scanner": "scanner-primary", "fingerprint": "9e7237229500ab2d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-1999"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d346c10b627d3652", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-29vq-49wr-vm6x"}, "properties": {"repobilityId": "85b70fb10a452b87", "scanner": "scanner-primary", "fingerprint": "d346c10b627d3652", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-29vq-49wr-vm6x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d3f107ade9badb87", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-2g68-c3qc-8985"}, "properties": {"repobilityId": "753e0b8fc9cb4ee3", "scanner": "scanner-primary", "fingerprint": "d3f107ade9badb87", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2g68-c3qc-8985"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d062920f7d531ba", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-87hc-h4r5-73f7"}, "properties": {"repobilityId": "496047866aa377ef", "scanner": "scanner-primary", "fingerprint": "4d062920f7d531ba", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-87hc-h4r5-73f7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92e649d029c3b52e", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-f9vj-2wh5-fj8j"}, "properties": {"repobilityId": "a7e8b20aa5173eb9", "scanner": "scanner-primary", "fingerprint": "92e649d029c3b52e", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-f9vj-2wh5-fj8j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-491c55a0e8683726", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-hgf8-39gv-g3f2"}, "properties": {"repobilityId": "cf9b2cd8be4232ba", "scanner": "scanner-primary", "fingerprint": "491c55a0e8683726", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-hgf8-39gv-g3f2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e9c78baba376179", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-hrfv-mqp8-q5rw"}, "properties": {"repobilityId": "44a889adbf55e14e", "scanner": "scanner-primary", "fingerprint": "0e9c78baba376179", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-hrfv-mqp8-q5rw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6edbca24b9b5382f", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-px8h-6qxv-m22q"}, "properties": {"repobilityId": "7c724e85b6b6df7d", "scanner": "scanner-primary", "fingerprint": "6edbca24b9b5382f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-px8h-6qxv-m22q"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ea24480208c9606", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-q34m-jh98-gwm2"}, "properties": {"repobilityId": "559b3426413cd646", "scanner": "scanner-primary", "fingerprint": "4ea24480208c9606", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-q34m-jh98-gwm2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9a34488bcad0a27a", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: GHSA-xg9f-g7g7-2323"}, "properties": {"repobilityId": "8116d2f4ff2a3989", "scanner": "scanner-primary", "fingerprint": "9a34488bcad0a27a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xg9f-g7g7-2323"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3f2a043d0ee43d41", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2022-203"}, "properties": {"repobilityId": "3570a05b47bad0a4", "scanner": "scanner-primary", "fingerprint": "3f2a043d0ee43d41", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2022-203"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-317e569467a67d94", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-221"}, "properties": {"repobilityId": "b397bd7ffcfdd9d5", "scanner": "scanner-primary", "fingerprint": "317e569467a67d94", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-221"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b9a70a65867877c", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-57"}, "properties": {"repobilityId": "d184c14cee16951c", "scanner": "scanner-primary", "fingerprint": "1b9a70a65867877c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-57"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1d42c87e7438da3", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2023-58"}, "properties": {"repobilityId": "f2342458e4fb6b71", "scanner": "scanner-primary", "fingerprint": "a1d42c87e7438da3", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-58"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1cbd978a2ae62744", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2043"}, "properties": {"repobilityId": "4b1fe3c25a9c1d80", "scanner": "scanner-primary", "fingerprint": "1cbd978a2ae62744", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2043"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d75426f73c6ba60c", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2044"}, "properties": {"repobilityId": "81ca29be73c78891", "scanner": "scanner-primary", "fingerprint": "d75426f73c6ba60c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2044"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9351591ddb80001f", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2045"}, "properties": {"repobilityId": "42fb4f1a157c6206", "scanner": "scanner-primary", "fingerprint": "9351591ddb80001f", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2045"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0861599468ca1dea", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2046"}, "properties": {"repobilityId": "5740e811b8da5029", "scanner": "scanner-primary", "fingerprint": "0861599468ca1dea", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2046"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-79f9074e67199a28", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-2320"}, "properties": {"repobilityId": "47ab560e96dc2e35", "scanner": "scanner-primary", "fingerprint": "79f9074e67199a28", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2320"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5d139667ff0d76a", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.0.2: PYSEC-2026-3417"}, "properties": {"repobilityId": "438d98c05621b75b", "scanner": "scanner-primary", "fingerprint": "d5d139667ff0d76a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3417"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f7b727deb2c26776", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-29vq-49wr-vm6x"}, "properties": {"repobilityId": "c047854ef8e29963", "scanner": "scanner-primary", "fingerprint": "f7b727deb2c26776", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-29vq-49wr-vm6x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c51e3322d35be568", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-2g68-c3qc-8985"}, "properties": {"repobilityId": "e7cddbde647bb079", "scanner": "scanner-primary", "fingerprint": "c51e3322d35be568", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2g68-c3qc-8985"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-674a4e2f51aeb2c2", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-87hc-h4r5-73f7"}, "properties": {"repobilityId": "65f5dc1085b4dd61", "scanner": "scanner-primary", "fingerprint": "674a4e2f51aeb2c2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-87hc-h4r5-73f7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6261cd12283ab3c6", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-f9vj-2wh5-fj8j"}, "properties": {"repobilityId": "b0caeface9490903", "scanner": "scanner-primary", "fingerprint": "6261cd12283ab3c6", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-f9vj-2wh5-fj8j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cc32e69ad5e06355", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-hgf8-39gv-g3f2"}, "properties": {"repobilityId": "7a104332c965df31", "scanner": "scanner-primary", "fingerprint": "cc32e69ad5e06355", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-hgf8-39gv-g3f2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9554bf20d372c820", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-hrfv-mqp8-q5rw"}, "properties": {"repobilityId": "0ba5da441d9e69a5", "scanner": "scanner-primary", "fingerprint": "9554bf20d372c820", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-hrfv-mqp8-q5rw"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2544d737f5556a87", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-px8h-6qxv-m22q"}, "properties": {"repobilityId": "8e6c63d2de6b4335", "scanner": "scanner-primary", "fingerprint": "2544d737f5556a87", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-px8h-6qxv-m22q"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6d053102a47a7f8", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-q34m-jh98-gwm2"}, "properties": {"repobilityId": "3ac1300fe903e78e", "scanner": "scanner-primary", "fingerprint": "f6d053102a47a7f8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-q34m-jh98-gwm2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-40aeb6387e35b2bc", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: GHSA-xg9f-g7g7-2323"}, "properties": {"repobilityId": "8b1cdc3fc99b039e", "scanner": "scanner-primary", "fingerprint": "40aeb6387e35b2bc", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-xg9f-g7g7-2323"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e1f16cde118323c", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-221"}, "properties": {"repobilityId": "df43c9d936f1d01e", "scanner": "scanner-primary", "fingerprint": "1e1f16cde118323c", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-221"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-462e1607dd362eb9", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-57"}, "properties": {"repobilityId": "46a21ad713ec1c9f", "scanner": "scanner-primary", "fingerprint": "462e1607dd362eb9", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-57"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-45e53a7b6d8a1252", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2023-58"}, "properties": {"repobilityId": "a4c51bc6af57bc44", "scanner": "scanner-primary", "fingerprint": "45e53a7b6d8a1252", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2023-58"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f97b27d78e72492b", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2043"}, "properties": {"repobilityId": "06657ae667b61cf1", "scanner": "scanner-primary", "fingerprint": "f97b27d78e72492b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2043"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-19894d98f9bfe0ad", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2044"}, "properties": {"repobilityId": "adf42698a85c2c92", "scanner": "scanner-primary", "fingerprint": "19894d98f9bfe0ad", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2044"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d05a923e289fb525", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2045"}, "properties": {"repobilityId": "1f1ddb7c82d4eb7c", "scanner": "scanner-primary", "fingerprint": "d05a923e289fb525", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2045"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92f2b8b21f9414b2", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2046"}, "properties": {"repobilityId": "9b5e8c0352ef59c4", "scanner": "scanner-primary", "fingerprint": "92f2b8b21f9414b2", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2046"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65ef639364126699", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-2320"}, "properties": {"repobilityId": "58ac407a674a4992", "scanner": "scanner-primary", "fingerprint": "65ef639364126699", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2320"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2734e0519621598", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 2.2.2: PYSEC-2026-3417"}, "properties": {"repobilityId": "ba76bc46348cdee3", "scanner": "scanner-primary", "fingerprint": "b2734e0519621598", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3417"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1ab0f13a22d9a0b", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-29vq-49wr-vm6x"}, "properties": {"repobilityId": "5b1b076e79bf5fe0", "scanner": "scanner-primary", "fingerprint": "f1ab0f13a22d9a0b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-29vq-49wr-vm6x"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-478cc478ae4f822d", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-2g68-c3qc-8985"}, "properties": {"repobilityId": "f7bf8ef330de49b2", "scanner": "scanner-primary", "fingerprint": "478cc478ae4f822d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-2g68-c3qc-8985"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fb86851119bca9a8", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-87hc-h4r5-73f7"}, "properties": {"repobilityId": "e52234b7a237dea9", "scanner": "scanner-primary", "fingerprint": "fb86851119bca9a8", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-87hc-h4r5-73f7"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e75306238748c0f1", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-f9vj-2wh5-fj8j"}, "properties": {"repobilityId": "66af5f7767d08c5a", "scanner": "scanner-primary", "fingerprint": "e75306238748c0f1", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-f9vj-2wh5-fj8j"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db109ed949ffc9d0", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-hgf8-39gv-g3f2"}, "properties": {"repobilityId": "a8d44b3ea4e6a6c8", "scanner": "scanner-primary", "fingerprint": "db109ed949ffc9d0", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-hgf8-39gv-g3f2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-871ac1aeb9bcae06", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: GHSA-q34m-jh98-gwm2"}, "properties": {"repobilityId": "e0f18e0209e0c353", "scanner": "scanner-primary", "fingerprint": "871ac1aeb9bcae06", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-q34m-jh98-gwm2"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-81d3e3e59d8f32ac", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2043"}, "properties": {"repobilityId": "e0ac766596b072b7", "scanner": "scanner-primary", "fingerprint": "81d3e3e59d8f32ac", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2043"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65f9269e12f3a54d", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2044"}, "properties": {"repobilityId": "8b81d62fd8edb93d", "scanner": "scanner-primary", "fingerprint": "65f9269e12f3a54d", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2044"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be9862964c4cbb8b", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2045"}, "properties": {"repobilityId": "b68131736ae9ecba", "scanner": "scanner-primary", "fingerprint": "be9862964c4cbb8b", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2045"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e51d17a6523e3c51", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2046"}, "properties": {"repobilityId": "ba4d13106803a5a1", "scanner": "scanner-primary", "fingerprint": "e51d17a6523e3c51", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2046"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-81e4c9660ab30834", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-2320"}, "properties": {"repobilityId": "ad73916da795982e", "scanner": "scanner-primary", "fingerprint": "81e4c9660ab30834", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2320"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8fbe580577a3b3ee", "level": "warning", "message": {"text": "Vulnerable dependency Werkzeug 3.0.1: PYSEC-2026-3417"}, "properties": {"repobilityId": "4a5d521ab0e3a076", "scanner": "scanner-primary", "fingerprint": "8fbe580577a3b3ee", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-3417"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4b7505ab0132f12", "level": "warning", "message": {"text": "Vulnerable dependency zeep 4.1.0: GHSA-4cc2-g9w2-fhf6"}, "properties": {"repobilityId": "078d04e4ecdf3fc5", "scanner": "scanner-primary", "fingerprint": "d4b7505ab0132f12", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4cc2-g9w2-fhf6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eac8c0ba798b52fd", "level": "warning", "message": {"text": "Vulnerable dependency zeep 4.1.0: PYSEC-2026-2323"}, "properties": {"repobilityId": "d344294fee4b8894", "scanner": "scanner-primary", "fingerprint": "eac8c0ba798b52fd", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2323"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2e1c9d37749d9b4", "level": "warning", "message": {"text": "Vulnerable dependency zeep 4.2.1: GHSA-4cc2-g9w2-fhf6"}, "properties": {"repobilityId": "6fb7e78156868dc7", "scanner": "scanner-primary", "fingerprint": "b2e1c9d37749d9b4", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4cc2-g9w2-fhf6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0824f657ae3d405a", "level": "warning", "message": {"text": "Vulnerable dependency zeep 4.2.1: PYSEC-2026-2323"}, "properties": {"repobilityId": "a8f25cd0db50eb82", "scanner": "scanner-primary", "fingerprint": "0824f657ae3d405a", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2323"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8e2809b63f90718", "level": "warning", "message": {"text": "Vulnerable dependency zeep 4.3.1: GHSA-4cc2-g9w2-fhf6"}, "properties": {"repobilityId": "950a9f872524bde2", "scanner": "scanner-primary", "fingerprint": "e8e2809b63f90718", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "GHSA-4cc2-g9w2-fhf6"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-837f33787fa922a7", "level": "warning", "message": {"text": "Vulnerable dependency zeep 4.3.1: PYSEC-2026-2323"}, "properties": {"repobilityId": "8fbf994a98d4756e", "scanner": "scanner-primary", "fingerprint": "837f33787fa922a7", "layer": "dependencies", "severity": "medium", "confidence": 1.0, "tags": ["dependency", "sca", "osv", "PYSEC-2026-2323"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9983baf1ecc7ec34", "level": "note", "message": {"text": "Dependency cbor2 is a major version behind"}, "properties": {"repobilityId": "e1e6fc3852fbd051", "scanner": "scanner-primary", "fingerprint": "9983baf1ecc7ec34", "layer": "dependencies", "severity": "low", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-880aba1366c5f122", "level": "warning", "message": {"text": "Dependency chardet is two or more major versions behind"}, "properties": {"repobilityId": "e154775b513f8400", "scanner": "scanner-primary", "fingerprint": "880aba1366c5f122", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-919befa0d6d81842", "level": "warning", "message": {"text": "Dependency cryptography is two or more major versions behind"}, "properties": {"repobilityId": "8617064be42f87e3", "scanner": "scanner-primary", "fingerprint": "919befa0d6d81842", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f61a2a96e995a05", "level": "warning", "message": {"text": "Dependency geoip2 is two or more major versions behind"}, "properties": {"repobilityId": "0a1d4d1d6e851350", "scanner": "scanner-primary", "fingerprint": "7f61a2a96e995a05", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-52256dc9dc096646", "level": "warning", "message": {"text": "Dependency gevent is two or more major versions behind"}, "properties": {"repobilityId": "2a8517e9c97286c8", "scanner": "scanner-primary", "fingerprint": "52256dc9dc096646", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-636c0fe46aac43f2", "level": "warning", "message": {"text": "Dependency greenlet is two or more major versions behind"}, "properties": {"repobilityId": "5ef5abaeda77c418", "scanner": "scanner-primary", "fingerprint": "636c0fe46aac43f2", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-718e36d96f901905", "level": "note", "message": {"text": "Dependency idna is a major version behind"}, "properties": {"repobilityId": "84575f5271b7f11d", "scanner": "scanner-primary", "fingerprint": "718e36d96f901905", "layer": "dependencies", "severity": "low", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2e12615a1d076b0a", "level": "warning", "message": {"text": "Dependency lxml is two or more major versions behind"}, "properties": {"repobilityId": "3918f617c3fa5ac8", "scanner": "scanner-primary", "fingerprint": "2e12615a1d076b0a", "layer": "dependencies", "severity": "medium", "confidence": 0.9, "tags": ["dependency", "freshness", "outdated"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "requirements.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c8577d2af972da86", "level": "error", "message": {"text": "Dangling fetch: GET /iot_drivers/iot_logs (addons/iot_drivers/static/src/app/logs.js:3)"}, "properties": {"repobilityId": "dc508e5fc9919f21", "scanner": "scanner-primary", "fingerprint": "c8577d2af972da86", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/static/src/app/logs.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-6cdca403af7fd746", "level": "error", "message": {"text": "Dangling fetch: GET /iot_drivers/data (addons/iot_drivers/static/src/app/status.js:20)"}, "properties": {"repobilityId": "e5c38a5fe5d3de1c", "scanner": "scanner-primary", "fingerprint": "6cdca403af7fd746", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/iot_drivers/static/src/app/status.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-8cc8e08a1f5d085f", "level": "error", "message": {"text": "Dangling fetch: CALL /web/dataset/call_kw/mail.push.device/register_devices (addons/mail/static/src/service_worker.js:311)"}, "properties": {"repobilityId": "5239c73b19053892", "scanner": "scanner-primary", "fingerprint": "8cc8e08a1f5d085f", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/mail/static/src/service_worker.js"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-1f5548bdd0e70fdb", "level": "error", "message": {"text": "Dangling fetch: GET /web/bundle/${bundle} (addons/web/static/lib/hoot/ui/setup_hoot_ui.js:73)"}, "properties": {"repobilityId": "ef448c20286a8284", "scanner": "scanner-primary", "fingerprint": "1f5548bdd0e70fdb", "layer": "api", "severity": "high", "confidence": 0.9, "tags": ["wiring", "dangling-fetch", "fetch"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "addons/web/static/lib/hoot/ui/setup_hoot_ui.js"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-666814b15efc5c6b", "level": "note", "message": {"text": "421 backend endpoints not called by scanned frontend"}, "properties": {"repobilityId": "3c8e96670c5e1f9f", "scanner": "scanner-primary", "fingerprint": "666814b15efc5c6b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}