{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "MINED111", "name": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or ", "shortDescription": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "fullDescription": {"text": "Either narrow the exception type, log the exception with `logger.exception(...)`, or re-raise after handling."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED109", "name": "[MINED109] Mutable default argument in `summarize` (dict): `def summarize(... = []/{}/set())` \u2014 Python's default value i", "shortDescription": {"text": "[MINED109] Mutable default argument in `summarize` (dict): `def summarize(... = []/{}/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"}, "fullDescription": {"text": "Use None as the default and create the collection inside the function: `def summarize(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": "WEB015", "name": "Public web app has no Content Security Policy", "shortDescription": {"text": "Public web app has no Content Security Policy"}, "fullDescription": {"text": "Add a Content-Security-Policy header through the web framework or hosting config. For static apps, add a CSP meta tag that restricts default-src, script-src, connect-src, img-src, and frame-ancestors."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "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": "AGT014", "name": "Codex auth.json is read or copied without visible secret-file hardening", "shortDescription": {"text": "Codex auth.json is read or copied without visible secret-file hardening"}, "fullDescription": {"text": "Use the platform credential store where possible. If auth files must be touched, enforce 0600 permissions, avoid backups in the repo/workspace, redact logs, and document rotation if the file is exposed."}, "properties": {"scanner": "repobility-agent-runtime", "category": "quality", "severity": "medium", "confidence": 0.74, "cwe": "", "owasp": ""}}, {"id": "AGT012", "name": "Agent control bridge may listen on a network interface without visible auth", "shortDescription": {"text": "Agent control bridge may listen on a network interface without visible auth"}, "fullDescription": {"text": "Bind local agent bridges to 127.0.0.1 by default. If remote access is required, require a bearer token or mTLS, enforce origin/CSRF checks for browser clients, and document the threat model."}, "properties": {"scanner": "repobility-agent-runtime", "category": "quality", "severity": "medium", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "AGT015", "name": "Remote install command pipes network code directly to a shell", "shortDescription": {"text": "Remote install command pipes network code directly to a shell"}, "fullDescription": {"text": "Publish a package-manager install path or add checksum/signature verification before execution. For docs, show the inspect-then-run flow and pin the downloaded artifact version."}, "properties": {"scanner": "repobility-agent-runtime", "category": "dependency", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "ERR002", "name": "[ERR002] Empty Catch Block: Empty catch blocks hide errors.", "shortDescription": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "fullDescription": {"text": "Log the error or rethrow it. Use console.error() at minimum."}, "properties": {"scanner": "repobility-threat-engine", "category": "error_handling", "severity": "medium", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "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": "COMP001", "name": "[COMP001] High cognitive complexity: Function `request` has cognitive complexity 19 (SonarSource scale). Cognitive compl", "shortDescription": {"text": "[COMP001] High cognitive complexity: Function `request` has cognitive complexity 19 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all w"}, "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 19."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "medium", "confidence": 0.95, "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": "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": "WEB011", "name": "Public web app has no humans.txt", "shortDescription": {"text": "Public web app has no humans.txt"}, "fullDescription": {"text": "Add humans.txt with team ownership, contact URL, key documentation links, and the last-updated date."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.5, "cwe": "", "owasp": ""}}, {"id": "WEB008", "name": "Public docs site has no llms.txt", "shortDescription": {"text": "Public docs site has no llms.txt"}, "fullDescription": {"text": "Add llms.txt with the product summary, canonical docs, API endpoints, security guidance, and preferred CLI workflow for AI agents."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.64, "cwe": "", "owasp": ""}}, {"id": "WEB002", "name": "Public web app has no sitemap", "shortDescription": {"text": "Public web app has no sitemap"}, "fullDescription": {"text": "Add sitemap.xml, a sitemap index, or a framework-native sitemap route and reference it from robots.txt."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.72, "cwe": "", "owasp": ""}}, {"id": "WEB001", "name": "Public web app has no robots.txt", "shortDescription": {"text": "Public web app has no robots.txt"}, "fullDescription": {"text": "Add robots.txt at the web root or a framework-native robots route. Include an explicit Sitemap directive and disallow only private paths."}, "properties": {"scanner": "repobility-web-presence", "category": "quality", "severity": "low", "confidence": 0.74, "cwe": "", "owasp": ""}}, {"id": "AIC003", "name": "Duplicated implementation block across source files", "shortDescription": {"text": "Duplicated implementation block across source files"}, "fullDescription": {"text": "Extract the shared behavior into one function/module or delete the inactive duplicate after proving which path is used."}, "properties": {"scanner": "repobility-ai-code-hygiene", "category": "quality", "severity": "low", "confidence": 0.86, "cwe": "", "owasp": ""}}, {"id": "MINED054", "name": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely.", "shortDescription": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-704 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC016", "name": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prom", "shortDescription": {"text": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prompt (e.g. OpenAI, Anthropic, or local model). This is the AI equivalent of SQL injection: an attacker can craft input tha"}, "fullDescription": {"text": "1) Separate user content from instructions: use the 'user' role for user text and 'system' role for your instructions \u2014 never concatenate them into one string. 2) Validate and constrain: limit input length, strip control characters, and reject known injection patterns. 3) Use structured output (JSON mode / function calling) so the model returns data, not freeform actions. 4) Apply output validation: check the AI's response before acting on it. 5) Consider a prompt injection detection layer (e.g. Anthropic's constitutional AI, prompt-guard models)."}, "properties": {"scanner": "repobility-threat-engine", "category": "llm_injection", "severity": "info", "confidence": 0.1, "cwe": "", "owasp": ""}}, {"id": "MINED045", "name": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong.", "shortDescription": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-476 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC040", "name": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data (and 3 more): Same pattern found in 3 additional fil", "shortDescription": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "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": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "SEC128", "name": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 1 more): Same pattern found in 1 addit", "shortDescription": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 1 more): Same pattern found in 1 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": "MINED050", "name": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO ", "shortDescription": {"text": "[MINED050] Stub Only Function: Function declared but body is just pass, return None, raise NotImplementedError, or TODO comment."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-1188 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED063", "name": "[MINED063] Toctou Os Path Exists: if os.path.exists(p): open(p) \u2014 file can be replaced/deleted between check and use.", "shortDescription": {"text": "[MINED063] Toctou Os Path Exists: if os.path.exists(p): open(p) \u2014 file can be replaced/deleted between check and use."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-367 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED064", "name": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services.", "shortDescription": {"text": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services."}, "fullDescription": {"text": "Review and fix per the pattern semantics."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "SEC029", "name": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 17 more): Same pattern found in 17 addi", "shortDescription": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 17 more): Same pattern found in 17 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": "MINED052", "name": "[MINED052] Ts Any Typed (and 14 more): Same pattern found in 14 additional files. Review if needed.", "shortDescription": {"text": "[MINED052] Ts Any Typed (and 14 more): Same pattern found in 14 additional files. Review if needed."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-704 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 0.2, "cwe": "", "owasp": ""}}, {"id": "MINED044", "name": "[MINED044] Js Console Log Prod (and 19 more): Same pattern found in 19 additional files. Review if needed.", "shortDescription": {"text": "[MINED044] Js Console Log Prod (and 19 more): Same pattern found in 19 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": "MINED043", "name": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data.", "shortDescription": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-319 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "info", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED115", "name": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v2`: `uses: actions/setup-node@v2` resolves at workflow-r", "shortDescription": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v2`: `uses: actions/setup-node@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025"}, "fullDescription": {"text": "Replace with: `uses: actions/setup-node@<40-char-sha>  # v2` and let Dependabot bump it on a scheduled cadence."}, "properties": {"scanner": "repobility-supply-chain", "category": "dependency", "severity": "high", "confidence": 0.9, "cwe": "", "owasp": ""}}, {"id": "MINED108", "name": "[MINED108] `self._execute_async_command` used but never assigned in __init__: Method `execute_command` of class `BaseToo", "shortDescription": {"text": "[MINED108] `self._execute_async_command` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self._execute_async_command`, but no assignment to it exists in __init__ (and no class-level fallback). This r"}, "fullDescription": {"text": "Initialize `self._execute_async_command = <default>` in __init__, or add a class-level default."}, "properties": {"scanner": "repobility-ast-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": "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": "MINED006", "name": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working.", "shortDescription": {"text": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-705 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "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": "MINED004", "name": "[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums).", "shortDescription": {"text": "[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums)."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-327 / A02:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED021", "name": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape.", "shortDescription": {"text": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-22 / A01:2021 for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "high", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED107", "name": "[MINED107] Missing import: `time` used but not imported: The file uses `time.something(...)` but never imports `time`. T", "shortDescription": {"text": "[MINED107] Missing import: `time` used but not imported: The file uses `time.something(...)` but never imports `time`. This raises NameError at runtime the first time the line executes."}, "fullDescription": {"text": "Add `import time` at the top of the file."}, "properties": {"scanner": "repobility-ast-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}, {"id": "MINED035", "name": "[MINED035] Js New Function: new Function(...) compiles strings to functions.", "shortDescription": {"text": "[MINED035] Js New Function: new Function(...) compiles strings to functions."}, "fullDescription": {"text": "Review and fix per the pattern semantics. See CWE-95 /  for context."}, "properties": {"scanner": "repobility-threat-engine", "category": "quality", "severity": "critical", "confidence": 1.0, "cwe": "", "owasp": ""}}]}}, "automationDetails": {"id": "repobility/1190"}, "properties": {"repository": "leon-ai/leon", "repoUrl": "https://github.com/leon-ai/leon", "branch": "develop"}, "results": [{"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 119640, "scanner": "repobility-ast-engine", "fingerprint": "aefc2c2a6142c935a863590f5962868d95ba3e35db586a68fa4cf383ead4e886", "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|aefc2c2a6142c935a863590f5962868d95ba3e35db586a68fa4cf383ead4e886"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/operating_system_control/shell/src/python/shell_tool.py"}, "region": {"startLine": 168}}}]}, {"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": 119639, "scanner": "repobility-ast-engine", "fingerprint": "18141594a3d292ec2264a1e2d297f88437acc7aec2f6c7e532fb13a392324545", "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|18141594a3d292ec2264a1e2d297f88437acc7aec2f6c7e532fb13a392324545"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/weather/openmeteo/src/python/open_meteo_tool.py"}, "region": {"startLine": 198}}}]}, {"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": 119638, "scanner": "repobility-ast-engine", "fingerprint": "8d482268e43dc2b809e50d661905402e1ad53ca028b9f2b6c35b355a18a53eb5", "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|8d482268e43dc2b809e50d661905402e1ad53ca028b9f2b6c35b355a18a53eb5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 946}}}]}, {"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": 119637, "scanner": "repobility-ast-engine", "fingerprint": "da4e15556601ce317da020b122cab231ecb3b3cbfa7c548b2638382c643e6b00", "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|da4e15556601ce317da020b122cab231ecb3b3cbfa7c548b2638382c643e6b00"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 1800}}}]}, {"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": 119636, "scanner": "repobility-ast-engine", "fingerprint": "adb3f75d57051dee14bdb7d22dd1d2732ab34a53af917436228588be0aec5f1b", "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|adb3f75d57051dee14bdb7d22dd1d2732ab34a53af917436228588be0aec5f1b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 934}}}]}, {"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": 119635, "scanner": "repobility-ast-engine", "fingerprint": "74e2a15d31961fc1635ccbb5aa4be5ec85a53dae056883ffa490941608deef6b", "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|74e2a15d31961fc1635ccbb5aa4be5ec85a53dae056883ffa490941608deef6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 900}}}]}, {"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": 119634, "scanner": "repobility-ast-engine", "fingerprint": "b952d322e837a50964bb50b97c6fc7c9e17fb85da3a1b987a777ffab7ad779aa", "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|b952d322e837a50964bb50b97c6fc7c9e17fb85da3a1b987a777ffab7ad779aa"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 643}}}]}, {"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": 119633, "scanner": "repobility-ast-engine", "fingerprint": "5359ec70e226ed4c8b99ed64e87c94b23ead89d2a4b174e5c1480ac5ae6c9c4b", "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|5359ec70e226ed4c8b99ed64e87c94b23ead89d2a4b174e5c1480ac5ae6c9c4b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 431}}}]}, {"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": 119632, "scanner": "repobility-ast-engine", "fingerprint": "27af8d90751deb286d4f3bf2780308a194d24af1a2dac22106f10dffbdf8f475", "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|27af8d90751deb286d4f3bf2780308a194d24af1a2dac22106f10dffbdf8f475"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 329}}}]}, {"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": 119631, "scanner": "repobility-ast-engine", "fingerprint": "46f90738ef648926155ac9c0bb2bb00700920e7ce34a54fa65b3b37e713063d3", "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|46f90738ef648926155ac9c0bb2bb00700920e7ce34a54fa65b3b37e713063d3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 279}}}]}, {"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": 119630, "scanner": "repobility-ast-engine", "fingerprint": "f4f379e087e273eebf2855dd124d0a8c9d93f384e689375b072892df723a5c06", "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|f4f379e087e273eebf2855dd124d0a8c9d93f384e689375b072892df723a5c06"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 202}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 119629, "scanner": "repobility-ast-engine", "fingerprint": "1b96bef0e4d935353204f3827097e77ccb78a2568c50d9edcb0549cb212d57a7", "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|1b96bef0e4d935353204f3827097e77ccb78a2568c50d9edcb0549cb212d57a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/search_web/grok/src/python/grok_tool.py"}, "region": {"startLine": 188}}}]}, {"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": 119628, "scanner": "repobility-ast-engine", "fingerprint": "0a1b866a8da730bf8df6fccb6afa84676b0b16fde3bcd1442f8cbf5a4dc3c5db", "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|0a1b866a8da730bf8df6fccb6afa84676b0b16fde3bcd1442f8cbf5a4dc3c5db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/search_web/grok/src/python/grok_tool.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `summarize` (dict): `def summarize(... = []/{}/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": 119625, "scanner": "repobility-ast-engine", "fingerprint": "9554187bd2bb050f36807793c72c99e6c094b7f71ce096fd249d823d597988e9", "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|9554187bd2bb050f36807793c72c99e6c094b7f71ce096fd249d823d597988e9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tcp_server/src/lib/tts/utils.py"}, "region": {"startLine": 136}}}]}, {"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": 119624, "scanner": "repobility-ast-engine", "fingerprint": "aaaa25d718796f173fc1b54990be71cd6419d09e314c8941f376c9f189e719e0", "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|aaaa25d718796f173fc1b54990be71cd6419d09e314c8941f376c9f189e719e0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tcp_server/src/lib/audio_input.py"}, "region": {"startLine": 24}}}]}, {"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": 119623, "scanner": "repobility-ast-engine", "fingerprint": "bec5b5ec541788c1d2a0dfcbd4f279c5b97e8a61966bdf57241f408facd3a5ff", "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|bec5b5ec541788c1d2a0dfcbd4f279c5b97e8a61966bdf57241f408facd3a5ff"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 604}}}]}, {"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": 119622, "scanner": "repobility-ast-engine", "fingerprint": "6eafafbe7e5d59d2a24c6178ed28668b675ca1c50fc4d2a107290c002c877b86", "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|6eafafbe7e5d59d2a24c6178ed28668b675ca1c50fc4d2a107290c002c877b86"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 996}}}]}, {"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": 119621, "scanner": "repobility-ast-engine", "fingerprint": "7b4be96ca8dd54882ff45c3a0da06239415722c5b76d7e517fb2e272780c4e6a", "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|7b4be96ca8dd54882ff45c3a0da06239415722c5b76d7e517fb2e272780c4e6a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 930}}}]}, {"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": 119620, "scanner": "repobility-ast-engine", "fingerprint": "7b9eaf93f3cc75eb1624ed361fa083f6624fac0d921312d81e501d026c9b4c7d", "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|7b9eaf93f3cc75eb1624ed361fa083f6624fac0d921312d81e501d026c9b4c7d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 105}}}]}, {"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": 119598, "scanner": "repobility-ast-engine", "fingerprint": "ef683f6187953890a09bf7b66d044e9144c5681177c21362a39ff081c1568a0a", "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|ef683f6187953890a09bf7b66d044e9144c5681177c21362a39ff081c1568a0a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 156}}}]}, {"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": 119597, "scanner": "repobility-ast-engine", "fingerprint": "ea0abd95b2c069c609e78c8a319cbd9ce47890dee03054e598ed2df3f3107cdd", "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|ea0abd95b2c069c609e78c8a319cbd9ce47890dee03054e598ed2df3f3107cdd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 34}}}]}, {"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": 119592, "scanner": "repobility-ast-engine", "fingerprint": "0623a674dd37cc6bec451c0c8f7a6cfe0f9b4b8566132bb23e889b2f3cad7e22", "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|0623a674dd37cc6bec451c0c8f7a6cfe0f9b4b8566132bb23e889b2f3cad7e22"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/network.py"}, "region": {"startLine": 119}}}]}, {"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": 119591, "scanner": "repobility-ast-engine", "fingerprint": "fe5ffe5c6b82804629c4cb00f4a636e1a95010dc8103571c2b02368594776cb9", "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|fe5ffe5c6b82804629c4cb00f4a636e1a95010dc8103571c2b02368594776cb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/network.py"}, "region": {"startLine": 90}}}]}, {"ruleId": "MINED111", "level": "warning", "message": {"text": "[MINED111] Bare except continues silently: Bare `except:` (or `except Exception:`) that runs code without re-raising or logging the exception. Hides real failures and makes bugs hard to diagnose."}, "properties": {"repobilityId": 119590, "scanner": "repobility-ast-engine", "fingerprint": "78b894f51cc3ed2f792b816f06d530bda3989e02f94cdd7545da65089f84c3db", "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|78b894f51cc3ed2f792b816f06d530bda3989e02f94cdd7545da65089f84c3db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/network.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "MINED109", "level": "warning", "message": {"text": "[MINED109] Mutable default argument in `__init__` (dict): `def __init__(... = []/{}/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": 119589, "scanner": "repobility-ast-engine", "fingerprint": "baa41124a522fe2e055bf29b32daf5ce59e9b8a469c846a78af9c0dfba9cbd98", "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|baa41124a522fe2e055bf29b32daf5ce59e9b8a469c846a78af9c0dfba9cbd98"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/network.py"}, "region": {"startLine": 46}}}]}, {"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": 119588, "scanner": "repobility-ast-engine", "fingerprint": "19c7e818f6f9580de28c06ff50e877d9af09aef37d4180bc759605fd77f685c8", "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|19c7e818f6f9580de28c06ff50e877d9af09aef37d4180bc759605fd77f685c8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/main.py"}, "region": {"startLine": 122}}}]}, {"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": 119587, "scanner": "repobility-ast-engine", "fingerprint": "c47735a236a0338e41eedf8b3ed07f442999f01d655806bc886de060846985cb", "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|c47735a236a0338e41eedf8b3ed07f442999f01d655806bc886de060846985cb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/main.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "WEB003", "level": "warning", "message": {"text": "Public web service has no security.txt"}, "properties": {"repobilityId": 119586, "scanner": "repobility-web-presence", "fingerprint": "5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd", "category": "quality", "severity": "medium", "confidence": 0.78, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app/API but no security.txt file or route was discovered.", "evidence": {"rule_id": "WEB003", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9116", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|5cd26606c5a53c9f403ff7a92a6917c19cf440a23ce03e2b90e8c493312ef8cd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".well-known/security.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB015", "level": "warning", "message": {"text": "Public web app has no Content Security Policy"}, "properties": {"repobilityId": 119585, "scanner": "repobility-web-presence", "fingerprint": "7eb70cae3ff63d8ed7c31706185d32b37655333b40b58ca826d740b08fb1ad63", "category": "quality", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no CSP header, framework header config, Helmet policy, or CSP meta tag was discovered.", "evidence": {"rule_id": "WEB015", "scanner": "repobility-web-presence", "references": ["https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|7eb70cae3ff63d8ed7c31706185d32b37655333b40b58ca826d740b08fb1ad63"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 1}}}]}, {"ruleId": "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": 119580, "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": "AGT014", "level": "warning", "message": {"text": "Codex auth.json is read or copied without visible secret-file hardening"}, "properties": {"repobilityId": 119579, "scanner": "repobility-agent-runtime", "fingerprint": "a8d84b50969a2b22d637de860efe92969e182bddedec8666f63ed3cfb29bda50", "category": "quality", "severity": "medium", "confidence": 0.74, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File references Codex auth.json or CODEX_HOME with read/copy/write behavior and no visible permission or secure-storage guard.", "evidence": {"rule_id": "AGT014", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|a8d84b50969a2b22d637de860efe92969e182bddedec8666f63ed3cfb29bda50"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/coding_development/opencode/src/python/opencode_tool.py"}, "region": {"startLine": 127}}}]}, {"ruleId": "AGT012", "level": "warning", "message": {"text": "Agent control bridge may listen on a network interface without visible auth"}, "properties": {"repobilityId": 119578, "scanner": "repobility-agent-runtime", "fingerprint": "68ac8208bb25ad304e916a36d361722a35f207d80dfef40d968933b07dd25b47", "category": "quality", "severity": "medium", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File combines agent-control wording with an HTTP/SSE/WebSocket listener on an all-interface host and no visible auth guard.", "evidence": {"rule_id": "AGT012", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|68ac8208bb25ad304e916a36d361722a35f207d80dfef40d968933b07dd25b47"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/http-server/http-server.ts"}, "region": {"startLine": 5}}}]}, {"ruleId": "AGT012", "level": "warning", "message": {"text": "Agent control bridge may listen on a network interface without visible auth"}, "properties": {"repobilityId": 119577, "scanner": "repobility-agent-runtime", "fingerprint": "e6ea8a0034eca2e014a3d8f13e02fd7591d18aa6ce7b3f6cc82b508a160f512b", "category": "quality", "severity": "medium", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File combines agent-control wording with an HTTP/SSE/WebSocket listener on an all-interface host and no visible auth guard.", "evidence": {"rule_id": "AGT012", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|e6ea8a0034eca2e014a3d8f13e02fd7591d18aa6ce7b3f6cc82b508a160f512b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-probe-helper.ts"}, "region": {"startLine": 62}}}]}, {"ruleId": "AGT015", "level": "warning", "message": {"text": "Remote install command pipes network code directly to a shell"}, "properties": {"repobilityId": 119576, "scanner": "repobility-agent-runtime", "fingerprint": "030f04159385c6a5faea6db21adccd65e6abc10773a84f0783456ae3dc4277a1", "category": "dependency", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "File contains a remote download piped directly to a shell without visible checksum or signature verification.", "evidence": {"rule_id": "AGT015", "scanner": "repobility-agent-runtime", "references": [], "correlation_key": "fp|030f04159385c6a5faea6db21adccd65e6abc10773a84f0783456ae3dc4277a1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/CONTRIBUTING.md"}, "region": {"startLine": 169}}}]}, {"ruleId": "ERR002", "level": "warning", "message": {"text": "[ERR002] Empty Catch Block: Empty catch blocks hide errors."}, "properties": {"repobilityId": 119539, "scanner": "repobility-threat-engine", "fingerprint": "95c2fcad941a7738d4ffd7af4c9a7e2e2ec80893e0ae75f495319fcb5903c7d3", "category": "error_handling", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": ".catch(() => {})", "reason": "Pattern matched with no mitigating context found", "rule_id": "ERR002", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|95c2fcad941a7738d4ffd7af4c9a7e2e2ec80893e0ae75f495319fcb5903c7d3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/native/podcast_generator_skill/src/actions/generate.ts"}, "region": {"startLine": 256}}}]}, {"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": 119529, "scanner": "repobility-threat-engine", "fingerprint": "773a094c393c0e4ba9c7333ed92f2c7a1e60b4184cade8991bb4c2ce47251fb4", "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|60|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/music_audio/chatterbox_onnx/src/nodejs/chatterbox_onnx-tool.ts"}, "region": {"startLine": 60}}}]}, {"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": 119528, "scanner": "repobility-threat-engine", "fingerprint": "6cd8e484792eb4cd70e6546c93d5b97f7f500f0f8665976352d71dcac0e180c0", "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|226|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent/tiny-web-crawler/scripts/fetch-page.mjs"}, "region": {"startLine": 226}}}]}, {"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": 119527, "scanner": "repobility-threat-engine", "fingerprint": "252c31fcc253ef9cfa7b2a1cb1fe63c1a19998de21a0fae83e3959b8c9ac75d8", "category": "injection", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "new Function(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC045", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|358|sec045"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/helpers/file-helper.ts"}, "region": {"startLine": 358}}}]}, {"ruleId": "COMP001", "level": "warning", "message": {"text": "[COMP001] High cognitive complexity: Function `request` has cognitive complexity 19 (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=3, except=3, if=6, nested_bonus=5, or=1, recursion=1."}, "properties": {"repobilityId": 119512, "scanner": "repobility-threat-engine", "fingerprint": "46c5ec3ad80c1be0921edf4c186bc09cb8563c6ab4f7376f26b21393415e9aac", "category": "quality", "severity": "medium", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 19 (severity threshold for medium: 15+).", "evidence": {"scanner": "repobility-threat-engine", "function": "request", "breakdown": {"if": 6, "or": 1, "else": 3, "except": 3, "recursion": 1, "nested_bonus": 5}, "complexity": 19, "correlation_key": "fp|46c5ec3ad80c1be0921edf4c186bc09cb8563c6ab4f7376f26b21393415e9aac"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/network.py"}, "region": {"startLine": 49}}}]}, {"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": 119501, "scanner": "repobility-threat-engine", "fingerprint": "f5b35368e49dc47625b7a028ae1e07f03c80a7501d01bd5b21f185bd9da97f0d", "category": "security", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "<a\n      className={classNames('aurora-link')}\n      href={href}\n      target=\"_blank\"\n      key={`a", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC041", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|security|token|19|sec041"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aurora/src/components/link/link.tsx"}, "region": {"startLine": 19}}}]}, {"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": 119496, "scanner": "repobility-threat-engine", "fingerprint": "8fcb45875420b68ef6cf08feda9f71572324b995b8d7e232cac524db36d27754", "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() * questions.length)\n      ] as string\n      const slot = this._activ", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC087", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|8fcb45875420b68ef6cf08feda9f71572324b995b8d7e232cac524db36d27754"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/nlp/conversation.ts"}, "region": {"startLine": 256}}}]}, {"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": 119495, "scanner": "repobility-threat-engine", "fingerprint": "1de14f5978e12701d69f47da18115acf3a894383f3d8855632c75dfc47655033", "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() * content.length)] as string\n    }\n\n    if (data) {\n      for (const key", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC087", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|1de14f5978e12701d69f47da18115acf3a894383f3d8855632c75dfc47655033"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/nodejs/src/sdk/widget.ts"}, "region": {"startLine": 127}}}]}, {"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": 119494, "scanner": "repobility-threat-engine", "fingerprint": "1f9cc0b13046e3e4b53576c870259d8046c369beb142958a4d92e77d73844f6b", "category": "quality", "severity": "medium", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "iv')\n        const randomColor = Math.floor(Math.random(", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC087", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|1f9cc0b13046e3e4b53576c870259d8046c369beb142958a4d92e77d73844f6b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/src/js/voice-energy.js"}, "region": {"startLine": 56}}}]}, {"ruleId": "WEB011", "level": "note", "message": {"text": "Public web app has no humans.txt"}, "properties": {"repobilityId": 119584, "scanner": "repobility-web-presence", "fingerprint": "bdd551fbe1ab6405480e0d5755632562c2096cb9e9a6a071ef60e4c27a6873f1", "category": "quality", "severity": "low", "confidence": 0.5, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Repository looks like a public web app but no humans.txt file or route was discovered.", "evidence": {"rule_id": "WEB011", "scanner": "repobility-web-presence", "references": ["https://github.com/Lissy93/web-check"], "correlation_key": "fp|bdd551fbe1ab6405480e0d5755632562c2096cb9e9a6a071ef60e4c27a6873f1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "humans.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB008", "level": "note", "message": {"text": "Public docs site has no llms.txt"}, "properties": {"repobilityId": 119583, "scanner": "repobility-web-presence", "fingerprint": "cdce8ed8706710d39c3e7272dad572dd639cff74fd3d2ac62d8f6f522b891d76", "category": "quality", "severity": "low", "confidence": 0.64, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Repository looks public and documentation-heavy but no llms.txt file or route was discovered.", "evidence": {"rule_id": "WEB008", "scanner": "repobility-web-presence", "references": ["https://llmstxt.org/"], "correlation_key": "fp|cdce8ed8706710d39c3e7272dad572dd639cff74fd3d2ac62d8f6f522b891d76"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "llms.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB002", "level": "note", "message": {"text": "Public web app has no sitemap"}, "properties": {"repobilityId": 119582, "scanner": "repobility-web-presence", "fingerprint": "fccbe72d13ca3ba9197ec37b0daa0802fb6d5ebff54b3eb9f09b59b0f8d0acdf", "category": "quality", "severity": "low", "confidence": 0.72, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no sitemap file or route was discovered.", "evidence": {"rule_id": "WEB002", "scanner": "repobility-web-presence", "references": ["https://www.sitemaps.org/protocol.html", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|fccbe72d13ca3ba9197ec37b0daa0802fb6d5ebff54b3eb9f09b59b0f8d0acdf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sitemap.xml"}, "region": {"startLine": 1}}}]}, {"ruleId": "WEB001", "level": "note", "message": {"text": "Public web app has no robots.txt"}, "properties": {"repobilityId": 119581, "scanner": "repobility-web-presence", "fingerprint": "cae3f2223945958e14d8eb90f7965fa26b47011cc5be29c2855a4054937e29c4", "category": "quality", "severity": "low", "confidence": 0.74, "triageState": "open", "verdict": "likely", "isResolved": false, "reason": "Repository looks like a public web app but no robots.txt file or route was discovered.", "evidence": {"rule_id": "WEB001", "scanner": "repobility-web-presence", "references": ["https://www.rfc-editor.org/rfc/rfc9309", "https://github.com/Lissy93/web-check"], "correlation_key": "fp|cae3f2223945958e14d8eb90f7965fa26b47011cc5be29c2855a4054937e29c4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "robots.txt"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119575, "scanner": "repobility-ai-code-hygiene", "fingerprint": "ac3fd5929b76afdffd699d6d062f6e00478407126674296447077da5d436a398", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/tts/synthesizers/amazon-polly-synthesizer.ts", "duplicate_line": 35, "correlation_key": "fp|ac3fd5929b76afdffd699d6d062f6e00478407126674296447077da5d436a398"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/tts/synthesizers/watson-tts-synthesizer.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119574, "scanner": "repobility-ai-code-hygiene", "fingerprint": "39e375211e05bfe345b2a7055597627d54403749df26979510ec37ab336dd776", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/setup/setup-llama-cpp.js", "duplicate_line": 33, "correlation_key": "fp|39e375211e05bfe345b2a7055597627d54403749df26979510ec37ab336dd776"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/llm-manager/llm-providers/llamacpp-llm-provider.ts"}, "region": {"startLine": 94}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119573, "scanner": "repobility-ai-code-hygiene", "fingerprint": "71c47646c4f727335a828195c2aeee67e6fcb16d02903be10f4ca52b7e41d7f1", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/llm-manager/llm-duties/skill-router-llm-duty.ts", "duplicate_line": 64, "correlation_key": "fp|71c47646c4f727335a828195c2aeee67e6fcb16d02903be10f4ca52b7e41d7f1"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/llm-manager/llm-duties/slot-filling-llm-duty.ts"}, "region": {"startLine": 94}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119572, "scanner": "repobility-ai-code-hygiene", "fingerprint": "33422814f39d5357f14b0418882e1c6ff92493e3a93a55089018a2b1f0808c8c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/llm-manager/llm-duties/react-llm-duty/planning.ts", "duplicate_line": 26, "correlation_key": "fp|33422814f39d5357f14b0418882e1c6ff92493e3a93a55089018a2b1f0808c8c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/llm-manager/llm-duties/react-llm-duty/recovery-planning.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119571, "scanner": "repobility-ai-code-hygiene", "fingerprint": "4f03c0e9111f8158061ac09f95616f562794a3c4e125b358b5df3a9c88a31457", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/context-manager/context-files/habits-context-file.ts", "duplicate_line": 53, "correlation_key": "fp|4f03c0e9111f8158061ac09f95616f562794a3c4e125b358b5df3a9c88a31457"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/workspace-intelligence-context-file.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119570, "scanner": "repobility-ai-code-hygiene", "fingerprint": "92548bd62f54a3dc0f192639f2ef7108384bc5771ad7a33523344478651f6fae", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/context-manager/context-files/habits-context-file.ts", "duplicate_line": 53, "correlation_key": "fp|92548bd62f54a3dc0f192639f2ef7108384bc5771ad7a33523344478651f6fae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/network-ecosystem-context-file.ts"}, "region": {"startLine": 46}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119569, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f0ffb43ffea743403ebcb1583c56e49ecfee411ed7fb62ff8236a50b84a850e3", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/context-manager/context-files/activity-context-file.ts", "duplicate_line": 130, "correlation_key": "fp|f0ffb43ffea743403ebcb1583c56e49ecfee411ed7fb62ff8236a50b84a850e3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/local-inventory-context-file.ts"}, "region": {"startLine": 144}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119568, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1651eb695cd38d9122b167a93e6109cb2b46c48b1c527b71714c21a4e7f4c1a9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/core/context-manager/context-files/habits-context-file.ts", "duplicate_line": 53, "correlation_key": "fp|1651eb695cd38d9122b167a93e6109cb2b46c48b1c527b71714c21a4e7f4c1a9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/local-inventory-context-file.ts"}, "region": {"startLine": 55}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119567, "scanner": "repobility-ai-code-hygiene", "fingerprint": "79a04423da3d6a6edd381ec8c1f3e4617b60442ea1212fcd43f6e63ff0286412", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/skill-command.ts", "duplicate_line": 86, "correlation_key": "fp|79a04423da3d6a6edd381ec8c1f3e4617b60442ea1212fcd43f6e63ff0286412"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/tool-command.ts"}, "region": {"startLine": 83}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119566, "scanner": "repobility-ai-code-hygiene", "fingerprint": "8a929e14766485199fa60c2bcbab9907ddb0d140a906fbfa4ce4bd70137969df", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/skill-sub-command.ts", "duplicate_line": 10, "correlation_key": "fp|8a929e14766485199fa60c2bcbab9907ddb0d140a906fbfa4ce4bd70137969df"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/tool-sub-command.ts"}, "region": {"startLine": 10}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119565, "scanner": "repobility-ai-code-hygiene", "fingerprint": "47326dc5c7910046c3ba4b058385aacbdd3cf3b203391d23c9a3fedd571d4902", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/tool-command/sub-commands/allow-only-tool-sub-command.ts", "duplicate_line": 1, "correlation_key": "fp|47326dc5c7910046c3ba4b058385aacbdd3cf3b203391d23c9a3fedd571d4902"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/remove-allow-only-tool-sub-command.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119564, "scanner": "repobility-ai-code-hygiene", "fingerprint": "7c109426749e3ed3a2d7400454b0fbfa6a06e4e908c99bcc2bafdd5753a315bb", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/list-skill-sub-command.ts", "duplicate_line": 31, "correlation_key": "fp|7c109426749e3ed3a2d7400454b0fbfa6a06e4e908c99bcc2bafdd5753a315bb"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/list-tool-sub-command.ts"}, "region": {"startLine": 30}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119563, "scanner": "repobility-ai-code-hygiene", "fingerprint": "edc8f7bbeeb624cc433c54677b404127c8f9166632ae6124c90b811e81be99d0", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/tool-command/sub-commands/allow-only-tool-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|edc8f7bbeeb624cc433c54677b404127c8f9166632ae6124c90b811e81be99d0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/list-tool-sub-command.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119562, "scanner": "repobility-ai-code-hygiene", "fingerprint": "b8bc649a9ce9957eb1b6ad965e9e58dfa5da5e0fe0e0deb99c35337a21f66b4a", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/tool-command/sub-commands/allow-only-tool-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|b8bc649a9ce9957eb1b6ad965e9e58dfa5da5e0fe0e0deb99c35337a21f66b4a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/enable-tool-sub-command.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119561, "scanner": "repobility-ai-code-hygiene", "fingerprint": "18920a2369e80170281e00411d940fa9060e876e5e25bf4605082940e158cbd7", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/tool-command/sub-commands/disable-tool-sub-command.ts", "duplicate_line": 1, "correlation_key": "fp|18920a2369e80170281e00411d940fa9060e876e5e25bf4605082940e158cbd7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/enable-tool-sub-command.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119560, "scanner": "repobility-ai-code-hygiene", "fingerprint": "3b3bfa704d7fc0cd045462ec890205a4f0acb7557301ed3dcd429e38328e3144", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/tool-command/sub-commands/allow-only-tool-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|3b3bfa704d7fc0cd045462ec890205a4f0acb7557301ed3dcd429e38328e3144"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/tool-command/sub-commands/disable-tool-sub-command.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119559, "scanner": "repobility-ai-code-hygiene", "fingerprint": "158cd842fea3d3b412df4ee83a218e3e91877c1ac94b98e0b69bd189df251f13", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/allow-only-skill-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|158cd842fea3d3b412df4ee83a218e3e91877c1ac94b98e0b69bd189df251f13"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/skill-command/sub-commands/remove-skill-sub-command.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119558, "scanner": "repobility-ai-code-hygiene", "fingerprint": "dbf4401cfd94ef2e7b23e58dbd06116a2e3678d8daeb2baf5131bf900446923c", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/allow-only-skill-sub-command.ts", "duplicate_line": 1, "correlation_key": "fp|dbf4401cfd94ef2e7b23e58dbd06116a2e3678d8daeb2baf5131bf900446923c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/skill-command/sub-commands/remove-allow-only-skill-sub-command.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119557, "scanner": "repobility-ai-code-hygiene", "fingerprint": "e1678568d4a8d02629b6da4edf26c9fb5713b5cf169f812d32ac45d156167135", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/allow-only-skill-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|e1678568d4a8d02629b6da4edf26c9fb5713b5cf169f812d32ac45d156167135"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/skill-command/sub-commands/list-skill-sub-command.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119556, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1452f7f305fde5468f63ac48cc3fc60680dcdd86e1bca13b9574b6fdb7df4512", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/allow-only-skill-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|1452f7f305fde5468f63ac48cc3fc60680dcdd86e1bca13b9574b6fdb7df4512"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/skill-command/sub-commands/enable-skill-sub-command.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119555, "scanner": "repobility-ai-code-hygiene", "fingerprint": "914b82e0ae1607e68459cd2af3b9c19cf695d37408797c3ac138281b684ce871", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/disable-skill-sub-command.ts", "duplicate_line": 1, "correlation_key": "fp|914b82e0ae1607e68459cd2af3b9c19cf695d37408797c3ac138281b684ce871"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/skill-command/sub-commands/enable-skill-sub-command.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119554, "scanner": "repobility-ai-code-hygiene", "fingerprint": "f970950e4e7016664a37ea5af6854abc256ba14e86e2f69e2543343b9b41dfc6", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "server/src/built-in-command/commands/skill-command/sub-commands/allow-only-skill-sub-command.ts", "duplicate_line": 26, "correlation_key": "fp|f970950e4e7016664a37ea5af6854abc256ba14e86e2f69e2543343b9b41dfc6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/built-in-command/commands/skill-command/sub-commands/disable-skill-sub-command.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119553, "scanner": "repobility-ai-code-hygiene", "fingerprint": "6169d2ba475990f0c2ac7e5918cbeccea116f7b63b1a0327a8319811b7e7dd42", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/setup/setup-llama-cpp.js", "duplicate_line": 86, "correlation_key": "fp|6169d2ba475990f0c2ac7e5918cbeccea116f7b63b1a0327a8319811b7e7dd42"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-runtime-binary.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119552, "scanner": "repobility-ai-code-hygiene", "fingerprint": "339cbbe7fd9aec3060ddeef308af26dcdf46585aa9c16a1d3e7e599c77c44117", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/build-server.js", "duplicate_line": 26, "correlation_key": "fp|339cbbe7fd9aec3060ddeef308af26dcdf46585aa9c16a1d3e7e599c77c44117"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-runtime-binary.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119551, "scanner": "repobility-ai-code-hygiene", "fingerprint": "12ffbb0a63d6fa57daf789b13d5fc6c78d4704131e6a7ca3adc9f1024bb5e648", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/setup/setup-qmd-llm.js", "duplicate_line": 26, "correlation_key": "fp|12ffbb0a63d6fa57daf789b13d5fc6c78d4704131e6a7ca3adc9f1024bb5e648"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-runtime-binary.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119550, "scanner": "repobility-ai-code-hygiene", "fingerprint": "9bcf14474d959de0c787b79893863cc37a86ca496bae18b0109d70179a306133", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/build-server.js", "duplicate_line": 26, "correlation_key": "fp|9bcf14474d959de0c787b79893863cc37a86ca496bae18b0109d70179a306133"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-qmd-llm.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119549, "scanner": "repobility-ai-code-hygiene", "fingerprint": "81e69e50b6bec5ece39b6dcf262a4d6997b1a3dbe0b034d15d36d40ad6ea3f58", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/setup/setup-nvidia-libs.js", "duplicate_line": 81, "correlation_key": "fp|81e69e50b6bec5ece39b6dcf262a4d6997b1a3dbe0b034d15d36d40ad6ea3f58"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-pytorch.js"}, "region": {"startLine": 62}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119548, "scanner": "repobility-ai-code-hygiene", "fingerprint": "8b3543d1c9d867403fbe1466730be2fb7779dae2cbf216e42ed74a7f7b514f0d", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/setup/setup-config.js", "duplicate_line": 80, "correlation_key": "fp|8b3543d1c9d867403fbe1466730be2fb7779dae2cbf216e42ed74a7f7b514f0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/setup/setup-dotenv.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119547, "scanner": "repobility-ai-code-hygiene", "fingerprint": "a2ec73366ff52e34e97054771e865ecfe7a5c50338e2e058fd1f0a64a1e819c9", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "scripts/check.js", "duplicate_line": 213, "correlation_key": "fp|a2ec73366ff52e34e97054771e865ecfe7a5c50338e2e058fd1f0a64a1e819c9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-tcp-server.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "AIC003", "level": "note", "message": {"text": "Duplicated implementation block across source files"}, "properties": {"repobilityId": 119546, "scanner": "repobility-ai-code-hygiene", "fingerprint": "1c80aca8f5a2d9151abb1ec4bbdedd0193a31d1e18fff733c834203f31600f6f", "category": "quality", "severity": "low", "confidence": 0.86, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "A normalized source-code window appears in two different non-test files.", "evidence": {"lines": 12, "rule_id": "AIC003", "scanner": "repobility-ai-code-hygiene", "references": ["https://jscpd.dev/"], "duplicate_file": "aurora/src/components/button/button.tsx", "duplicate_line": 59, "correlation_key": "fp|1c80aca8f5a2d9151abb1ec4bbdedd0193a31d1e18fff733c834203f31600f6f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aurora/src/components/lists/list-item/list-item.tsx"}, "region": {"startLine": 40}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `_inject_variables` has cognitive complexity 12 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: elif=1, for=1, if=4, nested_bonus=6."}, "properties": {"repobilityId": 119511, "scanner": "repobility-threat-engine", "fingerprint": "7300aa21ca0978228f0ccac25120e34af23fd234b545b5d6b2d075572ae57edd", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 12 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "_inject_variables", "breakdown": {"if": 4, "for": 1, "elif": 1, "nested_bonus": 6}, "complexity": 12, "correlation_key": "fp|7300aa21ca0978228f0ccac25120e34af23fd234b545b5d6b2d075572ae57edd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "COMP001", "level": "note", "message": {"text": "[COMP001] High cognitive complexity: Function `answer` has cognitive complexity 14 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand \u2014 nested branches, boolean chains, and recursion all weigh in. Breakdown: and=1, except=1, if=3, nested_bonus=3, or=1, ternary=5."}, "properties": {"repobilityId": 119510, "scanner": "repobility-threat-engine", "fingerprint": "4b09e5eadaee90d8aaa9d00e475d764ec56ba3bcf9a6ca231990123cbb30b77c", "category": "quality", "severity": "low", "confidence": 0.95, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "AST-derived cognitive complexity score = 14 (severity threshold for low: 8+).", "evidence": {"scanner": "repobility-threat-engine", "function": "answer", "breakdown": {"if": 3, "or": 1, "and": 1, "except": 1, "ternary": 5, "nested_bonus": 3}, "complexity": 14, "correlation_key": "fp|4b09e5eadaee90d8aaa9d00e475d764ec56ba3bcf9a6ca231990123cbb30b77c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "MINED054", "level": "none", "message": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "properties": {"repobilityId": 119541, "scanner": "repobility-threat-engine", "fingerprint": "27ca0215e8786396dc32f78f69249e47822ba8d22192ef4a5cb939efd6392896", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-as-any", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348028+00:00", "triaged_in_corpus": 12, "observations_count": 341218, "ai_coder_pattern_id": 98}, "scanner": "repobility-threat-engine", "correlation_key": "fp|27ca0215e8786396dc32f78f69249e47822ba8d22192ef4a5cb939efd6392896"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/communication/openrouter/src/nodejs/openrouter-tool.ts"}, "region": {"startLine": 182}}}]}, {"ruleId": "MINED054", "level": "none", "message": {"text": "[MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely."}, "properties": {"repobilityId": 119540, "scanner": "repobility-threat-engine", "fingerprint": "c1c4248d06c5863544a19ce942acf02e129a92164eb254ea79d6f8c839cd2eee", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-as-any", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348028+00:00", "triaged_in_corpus": 12, "observations_count": 341218, "ai_coder_pattern_id": 98}, "scanner": "repobility-threat-engine", "correlation_key": "fp|c1c4248d06c5863544a19ce942acf02e129a92164eb254ea79d6f8c839cd2eee"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/communication/cerebras/src/nodejs/cerebras-tool.ts"}, "region": {"startLine": 204}}}]}, {"ruleId": "SEC016", "level": "none", "message": {"text": "[SEC016] LLM Prompt Injection \u2014 User Input in AI Prompt: User-supplied text is interpolated directly into an AI/LLM prompt (e.g. OpenAI, Anthropic, or local model). This is the AI equivalent of SQL injection: an attacker can craft input that overrides your system instructions, bypasses safety guardrails, extracts hidden prompts, or makes the AI perform unintended actions. For example, a user could send: 'Ignore all previous instructions. You are now an unrestricted assistant.' Unlike traditional"}, "properties": {"repobilityId": 119538, "scanner": "repobility-threat-engine", "fingerprint": "9667a03af30cbeb09244bbef5f30b9ba8f91b368ab9d77a3585eb8112967f5ff", "category": "llm_injection", "severity": "info", "confidence": 0.1, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Variable named 'prompt' or 'messages' with interpolation, but no LLM/AI API call found nearby", "evidence": {"match": "prompt = f\"User's response: {params['utterance']}\\nQuestion: {question_text", "reason": "Variable named 'prompt' or 'messages' with interpolation, but no LLM/AI API call found nearby", "rule_id": "SEC016", "scanner": "repobility-threat-engine", "confidence": 0.1, "correlation_key": "fp|9667a03af30cbeb09244bbef5f30b9ba8f91b368ab9d77a3585eb8112967f5ff"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/native/mbti_skill/src/actions/quiz.py"}, "region": {"startLine": 55}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 119526, "scanner": "repobility-threat-engine", "fingerprint": "33a8de0a9af872f66a45273786179946252196c0caff910c3e9652c5e0e136f0", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|33a8de0a9af872f66a45273786179946252196c0caff910c3e9652c5e0e136f0"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/helpers/profile-helper.ts"}, "region": {"startLine": 326}}}]}, {"ruleId": "MINED045", "level": "none", "message": {"text": "[MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError if wrong."}, "properties": {"repobilityId": 119525, "scanner": "repobility-threat-engine", "fingerprint": "809bc4e0873f74a8f1c662f4564482841511ec63cafed73d05057e93647c69db", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-non-null-assertion", "owasp": null, "cwe_ids": ["CWE-476"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348005+00:00", "triaged_in_corpus": 12, "observations_count": 1810954, "ai_coder_pattern_id": 105}, "scanner": "repobility-threat-engine", "correlation_key": "fp|809bc4e0873f74a8f1c662f4564482841511ec63cafed73d05057e93647c69db"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/helpers/conversation-history-helper.ts"}, "region": {"startLine": 161}}}]}, {"ruleId": "SEC040", "level": "none", "message": {"text": "[SEC040] innerHTML XSS \u2014 template literal with server-supplied data (and 3 more): Same pattern found in 3 additional files. Review if needed."}, "properties": {"repobilityId": 119524, "scanner": "repobility-threat-engine", "fingerprint": "5604b0415ef1c219adfd5f12877e5f4c0affdedeba09d684a49e22087970a270", "category": "xss", "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": "SEC040", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|5604b0415ef1c219adfd5f12877e5f4c0affdedeba09d684a49e22087970a270"}}}, {"ruleId": "SEC128", "level": "none", "message": {"text": "[SEC128] Async function without await \u2014 fire-and-forget Promise (AI mistake) (and 1 more): Same pattern found in 1 additional files. Review if needed."}, "properties": {"repobilityId": 119519, "scanner": "repobility-threat-engine", "fingerprint": "8a77ffb0a8fcdda223aabe32cdaf0e5bdc6cae13db4c9684d2f2d4932a1285a8", "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": {"reason": "Deduplicated summary only: 1 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|8a77ffb0a8fcdda223aabe32cdaf0e5bdc6cae13db4c9684d2f2d4932a1285a8"}}}, {"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": 119515, "scanner": "repobility-threat-engine", "fingerprint": "c7daf2b944ddba0e3b34aa0d11b37e0de1841f8bdc19613a0920afdee7227150", "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|c7daf2b944ddba0e3b34aa0d11b37e0de1841f8bdc19613a0920afdee7227150"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/video_streaming/ffprobe/src/python/ffprobe_tool.py"}, "region": {"startLine": 249}}}]}, {"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": 119514, "scanner": "repobility-threat-engine", "fingerprint": "fcd7702a54bc473fb093307c1cc4cdab35f9281afb84dd0a5125a501fffbbede", "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|fcd7702a54bc473fb093307c1cc4cdab35f9281afb84dd0a5125a501fffbbede"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/widget.py"}, "region": {"startLine": 66}}}]}, {"ruleId": "COMP001", "level": "none", "message": {"text": "[COMP001] High cognitive complexity (and 19 more): Same pattern found in 19 additional files. Review if needed."}, "properties": {"repobilityId": 119513, "scanner": "repobility-threat-engine", "fingerprint": "4612b01ffcc78b6370f43ee2ac2e930ea8de620331b53fdc616f698a9ff00b3f", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 19 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"scanner": "repobility-threat-engine", "function": "answer", "breakdown": {"if": 3, "or": 1, "and": 1, "except": 1, "ternary": 5, "nested_bonus": 3}, "aggregated": true, "complexity": 14, "correlation_key": "fp|4612b01ffcc78b6370f43ee2ac2e930ea8de620331b53fdc616f698a9ff00b3f", "aggregated_count": 19}}}, {"ruleId": "MINED063", "level": "none", "message": {"text": "[MINED063] Toctou Os Path Exists: if os.path.exists(p): open(p) \u2014 file can be replaced/deleted between check and use."}, "properties": {"repobilityId": 119509, "scanner": "repobility-threat-engine", "fingerprint": "a4cff86920086825a42f6f6e580b07a45e842ad2eb9a2a5494c5d011d1c91971", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "toctou-os-path-exists", "owasp": null, "cwe_ids": ["CWE-367"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348048+00:00", "triaged_in_corpus": 12, "observations_count": 90754, "ai_coder_pattern_id": 41}, "scanner": "repobility-threat-engine", "correlation_key": "fp|a4cff86920086825a42f6f6e580b07a45e842ad2eb9a2a5494c5d011d1c91971"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "MINED064", "level": "none", "message": {"text": "[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services."}, "properties": {"repobilityId": 119508, "scanner": "repobility-threat-engine", "fingerprint": "3169cf29408fb459bebb496d64b4fce53a84be79c04c3a352fe443726b3e6ba3", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "python-input-call", "owasp": null, "cwe_ids": [], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348050+00:00", "triaged_in_corpus": 12, "observations_count": 66378, "ai_coder_pattern_id": 124}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3169cf29408fb459bebb496d64b4fce53a84be79c04c3a352fe443726b3e6ba3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/aurora/input.py"}, "region": {"startLine": 4}}}]}, {"ruleId": "SEC029", "level": "none", "message": {"text": "[SEC029] Server-Side Request Forgery (SSRF) \u2014 outbound HTTP from user input (and 17 more): Same pattern found in 17 additional files. Review if needed."}, "properties": {"repobilityId": 119505, "scanner": "repobility-threat-engine", "fingerprint": "82c6b69256192cc53f3e97906f4b7b1953127ff4369eaf5cc476c6a6e6d7a62f", "category": "ssrf", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 17 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"reason": "Deduplicated summary only: 17 additional occurrences found. The top occurrences remain visible as actionable findings.", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 0.2, "correlation_key": "fp|82c6b69256192cc53f3e97906f4b7b1953127ff4369eaf5cc476c6a6e6d7a62f"}}}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed (and 14 more): Same pattern found in 14 additional files. Review if needed."}, "properties": {"repobilityId": 119500, "scanner": "repobility-threat-engine", "fingerprint": "929c9e7c5a4990dde974df9a4ded5644da65cca39e6c490aced08091c49df81e", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 14 additional occurrences found. The top occurrences remain visible as actionable findings.", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "aggregated": true, "correlation_key": "fp|929c9e7c5a4990dde974df9a4ded5644da65cca39e6c490aced08091c49df81e", "aggregated_count": 14}}}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety."}, "properties": {"repobilityId": 119499, "scanner": "repobility-threat-engine", "fingerprint": "86e56763b246281aa9049563ec0b2578c6e810250815338694b5fdb87d2657f4", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "correlation_key": "fp|86e56763b246281aa9049563ec0b2578c6e810250815338694b5fdb87d2657f4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aurora/src/components/circular-progress/circular-progress.tsx"}, "region": {"startLine": 10}}}]}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety."}, "properties": {"repobilityId": 119498, "scanner": "repobility-threat-engine", "fingerprint": "f0c34c05dfe9d49b09e9552341e7867ec65184b36c7bcf76b3a124429c8ddcd5", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "correlation_key": "fp|f0c34c05dfe9d49b09e9552341e7867ec65184b36c7bcf76b3a124429c8ddcd5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aurora/src/components/card/card.tsx"}, "region": {"startLine": 9}}}]}, {"ruleId": "MINED052", "level": "none", "message": {"text": "[MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety."}, "properties": {"repobilityId": 119497, "scanner": "repobility-threat-engine", "fingerprint": "249ff9ce53bc0d51c926740ed421c5afb988b75451af84f7a30a98b3ecf68419", "category": "quality", "severity": "info", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "ts-any-typed", "owasp": null, "cwe_ids": ["CWE-704"], "languages": ["typescript", "tsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.348022+00:00", "triaged_in_corpus": 12, "observations_count": 496002, "ai_coder_pattern_id": 97}, "scanner": "repobility-threat-engine", "correlation_key": "fp|249ff9ce53bc0d51c926740ed421c5afb988b75451af84f7a30a98b3ecf68419"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aurora/src/components/button/button.tsx"}, "region": {"startLine": 15}}}]}, {"ruleId": "MINED044", "level": "none", "message": {"text": "[MINED044] Js Console Log Prod (and 19 more): Same pattern found in 19 additional files. Review if needed."}, "properties": {"repobilityId": 119493, "scanner": "repobility-threat-engine", "fingerprint": "92af23c733d01113d9820522ca2cfa5d65ce72571508b92f9b7aad61dd38be34", "category": "quality", "severity": "info", "confidence": 0.2, "triageState": "false_positive", "verdict": "likely_fp", "isResolved": true, "reason": "Deduplicated summary only: 19 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|92af23c733d01113d9820522ca2cfa5d65ce72571508b92f9b7aad61dd38be34", "aggregated_count": 19}}}, {"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": 119492, "scanner": "repobility-threat-engine", "fingerprint": "df84c8ca4142798fb075d969a63afc722bddf5841caf577ebd37b04594dbf103", "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|df84c8ca4142798fb075d969a63afc722bddf5841caf577ebd37b04594dbf103"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/src/js/render-aurora-component.js"}, "region": {"startLine": 25}}}]}, {"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": 119491, "scanner": "repobility-threat-engine", "fingerprint": "3eba312e6e4be4e212b0a4e9780b9901cdd2470ad98a7da3b1d083c5fd7bbee4", "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|3eba312e6e4be4e212b0a4e9780b9901cdd2470ad98a7da3b1d083c5fd7bbee4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/src/js/recorder.js"}, "region": {"startLine": 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": 119490, "scanner": "repobility-threat-engine", "fingerprint": "821f8e89b4854688f997a6dab518c023c74da7890053500caa8e4ac1211f5f0c", "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|821f8e89b4854688f997a6dab518c023c74da7890053500caa8e4ac1211f5f0c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/src/js/main.js"}, "region": {"startLine": 163}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 119489, "scanner": "repobility-threat-engine", "fingerprint": "2427e30c451b89870f3af6badd24db36e81742ee552f7141b590dfc3fb31dad8", "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|2427e30c451b89870f3af6badd24db36e81742ee552f7141b590dfc3fb31dad8"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/native/is_it_down_skill/src/actions/run.py"}, "region": {"startLine": 16}}}]}, {"ruleId": "MINED043", "level": "none", "message": {"text": "[MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle credentials or data."}, "properties": {"repobilityId": 119488, "scanner": "repobility-threat-engine", "fingerprint": "49b50990c0e3ac9016db704ca12be6cf8033fc4a45baf4119ae120bd6eade639", "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|49b50990c0e3ac9016db704ca12be6cf8033fc4a45baf4119ae120bd6eade639"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/src/js/constants.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v2`: `uses: actions/setup-node@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119649, "scanner": "repobility-supply-chain", "fingerprint": "5a6262878a9e42d7de520f435639aafb71a5f5e33ca65c025b01c676e984aeab", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|5a6262878a9e42d7de520f435639aafb71a5f5e33ca65c025b01c676e984aeab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-python` pinned to mutable ref `@v2`: `uses: actions/setup-python@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119648, "scanner": "repobility-supply-chain", "fingerprint": "112ebf9d161344e0293343fae1e7596e7d5ad85936e6ccea849b1e09d3c1df0d", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|112ebf9d161344e0293343fae1e7596e7d5ad85936e6ccea849b1e09d3c1df0d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v2`: `uses: actions/checkout@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119647, "scanner": "repobility-supply-chain", "fingerprint": "7870f73e645e4a5f78165dd12a8ee47c8cb148b0d4dfd30e669fb20b609790e5", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|7870f73e645e4a5f78165dd12a8ee47c8cb148b0d4dfd30e669fb20b609790e5"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v2`: `uses: actions/setup-node@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119646, "scanner": "repobility-supply-chain", "fingerprint": "f197fcd1e56963d9a57678e52ed93de4bf689278777d37d016cee5a27d022c90", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|f197fcd1e56963d9a57678e52ed93de4bf689278777d37d016cee5a27d022c90"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tests.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-python` pinned to mutable ref `@v2`: `uses: actions/setup-python@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119645, "scanner": "repobility-supply-chain", "fingerprint": "29efe5ec870057fcafdd57d05f46ae8d6eb5f93b11c05150a95029b1dd6a29ab", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|29efe5ec870057fcafdd57d05f46ae8d6eb5f93b11c05150a95029b1dd6a29ab"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tests.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v2`: `uses: actions/checkout@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119644, "scanner": "repobility-supply-chain", "fingerprint": "2448c508d4cf7571d51771bf981f9096a49eefeb8ea0e9550b90af96acde8b56", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|2448c508d4cf7571d51771bf981f9096a49eefeb8ea0e9550b90af96acde8b56"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tests.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-node` pinned to mutable ref `@v2`: `uses: actions/setup-node@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119643, "scanner": "repobility-supply-chain", "fingerprint": "1d302d334959fc0d651b252e6a352370e92af3770bd33471dfff2a77640cfcc9", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|1d302d334959fc0d651b252e6a352370e92af3770bd33471dfff2a77640cfcc9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/setup-python` pinned to mutable ref `@v2`: `uses: actions/setup-python@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119642, "scanner": "repobility-supply-chain", "fingerprint": "ab9538471c1f27b1f926687b8028f4ec165906004e263ca156f451b69e40be2a", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|ab9538471c1f27b1f926687b8028f4ec165906004e263ca156f451b69e40be2a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "MINED115", "level": "error", "message": {"text": "[MINED115] Action `actions/checkout` pinned to mutable ref `@v2`: `uses: actions/checkout@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions/changed-files compromise (2025) instantly affect ~23K repos. Pin to a 40-char commit SHA + lock with Dependabot or renovate."}, "properties": {"repobilityId": 119641, "scanner": "repobility-supply-chain", "fingerprint": "e53550b179329dd2b4d28be8fe23bb744cc13e4a3321a773302ae72d97510d62", "category": "dependency", "severity": "high", "confidence": 0.9, "triageState": "open", "verdict": "", "isResolved": false, "reason": "", "evidence": {"mined": true, "mining": {"slug": "gha-mutable-ref", "owasp": "A08:2021", "cwe_ids": ["CWE-829"], "languages": ["yaml"], "observations_count": 0}, "scanner": "repobility-supply-chain", "correlation_key": "fp|e53550b179329dd2b4d28be8fe23bb744cc13e4a3321a773302ae72d97510d62"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lint.yml"}, "region": {"startLine": 16}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._execute_async_command` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self._execute_async_command`, 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": 119619, "scanner": "repobility-ast-engine", "fingerprint": "eda401a43d5e92313cfa3c5d948f1aa8feb97449d2b3bf8da5dbd4807cfe7eb9", "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|eda401a43d5e92313cfa3c5d948f1aa8feb97449d2b3bf8da5dbd4807cfe7eb9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 264}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._execute_sync_command` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self._execute_sync_command`, 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": 119618, "scanner": "repobility-ast-engine", "fingerprint": "400fe92767c8b1f40edf7aa1c47713ee523df82da745b25790ea838d7a0dd9ec", "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|400fe92767c8b1f40edf7aa1c47713ee523df82da745b25790ea838d7a0dd9ec"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 260}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._execute_terminal_command` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self._execute_terminal_command`, 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": 119617, "scanner": "repobility-ast-engine", "fingerprint": "f2557d981b375df7d4d19fe66f78415954eea6c7902b17f58d792f0abc1d584b", "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|f2557d981b375df7d4d19fe66f78415954eea6c7902b17f58d792f0abc1d584b"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 255}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.tool_name` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self.tool_name`, 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": 119616, "scanner": "repobility-ast-engine", "fingerprint": "07eae0b4c04c12c46ea38ee3750f82dde39684b6a9194213a855636e15b3b0a7", "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|07eae0b4c04c12c46ea38ee3750f82dde39684b6a9194213a855636e15b3b0a7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 246}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.toolkit` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self.toolkit`, 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": 119615, "scanner": "repobility-ast-engine", "fingerprint": "9f9db6aa323ca2d25be1b003a4a4c683f0e8b7aad73929006b959cef3fe0716d", "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|9f9db6aa323ca2d25be1b003a4a4c683f0e8b7aad73929006b959cef3fe0716d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 246}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.report` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self.report`, 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": 119614, "scanner": "repobility-ast-engine", "fingerprint": "b9b46b00349aecf6aa97ec87643a7dea8b95c50b8150018ebfb1dc99bdb52b44", "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|b9b46b00349aecf6aa97ec87643a7dea8b95c50b8150018ebfb1dc99bdb52b44"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 248}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.get_binary_path` used but never assigned in __init__: Method `execute_command` of class `BaseTool` reads `self.get_binary_path`, 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": 119613, "scanner": "repobility-ast-engine", "fingerprint": "4bea72b70c5e2f1f9017f5db08da64263b6a963548ba801ac4826048bb237940", "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|4bea72b70c5e2f1f9017f5db08da64263b6a963548ba801ac4826048bb237940"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 240}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_bundled_library_paths` used but never assigned in __init__: Method `_get_command_env` of class `BaseTool` reads `self._get_bundled_library_paths`, 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": 119612, "scanner": "repobility-ast-engine", "fingerprint": "bcb41bec24b3c1243852808a87d06f66e594a8e4dd0691ece883b66f8002929c", "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|bcb41bec24b3c1243852808a87d06f66e594a8e4dd0691ece883b66f8002929c"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 208}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.report` used but never assigned in __init__: Method `_report_command_output_delta` of class `BaseTool` reads `self.report`, 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": 119611, "scanner": "repobility-ast-engine", "fingerprint": "6a751b7b0af6f14fdde116dff3608404bb02f33d9e493cd19af640c663e77b1a", "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|6a751b7b0af6f14fdde116dff3608404bb02f33d9e493cd19af640c663e77b1a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 192}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._format_command_output` used but never assigned in __init__: Method `_report_command_output_delta` of class `BaseTool` reads `self._format_command_output`, 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": 119610, "scanner": "repobility-ast-engine", "fingerprint": "e4530cafae41153493e65b8201844115c57208f558a374b9dfae7845489cdbe4", "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|e4530cafae41153493e65b8201844115c57208f558a374b9dfae7845489cdbe4"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 188}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.report` used but never assigned in __init__: Method `_report_command_output` of class `BaseTool` reads `self.report`, 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": 119609, "scanner": "repobility-ast-engine", "fingerprint": "79d349eb0517de42f7162a6c476cfbf78ec85d83091260fad1297ce32d6fd607", "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|79d349eb0517de42f7162a6c476cfbf78ec85d83091260fad1297ce32d6fd607"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 179}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._format_command_output` used but never assigned in __init__: Method `_report_command_output` of class `BaseTool` reads `self._format_command_output`, 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": 119608, "scanner": "repobility-ast-engine", "fingerprint": "b79d7b16a3c877f9bcd138186cd6c202a1b95f922529b0268fc4bb26df6deb03", "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|b79d7b16a3c877f9bcd138186cd6c202a1b95f922529b0268fc4bb26df6deb03"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_settings_path` used but never assigned in __init__: Method `_check_required_settings` of class `BaseTool` reads `self._get_settings_path`, 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": 119607, "scanner": "repobility-ast-engine", "fingerprint": "621d99f6c7ae211466944712b8175861f919c7e35dced2e8b2bca415189dcdba", "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|621d99f6c7ae211466944712b8175861f919c7e35dced2e8b2bca415189dcdba"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 132}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.toolkit` used but never assigned in __init__: Method `_get_settings_path` of class `BaseTool` reads `self.toolkit`, 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": 119606, "scanner": "repobility-ast-engine", "fingerprint": "80e35c96c6e2a9c244815add32656e81cdfbdf757beb332bf383eeaaad452e02", "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|80e35c96c6e2a9c244815add32656e81cdfbdf757beb332bf383eeaaad452e02"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 112}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.tool_name` used but never assigned in __init__: Method `_get_settings_path` of class `BaseTool` reads `self.tool_name`, 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": 119605, "scanner": "repobility-ast-engine", "fingerprint": "da0f9e738314582afc1bd1a9c9807edc5e3f884b3132a9a6ac4f192e5b58f4d3", "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|da0f9e738314582afc1bd1a9c9807edc5e3f884b3132a9a6ac4f192e5b58f4d3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 109}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.tool_name` used but never assigned in __init__: Method `alias_tool_name` of class `BaseTool` reads `self.tool_name`, 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": 119604, "scanner": "repobility-ast-engine", "fingerprint": "5d7c7d6e5a1b7613b605ac32dc4ab6dc139e7d93209c9d5a2727c850321fb888", "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|5d7c7d6e5a1b7613b605ac32dc4ab6dc139e7d93209c9d5a2727c850321fb888"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.tool_name` used but never assigned in __init__: Method `alias_tool_name` of class `BaseTool` reads `self.tool_name`, 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": 119603, "scanner": "repobility-ast-engine", "fingerprint": "fd7ad4a1860d8d38501ccd8e4a4faa01f57fc7a2be0998a462f54d5f906b73af", "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|fd7ad4a1860d8d38501ccd8e4a4faa01f57fc7a2be0998a462f54d5f906b73af"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 104}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.tool_name` used but never assigned in __init__: Method `alias_tool_name` of class `BaseTool` reads `self.tool_name`, 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": 119602, "scanner": "repobility-ast-engine", "fingerprint": "70818865da74de2b94dd97db66e2803c056bb0601a1fe797c661a8a80392286f", "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|70818865da74de2b94dd97db66e2803c056bb0601a1fe797c661a8a80392286f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 103}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.toolkit` used but never assigned in __init__: Method `alias_tool_name` of class `BaseTool` reads `self.toolkit`, 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": 119601, "scanner": "repobility-ast-engine", "fingerprint": "c0e87ef86e1040e32e5ec429d063e4e56c7866b27fbc52c17f4b0d193b94b523", "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|c0e87ef86e1040e32e5ec429d063e4e56c7866b27fbc52c17f4b0d193b94b523"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/base_tool.py"}, "region": {"startLine": 103}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.clear` used but never assigned in __init__: Method `read` of class `Memory` reads `self.clear`, 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": 119600, "scanner": "repobility-ast-engine", "fingerprint": "1c26add4f90521ff8271b7281e62e86d77b0385abe884ba37bb05b82f02282e6", "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|1c26add4f90521ff8271b7281e62e86d77b0385abe884ba37bb05b82f02282e6"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/memory.py"}, "region": {"startLine": 63}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.write` used but never assigned in __init__: Method `clear` of class `Memory` reads `self.write`, 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": 119599, "scanner": "repobility-ast-engine", "fingerprint": "f9353db5df5f99c74c509821c461d016f218d8570cf5c91080a4628c4c4add51", "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|f9353db5df5f99c74c509821c461d016f218d8570cf5c91080a4628c4c4add51"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/memory.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self.set_answer_data` used but never assigned in __init__: Method `answer` of class `Leon` reads `self.set_answer_data`, 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": 119596, "scanner": "repobility-ast-engine", "fingerprint": "2232770aae0ff021b230bc85cb6b494df2914102b83be0fae1f7d486ae0b9048", "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|2232770aae0ff021b230bc85cb6b494df2914102b83be0fae1f7d486ae0b9048"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 104}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._get_answer_text` used but never assigned in __init__: Method `answer` of class `Leon` reads `self._get_answer_text`, 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": 119595, "scanner": "repobility-ast-engine", "fingerprint": "d8adec2bb9b175c4df1ef6a37ea1f66d4cbf2a9b4fde251e7e11a871505c22af", "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|d8adec2bb9b175c4df1ef6a37ea1f66d4cbf2a9b4fde251e7e11a871505c22af"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 105}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._inject_variables` used but never assigned in __init__: Method `set_answer_data` of class `Leon` reads `self._inject_variables`, 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": 119594, "scanner": "repobility-ast-engine", "fingerprint": "d954da5abac7c64cc0875b7f0fe14d4e7ba250a108acf88e6a133ac2411ffbcd", "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|d954da5abac7c64cc0875b7f0fe14d4e7ba250a108acf88e6a133ac2411ffbcd"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "MINED108", "level": "error", "message": {"text": "[MINED108] `self._inject_variables` used but never assigned in __init__: Method `set_answer_data` of class `Leon` reads `self._inject_variables`, 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": 119593, "scanner": "repobility-ast-engine", "fingerprint": "35bbc2e727b8c8432b89381a4db6a37ac67eb11e74742444ec608b73eeb9b744", "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|35bbc2e727b8c8432b89381a4db6a37ac67eb11e74742444ec608b73eeb9b744"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/sdk/leon.py"}, "region": {"startLine": 88}}}]}, {"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": 119545, "scanner": "repobility-threat-engine", "fingerprint": "b60e0287201f2963cce8c86eace162ab98d133e79a57a707349354766b58566b", "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\"Duration:\\s+([\\d.]+)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC103", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "code|injection|token|125|sec103"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/music_audio/faster_whisper/src/python/faster_whisper_tool.py"}, "region": {"startLine": 125}}}]}, {"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": 119544, "scanner": "repobility-threat-engine", "fingerprint": "8a31c8d4f029d9e777dba234d59f34bc4f8cd2148f8abffb3ecb6b9813ed1dc9", "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(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|78|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/music_audio/openai_audio/src/python/openai_audio_tool.py"}, "region": {"startLine": 78}}}]}, {"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": 119543, "scanner": "repobility-threat-engine", "fingerprint": "1bbe660b7fd2c9f7042d8552ae383b06e7ecdf7b07f8db2511d55f89cdbb49b6", "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(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|81|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/music_audio/elevenlabs_audio/src/python/elevenlabs_audio_tool.py"}, "region": {"startLine": 81}}}]}, {"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": 119542, "scanner": "repobility-threat-engine", "fingerprint": "3c5f63aa5ad5780bb7dde86f2eb97ef5515a61eb27908a8d151682756fdb8fc8", "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(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|77|sec013"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/music_audio/assemblyai_audio/src/python/assemblyai_audio_tool.py"}, "region": {"startLine": 77}}}]}, {"ruleId": "MINED006", "level": "error", "message": {"text": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working."}, "properties": {"repobilityId": 119537, "scanner": "repobility-threat-engine", "fingerprint": "06c11ed30972d6328a2988e692b14d64cfe92bf4721750c96bde9ceccebbd43f", "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": "overcatch-baseexception", "owasp": null, "cwe_ids": ["CWE-705"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347911+00:00", "triaged_in_corpus": 15, "observations_count": 230624, "ai_coder_pattern_id": 8}, "scanner": "repobility-threat-engine", "correlation_key": "fp|06c11ed30972d6328a2988e692b14d64cfe92bf4721750c96bde9ceccebbd43f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/native/partner_assistant_skill/src/actions/tell_about_assistant.py"}, "region": {"startLine": 14}}}]}, {"ruleId": "MINED006", "level": "error", "message": {"text": "[MINED006] Overcatch Baseexception: except BaseException: ... \u2014 prevents Ctrl+C and SystemExit from working."}, "properties": {"repobilityId": 119536, "scanner": "repobility-threat-engine", "fingerprint": "3c15a2e800a9970f19b60def129ce84653bb5f1f3dbea6f7db410c434941394f", "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": "overcatch-baseexception", "owasp": null, "cwe_ids": ["CWE-705"], "languages": ["python"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347911+00:00", "triaged_in_corpus": 15, "observations_count": 230624, "ai_coder_pattern_id": 8}, "scanner": "repobility-threat-engine", "correlation_key": "fp|3c15a2e800a9970f19b60def129ce84653bb5f1f3dbea6f7db410c434941394f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/native/color_skill/src/actions/tell_hexadecimal_color.py"}, "region": {"startLine": 26}}}]}, {"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": 119535, "scanner": "repobility-threat-engine", "fingerprint": "ef87b6e0a67eb54b8d08c801432a6c9eaeb0b0cc01bef3412529fa179602327d", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(segment", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ef87b6e0a67eb54b8d08c801432a6c9eaeb0b0cc01bef3412529fa179602327d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/music_audio/chatterbox_onnx/src/nodejs/chatterbox_onnx-tool.ts"}, "region": {"startLine": 60}}}]}, {"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": 119534, "scanner": "repobility-threat-engine", "fingerprint": "d782a6fc913ce6ff4b5ef3b2537f3d2ce0ea2d774ca32001d88aae042ce056ae", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "exec(text", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC085", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d782a6fc913ce6ff4b5ef3b2537f3d2ce0ea2d774ca32001d88aae042ce056ae"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent/tiny-web-crawler/scripts/fetch-page.mjs"}, "region": {"startLine": 226}}}]}, {"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": 119533, "scanner": "repobility-threat-engine", "fingerprint": "f52cf76bc5f19c47b9207948552dc3f6c377b051647986621a09aa0d69e8f23a", "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(escapeRegExp", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f52cf76bc5f19c47b9207948552dc3f6c377b051647986621a09aa0d69e8f23a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "skills/agent/tiny-web-crawler/scripts/fetch-page.mjs"}, "region": {"startLine": 225}}}]}, {"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": 119532, "scanner": "repobility-threat-engine", "fingerprint": "125cf9648a1d2cbfa1277482a5d047a3978b1fb4e458b60c6984489d543a252f", "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(username", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|125cf9648a1d2cbfa1277482a5d047a3978b1fb4e458b60c6984489d543a252f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/helpers/system-helper.ts"}, "region": {"startLine": 288}}}]}, {"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": 119531, "scanner": "repobility-threat-engine", "fingerprint": "c5e10c37e073894f93d49c67e5ed3d38efe59ee6bdd9208691d3b9831cea12e7", "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(Object", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC083", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|c5e10c37e073894f93d49c67e5ed3d38efe59ee6bdd9208691d3b9831cea12e7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/helpers/string-helper.ts"}, "region": {"startLine": 25}}}]}, {"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": 119523, "scanner": "repobility-threat-engine", "fingerprint": "6725b787df0fef1bb96c4c5dee918c33fdb19db9ebf98fd251e52bb655550c99", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map(\n            (entry) =>\n              `- ${entry.filesystem}: total ${entry.size}, used ${entry.", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|6725b787df0fef1bb96c4c5dee918c33fdb19db9ebf98fd251e52bb655550c99"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/storage-context-file.ts"}, "region": {"startLine": 24}}}]}, {"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": 119522, "scanner": "repobility-threat-engine", "fingerprint": "ffc0c497f9c7c84b87c7a14a6af28583d9f20fab503dccbf2c78b5658761c5d9", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map(\n            (entry, index) => `- ${index + 1}. ${entry.key}: ${entry.value}", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|ffc0c497f9c7c84b87c7a14a6af28583d9f20fab503dccbf2c78b5658761c5d9"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/media-profile-context-file.ts"}, "region": {"startLine": 75}}}]}, {"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": 119521, "scanner": "repobility-threat-engine", "fingerprint": "f9dc9cff502c0a24bb94fc754b06676f086e907a5f4ee32a85ff77318b02fdf7", "category": "xss", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "map(\n            (gpu, index) =>\n              `- GPU ${index + 1}: ${gpu.name} | VRAM: ${gpu.memory", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC040", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|f9dc9cff502c0a24bb94fc754b06676f086e907a5f4ee32a85ff77318b02fdf7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/gpu-compute-context-file.ts"}, "region": {"startLine": 44}}}]}, {"ruleId": "MINED004", "level": "error", "message": {"text": "[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums)."}, "properties": {"repobilityId": 119520, "scanner": "repobility-threat-engine", "fingerprint": "4e465860e5d2d5f980e6255fdf2fea8e4619945c5ecee577f0424042d03eb4d7", "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|4e465860e5d2d5f980e6255fdf2fea8e4619945c5ecee577f0424042d03eb4d7"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate/generate-client-interface-token.js"}, "region": {"startLine": 21}}}]}, {"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": 119518, "scanner": "repobility-threat-engine", "fingerprint": "379bb625e20f0601e987b2da23f3352dbc542c066dfd6c81e5e339dc337e13e3", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "this.stateStore.save(updatedState)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|379bb625e20f0601e987b2da23f3352dbc542c066dfd6c81e5e339dc337e13e3"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/media-profile-context-file.ts"}, "region": {"startLine": 63}}}]}, {"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": 119517, "scanner": "repobility-threat-engine", "fingerprint": "9748e8bcea6f2d1ab0743f5db5a38aa5fb9321edc0c67c9a95ed994fef369b1e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "this.stateStore.save(updatedState)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|9748e8bcea6f2d1ab0743f5db5a38aa5fb9321edc0c67c9a95ed994fef369b1e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/core/context-manager/context-files/habits-context-file.ts"}, "region": {"startLine": 87}}}]}, {"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": 119516, "scanner": "repobility-threat-engine", "fingerprint": "53b5ca7e5892281f847b93babb629ab9e6d3295482cf2189573a503731f56403", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "shasum.update(str)", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC128", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|53b5ca7e5892281f847b93babb629ab9e6d3295482cf2189573a503731f56403"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate/generate-client-interface-token.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "MINED021", "level": "error", "message": {"text": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape."}, "properties": {"repobilityId": 119507, "scanner": "repobility-threat-engine", "fingerprint": "916d106bdee9193b9a547ef861e6344318fbf4b454de3cc112c9a4891f1b327e", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "path-traversal-os-join", "owasp": "A01:2021", "cwe_ids": ["CWE-22"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347947+00:00", "triaged_in_corpus": 15, "observations_count": 45678, "ai_coder_pattern_id": 31}, "scanner": "repobility-threat-engine", "correlation_key": "fp|916d106bdee9193b9a547ef861e6344318fbf4b454de3cc112c9a4891f1b327e"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tcp_server/src/main.py"}, "region": {"startLine": 21}}}]}, {"ruleId": "MINED021", "level": "error", "message": {"text": "[MINED021] Path Traversal Os Join: os.path.join(user_dir, filename) where filename can contain \"../\" \u2014 directory escape."}, "properties": {"repobilityId": 119506, "scanner": "repobility-threat-engine", "fingerprint": "98cbbe03340cd99c9f4aab47567b2744a817626550bf06a5801733d8c6b262bc", "category": "quality", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"mined": true, "mining": {"slug": "path-traversal-os-join", "owasp": "A01:2021", "cwe_ids": ["CWE-22"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347947+00:00", "triaged_in_corpus": 15, "observations_count": 45678, "ai_coder_pattern_id": 31}, "scanner": "repobility-threat-engine", "correlation_key": "fp|98cbbe03340cd99c9f4aab47567b2744a817626550bf06a5801733d8c6b262bc"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/python/src/constants.py"}, "region": {"startLine": 32}}}]}, {"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": 119504, "scanner": "repobility-threat-engine", "fingerprint": "b2c49c1cdfd7ee52d8307931b9e3e298c9456028f1160b07f753234d0adb39bf", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "URL(t", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|b2c49c1cdfd7ee52d8307931b9e3e298c9456028f1160b07f753234d0adb39bf"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/nodejs/src/tool-runtime.ts"}, "region": {"startLine": 111}}}]}, {"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": 119503, "scanner": "repobility-threat-engine", "fingerprint": "d858d864e97e9351539ffaeb10025f324a2841f6dd99b2c457d5850a2311ab5d", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "URL(u", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|d858d864e97e9351539ffaeb10025f324a2841f6dd99b2c457d5850a2311ab5d"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/nodejs/src/sdk/utils.ts"}, "region": {"startLine": 146}}}]}, {"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": 119502, "scanner": "repobility-threat-engine", "fingerprint": "0abc16633203285de97e2fcfda33498e9abccdf552b6e3f528dcc40c64468e8a", "category": "ssrf", "severity": "high", "confidence": 1.0, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Pattern matched with no mitigating context found", "evidence": {"match": "Url(c", "reason": "Pattern matched with no mitigating context found", "rule_id": "SEC029", "scanner": "repobility-threat-engine", "confidence": 1.0, "correlation_key": "fp|0abc16633203285de97e2fcfda33498e9abccdf552b6e3f528dcc40c64468e8a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "bridges/nodejs/src/sdk/toolkit-config.ts"}, "region": {"startLine": 159}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `time` used but not imported: The file uses `time.something(...)` but never imports `time`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 119627, "scanner": "repobility-ast-engine", "fingerprint": "0cea1a73307408124523b4dfae7396abaa1e22f63915583dcaabfeb68d6aa70a", "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|0cea1a73307408124523b4dfae7396abaa1e22f63915583dcaabfeb68d6aa70a"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tcp_server/src/lib/tts/text/english_utils/time_norm.py"}, "region": {"startLine": 31}}}]}, {"ruleId": "MINED107", "level": "error", "message": {"text": "[MINED107] Missing import: `signal` used but not imported: The file uses `signal.something(...)` but never imports `signal`. This raises NameError at runtime the first time the line executes."}, "properties": {"repobilityId": 119626, "scanner": "repobility-ast-engine", "fingerprint": "cb80908ffdcd95bca3be296f8baab0dba46b222df7fa2d3286e170504546859f", "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|cb80908ffdcd95bca3be296f8baab0dba46b222df7fa2d3286e170504546859f"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tcp_server/src/lib/tts/commons.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "MINED035", "level": "error", "message": {"text": "[MINED035] Js New Function: new Function(...) compiles strings to functions."}, "properties": {"repobilityId": 119530, "scanner": "repobility-threat-engine", "fingerprint": "2771ae75a043d6a885592be557db33f5f00704c113a8da30e45bbe77df797816", "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": "js-new-function", "owasp": null, "cwe_ids": ["CWE-95"], "languages": ["javascript", "typescript", "tsx", "jsx"], "precision": 1.0, "promoted_at": "2026-05-18T14:01:32.347980+00:00", "triaged_in_corpus": 20, "observations_count": 2547, "ai_coder_pattern_id": 104}, "scanner": "repobility-threat-engine", "correlation_key": "fp|2771ae75a043d6a885592be557db33f5f00704c113a8da30e45bbe77df797816"}}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server/src/helpers/file-helper.ts"}, "region": {"startLine": 358}}}]}]}]}